Database-Design
什麼時候應該去規範化?
我想我們都熟悉數據庫規範化。
我的問題是:當你想對錶進行非規範化時,你使用了哪些準則?
在 OLAP 操作時進行非規範化,在 OLTP 時進行規範化(來自非規範化部分下的連結文章)
用於線上事務處理 (OLTP) 的數據庫通常比用於線上分析處理 (OLAP) 的數據庫更加規範化。OLTP 應用程序的特點是大量小交易,例如在超市收銀台更新銷售記錄。期望是每個事務都將使數據庫處於一致狀態。相比之下,用於 OLAP 操作的數據庫主要是“主要讀取”數據庫。OLAP 應用程序傾向於提取長期積累的歷史數據。對於此類數據庫,冗餘或“非規範化”數據可能有助於商業智能應用程序。具體來說,星型模式中的維度表通常包含非規範化數據。在提取、轉換、載入 (ETL) 處理過程中,必須仔細控制非規範化或冗餘數據,並且在數據處於一致狀態之前不應允許使用者查看數據。星型模式的標準化替代方案是雪花模式。在許多情況下,隨著電腦和 RDBMS 軟體變得更加強大,對非規範化的需求已經減弱,但是由於數據量通常隨著硬體和軟體性能的增加而增加,OLAP 數據庫通常仍然使用非規範化模式。
非規範化也用於提高小型電腦的性能,例如電腦化收銀機和移動設備,因為這些數據可能僅用於查找(例如價格查找)。當平台(例如 Palm)不存在 RDBMS 時,也可以使用非規範化,或者不需要對數據進行更改並且快速響應至關重要。