我想知道是否有一种方法可以在 MySQL 数据库的单个字段中包含多个值,其中每个值都是引用另一个表的外键。
我正在设计一个包含产品表和产品认证表的数据库。
我正在使用 InnoDB 和外键约束。
“产品”表包含有关产品特定实例的详细信息。产品表中包含的详细信息之一是“product_certification_id”列,它是引用“product_certification”两列表中索引的外键。
产品认证表包含产品实例可能具有的可能认证。
我的问题源于产品认证不是相互排斥的事实,所以我很好奇是否可以在引用同一个表的同一个字段中有多个外键值。
此外,我担心将来可能会添加更多认证,因此我需要以一种易于扩展的方式设计它。
谢谢你的想法。
最佳答案
您通常做的是使用中间链接表设置多对多关系。像下面这样的东西:
CREATE TABLE product (
`id` integer AUTO_INCREMENT NOT NULL,
-- other cols --
PRIMARY KEY (`id`)
);
CREATE TABLE certification (
`id` integer AUTO_INCREMENT NOT NULL,
-- other cols --
PRIMARY KEY (`id`)
);
CREATE TABLE product_certification (
`product_id` integer NOT NULL,
`certification_id` integer NOT NULL,
PRIMARY KEY (`product_id`, `certification_id`),
CONSTRAINT `product_id_product_id`
FOREIGN KEY (`product_id`)
REFERENCES `product` (`id`) ON DELETE CASCADE,
CONSTRAINT `certification_id_certification_id`
FOREIGN KEY (`certification_id`)
REFERENCES `certification` (`id`) ON DELETE CASCADE
);
关于php - 是否可以在一个字段中使用多个外键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7094170/