看板 Database 關於我們 聯絡資訊
※ 引述《g001613001 (月)》之銘言: : 表基本上漲這樣子 : _______________________________________________________________________ : 研習活動代號:a01 研習會名稱:SQL基礎技能(I) 研習活動天數:3天 | : _______________________________________________________________________| : 員工代號| 員工姓名 |_______________________簽到日______________________| : | | 01/01/2009| 01/02/2009 | 01/03/2009|總共缺席次數 | : ________|__________|___________|____________|____________|_____________| : A001 小王 X ˇ ˇ 1 | : A002 小強 ˇ ˇ ˇ 0 | : A003 小圈 ˇ ˇ ˇ 0 | : ... | : A050 小捲 ˇ ˇ ˇ 0 | : _______________________________________________________________________| : 研習人數:50人 | : _______________________________________________________________________| : 我想問正規化的問題 : 我現在卡在,簽到日,它到底是多值屬性,還是組合屬性? 當做是研習活動的多值屬性來看是準沒錯, 它們的關聯是: 研習活動 1 <= n 簽到日 , 1場研習活動有n個簽到日, 簽到日是依附在研習活動 上. (這裏暫且簡化討論問題的範圍. 因為實務上, 有可能同一個簽到日有好幾場 研習活動, 那就是 m-n 的關係.) : 我個人覺得它是組合屬性,由三天的日期以及缺席次數組成的。 要當成是組合屬性的話, 你要考慮到如果有好幾場不同的研習活動, 而每場 研習活動的簽到日的日期及天數各自不同, 那麼你的組合屬性將無法維持一致. : 但是我們老師只交過我們處理多值屬性,沒交過組合屬性怎麼處理。 : 請問如果是組合屬性應該怎麼處理? 不管是多值屬性或是組合屬性, 就是改用一個weak entity包起來處理. : 我自己判斷假設是多值的話,我會處理成如下 : 第一正規化 : 表1 |研習活動代號PK|研習會名稱|研習活動天數|總共缺席次數|研習人數| : 表2 |研習活動代號FK+員工代號=PK|員工姓名|簽到日| : 請問各位前輩 能指點一下迷津嗎? : 兩個問題, 我有問題的簽到日那裡是否是組合屬性?是的話怎麼處理? 以下試擬 ER model: 研習活動 1 <= n 簽到日 1 <=+ m + == 簽到記錄 員工 1 <===================+ n 研習活動: (研習活動id), 活動名稱, etc... 簽到日: (研習活動id, 日期), etc...# 這裏略過同一個簽到日有多場研習活動. 員工: (員工id), 姓名, etc... 簽到記錄: (研習活動id, 日期, 員工id), 簽到時刻, 出缺席狀態 以上括弧括起來的代表該主體的主鍵. 簽到記錄中的'出缺席狀態'是可有可無的, 因為可以從簽到時刻來判斷. 簽到時刻初始值是null, 有簽到才有給值. 所以簽到時刻是null, 就代表 該員工於該簽到日在該場研習活動當中缺席. 至於研習活動天數, 研習人數, 總共缺席次數這三個欄位是可有可無的, 因為它們可以在需要呈現時, 透過SQL query的統計函式取得, 而非必要 的原始資料. : 以及我假設是多值屬性 這樣處理對嗎? : 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 58.115.151.184
g001613001:喔喔 謝謝 我在研究一下^^ 01/12 21:27
jayfish:推,有經驗 01/16 09:06