資料庫正規化, 資料倉庫設計架構Kimball 和 Inmon 雜記
關係型資料庫的三大正規化:
第一正規化(1NF)是指資料庫表的每一列都是不可分割的基本資料項,同一列中不能有多個值,即實體中的某個屬性不能有多個值或者不能有重複的屬性。
第二正規化(2NF)是資料庫規範化中所使用的一種正規形式。它的規則是在1NF的基礎上要求資料表裡的所有資料都要和該資料表的主鍵有完全依賴關係;所有屬性列完全由主鍵全權決定,而不需要其他列參與指定。
第三正規化(3NF)在2NF的基礎上,不僅僅屬性列由主鍵完全決定,同時不能被其他屬性列決定。比如一張學生資訊表:學號是主鍵,屬性列有學生姓名,所在院系和所在系主任3個。那麼學生的所在系主任不僅被主鍵學號決定,其實還被所在院系決定,就不符合3NF了。
In English:
The first normal form: it means that every column in the database cannot be divided anymore. For example if you design a database for a school.There is student information table, then you cannot combine student's email and phone number into one column,They should be two columns.
The second normal form: it is based the 1NF. And what's more, it means in a table every attribute should be determined by the primary key.
The third normal form: it is based the 2NF. It means in a table every attribute should be ONLY determined by the primary key.
資料倉庫的設計模型: Inmon和Kimball
參考這篇文章:
http://tdan.com/data-warehouse-design-inmon-versus-kimball/20300
微軟的BI主要是基於Kimball模型的, 這個模型是反資料庫三正規化的, 提出了雪花模型和星型模型, 區分了事實表和維度表. Kimball還提出了一致性維度的概念. 把不同資料來源的維度統一更新到一個維度上去. 就是SSAS
Inmon用的比較少, 他的數倉是符合正規化的設計, 然後用於分析的資料集市從這個normalized的數倉中派生資料, 好處是數倉是normalized的, 資料的準確性很高, 沒有什麼冗餘的資料, 但是維護和開發工作量巨大.
維度建模的方式: 星型模型和雪花模型
星型模型和雪花模型是區別於傳統關係型資料庫的三正規化建模的一種建模方式, 星型模型運用廣泛,效率高, 而雪花模型運用較少, 但往往會作配角存在. 為什麼有了星型模型還要有雪花模型呢? 一個典型的例子就是為了支援多對多關係. 維度表和事實表見有多對多的關係. 此外當一個維度的數量級大到一定程度時, 如果用雪花模型能減少冗餘資料的時候,也可以嘗試使用雪花模型.
參考連結:http://blog.sina.com.cn/s/blog_a656b4e4010115j3.html