0

たとえば、Productsと の 3 つのフィールドを持つマスター テーブルがあります。、またはにすることができます。タイプに応じて、製品に関する詳細情報は表またはそれぞれに記載されています。product_idproduct_nameproduct_typeproduct_typetype_1type_2type_3Product_type_1Product_type_2Product_type_3

Product_type_*テーブルには、テーブルproduct_id内の同じ列を参照する がありProductます。Productテーブルの各行に対して、テーブルの 1 つに正確に 1 つの行があることを確認する方法はありProduct_type_*ますか? 可能であれば、行がに対応するテーブルにあることも確認したいと思いますproduct_type。私の例が明確でない場合はお知らせください。

4

3 に答える 3

0

2 つのオプションが表示されます。

1) トリガーを使用してルールを適用し、タイプ テーブルに複数の行が挿入されるのを防ぎ、product_type値に対応するタイプテーブルに行を要求します。

2) 3 つの異なる ID を使用し、「プレーン オール」の外部キーに依存する。

私は#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 に答える
0

3 つのテーブルの構造がProduct_type_X同じである場合は、1 つの子テーブルを使用することをお勧めします。Product_type外部キーを追加するだけですProduct_typeproduct_id-> Products. product_id. したがって、1対多の関係になります。

于 2012-09-11T06:20:38.957 に答える