函式依賴是指關係中屬性間(或者說是表中字段間)的對應關係。
定義:設 r 為任一給定關係,如果對於 r 中屬性 x 的每乙個值,r 中的屬性 y 只有唯一值與之對應,則稱 x 函式決定 y 或稱 y 函式依賴於 x ,記作 x—>y。其中,x 稱為決定因素。
通俗一點,就是給定乙個 x 都有唯一的 y。可以理解為函式 y = f(x); 對於任意的 x 都有唯一的 y ,且 y 的取值由 x 決定。
例如:學生號—>學生姓名,學生年齡等等有關該學生的所有資訊
反之,像學生姓名不能決定唯一的學生,因為存在同名的可能,這種情況就不能稱作函式依賴。
1、碼=超鍵:能夠唯一標識一條記錄的屬性或屬性集。
標識性:乙個資料表的所有記錄都具有不同的超鍵
非空性:不能為空
有些時候也把碼稱作「鍵」
2、候選鍵=候選碼:能夠唯一標識一條記錄的最小屬性集
標識性:乙個資料表的所有記錄都具有不同的候選鍵
最小性:任一候選鍵的任何真子集都不能唯一標識乙個記錄(比如在成績表中(學號,課程號)是乙個候選鍵,單獨的學號,課程號都不能決定一條記錄)
非空性:不能為空
候選鍵是沒有多餘屬性的超鍵
舉例:學生id是候選碼,那麼含有候選碼的都是碼。
少部分地方也有叫超級碼的,但是見得不多
3、主鍵=主碼:某個能夠唯一標識一條記錄的最小屬性集(是從候選碼裡人為挑選的一條)
唯一性:乙個資料表只能有乙個主鍵
標識性:乙個資料表的所有記錄都具有不同的主鍵取值
非空性:不能為空
人為的選取某個候選碼為主碼
4、主屬性 包含在任一候選碼中的屬性稱主屬性。簡單來說,主屬性是候選碼所有屬性的並集
非主屬性 不包含在候選碼中的屬性稱為非主屬性。 非主屬性是相對於主屬性來定義的。
5、外來鍵(foreign key):子資料表**現的父資料表的主鍵,稱為子資料表的外來鍵。
6、全碼:當所有的屬性共同構成乙個候選碼時,這時該候選碼為全碼。(教師,課程,學生)假如乙個教師可以講授多門課程,某門課程可以有多個教師講授,學生可以聽不同教師講授的不同課程,那麼,要區分關係中的每乙個元組,這個關係模式r的候選碼應為全部屬性構成 (教師、課程、學生),即主碼。
7、**鍵:當不適合用任何乙個候選鍵作為主鍵時(如資料太長等),新增乙個沒有實際意義的鍵作為主鍵,這個鍵就是**鍵。(如常用的序號1、2、3)
8、自然鍵:自然生活中唯一能夠標識一條記錄的鍵(如身份證)
第一正規化(1nf):屬性不可分。
第二正規化(2nf):符合1nf,並且,非主屬性完全依賴於碼。
第三正規化(3nf):符合2nf,並且,消除傳遞依賴
bc正規化(bcnf):符合3nf,並且,主屬性不依賴於主屬性
若關係模式屬於第一正規化,且每個屬性都不傳遞依賴於鍵碼,則r屬於bc正規化。
通常bc正規化的條件有多種等價的表述:每個非平凡依賴的左邊必須包含鍵碼;每個決定因素必須包含鍵碼。bc正規化既檢查非主屬性,又檢查主屬性。當只檢查非主屬性時,就成了第三正規化。滿足bc正規化的關係都必然滿足第三正規化。還可以這麼說:若乙個關係達到了第三正規化,並且它只有乙個候選碼,或者它的每個候選碼都是單屬性,則該關係自然達到bc正規化。
通俗易懂的資料庫「正規化」教程
貫穿全文的乙個例子。第一正規化 1nf 幾個重要的概念。第二正規化 2nf 第三正規化 3nf bc正規化 bcnf 第四正規化 4nf 插入異常 如果目前開設了計算機系,但是尚未招生,那麼計算機系是無法插入到表的系名中的,學號,課名 是主屬性,不能為空。刪除異常 如果經濟系的學生全部畢業了,在刪除...
資料庫三大正規化詳解(通俗易懂)
正規化 英文名稱是 normal form,它是英國人 e.f.codd 關聯式資料庫的老祖宗 在上個世紀70年代提出關聯式資料庫模型後總結出來的,正規化是關聯式資料庫理論的基礎,也是我們在設計資料庫結構過程中所要遵循的規則和指導方法。目前有跡可尋的共有8種正規化,依次是 1nf,2nf,3nf,b...
資料庫三大正規化詳解(通俗易懂)
正規化 英文名稱是 normal form,它是英國人 e.f.codd 關聯式資料庫的老祖宗 在上個世紀70年代提出關聯式資料庫模型後總結出來的,正規化是關聯式資料庫理論的基礎,也是我們在設計資料庫結構過程中所要遵循的規則和指導方法。目前有跡可尋的共有8種正規化,依次是 1nf,2nf,3nf,b...