多种产品的数据库设计

时间:2014-04-25 15:29:36

标签: sql database

最好的数据库设计是什么:

我有一份产品清单和一份客户名单。 每种产品都分配了9种不同的价格 每个客户都为每种产品分配了其中一种价格。

IT会是这样的:

PRODUCTS
id
name
price1
price2
price3
price4
price5
price6
price7
price8
price9

客户 ID 名称 price_Code

有什么想法吗?

3 个答案:

答案 0 :(得分:3)

缺少一些信息。

首先,您需要一个产品表

Product
-------
Product ID
Product Description
...

接下来,您需要一个产品价格表

ProductPrice
------------
ProductPrice ID
Product ID
Price

接下来,您有一个客户端表

Client
------
Client ID
Client Name
...

最后,您有一个客户产品价格表。缺少的信息是,如果产品价格表中的价格发生变化,客户的价格是否会发生变化?

ClientProductPrice
------------------
Client ID
Product ID
???

如果客户的价格发生变化,那么???是产品价格ID。您不需要产品ID,因为您可以从产品价格表中获取产品ID。

如果客户的价格没有变化,那么???是价格。

答案 1 :(得分:1)

您需要PRODUCT_PRICE表来存储任意数量的价格。

并且PRODUCT_PRICE_CLIENT表存储哪个客户购买哪个产品价格。

从PRODUCT表中删除price1 price2 price3 price4 price5 price6 price7 price8 price9

答案 2 :(得分:1)

这没有任何意义。价格是历时性质的例子:意味着它们在给定时间代表的价值

您想要的是一张包含2个日期的价格表。

Prices
  productID:long
  effectiveDate:Date
  endDate:Date

然后,当您想要当前价格时,您有两个选择。最常见的是加入endDate字段为null的行。

您要执行此操作的另一个原因是可能会要求您更改特定日期的产品价格。