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

Database design 在数据库中存储产品大小/数量的最佳方法?,database-design,Database Design,我正在建立一个定制商店,我们这里没有人能就如何存储产品的大小/数量字段达成一致。我很容易找不到这方面的信息,我想知道人们以前是如何解决这一问题的 目前,我们正在考虑将每个产品的完整大小/数量信息存储在一个字段中,如JSON,或者创建一个大小可变的键/值列表,然后将其绑定到一个产品 您选择何种方式存储此信息 传统的方法是有一个单位查找表,例如“oz”,与一个非整数的数量相结合。我假设一个产品可以有多个不可计算的大小/数量 e、 g。 包,12 22号信箱 如果您在数据库中执行此操作,那么当前的想法

我正在建立一个定制商店,我们这里没有人能就如何存储产品的大小/数量字段达成一致。我很容易找不到这方面的信息,我想知道人们以前是如何解决这一问题的

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


您选择何种方式存储此信息

传统的方法是有一个单位查找表,例如“oz”,与一个非整数的数量相结合。

我假设一个产品可以有多个不可计算的大小/数量

e、 g。 包,12 22号信箱

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


然而,我认为您选择的解决方案在很大程度上取决于您将如何处理应用程序中的大小/数量值。这些是简单地显示出来的,还是它们可能会被用于其他目的?还有-是否有默认尺寸/数量

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

不存储单元信息:

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

项目表:

ID | Description       
---+---------------------------------
09 | Red Sox Tee Shirt (Case of 12)
10 | Red Sox Tee Shirt (each)
11 | 500lb Nylon Rope  (per foot)
ID | Description       
---+----------------
10 | Red Sox Tee Shirt 
11 | 500lb Nylon Rope  
然后在订单表上,只需存储
项目ID
+
数量
,其中数量是十进制值

将装置作为物品的一部分存储

Description       | Unit | UnitPrice    
------------------+------+----------
Red Sox Tee Shirt | Case |     45.00
500lb Nylon Rope  | Foot |      0.25
然后在订单表上,只需存储
项目ID
+
数量
,其中数量是十进制值

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

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

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

ID | Unit   | UnitPrice
---+--------+----------
10 | Each   |      6.00
10 | Case12 |     60.00
11 | Foot   |      0.25
11 | Spool  |    250.00
在这种情况下,订单记录需要有
项目ID
+
单位
+
数量

最灵活、最复杂的可转换单元

这将是上一个表单的扩展,但其中有一个“单位”表,用于存储单位、单位类型(长度、体积等)及其与公共单位的关系。例如,通过这种方式,您实际上可以从一个单元转换到另一个单元(1000英尺==1个线轴)


但您不太可能需要这种复杂程度。

我总是尽可能使用整数。100毫米而不是0.10米,因为在计算浮点数时可能会有微小的错误。

非常感谢您的建议。我们所拥有的特殊设置与服装店差不多,所以我们的单位实际上只会是“1”。例如,我们有一件T恤衫,有2件中号,3件xl码和4件小号。我想先有一个item表,然后是另一个item_sizes表,每个quantity/size对都有一个条目。同样,将项目的整个大小/数量列表存储为JSON数组(因此我将执行查询,然后在我的逻辑中将其“扩展”到大小/数量数组中)感觉会更快,可能更容易处理,但感觉不那么干净。