2016-10-17 110 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) 
);