三大正規化是為了在設計中更好的解決資料冗餘,資料有效性檢查,提高儲存效率考慮。提出的三大正規化。但其實在工程專案中,有時候為了效率考慮,很多時候並不會按照三大正規化來設計資料庫。
下面我們來了解一下資料庫的三大正規化與反正規化。
第一正規化 (1nf)
每個表的每一列都要保持它的原子性也就是表的每一列都是不可分割的
違反第一正規化的示範:
進行修改後:
第二正規化 (2nf)
要在滿足第一正規化的基礎上,每個表都要保持唯一性也就是表的非主鍵欄位要完全依賴主鍵字段。
我們可以從上圖看出表中與學生主鍵完全依賴的字段有,課程,和分數。
而其他的字段只是與主鍵有一點點的依賴關係所以我們把它分拆為兩張表:
在完成了第二正規化之後我們可以發現我們消除了很多的冗餘資料
第三正規化 (3nf)
要在滿足第一和第二正規化的基礎上,表中不能產生傳遞依賴,要消除表中的
冗餘性然後我們再次對錶進行拆分修改
以上就完成了三大正規化的要求
反正規化沒有冗餘的資料庫未必是最好的資料庫,有時為了提高執行效率,就必須降低正規化標準,適當保留冗餘資料。具體做法是: 在概念資料模型設計時遵守第三正規化,降低正規化標準的工作放到物理資料模型設計時考慮。降低正規化就是增加字段,減少了查詢時的關聯,提高查詢效率。
資料庫反正規化 認識三大正規化
有時,理論與實踐有一些差距,在做乙個具體的事情時,我們應該以實際為核心,而不是把理論死搬上來,要 從實際出發 呵呵。在資料庫的世界裡存在著三大正規化,也就是規範,真正的關係型資料庫應該盡可能的滿足這些規範,但有時,我們卻根據實際問題,需要違背這些規範,這個系列我將從實際專案 發來與大家一起說說 反正...
資料庫設計 三大正規化和反正規化
總共有六大正規化 第一正規化 1nf 第二正規化 2nf 第三正規化 3nf 巴斯 科德正規化 bcnf 第四正規化 4nf 和第五正規化 5nf,又稱完美正規化 只記前三正規化 三大正規化 第一正規化 資料表中欄位滿足原子性,字段不可再分 如學生資訊字段 儲存 張三,手機號 這個可以再分姓名,手機...
資料庫正規化與反正規化
最近涉及到設計和建立數倉表,資料總體劃分為ods fact aggr dws rpt dim層,具體結構如下圖所示 遵從設計規則 以星型模型為設計模式,維度採用反正規化化,且維度資料要整個倉庫可共用,資料準確性要保證,事實表允許冗餘部分維度資料。針對其中幾個地方,解釋並mark一下。多維資料模型是最...