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
    
命令
- 正好 1 个经销商
- 正好 1 个网络
- 正好 1 关税
- 0 个或更多设备
- 0个或更多螺栓
经销商
- 0 个或更多订单
- 1 个或多个网络
- 1 个或多个关税
o 独特的关税成本
- 1 个或多个螺栓
o独特的成本螺栓
- 1 个或多个设备
o 唯一设备成本
网络
- 0 个订单
- 0 个或更多经销商
- 1 个或多个关税
- 0 个或多个 BoltOns
- 0 个或更多设备
关税
- 0 个或更多订单
- 0 个或更多经销商
- 正好 1 个网络
- 0 个或多个 BoltOns
- 0 台设备
螺栓
- 0 个或更多订单
- 0 个或更多经销商
- 正好 1 个网络
- 0 个或多个关税
- 0 个或更多设备
设备
- 0 个或更多订单
- 0 个或更多经销商
- 0 个或更多网络
- 0 关税
- 1 个或多个螺栓

我想出了 2 个模式,但我真的不满意。主要是因为分销商可能无法提供来自网络的所有产品。关税、设备和配件的价格也因经销商而异。我希望对模式方法有一些建议?

非常感谢

编辑-------- 根据我的评论,我提出了以下 shema。我添加了以下假设

设备和 Bolton 非常相似,可以在产品表中:

我们需要运行的查询类型是根据用户在 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,
4

1 回答 1

0

您在完成架构的正确轨道上,因为您正在识别分销商和产品、分销商和定价之间的关系。

我首先添加一个 DistributorTariff 表,该表与 Distributor 和 Tariff 都有关系。然后,寻找其他限制,例如关税价格等,并在那里建立表格。

如果你知道所有的关系规则,你就可以先把它写在纸上。如果您分享所有规则,我可以帮助您进一步设计。

关于您的架构

这看起来不错的样子。在这个阶段规范化你的数据库可能看起来额外的复杂性将在以后让你头疼。我会提出以下建议:

  • 标准化您的表名是否为复数。例如,您有单数“订单”但有复数“产品”。我个人的偏好是使用单数,但这是另一次讨论。
  • 将“ProductByDistributor”重命名为“DistributorProduct”(如果采用这种方式,则为复数)。
  • 使用连接表名称,我倾向于发现“OwnerItem”格式读起来更好。例如,“OrderProduct”与“ProductOrder”相对。
  • 您可以摆脱您的表格“TariffOrders”和“ProductOrders”。代替这些,您需要添加一个“OrderPart”或“OrderItem”表。这将具有链接到“Order”、“DistributorProduct”和“DistributorTariff”的外键。这消除了收入分成、佣金和成本数据的重复。
  • 更正您对“关税”一词的拼写错误。以后会惹恼你的!;o)

希望有帮助。我很乐意详细说明任何问题。

于 2012-04-24T11:15:26.033 回答