本文轉載自:http://blog.csdn.net/HaoDaWang/article/details/78098937?locationNum=4&fps=1 超級感謝博主分享

本篇博文中的例題只涉及到N:M和N:M:P的轉換,大家看完後可以再去看下下面的這幾個例題。

https://blog.csdn.net/Flora_SM/article/details/84645752


如何把ER模型轉換為關係模型

這是資料庫工程設計進行到邏輯設計的一重大環節,簡單的說,如果概念設計是用ER模型, 整合為全局的ER模型,那麼在邏輯設計這塊, 主要任務就是把ER模型轉換為關係模型。

轉換隻需知道三個轉換準則:

1:1

遇到1:1 關係的話在兩個實體任選一個添加另一個實體的主鍵即可。

1:N

1:N 遇到 1:N 關係的話在N端添加另一端的主鍵,假如有學生和班級兩個實體,一個班級可以容納多個學生,但是一個學生只能選擇一個班級, 因此班級和學生是1:N的關係,現在要轉換為關係模型, 我們只需在學生的這端加上班級的唯一標識即可,這樣做的原因是,因為一個學生只能有一個班級,班級是相對學生唯一的。

N:M

遇到N:M我們需要將聯繫轉換為實體,然後在該實體上加上另外兩個實體的主鍵,作為聯繫實體的主鍵,然後再加上該聯繫自身帶的屬性即可。例如有學生和老師兩個實體, 一個學生可以由多名老師來授課,一名老師也可以授課多名學生,它們是M:N關係的,假如聯繫為授課,該聯繫上有成績屬性,因此當我們把它轉換為關係模型時,我們把聯繫轉換為聯繫實體,並添加學生實體的主鍵(學號)和教師實體的主鍵(教師編號)作為自己的主鍵,值得注意的是,授課實體的外鍵分別是學號和教師編號,但是它的主鍵是(學號,教師編號),另外它還擁有自己的一個屬性成績。

1:1:N

這是三元聯繫的對應關係,但是當轉換為關係模型時,和1:N的情況是差不多的。我們只需將N端添加另外兩端的主鍵即可。

M:N:P

這種三元聯繫的三種多對應關係,看上去很複雜,其實轉換起來並不是那麼複雜了,我們要做的僅僅是將其中的聯繫轉換為聯繫實體,然後在聯繫實體上添加M端N端P端的主鍵,然後加上聯繫實體自身的屬性,就行了。

例子:

說了這麼多看個小例子。

這是一份關於商店商品倉庫的ER圖。

先看倉庫和商品之間是M:N的關係,於是我們首先想到的應該是把聯繫 庫存轉換為庫存實體。

庫存 (倉庫號,商品號,日期,庫存量)然後是商品實體和倉庫實體商品(商品號,商品名,單價)倉庫(倉庫號,倉庫名,地址)

除此之外倉庫和商品還有一個供應關係,同樣是M:N關係:

供應 (倉庫號,商品號 ,月份,月供應量)

在上圖的商店和倉庫之間的關係可能寫漏了,但是它們應該也是M:N的關係,一個商店可以被多個倉庫供應,一個倉庫也可以供應多個商店。上面已經創建了供應實體,現在只需在供應實體中假如商店號即可,也就是商店實體的主鍵。

供應(倉庫號,商品號,商店號 ,月份,月供應量)

商店(商店號,商店名,地址)

總結

至此,轉換關係模型也完成了,當然這只是個例子,實際的開發中,我們可能會遇到各式各樣奇怪的需求,這就更要求我們做好概念設計的環節,對後來的資料庫設計和維護都有好處。ER圖的好壞,始終是資料庫設計的重要一節。

我的公眾號:Java小部落

我的個人博客:fangjiaxian.cn


推薦閱讀:
相關文章