在第二正規化(2NF)中,首先關係必須是1NF。
在第二正規化(2NF)中,所有非關鍵屬性都完全依賴於主鍵。
範例: 假設學校儲存教師和教授科目資訊相關的資料。 在學校裡,教師可以教授多個科目。
老師(TEACHER
)表的結構和資料如下 -
TEACHER_ID | SUBJECT | TEACHER_AGE |
---|---|---|
25 | Chemistry | 30 |
25 | Biology | 30 |
47 | English | 35 |
83 | Math | 38 |
83 | Computer | 38 |
在給定的表中,非主要屬性TEACHER_AGE
依賴於TEACHER_ID
(TEACHER_ID
列有兩個83
的值,同樣對應的TEACHER_AGE
屬性的值都是38
),它是候選鍵的適當子集。 這就是它違反2NF規則的原因。
要將給定的表轉換為2NF,我們將其分解為兩個表:
TEACHER_DETAIL 表的結構和資料如下 -
TEACHER_ID | TEACHER_AGE |
---|---|
25 | 30 |
47 | 35 |
83 | 38 |
TEACHER_SUBJECT 表的結構和資料如下 -
TEACHER_ID | SUBJECT |
---|---|
25 | Chemistry |
25 | Biology |
47 | English |
83 | Math |
83 | Computer |