數據表設計:多對多關系E-R圖轉換——中間表


鏈接:https://blog.csdn.net/vainfanfan/article/details/80568784

鏈接2:https://www.cnblogs.com/hiwangzi/p/6910219.html

對於java類:多對多關系在java中表現為  兩個類各自添加一個對方集合屬性,一對多關系,在一的一方添加多的集合,多的一方添加一的對象,一對一關系,各自類添加一個對方類屬性

      數據庫表之間一對一、一對多的關系在代碼中是通過 對象引用對象數組/List等形式的引用 實現的

對於表:多對多則需要拆分成三個表,多了中間表(表的關鍵,若表與表有關系,則要多建立字段與他表建立聯系,根據A表這個字段找到B表的數據,根據B表這個字段找到A表數據

 

 

 

原文鏈接:https://www.cnblogs.com/panxuejun/p/5977064.html

表間的關系一對一/一對多/多對多關系是怎樣建立的?

外鍵可以是一對一的,一個表的記錄只能與另一個表的一條記錄連接,或者是一對多的,一個表的記錄與另一個表的多條記錄連接。

1.一對多,在多的一方建立外鍵(外鍵指向一的主鍵)

母親與孩子的關系:母親,孩子兩個實體
母親表:ID(P),名字,年齡,性別
孩子表:ID(P),名字,年齡,性別
以上關系:一個媽媽可以在孩子表中找到多條記錄(也可能是一條),但是一個孩子只能找到一個媽媽
是一種典型的一對多的關系。
但是以上設計:解決了實體的設計表問題,但是沒有解決關系問題,孩子找不到母親,母親也找不到孩子

解決方案:在某一張表中增加一個字段,能夠找到另外一張表中的記錄:在孩子表中增加一個字段
指向母親表,因為孩子表的記錄只能匹配到一條母親表的記錄。
母親表:ID(P),名字,年齡,性別
孩子表:ID(P),名字,年齡,性別,母親表ID(母親表主鍵)

2.多對多的關系,是通過中間表。中間表是多的一方,所以多的一方要包含指向一的一方的外鍵。所以中間表,作為兩邊多的一方,中間表要包含兩邊的外鍵,兩個外鍵分別指向兩張表的主鍵。
多對多
一對表中(A)的一條記錄能夠對應另外一張表(B)中的多條記錄;同時B表中的一條記錄
也能對應A表中的多條記錄

老師和學生
老師表 T_ID(P),姓名,性別
學生表 S_ID(P),姓名,性別
以上設計方案:實現了實體的設計,但是沒有維護實體的關系
一個老師教過多個學生,一個學生也被多個老師教過

解決方案:增加一張中間關系表
老師與學生的關系表:ID(P),T_ID,S_ID 
老師表與中間表形成一對多的關系,而中間表是多表;維護了能夠唯一找到一表的關系;
同樣的學生表與中間表也是一個一對多的關系; 
學生找老師:找出學生ID--->中間表尋找匹配記錄(多條)--->老師表匹配(一條)
老師找學生:找出老師ID--->中間表尋找匹配記錄(多條)--->學生表匹配(一條)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM