我想知道是否有一种方法可以在MySQL数据库的单个字段中包含多个值,其中每个值都是引用另一个表的外键.
我正在设计一个带有产品表和产品认证表的数据库.
我正在使用InnoDB和外键约束.
“product”表包含有关产品特定实例的详细信息.产品表中包含的详细信息之一是“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,mysql,relational-database,foreign-keys
来源: https://codeday.me/bug/20191009/1876780.html