0

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

第一个示例:客户从 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_point, other_name_point,category_point等指定固定值 它可以每个月左右更改一次。

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

0.00 到 40 英镑 = 10 分

40.00 至 40 英镑 = 52 分

超过 40 英镑 = 64 分

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

如何设计积分设置表?

4

2 回答 2

0

可能是这样的:

Customers

  • Id,
  • Name,
  • 其他详情
  • ...

Orders

  • Id,
  • OrderDate,
  • CustomerId,
  • ...

*ItemsOrders: *

  • ItemId,
  • OrderId,
  • ...

Items

  • 项目编号,
  • 项目名称,
  • 类别 ID,
  • ITemCost,
  • ...

Categories

  • CategoryId,
  • Name,
  • ...

CategoryPoints

  • CategoryId,
  • PointId,
  • ...

Points: :

  • PointId,
  • PointNam,
  • PointCostType位('固定'或'改变'),
  • ...

PointsCostsRanges仅适用于不固定的品脱

  • Id(代理键)。
  • PointId,
  • FromRange.
  • ToRange.

注意:

  • 你没有说每个类别有多少品脱类型?只有三个bonus_pointother_name_pointother_name_point?如果是这样,您可以摆脱表格Points并将三列添加到CategoryPoints表格中。
  • 在您的示例中,10 分实际上意味着什么?这是否意味着该项目具有的点类型的计数?例如,如果一个 itemm 具有您的示例中的三种类型 ,bonus_point那么它有 3 个点还是什么?other_name_pointother_name_point
  • 如果这些范围每个月都可以更改,则您可能需要添加日期范围。
于 2012-10-02T13:03:37.117 回答
-3

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

但是,可以将某些值保存在数据库表中以方便更改。以您的主板为例,您可以有一个结构如下的表:

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

此表中的值为:

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

其中 23 是主板的部件号。

于 2012-10-02T13:02:43.360 回答