假设我们有如下 2 个表:
products: id, name
(PK = id)
product_group1: product_id
(PK = a1_id)
(FK = a1_id REFRENCES a1)
product_group2: product_id
(PK = a1_id)
(FK = a1_id REFRENCES a1)
product_group3: product_id
(PK = a1_id)
(FK = a1_id REFRENCES a1)
问题是,我想设计一个名为 approved_products
的表,它只接受来自 group1 和 group2(不是 group3)的产品。
我该如何设计这样的表格? (顺便说一句,我正在使用 mysql)
最佳答案
如果不在触发器或应用程序级别插入一些逻辑,您就无法用当前的设计解决这个问题。 FOREIGN KEY
不能引用多个表(我理解你的设计是每个产品组使用一个表,如果我错了请告诉我)。此外,它们不能包含任何条件逻辑,因此即使您只有一个 product_groups
表,您也无法创建仅允许该表中的 G1 和 G2 记录的 FOREIGN KEY
。
为了使用标准的关系完整性约束来完成此操作,您需要一个名为 approvable_products
的附加表,其中包含组中那些产品的 product_ids
一个或第二组。
关于mysql - 关系数据库设计场景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12933877/