資料庫的第二正規化範例一問 - 考試
By Adele
at 2014-03-15T00:06
at 2014-03-15T00:06
Table of Contents
※ 引述《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(學號,科系,課程,成績) --{學號,科系,課程}為主鍵
可自己推導一遍
有錯請指正囉
--
: 瞭解第二正規化的定義,但對於書上的範例不是很瞭解
請問是哪一本書呢?也許可換一本讓自己讀得懂的
: 第二正規化:當關聯性處於第一正規化,且此關聯每個非主鍵屬性皆函數相依於主鍵。
皆「完全」功能相依
: 學號 姓名 科系 課程 分數
: 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(學號,科系,課程,成績) --{學號,科系,課程}為主鍵
可自己推導一遍
有錯請指正囉
--
Tags:
考試
All Comments
By Connor
at 2014-03-16T19:16
at 2014-03-16T19:16
By Genevieve
at 2014-03-18T15:51
at 2014-03-18T15:51
By Kama
at 2014-03-22T15:56
at 2014-03-22T15:56
By Ivy
at 2014-03-25T14:43
at 2014-03-25T14:43
Related Posts
中華電信口試
By Yedda
at 2014-03-14T23:55
at 2014-03-14T23:55
基礎電學1題問題
By Elvira
at 2014-03-14T23:36
at 2014-03-14T23:36
志光人事/一般行政函授內容
By Madame
at 2014-03-14T22:58
at 2014-03-14T22:58
資料庫的第二正規化範例一問
By David
at 2014-03-14T22:42
at 2014-03-14T22:42
機械考科問題想請老師解惑
By Blanche
at 2014-03-14T22:35
at 2014-03-14T22:35