我有两个表,项目和实体表。一篇文章可以有许多实体,一个实体可以属于多个类别。
在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
什么。