【发布时间】:2009-07-07 13:45:28
【问题描述】:
我正在建立一个定制商店,我们在座的人都无法达成一致意见,那就是我们应该如何存储产品的尺寸/数量字段。我很容易找不到这方面的信息,我想知道人们以前是如何解决这个问题的?
目前,我们正在考虑将完整的尺寸/数量信息存储在一个字段中的每个产品的 JSON 等内容中,或者创建一个可变大小的键/值列表,然后将其绑定到产品。
您选择哪种方式存储此信息?
【问题讨论】:
标签: database-design
我正在建立一个定制商店,我们在座的人都无法达成一致意见,那就是我们应该如何存储产品的尺寸/数量字段。我很容易找不到这方面的信息,我想知道人们以前是如何解决这个问题的?
目前,我们正在考虑将完整的尺寸/数量信息存储在一个字段中的每个产品的 JSON 等内容中,或者创建一个可变大小的键/值列表,然后将其绑定到产品。
您选择哪种方式存储此信息?
【问题讨论】:
标签: database-design
有几种方法可以解决这个问题,每种方法都增加了复杂性:
不要存储单位信息:
项目记录可以存储在描述中。
物品表:
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,其中数量是十进制值。
将可换算单位存储为 Item 的相关子表
物品表:
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 个线轴)。
但您不太可能需要这种复杂程度。
【讨论】:
传统的方法是有一个单位查找表,例如“oz”,结合一个非整数的数量。
【讨论】:
我假设您的产品可以有多个不可计算的尺寸/数量。
例如 包,12 盒子,22
如果您在数据库中执行此操作,那么当前的想法是您需要规范化并创建一个新表,其中包含指向产品 (product_ID) 的链接、尺寸和数量。这就是我要做的,但我用一种没有 JSON 或键/值对的语言进行编程。
但是 - 我认为您选择的解决方案很大程度上取决于您将如何处理应用程序中的大小/数量值。这些只是简单地显示,还是可能会被用于其他目的?另外 - 是否有默认尺寸/数量?
【讨论】:
我总是尽可能使用整数。例如。 100mm 而不是 0.10m,因为在计算浮点数时可能会有微小的误差。
【讨论】: