什么是數據冗余?
數據冗余是指數據之間的重復,也可以說是同一數據存儲在不同數據文件中的現象。
舉個例子
表 s (學號, 班級,姓名 ) c(課程名, 課程號 ) 表 cc(學號 課程號)
表 d(學號 班級 課程名)
學生選課關系 ,s表定義學生信息 ,c表定義課程信息 ,cc表定義選課信息
表 d則屬於數據數據 , 因為表d可以用語句
select 學號 班級 課程名
from s,cc
where s.學號=cc.學號
來表示
關系數據庫的數據冗余形成的原因
表的重復、屬性的重復、元組的重復、屬性值的重復。有的數據冗余用於數據間建立聯系、數據安全或為了數據使用的便利,是必需的數據冗余,而其余的數據冗余為非必需的數據冗余應盡量予以消除。按屬性值域集合基的特點將其分為有限類和無限類。無限類屬性值偶爾重復不是數據冗余,有限類屬性值的重復由一對多或多對多的關系所致,可相機處理之。
關系數據庫中的數據冗余主要是指關系數據庫中同一信息數據的重復存貯。
數據冗余浪費了寶貴的資源,應盡量減少。但關系數據庫中為實現一些功能有些數據冗余是必需的。必需的數據冗余主要用於以下用途:
(1)數據間建立聯系,如兩表間通過共同屬性建立聯系;
(2)數據恢復,如建立備份文件以備正式文件被破壞時恢復;
(3)數據核查,如設立數據校驗位可以檢查數據在存貯、傳輸等過程中的改變;
(4)數據使用的便利,如為了查看數據的直觀,使用數據的方便、高效。
(5)減少數據通訊開銷,如分布式數據庫在不同場地重復。
避免數據冗余-數據庫三范式
-第一范式(1NF)
所有的域都應該是原子性的,即數據庫表的每一列都是不可分割的原子數據項,而不能是集合,數組,記錄等非原子數據項,即沒有重復域。
-第二范式(2NF)
在滿足第一范式的基礎上,要求數據庫表中的每個實例或記錄必須可以被唯一地區分。
-第三范式(3NF)
在滿足第二范式的基礎上,任何非主屬性不依賴於其它非主屬性。