資料庫:關係模型基本介紹
關係模型研究什麼?
關係模型就是處理Table的,它由三個部分組成:
1:描述DB各種資料的基本結構形式
2:描述Table與Table之間所可能發生的各種操作(關係運算)
3:描述這些操作所應遵循的約束條件(完整性約束)
就是要學習:Table如何描述,有哪些操作,結果是什麼,有哪些約束等.
關係模型的三個要素
1 基本結構:Relation/Table
2 基本操作:Relation Operator(各種運算操作)
3 完整性約束:實現完整性,參照完整性和使用者自定義完整性
候選碼/候選鍵
關係中的一個屬性組,其值能唯一標識一個元組,若從該屬性組中去掉任何一個屬性嗎,它就不具有這一性質了,這樣的屬性組稱為候選碼
例如:"學生(S#,Sname,Sage,Sclass)",S#就是一個候選碼,在此關係中,任何兩個元組的S#是一定不同的,而這兩個元組的Sname,Sage,Sclass都可能相同,所有S#是候選碼。
有時,關係中有很多組候選碼,例如:
學生(S#,Sname,Sage,Sclass,Saddress)
其中屬性S#是候選碼,屬性組(Sname,Saddress)也是候選碼(同名同地址的兩個同學是不存在的)
主碼/主鍵
當有多個候選碼是,可以選定一個作為主碼
當DBMS以主碼為主要線索管理關係中的各個元組
主屬性與非主屬性
包含在任何一個候選碼中的屬性被稱作主屬性,二其他屬性被稱作非主屬性
最簡單的,候選碼只包含一個屬性
最極端的,所有屬性構成這個關係的候選碼,稱為全碼
例如:關係“教師授課”(T#,C#)中的候選碼(T#,C#)就是全碼
外碼/外來鍵
關係R中的一個屬性組,它不是R的候選碼,但它與另一個關係S的候選碼相對應,則稱這個屬性組為R的外碼或外來鍵。
例如:“合同”關係中的客戶號不是候選碼,但確實外碼。因它與“客戶”關係中的候選碼“客戶號”相對應。
兩個關係通常是靠外碼連線起來的。
關係模型中的完整性
實體完整性
關係的主碼中的屬性值不能為空值;
意義:關係中的元組對應到現實世界相互之間可區分的一個個個體,這些個體是通過主碼來唯一標識的;若主碼為空。則出現不可標識的個體,這是不容許的
空值的含義
空值:不知道、不存在或無意義的值;
在進行關係操作是,有時關係中的某屬性值是當前填不上的,比如檔案中有“生日不詳”、“下落不明”、“日程尚待公佈”等,需要空值來代替,關係模型中用"?"來表徵。
資料庫中有了空值,會影響許多方面,如影響聚集函式運算的正確性,不能參與算數、比較或邏輯運算等。
有空值的時候是需要特殊處理的,要特別注意。
參照完整性
如果關係R1的外碼Fk與關係R2的主碼Pk相對應,則R1中的每一個元組的Fk值或者等於R2中的某個元組的Pk值,或者為空值、
意義:如果關係R1的年某個元組t1參照了關係R2的某個元組t2,則t2必須存在。
使用者自定義完整性
使用者針對具體應用環境定義的完整性約束條件
如S#要求是10為整數,其中前四位為年度,當前年度與他們的差必須在4以內。
DBMS對關係完整性的支援
實體完整性和參照完整性有由DBMS系統自動支援
DBMS系統通常提供如下機制:
1 它使使用者可以自定義有關完整性約束條件
2 當有更新操作發生是,DBMS將自動按照完整性約束條件檢驗更新操作的正確,即是否符合使用者自定義的完整性