Re: [問題] 資料庫的第二正規化範例一問

看板Examination作者 (落寞之心)時間12年前 (2014/03/15 00:06), 編輯推噓3(301)
留言4則, 3人參與, 最新討論串3/3 (看更多)
※ 引述《wideblue (湛藍)》之銘言: : 瞭解第二正規化的定義,但對於書上的範例不是很瞭解 請問是哪一本書呢?也許可換一本讓自己讀得懂的 : 第二正規化:當關聯性處於第一正規化,且此關聯每個非主鍵屬性皆函數相依於主鍵。 皆「完全」功能相依 : 學號 姓名 科系 課程 分數 : 0001 Alice 體育系 排球 90 : 0001 Alice 體育系 羽球 98 此表格不符合第二正規化 : 0002 Bob 外文系 英文 97 因為 課程 沒有函數相依 學號 : 0002 Bob 外文系 法文 96 : 0003 Clerk 資工系 程式 100 : 範例將表格拆解為以下兩個,並表示以下符合第二正規化 (暗紅色為主鍵) : Table 學生資料 : 學號 姓名 : Table 學生選課資料 : 學號 科系 課程 分數 : 我的問題來了,學生選課資料表裡面,看起來也是不符合第二正規化呀... 列於下: : 學號 科系 課程 分數 : 0001 體育系 排球 90 : 0001 體育系 羽球 98 課程 依舊沒有函數相依於 學號 + 科系 : 0002 外文系 英文 97 所以還是不符合第二正規化? : 0002 外文系 法文 96 : 0003 資工系 程式 100 : 請教各位,請問我的觀念是否哪邊有錯呢? : 謝謝大家~~ 整體思路應該是這樣的: 先找出功能相依性 學號 可唯一決定 姓名,所以 學號 功能決定 姓名,也就是學號->姓名, 換句話說就是,姓名 功能相依於 學號 學號 不可唯一決定 科系及課程,因為學生可自由選擇其他科系的課程 學號 不可唯一決定 分數,原因是一學生可修複數課程,得到複數個分數 姓名 不可唯一決定 學號,因為姓名可能重複,如2個人同名同姓,使用的學號必然不同 姓名 不可唯一決定 科系、課程、分數,因為..(請自行推導) 假設不考慮同一課程有不同科系開(例:不考慮程式課程資工系資管系都開),則 課程 可唯一決定 科系,所以課程->科系 課程 不可唯一決定 學號、姓名、分數,因為...(請自行推導) 科系 不可唯一決定 課程,因為一個科系可以有很多個課程 科系 不可唯一決定 學號、姓名、分數,因為...(請自行推導) 分數 不可唯一決定 學號、姓名、科系、課程,因為...(請自行推導) 功能相依性決定完了之後,要找出候選鍵(可功能決定一資料表中所有其他屬性的欄位), 再從候選鍵中找出主鍵 因為這個資料表很小,所以直接可看出主鍵為{學號,課程}。{學號,課程}可以功能決定 此資料表其他欄位 然後進行正規化 因無重覆資料項目,所以符合1NF 因學號->姓名,非主鍵屬性(姓名)部分功能相依於主鍵({學號,課程}),不符2NF 課程->科系.............科系.................................,不符2NF (只有一功能相依不符2NF,整個資料表就不符2NF) 所以要2NF,讓非主鍵屬性完全功能相依於主鍵 2NF實際解決方法如下: 新增三資料表即可 T1(學號,姓名) --學號為T1主鍵 T2(課程,科系) --課程為T2主鍵 T3(學號,課程,成績) --{學號,課程}為T3主鍵 這時候再檢查一下,T1 T2 T3的功能相依性,若不違反2NF,則2NF成功 繼續3NF做下去....... 假設同一課程有不同科系開(例:考慮程式課程資工系資管系都開),則2NF後結果為 T1(學號,姓名) --學號為主鍵 T2(學號,科系,課程,成績) --{學號,科系,課程}為主鍵 可自己推導一遍 有錯請指正囉 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.160.191.45 ※ 編輯: meya 來自: 118.160.191.45 (03/15 00:11)

03/16 00:45, , 1F
講解得很仔細,推一個XD
03/16 00:45, 1F

03/16 18:59, , 2F
推一個,真的很詳細!!
03/16 18:59, 2F

03/17 00:28, , 3F
鼎文公職 T5D37 102年二版 P.78 圖 4-14 第二正規化
03/17 00:28, 3F

03/17 00:29, , 4F
謝謝解釋 ^^ 看來是書上範例寫錯了
03/17 00:29, 4F
文章代碼(AID): #1J8oZz7I (Examination)
文章代碼(AID): #1J8oZz7I (Examination)