回覆列表
  • 1 # 零一研究院

    第一正規化,欄位之間不重複,不冗餘;

    第二正規化,行之間不冗餘,也就是主鍵不重複,這個主鍵,更多的指業務上的唯一id,比如身份證號,表的主鍵不一定是身份證號,但是業務上的唯一id應該是身份證號;

    第三正規化,實際上是第二正規化的一個子集,是說表之間欄位冗餘的問題,比如,人員資訊表中,有人員所屬部門id,但是不能出現部門名稱,因為部門名稱應該存在於部門表中,應該去部門表中去查。

    資料庫正規化理論,是關係資料庫設計的經典理論,不過在目前實際軟體開發特別是網際網路開發中,並不需要嚴格遵守,相反需要根據業務場景,做適當的冗餘,以減少開發的複雜度,以及提升系統的效能。

  • 2 # 散居獵人

    1NF 欄位不重複

    2NF 例項不重複

    3NF 欄位之間沒有函式依賴

    定義很明確,不用自己怎麼怎麼理解。

    經常聽到有人說什麼什麼我理解我感覺。。。你不需要理解也不需要你感覺,定義明明白白!

  • 3 # 北京抖抖抖

    欄位必須冗餘!要留10到20個自定義欄位,這樣後來用到新欄位,或需要新分類,新標籤時,才不需要改資料庫結構

  • 4 # 寫程式設計師的程式碼

    說的資料庫三正規化都是指的關係型資料庫,正規化指的就是規範的意思,三正規化指的就是利用關係型資料庫進行建表時候普遍需要遵循的三個規範(即1NF,2NF,3NF)

    1NF:建表時要保證列的原子性(即不可分割性)

    2NF:第二正規化(2NF)是在第一正規化(1NF)的基礎上建立起來的,即滿足第二正規化(2NF)必須先滿足第一正規化(1NF)。第二正規化(2NF)要求資料庫表中的每個例項或記錄必須可以被唯一地區分。選取一個能區分每個實體的屬性或屬性組,作為實體的唯一標識。

    3NF:第三正規化(3NF)是第二正規化(2NF)的一個子集,即滿足第三正規化(3NF)必須滿足第二正規化(2NF)。簡而言之,第三正規化(3NF)要求一個關係中不包含已在其它關係已包含的非主關鍵字資訊。

    二、對於任何給定的資料通常都有很多種表示方法,從完全的正規化化到完全的反正規化化,以及兩者的折中。在正規化化的資料庫中,每個事實資料會出現並且只出現一次。相反,在反正規化化的資料庫中,資訊是冗餘的,可能會儲存在多個地方。

    例如,經典的“僱員”,部門,部門領導的例子

    這個schema的問題是修改資料時可能發生不一致。假如Say Brown接任Accounting部門的領導,需要修改多行資料來反映這個變化,這個是很痛苦且容易引起錯誤。要避免這麼痛苦的事我們需要對這個表進行正規化化,方法是拆分僱員和部門項。拆分以後可以用下面兩張表分別來儲存。

    僱員表:

    部門表:

    這樣設計 的兩張表符合第二正規化,在很多情況下做到這一步已經足夠好了。然而,第二正規化只是許多可能正規化中的一種。

    綜上所述,在實際的應用中正規化要混合使用,可能使用部分正規化化的schema、快取表,以及其他技巧。

  • 中秋節和大豐收的關聯?
  • 格力空調有問題怎麼辦?