1.第一正規化:第一正規化(normal formate ,1nf)的目標是確保每列的原子性,如果每列(或者每個屬性值)都是不可再分的最小資料單元(也是最小的原子單位),則滿足第一正規化,例如:
客人住宿資訊表(姓名,客人編號,客房號,客房描述,客房型別,客房狀態,床位數,入住人數,**等)。
其中,「位址」列還可以細分為 國家、省、市、區等,甚至更多程式把「姓名」列也才分為「姓」和「名」等。如果業務需求中不需要拆分「位址」列,則該錶已經符合第一正規化,如果需要將「位址」列拆分,則符合第一正規化的表如下:
客人住宿資訊表(姓名,客人編號,國家,省,市,區,門牌號,客房號,客房描述,客房型別,客房狀態,床位數,入住人數, **等)。
2. 第二正規化:
第二正規化(2nf)在第一正規化的基礎上更進一層,其目標市確保表的每列都和逐漸相關,如果乙個關係滿足第一正規化(1nf),並且除了主鍵以外的其他列全部依賴於該主鍵,則滿足第二正規化(2nf)。
客人住宿資訊表資料主要用來描述客人住宿資訊,所以該錶主鍵為(客人編號,客房號),
》「姓名」列,「位址」列→「客人編號」列。
》「客房描述」列「客房型別」列「客房狀態」列,「床位」列、「入住人數」列、「**」列→「客房號」列。
其中,「→」符號代表依賴,以上各列沒有全部依賴主鍵,(客人編號,客房號)只是部分依賴於主鍵,違背了第二正規化的規定,所以在使用第二正規化對客人住宿資訊表進行規範化之後很難分解成以下兩個表:
》客人資訊表(客人編號,姓名,位址,客房號,入住時間,結賬日期,押金,總金額等)主鍵為「客人編號」列,其他列全部依賴於主鍵列。
客房資訊表(客房號,客房描述,客房型別,客房狀態,床位數,入住人數, **)主鍵為「客房號」列,其他列都全部依賴於主鍵列。
3.第三正規化
第三正規化(3nf)在第二正規化的基礎上更進一層,第三正規化的目標是確保每列都和主鍵列直接相關,而不是間接相關,如果第乙個關係滿足第二正規化,(2nf),並且除了主鍵以外的其他列都只能依賴於主鍵列,列和列之間不存在相互依賴關係,則滿足第三正規化(3nf)。
為了理解第三正規化,需要根據amstrong公理之一定義傳遞依賴,假設a,b,c是關係r的三個屬性,如果a→b→c,則從這些函式依賴(fd)中,可以得出a→c稱之為傳遞依賴。
資料庫設計正規化
目前關聯式資料庫有六種正規化 第一正規化 1nf 第二正規化 2nf 第三正規化 3nf 第四正規化 4nf 第五正規化 5nf 和第六正規化 6nf 滿足最低要求的正規化是第一正規化 1nf 在第一正規化的基礎上進一步滿足更多要求的稱為第二正規化 2nf 其餘正規化以次類推。一般說來,資料庫只需滿...
資料庫設計正規化
前言 為什麼要寫這篇文章呢,從去年年底開始,就和很多做技術的朋友交流過,從資料庫設計到資料庫架構各個方面的內容。有一些朋友執著於orm,執著於所謂的資料庫設計,卻忘記了一切技術是要為業務服務這個基石。當然這文章裡也有一些自己的理解,想向大家表達。正規化是什麼 正規化是符合某一種級別的關係模式的集合。...
資料庫正規化設計
在軟體開發過程中,資料庫的設計是非常重要的。可以說,良好的資料庫設計,是對使用者需求的理解的精準定位。它不僅能夠使得軟體開發起來非常便捷,而且還能夠使軟體系統高效執行,同時,為日後的維護或者更換資料庫提供便利。在最近開發系統的過程中,感覺收穫最大的也是關於資料庫的操作。最初開發機房收費系統的時候,由...