資料庫正規化與反正規化

2021-08-21 19:14:49 字數 1141 閱讀 5661

最近涉及到設計和建立數倉表,資料總體劃分為ods/fact/aggr/dws/rpt/dim層,具體結構如下圖所示:

遵從設計規則:以星型模型為設計模式, 維度採用反正規化化, 且維度資料要整個倉庫可共用, 資料準確性要保證, 事實表允許冗餘部分維度資料。針對其中幾個地方,解釋並mark一下。

多維資料模型是最流行的資料倉儲的資料模型,多維資料模型最典型的資料模式包括星型模式雪花模式事實星座模式

星型模型

星型模式的核心是乙個大的中心表(事實表),一組小的附屬表(維表)。星型模式示例如下所示:

雪花模型

雪花模式是星型模式的擴充套件,其中某些維表被規範化,進一步分解到附加表(維表)中。

從圖中我們可以看到位址表被進一步細分出了城市(city)維。supplier_type表被進一步細分出來supplier維。

星座模式

資料倉儲由多個主題構成,包含多個事實表,而維表是公共的,可以共享,這種模式可以看做星型模式的匯集,因而稱作星系模式或者事實星座模式。

正規化化反正規化化

不滿足正規化的模型,就是反正規化模型,反正規化跟正規化所要求的正好相反,在反正規化的設計模式,並不是完全不遵守正規化模型,而是允許適當的資料的冗餘,用這個冗餘去取運算元據時間的縮短。本質上就是用空間來換取時間,把資料冗餘在多個表中,當查詢時可以減少或者是避免表之間的關聯

兩者對比

實際應用中,一般對需要綜合使用正規化和反正規化,保證空間和時間的平衡,但是隨著磁碟空間的越來越廉價,反正規化應用越來越普遍

正規化與反正規化

設計關聯式資料庫時,遵從不同的規範要求,設計出合理的關係型資料庫,這些不同的規範要求被稱為不同的正規化,各種正規化呈遞次規範,越高的正規化資料庫冗餘越小。但是有些時候一昧的追求正規化減少冗餘,反而會降低資料讀寫的效率,這個時候就要反正規化,利用空間來換時間。目前關聯式資料庫有六種正規化 第一正規化 ...

資料庫反正規化 認識三大正規化

有時,理論與實踐有一些差距,在做乙個具體的事情時,我們應該以實際為核心,而不是把理論死搬上來,要 從實際出發 呵呵。在資料庫的世界裡存在著三大正規化,也就是規範,真正的關係型資料庫應該盡可能的滿足這些規範,但有時,我們卻根據實際問題,需要違背這些規範,這個系列我將從實際專案 發來與大家一起說說 反正...

資料庫正規化設計和反正規化設計

1 庫表設計遵從三大正規化。a 資料庫設計的第一大正規化 資料庫表中的所有欄位都只具有單一屬性 單一屬性的列是由基本資料型別所構成的 設計出來的表都是簡單的二維表。乙個列存放的資訊只是乙個屬性的資訊,不能乙個字段存放多個屬性的組合資訊。即資料庫表中的所有字段值都是不可分解的原子值 b 資料庫設計的第...