我对sql中的多对多关系有一个快速的问题。 所以理论上我理解如果ER模型中的2个实体之间有M:N关系,我们必须将它分成2 1:N关系,并包含一个交集/查找表,该表具有来自两者的复合主键。父表。但是,我的问题是,除了复合主键之外,是否可以在复合表中添加任何其他列,这些列不在2个父表中的任何一个中? (除了intersectionTableId,table1ID,table2ID)一个4rth列,它是全新的,不在2个父表中的任何一个中?请告诉我。
答案 0 :(得分:3)
总之 - 是的。通常的做法是表示两个实体之间关系的属性。
例如,考虑您有一个数据库,存储他们喜欢的人员和运动队的详细信息:
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)
);
答案 1 :(得分:0)
是的,你可以通过明确地自己建模“关系”表来做到这一点(就像你的其他实体一样)。
以下是关于这个问题的一些帖子。
Create code first, many to many, with additional fields in association table
Entity Framework CodeFirst many to many relationship with additional information