2016-10-17 111 views
1

對於sql中的多對多關係,我有一個快速問題。 因此,理論上我明白,如果ER模型中的兩個實體之間存在M:N關係,我們必須將它分解爲2 1:N關係,其中包含交叉點/查找表,其中包含複合主鍵父表。但是,我的問題是,除了組合主鍵以外,是否還有任何其他額外的列添加到組合表中並且不在任何兩個父表中? (除了intersectionTableId,table1ID,table2ID)4rth列是全新的,並且不在任何2個父表中?請告訴我。使用SQL m:n關係進行查詢

+0

什麼是DBMS?以及如何創建交點表? –

+1

絕對!在這樣一張桌子上關於BELONGS的數據。考慮客戶/電影租賃數據庫。我想知道什麼客戶檢查了什麼電影作爲客戶可以有許多電影,並且一次只能由一個客戶檢查電影;但我希望看看電影的歷史記錄,並知道它何時返回。關聯表可能有一個Checkout和一個CheckIn日期;這將告訴我一個客戶的結帳歷史和持續時間,也許根據電影屬和客戶租用的電影,建議上市可能會創建... – xQbert

回答

2

在一個字 - 是的。表示兩個實體之間關係的屬性是一種常見的做法。

例如,考慮你有一個數據庫,用於存儲人的細節和他們喜歡的運動隊:

CREATE TABLE person (
    id INT PRIMARY KEY, 
    first_name VARCHAR(10), 
    last_name VARCHAR(10) 
); 

CREATE TABLE team (
    id INT PRIMARY KEY, 
    name VARCHAR(10) 
); 

一個人可能喜歡一個以上的團隊,這是你的經典M:N關係表。但是,您也可以爲此實體添加一些詳細信息,例如某人開始喜歡某個團隊的時間:

CREATE TABLE fandom (
    person_id INT NOT NULL REFERENCES person(id),  
    team_id INT NOT NULL REFERENCES team(id), 
    fandom_started DATE, 
    PRIMARY KEY (person_id, team_id) 
);