1. 程式人生 > >《數據庫系統概論》 -- 6關系數據理論

《數據庫系統概論》 -- 6關系數據理論

add 學生 相等 teacher 之間 數據結構 包含 老師 概念

關系模式五元組

R<U,D,DOM,F>

R--關系名

U--屬性(組)

D--U中的屬性所來自的域

DOM--屬性到域的映射

F--U中的數據依賴(函數依賴、多值依賴、連接依賴等)

數據依賴不良會帶來的危害

數據冗余

更新異常

插入異常

刪除異常

函數依賴

概念 X,Y是R的子集,不存在任意兩個元組在X上的取值相等,而在Y上的取值不等,稱Y函數依賴於X,記作X→Y。

關系舉例 Student(Sno,Sname,Cno,Cname,Sdept,Dept_manager,Grade)

理解 不存在同一個X有多個Y。Sno→Sdept,Sdept→Dept_manager

分類

平凡的函數依賴 X→Y, Y?X。(Sno,Sname) →Sname/*無意義,不討論*/

非平凡的函數依賴 X→Y, Y?X。Sno→Sname

相互函數依賴 X→Y, Y→X。Sno→Sname, Sname→Sno/*適用於不允許重名的情況*/

完全函數依賴 X→Y, Y不依賴於X的任一真子集。

部分函數依賴 X→Y, Y亦可依賴於X的某一真子集。

傳遞函數依賴 X→Y, Y不依賴於Z, Y→Z。

候選碼 對於R<U,F>,U中有子集K,且,則K為候選碼

主碼 有多個候選碼時,選一個作為主碼

主屬性 任意一個候選碼中的屬性,均為主屬性

全碼 U不存在子集候選碼,U唯一確定自身,則為全碼

多值依賴

定義

對於R<U,F>,U有子集X,Y,Z,且Z=U-X-Y,如果對於給定的t(X,Z)值,對應的一組Y值的取值只與X值有關,而與Z值的變化無關,則稱Y多值依賴於X,記作X→→Y

如果Z為空值,則稱平凡的多值依賴

舉例

Teaching(Course, Teacher, Course_Book)

/*課程-老師-教材書*/

理解

一個老師可以帶多門課程,一本教材可以被多個課程使用(如《數據結構》可被數學、計算機使用),解決了2NF的傳遞依賴

每門課程有固定的一群老師,有固定的使用教材書,所以同一個課程,同一本教材所對應的老師組,不會因為教材而改變

性質

對稱性:若X→→Y,則X→→Z

傳遞性:若X→→Y, Y→→Z,則X→→Z-Y

函數依賴是特殊的多值依賴

若X→→Y,X→→Z,則X→→YZ,X→→Y∩Z,X→→Y-Z,X→→Z-Y

1NF

定義 R<U,F>中每一個分量必須是不可再分的數據項

2NF

定義 R<U,F>∈1NF,且每一個非主屬性完全依賴於任何一個候選碼

理解 不能存在部分依賴於任一候選碼的非主屬性

反例 S-L-C(Sno, Sdept, Cno, Cname, Grade)

理解 候選碼:(Sno,Cno)

因為Sno→Sdept,所以非主屬性Sdept部分依賴於候選碼(Sno, Cno)

3NF

定義 非主屬性不可傳遞函數依賴於任一候選碼

理解 非主屬性之間不可有依賴關系

反例 S-L(Sno, Sdept, SAddress) /*SAddress為學生宿舍樓號,一個系一棟樓*/

理解 候選碼:Sno

因為Sno→Sdept, Sdept→SAddress,所以

BCNF

定義 R<U,F>∈1NF,若X→Y且Y?X時,X必包含候選碼

其他 由Boyce, Codd提出,在第三範式的基礎上改進,故也稱修正的第三範式/擴充的第三範式

理解 所有的非平凡函數依賴的決定屬性(組)必須包含候選碼

反例 STC(Student, Teacher, Course) /*每個老師教一門課,每門課由多個老師教,每個學生選多個課程*/

理解 候選碼(Student, Teacher, Course)

因為Teacher→Course,但是Teacher不是候選碼

4NF

定義 R<U,F>∈1NF,如果對於R的每個非平凡多值依賴X→→Y(Y?X),X必包含候選碼

理解 所有非平凡多值依賴的決定屬性(組)必須包含候選碼

反例 WSC(Warehouse, Saver, Commodity) /*倉庫,保管員,商品*/

理解 Warehouse→→Saver,但是Warehouse不是候選碼

圖解

技術分享

《數據庫系統概論》 -- 6關系數據理論