1

我正在为不同项目的库存创建一个数据库。例如,我可能有汽车、发动机和化油器。

对于每种类型的项目,都有唯一的属性,有些是唯一标识(AKA“序列化”)项目,有些不是。

属性可以是,例如:

汽车

  • 序列号
  • 颜色
  • 门数
  • 传输类型

引擎

  • 序列号
  • 气缸数
  • 移位

化油器(未序列化)

  • 桶数
  • 制造商

当然,我需要能够确定我拥有的每种类型的物品有多少。我不想为每种类型创建一个表,因为随着我开始携带变速器、轮胎、收音机、方向盘等物品类型会增加。

我见过的一种处理这种异构库存的方法是有一张item桌子,但也有一张attribute桌子。它看起来像这样:

**表:项目**

  • (键)itemType(链接到包含“automobile”、“engine”等的 itemTypes 表。
  • (键)序列号
  • (所有 itemTypes 共有的其他字段)

**表:属性**

  • (key) 属性类型(链接到属性类型表,例如“颜色”等)
  • (key) itemType (链接到item中的 itemType )
  • (键)序列号(链接到项目中的序列号)
  • attributeValue(如果 attributeType 是“color”,这可能是“red”、“blue”等)

这提出的一个挑战是处理非序列化项目。虽然通过这种结构很容易确定我有 35 个发动机,但我如何表示我有 52 个化油器?我不想序列化它们。

当然,这并不是为异构库存构建数据库的唯一方法。你用过什么,或者你有什么其他的想法?

谢谢你的帮助。

4

1 回答 1

2

试试这个表设置:

物品种类表:

  • id PRIMARY 自动索引
  • 姓名

物品表:

  • id PRIMARY 自动索引
  • 类型(项目类型的 fkey)

属性类型:

  • id PRIMARY 自动索引
  • 姓名

值表:

  • id PRIMARY 自动索引
  • 项目(项目的 fkey)
  • 类型(属性类型的 fkey)
  • 价值

所以,如果你想存储一个引擎,你需要将类型“引擎”添加到类型表中,然后添加一个单独的项目。然后,您可以为“serial”和其他属性添加值。

如果你想存储你的化油器,你可以添加一个名为 Carburetors 的类型,然后创建它的单个实例,然后为“数量”= 53 输入“值”条目。

希望这是有道理的

于 2012-02-17T21:28:18.803 回答