INNODB:在mysql表之间创建多对多关系


INNODB: Create a many to many relationship between mysql tables

我有两个表,项目和实体表。一篇文章可以有许多实体,一个实体可以属于多个类别。

在mysql中创建这样一个关联的sql是什么,这样我就可以通过articles表向entities表插入一个实体,并能够从entities表中查询该项目。

实体只有2个字段,entity_id和entity,而文章表有3个字段:article_id、url和类别

这是我做所需要的吗

CREATE TABLE articles(
  article_id  INT NOT NULL AUTO_INCREMENT,
  url VARCHAR(255),
  category VARCHAR(255),
  PRIMARY KEY(article_id)
)ENGINE=INNODB;
CREATE TABLE entities(
  entity_id  INT NOT NULL AUTO_INCREMENT,
  entity VARCHAR(50),
  PRIMARY KEY(entity_id)
)
 CREATE TABLE relationships(
   relationship_id INT NOT NULL AUTO_INCREMENT,
   article_id INT,
   entity_id INT,
   PRIMARY KEY(relationship_id),
   FOREIGN KEY(article_id) references articles(article_id),
   FOREIGN KEY(entity_id) references entities(entity_id)
 )ENGINE=INNODB;

您需要第三个表来跟踪entity_id和article_id之间的关系。当您想要建立或更改关系时,可以更新此表。

[编辑]这个堆叠式的问题可能有助于你理解,尤其是投票最多的答案。

首先,您的桥接实体〔relationships〕没有正确编写脚本。。。它应该如下:

CREATE TABLE relationships (
article_ID INT NOT NULL,
entity_ID INT NOT NULL,
PRIMARY KEY(article_ID, entity_ID),
FOREIGN KEY(article_ID) REFERENCES articles(article_ID):
FOREIGN KEY (entity_ID) REFERENCES entities(entity_ID);

然而,我不知道你到底想要INSERT什么。