0

我有一个主表,比如说Products,它具有三个字段product_idproduct_nameproduct_typeproduct_type可以type_1type_2type_3。根据类型,可以在表格Product_type_1Product_type_2Product_type_3分别找到有关产品的更多信息。

每个Product_type_*表都有一个product_id引用表中同一列的Product。有没有一种方法可以确保对于表中的每一行,在Product其中一个表中恰好有一行Product_type_*?如果可能的话,我还想确保该行在对应于product_type. 如果我的例子不清楚,请告诉我。

4

3 回答 3

0

如果三个Product_type_X表的结构相同,那么我建议你使用一个子表Product_type,只需添加外键:Product_typeproduct_id-> Productsproduct_id. 所以,这将是一对多的关系。

于 2012-09-11T06:20:38.957 回答
0

我看到两个选项:

1) 使用触发器强制执行规则,防止在类型表中插入多行,并要求类型表中的行与 product_type 值对应。

2)使用三个不同的ID,然后依靠“plain ol”外键。

我更喜欢#2。

祝你好运。

于 2012-09-10T19:44:55.043 回答
0

以下查询将为您提供在任何 Product_type* 中都没有相应记录的“product_id”。

Select P.product_id
From Products P
Left Outer Join Product_type_1 PT1 ON P.product_id = PT1.product_id

Left Outer Join Product_type_2 PT2 ON P.product_id = PT2.product_id

Left Outer Join Product_type_3 PT3 ON P.product_id = PT3.product_id

Where (PT1.product_id IS NULL AND PT2.product_id IS NULL AND PT3.product_id IS NULL)

让我知道这是否有助于解决您的问题...

于 2012-09-10T20:09:19.950 回答