將E-R圖轉換為關系模型的轉換規則如下:
•1)
實體集轉換為關系
–實體集對應於一個關系
–關系名:與實體集同名。
–屬性:實體集的所有屬性。
–主碼:實體集的主碼。
2) 聯系轉換為關系
聯系轉換成為關系模式。聯系轉換成為關系模式時,要根據聯系方式的不同采用不同的轉換方式
①1:1聯系的轉換方法
a) 將1:1聯系轉換為一個獨立的關系:與該聯系相連的各實體的碼以及聯系本身的屬性均轉換為關系的屬性,且每個實體的碼均是該關系的候選碼。
b) 將1:1聯系與某一端實體集所對應的關系合並,則需要在被合並關系中增加屬性,其新增的屬性為聯系本身的屬性和與聯系相關的另一個實體集的碼。
第一步:聯系形成的關系獨立存在:
職工表(職工號,姓名,年齡)主碼:職工號
產品表(產品號,產品名,價格)主碼:產品號
負責(職工號,產品號)主碼:職工號或產品號
合並方案1:“負責”與“職工”兩關系合並:
職工(職工號,姓名,年齡,產品號)
產品(產品號,產品名,價格)
合並方案2:“負責”與“產品”兩關系合並:
職工(職工號,姓名,年齡)
產品(產品號,產品名,價格,職工號)
② 1:n聯系的轉換方法
a)一種方法是將聯系轉換為一個獨立的關系,其關系的屬性由與該聯系相連的各實體集的碼以及聯系本身的屬性組成,而該關系的碼為n端實體集的碼;
b)另一種方法是在n端實體集中增加新屬性,新屬性由聯系對應的1端實體集的碼和聯系自身的屬性構成,新增屬性后原關系的碼不變。
步驟一:聯系形成的關系獨立存在。
倉庫(倉庫號,地點,面積)
主碼:倉庫號
產品(產品號,產品名,價格)
主碼:產品號
倉儲(倉庫號,產品號,數量)主碼:產品號
合並后方案:聯系形成的關系與n端對象合並。
倉庫(倉庫號,地點,面積)
③ m:n聯系的轉換方法
在向關系模型轉換時,一個m:n聯系轉換為一個關系。轉換方法為:與該聯系相連的各實體集的碼以及聯系本身的屬性均轉換為關系的屬性,新關系的碼為兩個相連實體碼的組合(該碼為多屬性構成的組合碼)。
•該模型包含兩個實體集(學生、課程)和一個m:n聯系
該模型可轉換為三個關系模式:
–學生(學號,姓名,性別,年齡)主碼:學號
-課程(課程號,課程名,學分)主碼:課程號
–選課(學號,課程號,成績)主碼:學號+課程號
E-R圖向關系模型的轉換規則:一個實體型轉換為一個關系模式。實體的屬性就是關系的屬性,實體的碼就是關系的碼。
對於實體間的聯系則有以下不同的情況:
(1)一個1:1聯系可以轉換為一個獨立的關系模式,也可以與任意一端對應的關系模式合並。如果轉換為一個獨立的關系模式,則與該聯系相連的各實體的碼以及聯系本身的屬性均轉換為關系的屬性,每個實體的碼均是該關系的候選碼。如果與某一端實體對應的關系模式合並,則需要在該關系模式的屬性中加入另一個關系模式的碼和聯系本身的屬性。
(2)一個1:n聯系可以轉換為一個獨立的關系模式,也可以與n端對應的關系模式合並。如果轉換為一個獨立的關系模式,則與該聯系相連的各實體的碼以及聯系本身的屬性均轉換為關系的屬性,而關系的碼為n端實體的碼。
(3)一個m:n聯系轉換為一個關系模式。與該聯系相連的各實體的碼以及聯系本身的屬性均轉換為關系的屬性,各實體碼的組合組成該關系的碼,或碼的一部分。
(4)三個或三個以上實體間的一個多元聯系可以轉換為一個關系模式。與該多元聯系相連的各實體的碼以及聯系本身的屬性均轉換為關系的屬性,而關系的碼為各實體碼的組合。
(5)具有相同碼的關系模式可合並。