如何为不同项目的库存构建数据库

时间:2012-02-17 21:18:08

标签: database-design inventory

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

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

属性可以是,例如:

汽车

  • SERIALNUMBER
  • 颜色
  • doorCount
  • transmissionType

发动机

  • SERIALNUMBER
  • cylinderCount
  • 位移

化油器(未反序化)

  • barrelCount
  • 制造商

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

我看到处理这种异构库存的一种方法是拥有一个item表,但也有一个attribute表。它看起来像这样:

**表:项目 **

  • (键)itemType(链接到包含“汽车”,“引擎”等的itemTypes表。
  • (key)serialNumber
  • (所有itemTypes共有的其他字段)

**表:属性 **

  • (key)attributeType(链接到attributeTypes表,如“color”等)
  • (键)itemType(链接到 item 中的itemType)
  • (键)serialNumber(链接到 item 中的serialNumber)
  • attributeValue(如果attributeType为“color”,则可能为“red”,“blue”等。)

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

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

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

试试这个表设置:

项目类型表:

  • id PRIMARY autoindex
  • 名称

项目表:

  • id PRIMARY autoindex
  • type(fkey to item types)

Attribute_types:

  • id PRIMARY autoindex
  • 名称

值表:

  • id PRIMARY autoindex
  • item(fkey to items)
  • type(fkey to attribute_types)

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

如果你想存放你的化油器,你可以添加一个名为化油器的类型,然后制作一个单一的实例,然后为“数量”= 53制作“值”条目。

希望这是有道理的