資料庫入門 三個正規化

2021-10-25 09:46:21 字數 889 閱讀 5271

我覺得他說的最對:

我也來解釋一波,參考《資料庫系統概念》。

書上一開始講得什麼"組合屬性"、「多值屬性」,都是在講 e-r模型和表的區別,就是說e-r模型允許存在上述子結構,而表不能,跟第一正規化的解釋沒有直接關係。

第一正規化實際的解釋為:關係模式中所有的屬性的域都是原子域。

舉幾個反例:

存在以上屬性的關係模式都不滿足第一正規化。

當關係模式中存在組合主鍵的時候,其它非組合主鍵必須要對這個組合主鍵完全依賴,而不是只是依賴於組合主鍵中的某乙個(按照上面那個兄弟說的,"某乙個"已經不算是主鍵了)。

舉乙個例子:

學生這個關係模式中有乙個組合主鍵(學號,課程號),非主鍵「成績「,是由組合主鍵共同決定的,如果這個關係模式中不存在"非主鍵"對於"組合主鍵"部分依賴的函式依賴,那麼它就滿足第二正規化。

網上的解釋好多啊。。

我還是就記住上面兄弟的好了。

只是他說的"每一列對主鍵的間接依賴"也可以說成是"非主鍵對於主鍵的傳遞函式依賴"。

舉乙個上課時候的例子: x是碼,y不是碼,z不是碼,如果存在x->y, y->z,那麼根據傳遞性,我們就可以得到x->z,也就是說非主鍵z其實是對於主鍵x是存在函式依賴的,但是中間還夾了乙個非主鍵y,所以在這裡它就不是乙個直接的函式依賴,而是乙個間接依賴,或者說是"非主鍵對於主鍵的傳遞函式依賴"。

為什麼說第三正規化是bc正規化的放寬呢?

我理解為:bc正規化中,函式依賴的左側部分一定要是超碼,也就是說 左側部分一定可以->整個r。而在第三正規化中,只要不存在上述的」非主鍵對於主鍵的傳遞函式依賴",函式依賴的左側部分可以不是超碼,而只是乙個簡簡單單普普通通的碼(它可以不需要決定整個關係r)。

資料庫的三個正規化

強調列的原子性,即列不能夠再分成其他幾列。考慮有這樣乙個表 聯絡人 姓名 性別 如果在實際場景中,乙個聯絡人有家庭 和公司 那麼這種表結構就不符合1nf,應把 列拆分成家庭 和公司 首先是1nf,另外還有兩部分內容。1.乙個表必須有乙個主鍵。2.不在主鍵裡的列必須依賴主鍵的所有內容,而不能只依賴主鍵...

資料庫表三個正規化

通俗地理解三個正規化 通俗地理解是夠用的理解,並不是最科學最準確的理解 第一正規化 1nf是對屬性的原子性約束,要求屬性具有原子性,不可再分解 第二正規化 2nf是對記錄的惟一性約束,要求記錄有惟一標識,即實體的惟一性 同一表中消除部分依賴 第三正規化 3nf是對字段冗餘性的約束,即任何字段不能由其...

資料庫三個正規化的原理

1nf,字段不可再分。這個關聯式資料庫強制了,想建立復合的字段也建立不起來。關聯式資料庫出現之前才有這個問題。2nf,主鍵依賴,就是一張表裡面的字段,必須是跟主鍵相關的,不能把無關的資料放進來。主鍵依賴,實質就是,這個資訊如果是物件的屬性,就放進來,否則就不放。3nf,就是不能重複儲存相同的資訊。這...