對第一,二,三,BC正規化的理解

2021-09-05 13:13:32 字數 1652 閱讀 7001

第一正規化:只要滿足所有字段不可再分,即不存在 「乙個欄位中有不同的資料型別」 這種情況,例如手機號這個字段不能既有手機號又有姓名年齡這些。

第二正規化:在第一正規化的前提下,每個非主屬性都完全函式依賴於主鍵(主鍵可以有多個字段)。

首先什麼是主屬性和非主屬性

主屬性就是候選鍵中的每乙個屬性,候選鍵可能是多個屬性。不包含在候選鍵的屬性叫非主屬性。

候選鍵可以有多組,例如候選鍵為ab或者ac或者ad,屬性abcd都包含在候選鍵中,那麼abcd都是主屬性。

什麼是完全函式依賴和部分函式依賴

舉個例子,x–>y , x』 是x的真子集,若滿足x』–>y,那麼y 部分函式依賴於x,這就是部分函式依賴

x–>y , x』 是x的真子集,若對所有的x』!–>y , 那麼y完全函式依賴於x,這就是完全函式依賴。

例如:(學號和身份證)–>姓名,身份證–>姓名,姓名部分函式依賴於(學號和身份證)

(身高和體重)–>肥胖指數,身高不能決定肥胖指數,體重也不能決定肥胖指數,只有(身高和體重)才能決定肥胖指數,所以,肥胖指數完全函式依賴於(身高和體重)

當主鍵只有乙個屬性的時候,是要有主鍵就是第二正規化!當主鍵包含多個屬性的時候,必須滿足每個非主屬性都完全函式依賴於主鍵,也就說主鍵的真子集都不能決定非主屬性!只有主鍵才能決定所有非主屬性。

舉例子:

不符合第二正規化:

商品id和商品名稱作為主鍵,商品id和商品名稱可以決定注意事項,其真子集商品名稱也可以決定注意事項,這就存在部分函式依賴了

符合第二正規化:

現在,只有商品id和商品名稱共同才可以決定**,其真子集商品id或者商品名稱都無法決定**,這符合完全函式依賴,所以符合第二正規化

第三正規化:在第二正規化的基礎上,任何的非主屬性不依賴於其他非主屬性 (在第二正規化基礎上消除傳遞函式依賴),就是第三正規化。

舉個例子,一張員工表有幾個字段(員工id,員工姓名,****,部門id,部門名稱,部門詳細資訊),因為這張表中,員工id是主鍵,部門id也是主鍵,因為 「部門詳細資訊」 —> 「部門名稱」 —> 「部門id」 這就形成了傳遞函式依賴於主鍵了,所以必須要建立乙個部門表,除部門id意外的字段都應該在部門表裡邊,這才符合第三正規化。

bc正規化:滿足bc正規化的關係將消除任何屬性(主屬性和非主屬性)對關係鍵的部分函式依賴和傳遞函式依賴。

在第三正規化下,舉個例子

如果不存在(ab)–>c , b–>c 類似這樣的情況,也就是說部分函式依賴。也不存在a–>b , b–>c 這種情況,也就是傳遞函式依賴,不管這些abc屬性是主屬性還是非主屬性,反正就是不存在 「部分函式依賴和傳遞函式依賴」 ,這就是bc正規化

第一,二,三正規化

第一正規化 1nf 在關係模式r中的每乙個具體關係r中,如果每個屬性值 都是不可再分的最小資料單位,則稱r是第一正規化的關係。例 如職工號,姓名,號碼組成乙個表 乙個人可能有乙個辦公室 和乙個家裡 號碼 規範成為1nf有三種方法 一是重複儲存職工號和姓名。這樣,關鍵字只能是 號碼。二是職工號為關鍵字...

資料庫一二三BC正規化詳解

所謂第一正規化 1nf 是指資料庫表的每一列都是不可分割的基本資料項,同一列中不能同時有多個值,即實體中的某個屬性不能有多個值或者不能有重複的屬性 如果出現重複的屬性,就可能需要定義乙個新的實體,新的實體由重複的屬性構成,新實體與原實體之間為一對多關係。在第一正規化 1nf 中表的每一行只包含乙個例...

資料庫第一 二 三正規化

第一正規化 在任何乙個關聯式資料庫中,第一正規化 1nf 是對關係模式的基本要求,不滿足第一正規化 1nf 的資料庫就不是關聯式資料庫。所謂第一正規化 1nf 是指資料庫表的每一列都是不可分割的基本資料項,同一列中不能有多個值,即實體中的某個屬性不能有多個值或者不能有重複的屬性。如果出現重複的屬性,...