我對資料庫正規化的理解

2021-05-22 06:36:03 字數 842 閱讀 4619

, 則稱為第二正規化模式。

2nf、3nf、bcnf的核心作用就是消除多餘的關係,從而使一張表只明確表達「唯一的某種實體關係」 。

2nf的理解: 候選鍵的作用是標識唯一的乙個實體,而非主屬性是對這個實體的進一步描述。如果某個非主屬性不完全依賴於某個候選鍵(違反1nf),而是部分依賴(依賴於候選鍵的某個子集),也就是說這個非主屬性本質是另乙個實體的進一步描述,那麼它在當前的表中就必然會出現描述上的冗餘,從而導致儲存異常狀況的發生。例如:「員工號」是「員工」實體的候選鍵,而「員工姓名」(有可能重名)是「員工」實體的補充描述,所以如果把「員工號」和「員工姓名」都放到「員工任務」表中,就出現了問題,因為「員工任務」表描述的是員工和任務的對應關係,而「員工姓名」只能描述員工,這樣就可能出現儲存異常,例如同乙個員工的所有記錄中姓名並不一致(更新異常)。(總結:非主屬性是用來描述表所代表的實體的,而不應該是描述部分候選鍵的。 )

3nf的理解:

非主屬性是描述表所代表的實體的,而不應該是描述非主屬性的 ,否則就會出現描述上的冗餘。例如:「員工表」上有「入職年限」和「帶薪假」兩列,兩者之間存在著一定關係,例如:小於5年的2天,5-10年的5天,10年以上的10天等。也就是說屬性「帶薪假」的值決定於「入職年限」的取值範圍,而不是員工實體。這樣也有可能出現更新異常等。

bcnf的理解: 如果候選鍵中的屬相間存在依賴,就出現了和3nf中描述的類似情況。例如還是「員工任務」表中,「員工號」、「員工身份證號」和「任務號」是候選鍵,顯然「員工號」和「員工身份證號」之間存在一對一的聯絡,但是它們的組合會在表中出現多次,存在冗餘,又會產生儲存異常的問題。

考慮正規化的時候必須要注意, 正規化的作用是規範,是為了更好用,違反正規化並不意味著表不能用了,而是可能出現儲存異常的錯誤。

對資料庫正規化的理解以及無損分解技巧

根據函式依賴求最小依賴集 屬性列是不可拆的 原子的 非主屬性完全依賴於候選碼 可以是完全直接依賴,也可以是完全傳遞依賴 要有候選碼 不存在非主屬性傳遞依賴於候選碼 即所有非主屬性直接依賴於候選碼 是3nf一定是2nf 證明 a,b,c,d 其中 a,b 是候選碼 即 a,b c,a,b d 現在假設...

資料庫正規化理解

當前我們使用的主流資料庫是關係型資料庫,所以我是記錄在關係型資料庫中對正規化的一些理解和看法。資料庫庫正規化分為六種 其實還有有乙個bcnf 分別為從第一正規化到第六正規化。高階一層是建立在所有低層的基礎上的,如第2正規化是建立在第一正規化的基礎上的,依次類推。下面分別舉例講解各種正規化 第一正規化...

資料庫正規化的理解

就是滿足了單一屬性不能再分割,正常情況下,你在資料庫裡建立的表肯定是滿足這個正規化的,要想不滿足這個正規化,可以在excel中嘗試合併單元格,拆分單元格體會下,就明白了。2nf 必須不存在非關鍵字段對組合的關鍵字段中的某些的依賴,比如某個表有 個關鍵字,但是它的非關鍵屬性 依賴第乙個關鍵字,非關鍵屬...