iT邦幫忙

2023 iThome 鐵人賽

DAY 17
1

今天繼續聊資料正規化的規則~


第二正規化規則(2NF)

目的 : 去除部分相依

藉由分割資料表,將部分功能相依的欄位分割出去,再組成新的資料表

舉例來說:

假設我們有一個表格,記錄學生選修課程的分數,表格結構如下:

學生ID
學生姓名
分數
課程名稱
教師

在這個例子中,主鍵可以是「學生ID」和「課程名稱」的組合,因為一個學生可以選修多門課程,且每門課程的名稱是獨特的。

這裡的問題是,

  • 「教師」只依賴於「課程名稱」,而不是整個主鍵。
  • 「學生姓名」也只依賴於「學生ID」,不是整個主鍵。

這就是所謂的部分依賴。

如何轉化到2NF ?

為了將這個表格轉化到 2NF

我們需要將「教師」和「課程名稱」分離到一個新表格,

並在原始表格和新表格之間建立一個關聯。

延續上個例子,轉化為 2NF 之後:

  • 學生課程表:

    • 學生ID
    • 課程ID
    • 分數
  • 課程表:

    • 課程ID
    • 課程名稱
    • 教師

這樣,我們就消除了部分依賴。


明天見~/images/emoticon/emoticon08.gif


上一篇
【DAY16】資料庫正規化 (1)
下一篇
【DAY18】資料庫正規化 (3) 3NF
系列文
30天全端:關於網站實作的聊聊30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言