查询 SQL m:n 关系
query with SQL m:n relationships
我有一个关于 sql 中多对多关系的快速问题。
所以从理论上讲,我理解如果 ER 模型中的 2 个实体之间存在 M:N 关系,我们必须将其拆分为 2 1:N 关系,并包含 intersection/lookup table 它有一个来自父 table 的复合主键。但是,我的问题是,除了复合主键之外,是否可以将任何其他额外的列添加到复合 table 中,而这些列不在任何 2 个父 table 中? (除了 intersectionTableId、table1ID、table2ID)第 4 列是全新的,不在任何 2 个父 table 中?请告诉我。
是的,您可以通过明确地为 "relationship" table 建模(就像您的其他实体一样)。
这里有一些关于这个问题的帖子。
Create code first, many to many, with additional fields in association table
Entity Framework CodeFirst many to many relationship with additional information
一句话-是的。通常的做法是表示两个实体之间关系的属性。
例如,假设您有一个数据库,用于存储人们和他们喜欢的运动队的详细信息:
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关系table。但是,您还可以向该实体添加一些详细信息,例如一个人何时开始喜欢一个团队:
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)
);
我有一个关于 sql 中多对多关系的快速问题。 所以从理论上讲,我理解如果 ER 模型中的 2 个实体之间存在 M:N 关系,我们必须将其拆分为 2 1:N 关系,并包含 intersection/lookup table 它有一个来自父 table 的复合主键。但是,我的问题是,除了复合主键之外,是否可以将任何其他额外的列添加到复合 table 中,而这些列不在任何 2 个父 table 中? (除了 intersectionTableId、table1ID、table2ID)第 4 列是全新的,不在任何 2 个父 table 中?请告诉我。
是的,您可以通过明确地为 "relationship" table 建模(就像您的其他实体一样)。
这里有一些关于这个问题的帖子。
Create code first, many to many, with additional fields in association table
Entity Framework CodeFirst many to many relationship with additional information
一句话-是的。通常的做法是表示两个实体之间关系的属性。
例如,假设您有一个数据库,用于存储人们和他们喜欢的运动队的详细信息:
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关系table。但是,您还可以向该实体添加一些详细信息,例如一个人何时开始喜欢一个团队:
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)
);