關聯式資料庫規範化:關係內部各屬性之間的聯絡的合理化程度-----正規化
符合第二正規化的就一定符合第一正規化
2nf在1nf的基礎之上,消除了非主屬性對於碼的部分函式依賴。
函式依賴:
屬性x能夠確定屬性y,則y函式依賴於x,即x->y(依賴於誰,誰在前面)。 碼:
除 k 之外的所有屬性都完全函式依賴於 k,則k是候選碼,簡稱碼。
注:可以超過乙個屬性(如果碼只有乙個屬性,則不存在非主屬性對碼的部分依賴)
主屬性:
包含在任何乙個碼中的屬性稱為主屬性
例:
函式依賴關係:學號—>姓名,學號—>系名,系名—>系主任,(學號,課名)->分數
對於(學號、課名)->姓名,非主屬性「姓名」對碼的部分函式依賴;
對於(學號、課名)->系名,非主屬性「系名」對碼的部分函式依賴;
不符合2nf的要求。
對於(學號、課名)->系名,系名->系主任,非主屬性系主任對碼的傳遞函式依賴;
也不符合3nf。
3nf在2nf的基礎之上,消除了非主屬性對於碼的傳遞函式依賴。
3nf是對字段冗餘性的約束,即任何字段不能由其他字段派生,它要求字段沒有冗餘。
例1:
假設表中有單價、數量、金額,那麼金額是冗餘字段,因為它能由(單價*數量)得到。但是,增加金額字段,可以提高查詢速度。
例2:
以上,不存在非主屬性對碼的部分函式依賴和傳遞依賴,屬於3nf。
消除主屬性對於碼的部分函式依賴與傳遞函式依賴。
上例,主屬性倉庫名對碼(管理員,物品名)的部分函式依賴。
消除函式依賴
正規化的理解
前言 為什麼要寫這篇文章呢,從去年年底開始,就和很多做技術的朋友交流過,從資料庫設計到資料庫架構各個方面的內容。有一些朋友執著於orm,執著於所謂的資料庫設計,卻忘記了一切技術是要為業務服務這個基石。當然這文章裡也有一些自己的理解,想向大家表達。正規化是什麼 正規化是符合某一種級別的關係模式的集合。...
三正規化的理解
1nf 字段不可分 2nf 有主鍵,非主鍵字段依賴主鍵 3nf 非主鍵字段不能相互依賴 解釋 1nf 原子性 字段不可再分,否則就不是關聯式資料庫 2nf 唯一性 乙個表只說明乙個事物 3nf 每列都與主鍵有直接關係,不存在傳遞依賴 不符合第一正規化的例子 關聯式資料庫中create不出這樣的表 表...
三正規化的理解
list b 第二正規化 2nf b 單關鍵字的表,或者若為組合關鍵字則必須沒有關鍵字組合鍵中的某個字段 非關鍵字段的表 b 第三正規化 3nf b 在第二正規化的基礎上,資料表中如果不存在傳遞函式依賴 關鍵字段 非關鍵字段x 非關鍵字段y list size large b 第一正規化 1nf b...