給定兩個集合方便舉例 A={1,2,3},B={4,5}
域:域是一組具有相同數據類型的集合。(比如{男🧑,女👧},長度小於25字節的字符串集合,同理A和B也是域)
笛卡爾積:域上的一種集合運算。(比如A*B={{1,4},{1,5},{2,4},{2,5},{3,4},{3,5}})
關係:A*B的子集叫做在域A,B上的關係,表示爲R(A,B)。
元組:A*B的結果中每一個元素叫做一個元組。(比如{1,4},{3,5}等)
屬性:關係也是一張二維表,表的每行表示一個元組,每列對應一個域,由於域可以相同,爲了加以區分,必須對每列取一個名字,稱爲屬性。
候選碼:若關係中的某個屬性組的值能唯一的標識一個元組,而其子集不能,則稱該屬性組爲候選碼。(比如姓名,地址,學號三個屬性,學號可以確定唯一的學生,則學號可以爲候選碼,但是姓名或地址不行,因爲可能會有重名或同地的,但是姓名+地址就可以了【emmm也許還存在同名還同地的但就是這麼個意思🤷】)
主碼:若一個關係有多個候選碼,則選定其中一個爲主碼。
外碼:關係R中的一個屬性組,它不是R的候選碼,但它與另一個關係的候選碼相對應,則稱這個屬性組爲R的外碼。(兩個關係通常通過外碼相互連接)
在網上找了個圖片舉例:
關係模式和關係:關係模式是關係的描述。它可形式化地表示爲R(U,D,DOM,F),其中R爲關係名,U爲組成該關係的屬性名集合,D爲U中屬性所來自的域,DOM爲屬性向域的映像集合,F爲屬性間數據的依賴關係集合 。
關係是關係模式在某一時刻的狀態或內容。
關係模式是靜態的,穩定的;而關係是動態的,隨時間不斷變化的。(比如學生關係模式在不同的學年,學生關係是不同的)
關係數據庫:在一個給定的應用領域中,所有關係的集合構成一個關係數據庫。
關係模型的完整性規則:
(1)實體完整性規則:若屬性A是基本關係R的主屬性,則屬性A不能取空值。(比如學生(學號,姓名,性別)中,學號爲主碼則學號不能爲空值。)
(2)參照完整性規則:若屬性(或屬性組)F是基本關係R的外碼,它與基本關係S的主碼相對應(基本關係R和S不一定是不同的關係),則對於R中每個元組在F上的值必須爲:或者取空值(F的每個屬性值均爲空值),或者等於S中某個元組的主碼值。即屬性F本身不是主屬性,則可以取空值,否則不能取空值。
(3)用戶定義的完整性:就是針對某一具體關係數據庫的約束條件。它反映某一具體應用所涉及的數據必須滿足的語義要求。(比如某個屬性必須取唯一值,某個非主屬性不能取空值等)
第六題:
(1)
(2)
(3)
(4)
(5)
關係代數的基本運算:選擇、投影、並、集合差、笛卡爾積運算。
其他運算都可以用這幾種基本運算寫出,如交:R∩S=R-(R-S) 等。