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

时间:2014-03-21 22:29:29

标签: php mysql sql many-to-many foreign-key-relationship

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

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

实体只有2个字段,entity_id和entity,而articles表有3个字段:article_id,url和category

这就是我要做的事情

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;

2 个答案:

答案 0 :(得分:2)

您需要第三个表来跟踪entity_id和article_id之间的关系。如果要创建或更改关系,请更新此表。

[编辑] 这个stackoverflow question可以帮助您理解,尤其是最受欢迎的答案。

答案 1 :(得分:0)

首先,你的网桥实体[关系]没有正确编写脚本......它应该是以下内容:

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