2012-04-24 11 views
1

私は実装しようとしているデータベーススキーマに対して、誰かが私の混乱を助けてくれることを願っています。これは、ネットワークプロバイダからのモバイル契約とネットワークボルトの販売に基づいています。契約には、販売代理店ごとに価格が異なるネットワーク契約を販売している場合と販売していない場合があります。データベーススキーマは、複数の製品とサプライヤに役立ちます

Distributors 
Name    Address 
Distributor 1  address1 
Distributor2  address2 

Networks 
Name 
Orange 
O2 
Vodafone 

Tariffs 
Network   Tariff   Minutes 
Orange  Business 600  600 Mins 
Orange  Business 100  100 Mins 
O2   Everyday 100  200 Mins 
O2   Everyday 100  100 Mins 

Devices 
Name  Make   
Apple  Iphone 
Samsung  Galaxy 

Bolt Ons 
Network Description 
Orange  Web 500mb 
Orange  Unlimited Texts 
O2   Web 250Mb 
O2   Unlimited Texts 
  
Order 
- Exactly 1 Distributor 
- Exactly 1 Network 
- Exactly 1 Tariff 
- 0 or more Devices 
- 0 or more Bolt Ons 
Distributor 
- 0 or more Orders 
- 1 or more Networks 
- 1 or more Tariffs 
o Unique Tariff Costs 
- 1 or more BoltOns 
o Unique Bolt on Cost 
- 1 or more Devices 
o Unique Device cost 
Network 
- 0 Orders 
- 0 or more Distributors 
- 1 or more Tariffs 
- 0 or more BoltOns 
- 0 or more Devices 
Tariffs 
- 0 or more Orders 
- 0 or more Distributors 
- Exactly 1 Network 
- 0 or more BoltOns 
- 0 Devices 
BoltOns 
- 0 or more Orders 
- 0 or more Distributors 
- Exactly 1 Network 
- 0 or more Tariffs 
- 0 or more Devices 
Devices 
- 0 or more Orders 
- 0 or more Distributors 
- 0 or more Networks 
- 0 Tariffs 
- 1 or more BoltOns 

私は2つのスキーマが出ているが、私は本当にそれで満足していません。主に、ディストリビューターがネットワークからすべてのオファリングを提供していない可能性があるためです。また、関税、デバイス、ボルトオンの価格も、ディストリビューターごとに異なります。私はスキーマのアプローチに対するいくつかの提案を期待していましたか?私は、次のシェマにアップCOEMている持っていたコメントは以下の

多くのおかげ

ロブ

EDIT -------- 。私は

デバイスとボルトンズは、製品テーブルにあると十分に類似しているTEH以下の仮定を追加しました:

我々が実行されている必要がありますクエリの種類のユーザーが6-支払っているかもしれないものに基づいて請求書の世代です12ヶ月前 - 販売代理店の価格は毎月変更することがあります。

ネットワークなどあたりの販売代理店あたりの販売携帯電話の

数...

  • 関税は、販売代理店ごとしかし、価格と手数料の変更の代理店で同じです。

以下のスキームについてのコメントはありますか?

[Distributors] 
    [Dist_ID] PK 
    [Name], 
    [Address] 

[Network] 
    [Network_ID] PK, 
    [Name], 

[Tarrif] 
    [TariffID] PK 
    [Name], 
    [Minutes] , 
    [OtherMinutes] , 
    [Texts] , 
    [Data], 
    [Term] , 
    [Active] BIT, 

[TariffsByDistributor] 
    [TariffsDistributorID] PK 
    [DistID] FK 
    [TariffID] FK 
    [RevShare], 
    [Commision], 
    [Cost], 
    [Active] 

[Product_Type] 
    [Product_Type_ID] PK, 
    [Name], 
    [Details], 

[TariffsByNetwork] 
    [Network_ID] PK, 
    [TariffID] PK, 

[Order] (
    [Order_Id]  PK, 
    [Customer_Id], 
    [Date Sold], 
    [PaymentStatus], 
    [PaymentStatusDate], 

[TariffOrders] (
    [Order_Id]   PK, 
    [TariffsDistributorID] PK, 
    [RevenueShare], 
    [Commision], 
    [Cost], 

[Products] (
    [Product_Id] PK 
    [Product_Type_ID] FK, 
    [Name], 
    [Manufacturer], 
    [Colour] 
    [Picture], 
    [Active] BIT, 

[ProductByDistributor] 
    [ProductsByDistributorID] PK, 
    [Dist_ID] FK, 
    [Product_Id] FK, 
    [RevShare], 
    [Commision], 
    [Cost], 
    [Active], 

[ProductsOrder] 
    [Order_Id]   PK, 
    [ProductsByDistributorID] PK, 
    [RevenueShare], 
    [Commision], 
    [Cost], 

[Products_Network] 
    [Network_ID] PK, 
    [Product_Id] PK, 

答えて

0

あなたが代理店と提供、販売代理店とpricings間の関係をidentifiyingているという点であなたは、あなたのスキーマを終えへの正しい軌道に乗っています。

まず、ディストリビューターと関税の両方に関係するディストリビューターの表を追加します。次に、TariffPriceなどの他の制限を探して、そこでテーブルを構築します。

すべての関係ルールがわかっている場合は、まず用紙に設定することができます。すべてのルールを共有している場合、私はあなたのデザインをさらに手助けすることができます。あなたのスキーマについて

それはよさそうです。この段階でデータベースを正規化する際の複雑さは、後で頭痛を軽減します。私は次の勧告を行うでしょう:

  • テーブル名が複数であるかどうかを標準化します。たとえば、「注文」は単数で、複数の「製品」があります。私の個人的な好みは、単数で行くことですが、それは別の時間のための議論です。
  • 「ProductByDistributor」の名前を「DistributorProduct」に変更してください。
  • ジョインテーブルの名前では、「OwnerItem」形式のほうが読みやすくなっています。たとえば、 "ProductOrder"ではなく "OrderProduct"です。
  • テーブル「TariffOrders」と「ProductOrders」を削除できます。これらの代わりに、 "OrderPart"または "OrderItem"テーブルを追加する必要があります。これには、 "Order"、 "DistributorProduct"、および "DistributorTariff"にリンクする外部キーがあります。これにより、収益シェア、手数料、費用データの重複が取り除かれます。
  • 「料金」という言葉の誤字を訂正してください。それは将来あなたを悩ますでしょう! ; o)

ホープが役に立ちます。私はどんな質問でも詳しく説明してくれてうれしいです。

+0

ご回答いただきありがとうございます。質問をビジネスルール全体で更新しました。 私はtariffPriceなどのリンクテーブルを追加し始めましたが、スキーマは非常に速く大きくなってしまいました。ちょうど私が数日間chemaを調べていたので、私はそれを考えるのをやめているかもしれません。 –

+0

ありがとう、ありがとうございました –

+0

こんにちは、Steはこれについて何か提案をする機会を得ましたか? –

関連する問題