數據冗餘

欄位在多個表裡重複出現的術語

數據冗餘發生在資料庫系統中,指的是一個欄位在多個表裡重複出現。舉個例子,如果每條客戶購買商品的信息里都連帶記錄了客戶自身的信息,這樣的數據冗餘可能造成不一致,因為客戶自身的信息可能不一樣。 數據冗餘會導致數據異常和損壞,一般來說設計上應該被避免。資料庫規範化防止了冗餘而且不浪費存儲容量。適當的使用外鍵可以使得數據冗餘和異常降到最低。但是,如果考慮效率和便利,有時候也會設計冗餘數據,而不考慮數據被破壞的風險。

資料庫


資料庫,簡而言之可視為電子化的文件櫃——存儲電子文件的處所,用戶可以對文件中的數據運行新增、截取、更新、刪除等操作。
所謂“資料庫”系以一定方式儲存在一起、能予多個用戶共享、具有儘可能小的冗餘度、與應用程序彼此獨立的數據集合。

資料庫規範化


資料庫規範化,又稱資料庫或資料庫的正規化、標準化,是資料庫設計中的一系列原理和技術,以減少資料庫中數據冗餘,增進數據的一致性。關係模型的發明者埃德加·科德最早提出這一概念,並於1970年代初定義了第一範式第二範式和第三範式的概念,還與Raymond F. Boyce於1974年共同定義了第三範式的改進範式——BC範式。
除外還包括針對多值依賴的第四範式,連接依賴的第五範式,DK範式和第六範式。
現在資料庫設計最多滿足3NF,普遍認為範式過高,雖然具有對數據關係更好的約束性,但也導致數據關係表增加而令資料庫IO更易繁忙,原來交由資料庫處理的關係約束現更多在資料庫使用程序中完成。

目的分類


數據的應用中為了某種目的採取數據冗餘方式。
1、重複存儲或傳輸數據以防止數據的丟失。
2、對數據進行冗餘性的編碼來防止數據的丟失、錯誤,並提供對錯誤數據進行反變換得到原始數據的功能。
3、為簡化流程所造成額數據冗餘。例如向多個目的發送同樣的信息、在多個地點存放同樣的信息,而不對數據進行分析而減少工作量。
4、為加快處理過程而將同一數據在不同地點存放。例如并行處理同一信息的不同內容,或用不同方法處理同一信息等。
5、為方便處理而使同一信息在不同地點有不同的表現形式。例如一本書的不同語言的版本。
6、大量數據的索引,一般在資料庫中經常使用。其目的類似第4點。
7、方法類的信息冗餘:比如每個司機都要記住同一城市的基本交通信息;大量個人電腦都安裝類似的操作系統或軟體。
8、為了完備性而配備的冗餘數據。例如字典里的字很多,但我們只查詢其中很少的一些字。軟體功能很多,但我們只使用其中一部分。
9、規則性的冗餘。根據法律、制度、規則等約束進行的。例如合同中大量的模式化的內容。
10、為達到其他目的所進行的冗餘。例如重複信息以達到被重視等等。