【資料庫】關於規範化的瞎扯:1NF、2NF、3NF、BCNF
- 碼(Key):關係中的一個屬性集合,其屬性值可以唯一標識關係中的每個元組。
- 候選碼(Candidate key):若一個碼的任意一個真子集都不為碼時,稱其為候選碼。
- 或者換一個定義:設K為R(U)中的屬性或屬性組,若K完全函式確定U,則K為R的候選碼。
- 主碼:人為選擇的某一個候選碼。
- 全碼:關係中所有屬性構成的碼。
- 主屬性 (Prime Attribute):出現在任意一個候選碼中的屬性。
- 非主屬性:不出現在任何碼中的屬性。
- 1NF:每一個分量都是不可分的(最基本的規範化)。
- 2NF:若R∈1NF,且每個非主屬性都完全函式依賴於R的碼,那麼R∈2NF。
- 3NF:若R∈2NF,且每個非主屬性都不傳遞依賴於R的候選碼,那麼R∈3NF。
- BCNF:若R∈2NF,且每個屬性都不傳遞依賴於R的候選碼,那麼R∈BCNF。
- BCNF:若R∈3NF,且R只有一個候選碼,或者每個候選碼都是單屬性,則R∈BCNF。
接下來是我的瞎扯(真的是瞎扯,大家不要相信):
首先定義一下什麼叫主體類。主體類簡稱主體,是客觀世界存在的一個具有一系列屬性的物件的集合。主體的屬性可分為兩種:預設在研究範圍內不變的本質屬性(比如學生的姓名和學號,課程的課程號和課程名稱,教師的姓名)和可變屬性(比如選課的成績,教師的職稱)。再定義一下什麼叫關係中的主體。