關系數據庫設計的規范化與非規范化之爭
關系 數據庫 設計是對數據進行組織化和結構化的過程,核心問題是關系模型的設計。關系模型是數學化的、用二維表格數據描述各實體之間的聯系的模型;它是所有的關系模式、屬性名和關鍵字的匯集,是關系模式描述的對象。關系模式是指一個關系的屬性名表,即二
關系
數據庫設計是對數據進行組織化和結構化的過程,核
心問題是關系模型的設計。關系模型是數學化的、用二維表格數據描述各實體之間的聯系的模型;它是所有的關系模式、屬性名和關鍵字的匯集,是關系模式描述的
對象。關系模式是指一個關系的屬性名表,即二維表的表框架。關系模式的設計是關系模型設計的靈魂。所以,關系模式的設計是關系
數據庫設計核心的核心。
關系模式的設計直接決定著關系數據庫的性能。目前,在指導關系模式的設計中規范化(normalization)設計占有主導地位,它是在數據庫幾十年的
長期發展中產生并成熟的。但近年來這一領域出現了一種新的趨勢,一種稱為非規范化(denormalization)
的關系模式設計引起業界的關注并已在一定的范圍內得到應用。對這一新的設計思想,各方反應迥異褒貶不一,從而在相關的理論界掀起了一場不大不小的規范化與
非規范化之爭。本文簡單介紹了規范化與非規范化設計的基本思想,綜述了正反雙方爭論的要點,供國內業界相關人員參考。 |
關系模式規范化設計的基本思想是通過對關系模式進行分解,用一組等價的關系子模式來代替原有的關系模式,消除數據依賴(包括函數依賴和多值依賴)中不合理
的部分,使得一個關系僅描述一個實體或者實體間的一種聯系。這一過程必須在保證無損連接性、保持函數依賴性的前提下進行,即確保不破壞原有數據,并可將分
解后的關系通過自然聯接恢復至原有關系。 |
具體地說,規范化設計的過程就是按不同的范式,將一個二維表不斷地分解成多個二維表并建立表之間的關聯,最終達到一個表只描述一個實體或者實體間的一種聯
系的目標。目前遵循的主要范式包括1 NF、 2 NF、3 NF、BCNF、4NF和
5NF等幾種;在工程中3NF、BCNF應用得最廣泛,推薦采用 3 NF作為標準。 |
規范化設計的優點包括可有效地消除數據冗余,理順數據的從屬關系,保持數據庫的完整性,增強數據庫的穩定性、伸縮性、適應性。通常認為規范化設計存在的主
要問題是增加了查詢時的連接庫表運算,導致計算機時間、空間、系統及運行效率的損失。在大多數情況下,這一問題可通過良好的索引設計等方法得到解決。 |
非規范化設計的基本思想是,現實世界并不總是依從于某一完美的數學化的關系模式。強制性地對事物進行規范化設計,形式上顯得簡單化,內容上趨于復雜化,更
重要的是導致數據庫運行效率的減低。非規范化要求適當地降低甚至拋棄關系模式的范式,不再要求一個表只描述一個實體或者實體間的一種聯系。其主要目的在于
提高數據庫的運行效率。 |
非規范化處理的主要技術包括增加冗余或派生列,對表進行合并、分割或增加重復表。一般認為,在下列情況下可以考慮進行非規范化處理:(1)大量頻繁的查詢
過程所涉及的表都需要進行連接;(2) 主要的應用程序在執行時要將表連接起來進行查詢;(3)對數據的計算需要臨時表或進行復雜的查詢。 |
非規范化設計的主要優點是減少了查詢操作所需的連接;減少了外部鍵和索引的數量;可以預先進行統計計算,提高了查詢時的響應速度。非規范化存在的主要問題
是增加了數據冗余;影響數據庫的完整性;降低了數據更新的速度;增加了存儲表所占用的物理空間。其中最重要的是數據庫的完整性問題。這一問題一般可通過建
立觸發器、應用事務邏輯、在適當的時間間隔運行批命令或存儲過程等方法得到解決。 |
支持非規范化設計的一方認為,數據庫規范化的程度越高,其中表的數量越多,規范化程度與表的數量直接相關;表的數量越多,表的連接運算也越多;連接運算增
多,必然降低數據庫執行的速度,影響數據庫的性能。只有通過非規范化設計,顯著減少表的數量,從而減少對連接運算的依賴,加速數據庫執行的速度,才能保證
數據庫性能的正常發揮。例如目前流行于決策支持系統的非規范化星型模式就遠勝于應用規范化設計,是非規范化設計的最好范例。非規范化設計并不意味著混亂和
無視規則,它也遵循保護信息完整性等軟件工程的基本原則。 |
支持規范化設計的一方認為,規范化與非規范化只是一個邏輯概念,強調非規范化設計者混淆了邏輯與物理的關系。數據庫的性能是由物理水平決定的,即硬件、數
據庫的大小和物理設計、數據存儲和訪問的方法、數據庫管理系統的優化程度、并發訪問的數量等;非規范化設計并未改變數據庫的物理水平,因此不可能提高數據
庫的性能。規范化并不只是為了避免數據冗余,更重要的是為了確保數據庫的完整性。非規范化設計的最大問題是難以保證數據庫中數據的一致性,存在著破壞數據
的危險。此外,非規范化使一個表中存在多個實體,不同實體混合在一起強化了數據庫的復雜性,提高了用戶理解的難度,并導致描述問題上的困難,增加了正確響
應的風險。只有規范化設計才是解決這些問題的根本途徑。如果不摒棄非規范化設計理念,為了獲得所謂的性能的提高而漠視數據庫完整性被破壞的風險,就無法激
勵開發商去研究真正的完全規范化而高性能的關系數據庫管理系統,其后果必然影響數據庫的健康發展。 |
從某種意義上說,數據庫的規范化與非規范化設計并不是對立的、非此即彼的關系。也許其中一方會逐漸消亡,也許二者存在一條中間道路可走。認識事物原本存在
一個螺旋式上升的過程。這場爭論尚未結束,也無法對最終的結果進行預測。但可以肯定的是,無論結果如何,都將對未來數據庫的發展方向產生深遠的影響。
原文轉自:http://www.kjueaiud.com
老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月
|