0

データベース内の次の構造についてサポートが必要です。

これらはテーブルです

  1. 価格表
  2. オプショングループ
  3. 製品グループ
  4. 製品

今、私はこれを構造化する必要があります。最後の表の記事から始めましょう。

記事は製品に属し、次に製品は製品グループに属し、次に製品グループはOptionalGroupに属し、OptionalGroupはPriceListに属します。

そして今日、関係はこのように見えます。

  • 表:PriceList
  • テーブル:OptionalGroupにはPriceListIdへのForeignKeyがあります
  • 表:ProductGroupにはOptionalGroupへのForeignKeyがあります
  • 表:製品にはProductGroupへのForeignKeyがあります

サンプルデータ:

>  Pricelist: 81
   >  OptionalGroup: Shoes
       > ProductGroup: Shoelace
       >   Product: Shoelace 1
       >   Product: Shoelace 2

これをどのように設計すればよいですか?

このようにして、製品を取得するには、価格表、オプショングループ、製品グループを取得する必要があります。その後、製品を取得できます。価格表には独自のOptionalGroupがあり、同じoptionalgroup名を持つこともできるためです。

4

2 に答える 2

1

これをどのように設計すればよいですか?

あなたはすでにしました;)あなたのデータモデルはあなたがあなたの要件として説明したものに適切であるようです。

ただし、基本的な考え方を根本的に変えることなく、いくつかの可能なバリエーションがあります。例えば...

ここに画像の説明を入力してください

...関係の識別を使用して親PKを子に「移行」するため、たとえば、テーブルと結合せずにテーブルから直接取得できますが、子FKPriceListIdは「太い」という代償が伴います。ProductProductGroupOptionalGroup

非識別関係のある設計がここに示されている設計よりも優れているかどうかは、エンジニアリングのトレードオフの問題です。どちらにも長所と短所があり、特定のケースで長所と短所が少ない方を選ぶのはあなたの仕事です。


また、テーブルに何も存在せず(other fields)PriceList空の価格表を作成できない場合(または、単に空の価格表と存在しない価格表を区別しない場合)、その表を完全に省略できます。

于 2012-12-20T15:21:12.857 に答える
0

このデザインは、

table name PriceList
ProductID--> PK
Price
table name OptionalGroup
GroupID--> PK
ProductID--> FK
GroupName
table name ProductGroup
ProductGroupID--> PK
ProductGroupName
GroupID--> FK
table name Product
ProductName
ProductGroupID-->FK
于 2012-12-20T12:10:14.257 に答える