資料庫正規化的理解

2021-10-16 13:15:21 字數 1537 閱讀 8784

接下來用例子再詳細介紹依賴關係

(學號,課程)→成績,由乙個學號和課程可以唯一確定這個學生這節課的成績,此時非主屬性成績完全依賴於碼(學號,課程),稱完全函式依賴。

(學號,課程)→姓名,由學號和課程可以確定乙個學生的姓名,但本身由學號就可以確定學生的姓名,學號為(學號,課程)的真子集,此時非主屬性姓名部分依賴於碼(學號,課程),稱部分函式依賴。

(學號,課程)→老師,老師→職稱,由學號和課程可以確定上這節課的老師,老師又可以決定老師的職稱,但(學號,課程)不能確定老師的職稱,所以存在傳遞依賴。職稱傳遞函式依賴於碼(學號,課程)。

第一正規化

第一正規化(1nf)是資料庫的基本正規化要求,確保了資料的原子性。是每乙個關係必須要遵守的要求。第一正規化的具體要求簡單來說就是表中不能有表,每個屬性都是不可再分的最小單位。

以上表中,**這一屬性被拆分為兩部分,不滿足第一正規化。

第二正規化

第二正規化(2nf)是在第一正規化的基礎上消除了部分函式依賴。確保碼與非主屬性間都為完全函式依賴。

如上表中,碼為(學號,課程),此時姓名可由學號單獨決定,形成姓名對碼的部分函式依賴。為解決這一問題,可以將此表進行分解,使其滿足2nf。

此時保證了非主屬性對碼的完全函式依賴。滿足2nf。

第三正規化

3nf在2nf基礎上消除傳遞依賴。

上表中,職稱和碼(學號,課程)存在傳遞依賴,不滿足3nf。為使關係滿足3nf

可以將表拆分。

如上圖,將表拆分後,連個兩個表同時滿足第三正規化。

bf正規化

bf正規化可以看為第三正規化的補充,消除主屬性間的相互依賴。(即只有乙個表只有乙個碼)

以上表中存在(學生,教師)→課程(學生所選定的課),(學生,課程)→教師(教該學生的老師)的關係,由於每一位老師只教一科,一科可由多個老師教,所以存在教師→課程的關係。主屬性間存在依賴關係,不滿足bcnf(即bf正規化)。將上表拆為兩個表,表一(學生,教師),表二(教師,課程)。

若乙個關係達到了第三正規化,並且它只有乙個碼,或者它的每個碼都是單屬性,則該關係自然達到bc正規化。滿足bc正規化必定滿足第三正規化,但滿足第三正規化不一定滿足bcnf。

資料庫正規化理解

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

資料庫正規化的理解

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

資料庫正規化的理解

資料庫表中的字段都是單一屬性的,不可再分。這個單一屬性由基本型別構成,包括整型 實數 字元型 邏輯型 日期型等。在當前的任何關聯式資料庫管理系統 dbms 中,傻瓜也不可能做出不符合第一正規化的資料庫,因為這些dbms不允許你把資料庫表的一列再分成二列或多列。因此,你想在現有的dbms中設計出不符合...