第二正規化(2NF)是資料庫範式所使用的正規形式。規則是要求資料表裏的所有資料都要和該資料表的鍵(主鍵與候選鍵)有完全依賴關係:每個非鍵屬性必須獨立於任意一個候選鍵的任意一部分屬性。如果有哪些資料只和一個鍵的一部份有關的話,就得把它們獨立出來變成另一個資料表。如果一個資料表的鍵只有單個欄位的話,它就一定符合第二正規化。
一個資料表符合第二正規化若且唯若
- 它符合第一範式
- 所有非鍵欄位都不能是候選鍵非全體欄位的函數
範例
有一個資料表記錄了裝置元件的資訊,如下所示:
元件 ID (主鍵) | 價格 | 供應商ID (主鍵) | 供應商名稱 | 供應商住址 |
---|---|---|---|---|
65 | 59.99 | 1 | Stylized Parts | VA |
73 | 20.00 | 1 | Stylized Parts | VA |
65 | 69.99 | 2 | ACME Industries | CA |
這個資料表的每個值都是單一值,所以它符合第一範式。因為同一個元件有可能由不同的供應商提供,所以得把元件 ID 和供應商 ID 合在一起組成一個主鍵。
元件(關鍵詞)和價格之間的關係很正確:同一個元件在不同供應商有可能會有不同的報價,所以價格確實和主鍵完全相關(完全依賴)。
另一方面,供應商的名稱和住址就只和供應商 ID 有關(部分依賴),這不符合第二正規化的原則。仔細看就會發現 "Stylized Parts" 這個名稱和 "VA" 這個住址重複出現了兩次;要是它改名了或是被其他公司併購了怎麼辦?這時候最好把這些資料獨立出新的資料表:
供應商 ID (主鍵) | 名稱 | 住址 |
---|---|---|
1 | Stylized Parts | VA |
2 | ACME Industries | CA |
這麼一來,原本的 "元件來源" 資料表就得要做相對應的改動:
元件 ID (主鍵) | 價格 | 供應商 ID(主鍵、非關鍵詞) |
---|---|---|
65 | 59.99 | 1 |
73 | 20.00 | 1 |
65 | 69.99 | 2 |
檢查資料表裏的每個欄位,確認它們是不是都和關鍵詞完全相關, 這樣才能知道這個資料表是不是符合第二正規化; 如果不是的話,就把那些不完全相關的欄位獨立出一個資料表。 接下來的步驟是要確保所有不是鍵的欄位都和彼此沒有依賴關係,這就叫做第三正規化。
參考文獻
- Litt's Tips: Normalization (頁面存檔備份,存於互聯網檔案館)
- Rules Of Data Normalization
- Date, C. J., & Lorentzos, N., & Darwen, H. (2002). Temporal Data & the Relational Model Archive.is的存檔,存檔日期2012-12-09 (1st ed.). Morgan Kaufmann. ISBN 1-55860-855-9.
- Date, C. J. (1999), An Introduction to Database Systems (8th ed.). Addison-Wesley Longman. ISBN 0-321-19784-4.
- Kent, W. (1983) A Simple Guide to Five Normal Forms in Relational Database Theory (頁面存檔備份,存於互聯網檔案館), Communications of the ACM, vol. 26, pp. 120-125
- Date, C.J., & Darwen, H., & Pascal, F. Database Debunkings (頁面存檔備份,存於互聯網檔案館)
- H.-J. Schek, P.Pistor Data Structures for an Integrated Data Base Management and Information Retrieval System
外部連結
- Database Nomalization 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
Wikiwand in your browser!
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.