在数据库中存储产品大小/数量的最佳方法?

时间:2009-07-07 13:45:28

标签: database-design

我正在建立一个定制商店,我们这里没有人能够达成共识的是我们应该如何存储产品的尺寸/数量字段。我很容易找不到这方面的信息,我想知道人们之前是如何解决这个问题的?

目前,我们正在考虑在一个字段中为每个产品存储完整的大小/数量信息,例如JSON,或者创建一个可变大小的键/值列表,然后将其绑定到产品。

您选择以哪种方式存储此信息?

4 个答案:

答案 0 :(得分:1)

有几种方法可以解决这个问题,每种方法都会增加复杂性:

不存储单位信息:

项目记录可以将其存储在描述中。

项目表:

ID | Description       
---+---------------------------------
09 | Red Sox Tee Shirt (Case of 12)
10 | Red Sox Tee Shirt (each)
11 | 500lb Nylon Rope  (per foot)

然后在订单表上,您只需存储Item ID + Quantity,其中数量为小数值。

将该单元存储为项目的一部分

Description       | Unit | UnitPrice    
------------------+------+----------
Red Sox Tee Shirt | Case |     45.00
500lb Nylon Rope  | Foot |      0.25

然后在订单表上,您只需存储Item ID + Quantity,其中数量为小数值。

将可转换单位存储为项目的相关子表

项目表:

ID | Description       
---+----------------
10 | Red Sox Tee Shirt 
11 | 500lb Nylon Rope  

Item_Unit表

ID | Unit   | UnitPrice
---+--------+----------
10 | Each   |      6.00
10 | Case12 |     60.00
11 | Foot   |      0.25
11 | Spool  |    250.00

在这种情况下,订单记录需要Item ID + Unit + Quantity

最灵活,最复杂的 - 可兑换单位

这将是最后一个表格的扩展,但是你有一个“单位”表,用于存储单位,单位类型(长度,数量等)及其与公共单位的关系。这样你就可以实际上从一个单位转换到另一个单位(例如1000英尺== 1个假脱机)。

但你不太可能需要那么高的复杂程度。

答案 1 :(得分:0)

传统的方法是有一个单位的查找表,例如“oz”,并且数量不是整数。

答案 2 :(得分:0)

我假设您可以为产品提供多个不可计算的尺寸/数量。

e.g。 包装,12 Box,22

如果您在数据库中执行此操作,那么当前的想法是您需要规范化并创建一个包含产品链接(product_ID),大小和数量的新表。这就是我要做的,但我用一种没有JSON或键/值对的语言编程。

但是 - 我认为您选择的解决方案在很大程度上取决于您在应用程序中使用的大小/数量值。这些只是简单地显示,还是可能会被用于其他目的?另外 - 是否有默认的尺寸/数量?

答案 3 :(得分:0)

我总是尽可能使用整数。例如。 100mm而不是0.10m,因为在计算浮点数时可能会出现微小误差。