2.1關係數據結構及形式化定義
關係數據庫系統是支持關係模型的數據庫系統。關係模型由關係數據結構、關係操作集合和關係完整性約束3部分組成。
2.1.1關係
1.域(domain)
域是一組具有相同數據類型的值的集合;
2.笛卡爾積(cartesian product)
笛卡爾積是域上面的一種集合運算。笛卡爾積可表示爲一個二維表,表中的每行對應一個元組,表中的每一列的值來自一個域。
3.關係(relation)
關係是笛卡爾積的有限子集,所以關係也是一個二維表,表的每行對應一個元組,表的每列對應一個域。
若關係中的某一屬性組的值能唯一地標識一個元組,則稱該屬性組爲候選碼(candidate key)。
若一個關係有多個候選碼,則選定其中一個爲主碼(primary key)。
候選碼的諸屬性稱爲主屬性(prime attribute),不包含在任何候選碼中的屬性稱爲非主屬性(non-prime attribute)或非碼屬性(non-key attribute)。
關係可以有三種類型:基本關係(通常又稱爲基本表或基表)、查詢表和視圖表。
基本表是實際存在的表,它是實際存儲數據的邏輯表示;查詢表是查詢結果對應的表;視圖表是由基本表或其他視圖表導出的表,是虛表,不對應實際存儲的數據;
關係表中不允許還有表,簡言之不允許表中有表。
2.2關係操作
關係模型中常用的關係操作包括查詢操作(query)和插入(insert)、刪除(delete)和修改(update)操作兩大部分;
2.3關係的完整性
關係模型的完整性規則是對關係的某種約束條件,也就是說關係的值隨着時間的變化時應該滿足一些約束性條件。
2.3.1關係模型的三類完整性約束
關係中有三類完整性約束:實體完整性、參照完整性和用戶定義的完整性。
2.3.2實體完整性(entitiy intergrity)
實體完整性規則
若屬性(指一個或一組屬性)A是基本關係R的主屬性,則A不能取空值;
2.3.3參照完整性(referential integrity)
關係中的某個屬性需要參照某個關係的屬性取值,不僅兩個或兩個以上的關係間可以存在引用關係,同一關係內部屬性間也可能存在引用關係。
設F是基本關係R的一個或一組屬性,但不是關係R的碼,K是基本關係S的主碼,如果F與K相對應,則稱F是R的外碼(foreign key),並稱基本關係R爲參照關係(referencing relation),基本關係S爲被參照關係(referenced relation)或目標關係(target relation)。關係R和S不一定是不同的關係。
參照完整性規則
若屬性(或屬性組)F是基本關係R的外碼,它與基本關係S的主碼K相對應(基本關係R和S不一定是不同的關係),則對應R中每個元組在F上的值必須爲:
1.或者取空值(F的每個屬性值均爲空值);
2.或者等於S中某個元組的主碼值;
2.3.4用戶定義的完整性(user-defined integrity)