点设置表 - 如何设计?

时间:2012-10-02 12:45:41

标签: mysql database database-design

我试图提出表格设计,每个类别都有不同类型的点计算。

第一个示例:客户从CPU类别订购'Intel CPU Core i7 3770K'项目 - 点将通过(category_point / item_cost)计算

第二个示例:客户从SSD类别订购'OCZ SSD'项目 - 点将通过(category_point / item_cost + bonus_point +计算other_name_point + other_name_point

我需要在表格中指定bonus_pointother_name_pointcategory_point的固定值,等等。每个月左右都可以更改。

价格范围示例(与上述不同) - 如果客户从主板类别订购任何项目 - 点数将根据项目成本范围计算,如:

0.00到£40 = 10分

40.00至40英镑= 52分

超过40英镑= 64分

我需要手动指定价格范围的点。这不是category_point / item_cost + bonus_point + other_name_point + other_name_point

的一部分

如何为点设置设计表格?

2 个答案:

答案 0 :(得分:0)

可能是这样的:

<强> Customers

  • Id
  • Nam即,
  • 其他详情
  • ...

<强> Orders

  • Id
  • OrderDate
  • CustomerId
  • ...

*ItemsOrders *

  • ItemId
  • OrderId
  • ...

<强> Items

  • 项目Id,
  • ITEMNAME,
  • 类别ID,
  • ITemCost
  • ...

<强> Categories

  • CategoryId
  • Name
  • ...

<强> CategoryPoints

  • CategoryId
  • PointId
  • ...

<强> Points

  • PointId
  • PointNam
  • PointCostTyp位('固定'或'更改'),
  • ...

PointsCostsRanges仅适用于不固定的品脱

  • Id(Surrorgate键)。
  • PointId
  • FromRange
  • ToRange

请注意:

  • 您没有说每个类别有多少品脱类型?只有三个:bonus_pointother_name_pointother_name_point?如果是这样,您可以删除表Points并在CategoryPoints表中添加三列。
  • 在你的例子中,10分实际意味着什么?这是否表示该项目具有的点类型的数量?例如,如果一个itemm有三个类型,例如你的例子bonus_pointother_name_pointother_name_point那么它有3个点或什么?
  • 如果这些范围每月可能更改,则可能需要添加日期范围。

答案 1 :(得分:-3)

您的示例似乎是业务规则。业务规则应该在应用程序代码中,而不是数据库中。

但是,某些值可以保存在数据库表中以便于更改。以你的主板为例,你可以有一个像这样的结构表:

Part Discount
-------------
Discount ID
Part ID
Cost
Discount

此表中的值为:

1, 23, 4000, 10
2, 23, Max int, 64

其中23是主板的部件号。