我有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;
答案 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
。