E-R模型如何轉換成關系模型,這里我們分成三種情況進行講解,分別是一對一,一對多和多對多。
1.一對一的情況:
有兩種方法解決這個問題。第一個方法:可以單獨對應一個關系模式,由各實體的主碼構成關系模式,而關系模式的主碼可以是任一個實體集的主碼。而實體中屬性照常寫就可以了。第二個方法:實體中的屬性照常寫,然后將一方實體集的主碼加到另一方實體集對應的關系模式中。下面舉個例子我們來看一下:
在這個例子中,利用方法一,先將兩個實體正班長和班級的屬性照着寫下來,然后將關系模式“屬於”的屬性寫出來——即兩邊實體的主碼,其中關系模型“屬於”的主鍵可以是兩端實體集的任一主碼。利用方法二,也是先將兩端實體的屬性照着寫下來,然后注意這一點,將一端實體的主碼加到另一端實體的主碼中,圖例中就是將“班級”實體的主碼加入到“正班長”關系屬性中。
2.一對多的情況:
這種情況可以跟一對一的情況對比着學習。第一個方法:同一對一的方法一是差不多的,只是對應的關系模式中,其主碼不再是任一實體的主碼就可以,而是必須指定n端的主碼為關系模式的主碼。第二個方法:同一對一的方法二也是差不多的,但是值得強調的是,必須將1端的主碼加到n端的關系模式中,而且n端的主碼仍然為該關系模式中的主碼。同樣,我們也來舉個例子。
如圖,在方法一中,關系模式的主鍵是n端學生實體的主鍵。在方法二中,將一端對應的實體主鍵“班級編號”加入到了對應n端“學生”的關系模式中,並且,n端的主碼仍然為該關系模式的主碼。
3.多對多的情況:
對於多對多的聯系,似乎是這三種類型中最簡單的一個了。其轉換原則為:每個實體集對應一個關系模式,對於多對多的聯系,其單獨對應一個實體集,該實體集的主碼由各實體集的主碼共同構成。我們同樣來看一個例子。
在上圖這個例子中,每個實體集都對應一個關系模式,其聯系“選課”也對應一個關系模式,這個關系模式的主碼便是兩端實體集的主碼。關於E-R模型轉化成關系模型我們就學到這里,其實很簡單,只要掌握了要領,做幾個例子,就會很好的上手,就會達到掌握的目的了。
學生:學號,姓名,性別,年齡
課程:課程編號,課程名
選修:學號,課程編號,分數
教師:教師編號,教師名,職稱,課程編號
參加:教師編號,項目編號
項目:項目編號,項目名,項目負責人
職工:職工號,姓名,年齡,職稱
倉庫:倉庫號,面積,電話號碼
工作:職工號,倉庫號
庫存:倉庫號,零件號,庫存量
零件:零件號,名稱,規格,單價,描述
供應商:供應商號,姓名,地址,電話號碼,賬號
供應:項目號,供應商號,零件號,供應量
項目:項目號,預算,開工日期