E-R圖向關係資料模型的轉換
1. 一個實體型轉換為一個關係模式。實體的屬性就是關係的屬性。實體的碼就是關係的碼。
例如在我們的例子中,學生實體可以轉換為如下關係模式,其中學號為學生關係的碼:
學生(學號,姓名,出生日期,所在系,年級,平均成績) 同樣,性別、宿舍、班級、檔案材料、教師、課程、教室、教科書都分別轉換為一個關係模式。
2. 一個聯絡轉化為一個關係模式,與該聯絡相連的各實體的碼以及聯絡的屬性轉化為關係的屬性,該關係的碼則有三種情況:
l 若聯絡為1:1,則每個實體的碼均是該關係的後選碼。
l 若聯絡為1:n,則關係的碼為n端實體的碼。
l 若聯絡為m:n,則關係的碼為諸實體碼的組合。
2.1 聯絡為1:1
一個1:1聯絡可以轉換為一個獨立的關係模式,也可以與任意一端對應的關係模式合併。
l 如果轉換為一個獨立的關係模式,則與該聯絡相連的各實體的碼以及聯絡本身的屬性均轉換為關係的屬性,每個實體的碼均是該關係的候選碼。
l 如果與某一端對應的關係模式合併,則需要在該關係模式的屬性中加入另一個關係模式的碼和聯絡本身的屬性。
例如在我們的例子中,“管理”聯絡為1:1聯絡,我們可以將其轉換為一個獨立的關係模式:
管理(職工號,班級號)或 管理(職工號,班級號)
管理”聯絡也可以與班級或教師關係模式合併。如果與班級關係模式合併,則只需在班級關係中加入教師關係的碼,即職工號:
班級:{班級號,學生人數,職工號}
同樣,如果與教師關係模式合併,則只需在教師關係中加入班級關係的碼,即班級號:
教師:{職工號,姓名,性別,職稱,班級號,是否為優秀班主任}
2.2 聯絡為1:n
一個1:n聯絡可以轉換為一個獨立的關係模式,也可以與n端對應的關係模式合併。
l 如果轉換為一個獨立的關係模式,則與該聯絡相連的各實體的碼以及聯絡本身的屬性均轉換為關係的屬性,而關係的碼為n端實體的碼。
l 如果與n端對應的關係模式合併,則在n端實體對應模式中加入1端實體所對應關係模式的碼,以及聯絡本身的屬性。而關係的碼為n端實體的碼。
例如在我們的例子中,“組成”聯絡為1:n聯絡,將其轉換為關係模式。
一種方法是使其成為一個獨立的關係模式:
組成(學號,班級號)
其中學號為“組成”關係的碼。
另一種方法是將其學生關係模式合併,這時學生關係模式為:
學生(學號,姓名,出生日期,所在系,年級,班級號,平均成績)
後一種方法可以減少系統中的關係個數,一般情況下更傾向於採用這種方法。
2.3 聯絡為m:n
一個m:n聯絡轉換為一個關係模式。與該聯絡相連的各實體的碼以及聯絡本身的屬性均轉換為關係的屬性。而關係的碼為各實體碼的組合。
例如在我們的例子中,“選修”聯絡是一個m:n聯絡,可以將它轉換為如下關係模式,其中學號與課程號為關係的組合碼:
選修(學號,課程號,成績)
三個或三個以上實體間的一個多元聯絡轉換為一個關係模式。與該多元聯絡相連的各實體的碼以及聯絡本身的屬性均轉換為關係的屬性。而關係的碼為各實體碼的組合。
例如在我們的例子中,“講授”聯絡是一個三元聯絡,可以將它轉換為如下關係模式,其中課程號、教師號和書號為關係的組合碼:
講授(課程號,教師號,書號)
3.同一實體集的實體間的聯絡,即自聯絡,也可按上述1:1、1:n和m:n三種情況分別處理。
例如,如果教師實體集內部存在領導與被領導的1:n自聯絡,我們可以將該聯絡與教師實體合併,這時主碼職工號將多次出現,但作用不同,可用不同的屬性名加以區分,比如在合併後的關係模式中,主碼仍為職工號,再增設一個“系主任”屬性,存放相應系主任的職工號。
4.具有相同碼的關係模式可合併。
為了減少系統中的關係個數,如果兩個關係模式具有相同的主碼,可以考慮將他們合併為一個關係模式。合併方法是將其中一個關係模式的全部屬性加入到另一個關係模式中,然後去掉其中的同義屬性(可能同名也可能不同名),並適當調整屬性的次序。
例如我們有一個“擁有”關係模式: 擁有(學號,性別)
有一個學生關係模式: 學生(學號,姓名,出生日期,所在系,年級,班級號,平均成績)
這兩個關係模式都以學號為碼,我們可以將它們合併為一個關係模式,假設合併後的關係模式仍叫學生:
學生(學號,姓名,性別,出生日期,所在系,年級,班級號,平均成績)
按照上述4條原則,學生管理子系統中的18個實體和聯絡可以轉換為下列關係模型:
學生(學號,姓名,性別,出生日期,所在系,年級,班級號,平均成績,檔案號)
性別(性別,宿舍樓)
宿舍(宿舍編號,地址,性別,人數)
班級(班級號,學生人數)
教師(職工號,姓名,性別,職稱,班級號,是否為優秀班主任)
教學(職工號,學號)
課程(課程號,課程名,學分,教室號)
選修(學號,課程號,成績)
教科書(書號,書名,價錢)
教室(教室編號,地址,容量)
講授(課程號,教師號,書號)
檔案材料(檔案號,……)
該關係模型由12個關係模式組成。其中學生關係模式包含了“擁有”聯絡、“組成”聯絡、“歸檔”聯絡所對應的關係模式;教師關係模式包含了“管理”聯絡所對應的關係模式;宿舍關係模式包含了“住宿”聯絡所對應的關係模式;課程關係模式包含了“開設”聯絡所對應的關係模式。