題組內容
二、參考 Youtube 上的影片資訊的一個資料表 VideoClip,考慮以下屬性:
● URL
●標題
●發布者
● 訂閱數
● 評論次序
● 評論者
● 評論內容
●評論推數
●評論噓數
●評論回覆次序
●回覆者
●回覆內容
● 回覆推數
● 回覆噓數
有以下的函數相依(Functional Dependencies):
● URL→標題
●URL→發布者
●發布者L→訂閱數
●{URL, 評論次序}→{評論者, 評論內容, 評論推數, 評論噓數}
●{URL, 評論次序, 評論回覆次序}→{回覆者, 回覆內容, 回覆推數, 回覆噓數}
(二)將 VideoClip 關聯綱目(Relation schema)分解成滿足第二正規式 (Second Normal Form)但不滿足第三正規式(Third Normal Form)的 綱目,請列出分解後每一關聯綱目之主鍵(Primary key)和外鍵(Foreign key)並說明之。 (10 分)
詳解 (共 1 筆)
詳解
為了將 VideoClip 的關聯綱目(Relation Schema)分解成滿足第二正規式(2NF)但不滿足第三正規式(3NF)的綱目,我們首先需要了解每個正規式的要求:
- 第二正規式(2NF):綱目應滿足第一正規式(1NF),且每個非主屬性完全依賴於主鍵。
- 第三正規式(3NF):綱目應滿足第二正規式,且每個非主屬性不能傳遞依賴於主鍵。
分析 VideoClip 的函數相依
原始函數相依:
- URL → 標題
- URL → 發布者
- 發布者 → 訂閱數
- {URL, 評論次序} → {評論者, 評論內容, 評論推數, 評論噓數}
- {URL, 評論次序, 評論回覆次序} → {回覆者, 回覆內容, 回覆推數, 回覆噓數}
關聯鍵(Primary Key):
- {URL, 評論次序, 評論回覆次序}
分解成 2NF 綱目
Relation 1: VideoBasic
- 屬性: {URL, 標題, 發布者}
- 主鍵: URL
- 說明: 每個 URL 唯一對應一個標題和發布者,滿足 URL → 標題, URL → 發布者。
Relation 2: PublisherInfo
- 屬性: {發布者, 訂閱數}
- 主鍵: 發布者
- 說明: 每個發布者唯一對應一個訂閱數,滿足 發布者 → 訂閱數。
Relation 3: Comment
- 屬性: {URL, 評論次序, 評論者, 評論內容, 評論推數, 評論噓數}
- 主鍵: {URL, 評論次序}
- 外鍵: URL 參考 VideoBasic (URL)
- 說明: 每個 URL 和 評論次序 的組合唯一對應評論者、評論內容、評論推數、評論噓數,滿足 {URL, 評論次序} → {評論者, 評論內容, 評論推數, 評論噓數}。
Relation 4: Reply
- 屬性: {URL, 評論次序, 評論回覆次序, 回覆者, 回覆內容, 回覆推數, 回覆噓數}
- 主鍵: {URL, 評論次序, 評論回覆次序}
- 外鍵: {URL, 評論次序} 參考 Comment ({URL, 評論次序})
- 說明: 每個 URL、評論次序和評論回覆次序的組合唯一對應回覆者、回覆內容、回覆推數、回覆噓數,滿足 {URL, 評論次序, 評論回覆次序} → {回覆者, 回覆內容, 回覆推數, 回覆噓數}。
分解結果
以下是分解成滿足 2NF 但不滿足 3NF 的關聯綱目:
-
VideoBasic
- 屬性: {URL, 標題, 發布者}
- 主鍵: URL
-
PublisherInfo
- 屬性: {發布者, 訂閱數}
- 主鍵: 發布者
-
Comment
- 屬性: {URL, 評論次序, 評論者, 評論內容, 評論推數, 評論噓數}
- 主鍵: {URL, 評論次序}
- 外鍵: URL 參考 VideoBasic (URL)
-
Reply
- 屬性: {URL, 評論次序, 評論回覆次序, 回覆者, 回覆內容, 回覆推數, 回覆噓數}
- 主鍵: {URL, 評論次序, 評論回覆次序}
- 外鍵: {URL, 評論次序} 參考 Comment ({URL, 評論次序})
這些分解滿足了第二正規式(2NF)的要求,因為每個非主屬性都完全依賴於主鍵,沒有部分依賴。然而,這些分解不滿足第三正規式(3NF)的要求,因為在 PublisherInfo 中存在傳遞依賴(發布者 → 訂閱數),這導致訂閱數依賴於 VideoBasic 的 URL。