表間的關係一對多/一對一/多對多關係是怎樣建立的?
阿新 • • 發佈:2019-01-11
外來鍵可以是一對一的,一個表的記錄只能與另一個表的一條記錄連線,或者是一對多的,一個表的記錄與另一個表的多條記錄連線。
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--->中間表尋找匹配記錄(多條)--->學生表匹配(一條)