資料庫設計的正規化 用例項幫助理解

2021-10-22 15:30:47 字數 1289 閱讀 4510

該表中,列「系」是可拆分,所以不滿足1nf,應改為下表:

2 2nf:在1nf的基礎上,非碼屬性必須完全依賴於候選碼(在1nf的基礎上消除非主屬性對主碼的部分函式依賴)。

幾個概念:

①函式依賴:a-->b,如果通過a屬性(屬性組)的值,可以確定唯一b屬性的值,則稱b依賴於a。例如:

上表中 學號-->姓名,姓名依賴於學號; (學號, 課程名稱)--> 分數;

②完全函式依賴:a-->b,如果a是乙個屬性組,則b屬性值的確定需要完全依賴於a屬性組中的屬性值。例如:

分數完全依賴於(學號, 課程名稱)。

③部分函式依賴:a-->b,如果a是乙個屬性組,則b屬性值的確定只需要依賴於a屬性組中的某一些屬性值。例如

(學號,課程名稱)--> 姓名 中,通過學號就能確定姓名的值,所以姓名部分依賴於(學號,課程名稱)

④傳遞函式依賴:a-->b,b-->c,如果通過a屬性(屬性組)的值,可以確定唯一b屬性的值,再通過b屬性(屬性組)的值

可以確定唯一屬性的值,則稱c傳遞函式依賴於a。

⑤碼: 如果在一張表中,乙個屬性或屬性組,被其他所有屬性完全依賴,則稱這個屬性或屬性組為該錶的碼。

主屬性:碼屬性組中的所有屬性;

非主屬性:除碼屬性組中的其他屬性

將上表改為符合第二正規化的兩張表:

3.3nf 第三正規化:在2nf基礎上,任何非主屬性不依賴於其他非主屬性(在

2nf基礎上消除傳遞依賴)

疑惑解答: 在學生表中,學號是主碼,姓名和學號都完全依賴於學號,滿足1nf、2nf;由於學生表中可能出現重名(學校人很多嘛)的情況,因此通過姓名不能確定系名,即係名不依賴於姓名,表中不存在傳遞依賴,滿足3nf。

資料庫設計正規化理解

看書的時候有一點迷不好理解,所以找了個時間查了一下。參考文件 設計關聯式資料庫時,遵從不同的規範要求,設計出合理的關係型資料庫,這些不同的規範要求被稱為不同的正規化,各種正規化呈遞次規範,越高的正規化資料庫冗餘越小。目前關聯式資料庫有六種正規化 第一正規化 1nf 第二正規化 2nf 第三正規化 3...

資料庫設計正規化的理解

前言 為什麼要寫這篇文章呢,從去年年底開始,就和很多做技術的朋友交流過,從資料庫設計到資料庫架構各個方面的內容。有一些朋友執著於orm,執著於所謂的資料庫設計,卻忘記了一切技術是要為業務服務這個基石。當然這文章裡也有一些自己的理解,想向大家表達。正規化是什麼 正規化是符合某一種級別的關係模式的集合。...

資料庫設計正規化的理解

正規化是什麼 正規化是符合某一種級別的關係模式的集合。關聯式資料庫中的關係必須滿足一定的要求,即滿足不同的正規化。目前關聯式資料庫有六種正規化 第一正規化 1nf 第二正規化 2nf 第三正規化 3nf 第四正規化 4nf 第五正規化 5nf 和第六正規化 6nf 滿足最低要求的正規化是第一正規化 ...