n元關係
n元關係
設A1,A2,…,An是集合,把A1×A2×…×An的任意子集R都稱為A1,A2,…,An間的n元關係(n-ary relation),從定義可以看出,A1,A2,…,An間的n元關係R⊆A1× A2×…× An。n元關係在關係資料庫系統中有著廣泛的應用。
定義1 設是集合,則稱笛卡兒積 的子集為n元關係,即 。 為n元關係R的域,n叫作它的階。若 稱 為n元組(n-tuple)。
例1設R是由3元組(a,b,c)構成的關係,其中a,b,c是滿足的整數,那麼,但,這個關係的階為3,它的3個域都為整數集合。
例2 設R是由4元組(N,S,D,T)構成的表示火車班次的關係。其中N是車次號,S是始點站,D是終點站,T是發車時間。例如:5108次從溫州到杭州,發車時間為22:40,則(5108,溫州,杭州,22:40)屬於R,這個關係的階是4,它的域是車次號的集合、城市的集合、時間的集合。
在關係數據模型中,資料庫由表構成,表由記錄組成,這些記錄是由欄位構成的n元組的數據項。例:表示車次信息的列車時刻表可以由包含車次、車種、始點站、終點站、發車時間等欄位構成,關係數據模型把下列時刻表表示成一個n元關係,則車次信息記錄可被表示成形如車次、車種、起點站、終點站、發車時間的5元組。例現有6條記錄的樣本:
(5104,普通快車,溫州,杭州,7:20);
(K102,快速列車,溫州,北京,8:00);
(5056,普通快車,溫州,南京,16:40);
(T746,直通特快,寧波,上海,15:10);
(Z10,直達快車,杭州,北京,18:03);
(5152,臨時客車,上海,阜陽,0:14)。
則通常將這些記錄的集合用一張二維表給出,見表1。
表1 火車車次表 | ||||
---|---|---|---|---|
車次 | 車種 | 起點站 | 終點站 | 發車時間 |
5104 | 普通快車 | 溫州 | 杭州 | 7:20 |
K102 | 快速列車 | 溫州 | 北京 | 8:00 |
5056 | 普通快車 | 溫州 | 南京 | 16:40 |
T746 | 直通特快 | 寧波 | 上海 | 15:10 |
Z10 | 直達快車 | 杭州 | 北京 | 18:03 |
5152 | 臨時客車 | 上海 | 阜陽 | 0:14 |
n元關係表示成一張二維表,表的每行對應一個n元組。表的每列對應一個域。由於域可以相同(如上表的第3,4列),為了加以區分,必須對每列起一個名字,稱為屬性。n元關係必有n種屬性。
若關係中的某屬性組的值能唯一地標識一個元組,則稱該屬性組為候選碼。若一個關係有多個候選碼,則選定其中一個為主碼。
例如,表1的n元關係,若是不增加n元組的情況下,屬性車次可以作為主碼。屬性組(起點站,終點站)也可以作為主碼,因為表中沒有二個元組該屬性組的值是相同的。若再增加一些元組。如(5108,普通快車,溫州,杭州,10:40),則該屬性組不可以作為主碼,此時只能選擇車次作為主碼,因為車次總是唯一的。
定義2選擇表示選擇R中的一些滿足F的元組組成一個新的關係。即
例3若n元關係R由表1所示,則
S(R)表示選擇車種為“普通快車”的元組,結果如表2所示。
表2 普通快車車次表 | ||||
---|---|---|---|---|
車次 | 車種 | 起點站 | 終點站 | 發車時間 |
5104 | 普通快車 | 溫州 | 杭州 | 7:20 |
5056 | 普通快車 | 溫州 | 南京 | 16:40 |
S(R)表示選擇起點站為溫州,終點站為杭州的所有元組,結果如表3所示。
表3 起點站為溫州,終點站為杭州的車次表 | ||||
---|---|---|---|---|
車次 | 車種 | 起點站 | 終點站 | 發車時間 |
5104 | 普通快車 | 溫州 | 杭州 | 7:20 |
定義3 投影 是將n元組映射到m元組 其中。即投影運算是保留指定的m列,刪除列。
例4 若n元關係R由表1所示,則表示保留第1,3,4列,結果如表4所示。
表4 只保留第1,3,4列的火車車次表 | ||
---|---|---|
車次 | 起點站 | 終點站 |
5104 | 溫州 | 杭州 |
K102 | 溫州 | 北京 |
5056 | 溫州 | 南京 |
T746 | 寧波 | 上海 |
Z10 | 杭州 | 北京 |
5152 | 上海 | 阜陽 |
當一個投影被施用到一個關係上時,有可能使表中的行變少。當關係中的某些n元組在投影的m個屬性中對應的每個屬性的值都相同,而只在被投影刪除的屬性中有不同的值時,就會出現這種情況。
例5在表1所示的關係中增加一個元組(5108,普通快車,溫州,杭州,10:40),此時對關係做P(R)投影操作,則僅得到含有6個元組的關係,而不是含有7個元組的關係。
定義4 設R是m階關係,S是n階關係,兩個關係的連接操作將生成一個不超過階的新關係,其每個元組的屬性分別來自於R的屬性和S的屬性,且滿足條件F:
其中,記錄表示R中的記錄與S中的記錄連接而成,去掉重複的屬性。