資料庫 資料庫正規化

2021-10-02 12:08:54 字數 1386 閱讀 1803

關聯式資料庫的設計規範。不同的規範要求被稱為不同的正規化,越高的正規化資料庫冗餘越小。

減少資料庫中資料冗餘的過程;

1、第一正規化(1nf):

在關係模式r中,當且僅當所有屬性只包含原子值,即每個分量都是不可再分的資料項,則稱r滿足1nf。

例如表所示的教師職稱情況關係就不滿足1nf。原因在於,該關係模式中的「高階職稱人數」不是乙個原子屬性,若將其拆分為「教授」和「副教授」兩個屬性,則就滿足1nf。

系名稱高階職稱人數

教授副教授

計算機系12

電子系3

42、第二正規化(2nf):

滿足1nf的關係模式會有許多重複值,修改資料可能引起疏漏。為了消除這種資料冗餘和避免更新資料的遺漏,需要使用更加規範的2nf。當且僅當關係模式滿足1nf,且每個非鍵屬性(既不屬於任何候選鍵的屬性,也稱為非主屬性)完全依賴於候選鍵時,則稱r滿足2nf。

例如,有選課關係模式sc(sno,cno,grade,credit),其中(sno,cno)->grade,cno->credit。因此,sc的候選鍵為(sno,cno)。這樣cno->credit就構成了credit對候選鍵(sno,cno)的部分函式依賴。因此,sc不滿足2nf。若要將sc轉化為2nf,可以將它拆分為sc1(sno,cno,grade)和sc2(cno,grade)。

3、第三正規化(3nf):

當且僅當關係模式滿足1nf,且r中沒有非鍵屬性傳遞依賴於候選鍵時,則稱r滿足3nf。

例如學生關係s(sno,sname,dno,dname,location)各屬性分別代表學號,姓名,所在系,系名稱和系位址,其資料如表5-5所示。

snosname

dnodname

location

s01張三

d01計算機系

1號樓s02

李四d01

計算機系

1號樓s03

王五d01

計算機系

1號樓s04

趙六d02

資訊系2號樓

……從各屬性之間的聯絡可以判斷出s的函式依賴有sno->(sname,dno,dname,location),dno->(dname,location)。顯然sno為候選鍵。在函式依賴中有sno->dno->dname與sno->dno->location,這便是傳遞函式依賴。由於dname與location為非鍵屬性,同時傳遞依賴於候選鍵,因此關係模式s不滿足3nf。若要使s滿足3nf,需要將其拆分為s1(sno,sname,dno)和s2(dno,dname,location)。

4、bc 正規化(bcnf):

若關係模式r 是1nf,且每個屬性都不傳遞依賴於r 的候選鍵,則稱r 是bcnf 模式。

資料庫 資料庫設計正規化

在關聯式資料庫中的關係是要滿足一定要求的,滿足不同程度要求為不同正規化,越高的正規化資料庫冗餘越小。但是有些時候一昧的追求正規化減少冗餘,反而會降低資料讀寫的效率,這個時候就要反正規化,利用空間來換時間。目前關聯式資料庫有六種正規化 第一正規化 1nf 第二正規化 2nf 第三正規化 3nf 巴斯 ...

資料庫正規化

注 表在定義中被稱為關係,記作r 欄位在定義中被稱作屬性 模式 資料庫中有三種模式,外模式,內模式,模式 粗體是關鍵字的意思 斜體為外來鍵 以前寫下來的,但是用了多年的帳號已經忘了,唯有把文章轉到這裡來了 真暈哦 http blog.csdn.net fantasylu archive 2004 0...

資料庫 正規化

今天要說一點就是我大學好像過得挺失敗的,因為在那一大堆的公式面前我從來沒有搞清楚過正規化,經過大量的背誦好像也是似懂非懂。看來,大學課本要避免一點的就是不要用公式去說明問題,用簡潔的語句更容易明白。工作中這兩年做的資料庫設計也不少,反回來看這樣公式說明的正規化還是不明白。在網上搜了一點,一下就明白了...