使用sqlm:n关系进行查询

使用sqlm:n关系进行查询,sql,database,database-design,entity-relationship,Sql,Database,Database Design,Entity Relationship,我有一个关于sql中多对多关系的快速问题。 因此,理论上我理解,如果ER模型中的两个实体之间有M:N关系,我们必须将其拆分为2个1:N关系,并包含一个交集/查找表,该表具有来自两个父表的复合主键。但是,我这里的问题是,除了复合主键之外,是否可以向复合表中添加任何其他不在两个父表中的列?(除了intersectionTableId、table1ID、table2ID)第4列是全新的,不在任何两个父表中?请让我知道 是的,您可以通过自己显式地为“关系”表建模(就像您的其他实体一样) 下面是一些关于这

我有一个关于sql中多对多关系的快速问题。
因此,理论上我理解,如果ER模型中的两个实体之间有M:N关系,我们必须将其拆分为2个1:N关系,并包含一个交集/查找表,该表具有来自两个父表的复合主键。但是,我这里的问题是,除了复合主键之外,是否可以向复合表中添加任何其他不在两个父表中的列?(除了intersectionTableId、table1ID、table2ID)第4列是全新的,不在任何两个父表中?请让我知道

是的,您可以通过自己显式地为“关系”表建模(就像您的其他实体一样)

下面是一些关于这个问题的帖子


一句话,是的。通常的做法是表示两个实体之间关系的属性

例如,考虑你有一个数据库来存储他们喜欢的人和运动队的细节:

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)
);

这是什么DBMS?交集表是如何创建的?当然!有关关联的数据属于这样一个表。考虑一个客户/电影租赁数据库。我想知道哪些客户签出了哪部电影,因为一个客户可以有很多电影,一部电影一次只能有一个客户签出;但是我想检查一下电影的历史,知道它什么时候被归还。关联表可以有签出和签入日期;这将告诉我客户退房的历史和持续时间,可能根据电影类别和客户租用的电影,可以创建一个建议列表…@weiu DBA,我当时使用的是Oracle,它是一个图书推荐表,以防客户找不到他/她的所需图书,我们想提出另一个合适的建议,我对延迟回复表示歉意。非常感谢@xQbert在我脑海中澄清了这一点,我为没有跟进这一点表示歉意,但我正在从过去的错误中吸取教训。希望你能让这一切过去。@gireesh4manu没问题。很高兴能帮上忙。谢谢你的回复@Mureinik。非常感谢。这基本上是一个书籍推荐功能,为那些找不到所需书籍的人推荐替代书籍。谢谢@SlimsGhost。我将浏览您建议的链接。