2017-10-23 7 views
1

私は3つのテーブルがあると言います。特定のタイプの外来キーの異なる数のテーブルを設定する方法

MenuItem(MenuItemID{PK}, MenuItemName, MenuItemIngredient) 

Ingredient(IngredientID{PK}, IngredientName, SupplierID) 

Supplier(SupplierID{PK}, SupplierName) 

MenuItemテーブルの各MenuItemには、複数の成分が含まれています。 成分表の各成分は複数の供給者を持つことができます。

これを行う私の現在の方法は、2つの余分なテーブルを持つことです。

MenuIngredientLink(MenuItemID{PK}, IngredientID{FK}) 

IngredientSupplierLink(IngredientID{PK}, SupplierID{FK}) 

次に、MenuItemテーブルとIngredientテーブルの最後の列を削除します。

これは本当に良い方法のようには思えません。

代替手段はありますか?

かなり新しいSQLだから、どんな助けにも感謝します。 Microsoft SQL Serverに2014

答えて

1

を使用して

すべてが厳しいone-to-many relationshipを次のので、この問題に対するあなたの独創的なアプローチは、2つのマッピングテーブルを導入するcorrect.So必要はありません。

ただし、このようなシナリオで問題が発生します。原料は多くのサプライヤーから供給され、サプライヤーは複数の原料を提供し、many-to-many relationship.を作成します。次に、マッピングテーブルへのアプローチが推奨されます。

私は参照用に外部ソースを用意しました。お役に立てれば。あなたが指定したとして

Managing Database Relationships

0

我々は外部キーを持つテーブルを作ることができます。 Supplierテーブルから始める場合、必要なすべての値を挿入する必要があります。また、外部キーがないため、制限はありません。次に、Suppliersへの外部キーが必要なため、Ingredientsテーブルに値を挿入します。最後に、Ingredientに外部キーがあるため、MenuItemテーブルに値を挿入します。最初にテーブルを作成し、後で外部キーを追加することができます。

--Suppliers does not have any foreign keys 
CREATE TABLE Supplier (SupplierID int PRIMARY KEY, SupplierName varchar(100)) 

--Ingredients has a foreign key to Supplier(SupplierID) 
CREATE TABLE Ingredient (IngredientID int PRIMARY KEY 
         , IngredientName varchar(100) 
         , SupplierID int) 
ALTER TABLE Ingredient ADD FOREIGN KEY (SupplierID) REFERENCES Supplier(SupplierID) 

--MenuItem has a foreign key to Ingredient(IngredientID) 
CREATE TABLE MenuItem (MenuItemID int PRIMARY KEY 
        , MenuItemName varchar(100) 
        , MenuItemIngredientID int) 
ALTER TABLE MenuItem ADD FOREIGN KEY (MenuItemIngredientID) REFERENCES Ingredient(IngredientID) 
関連する問題