库存/库存监控数据库架构

时间:2016-06-26 08:53:38

标签: mysql sql database database-design

我尽我所能,向IRC寻求帮助,但仍然很难。

Here's what I only got so far 我不知道如何将药物与产品联系起来。

这是逻辑:

  • 许多品牌可以制作很多产品。
  • 产品可以有多个品牌,有名称和图像

  • 产品有类型(可能是药,肥皂等)

  • 如果产品是药品,我希望将其附在药品表中,因为它的属性将被插入那里。

的示例:

  • 品牌A - 产品A - image1 - 医药 - 250 - mg
  • 品牌B - 产品A - image2 - 医药 - 250 - mg
  • 品牌B - 产品A - image2 - 医药 - 500 - mg
  • 品牌B - 产品B - 图片3 - 肥皂
  • 品牌B - 产品C - 图像4-肥皂

- 编辑 -

我想在产品表上添加medicine_fk。如果它不是药,它将是无效的。但考虑到它的灵活性,如果未来会有更多的产品类型会怎样?

一个很好的例子(糟糕的类型是xD)

我在产品表中需要car_fk吗?那指向车厢? 我该怎么做?

- 编辑 -

我的心情是如此强调这个我忘了我应该把product_id放在汽车餐桌和药品台以及任何其他类型的产品上

- 编辑 -

首先,我想如何在用户添加新产品类型的情况下找到与产品相关的所有表格。

考虑再次创建另一个表,并为每种产品类型动态制作新表,但这似乎是一种丑陋的方式。

在IRC人员的帮助下,我最终得到了这个:

2]

是否有任何可能的错误?

- 编辑 -

我的FINAL表结构与上面相同,只是没有子表。

  • 我删除了子属性和子类别。
  • 改为在类别和属性表上添加parent_id列。

好多了,我认为这回答了我的问题。

2 个答案:

答案 0 :(得分:0)

首先,在您的图表中,PRODUCT_TYPES和PRODUCTS之间的关系被描述为一对一,不应该是这种关系是一对多的(一种产品类型可以有很多产品,例如Medicine可以有Asprin ,扑热息痛等)。

其次,您所遵循的方法是正确的。只需在您的药物表和CAR表中介绍您的PRODUCT_ID即可。它应该是NOT NULL。由于PRODUCTS是您的父表,因此它不应具有其他表中的键。

或者,您也可以将药品表中的ID作为PRODUCTS表中ID列的外键。

答案 1 :(得分:0)

请记住,关系应该是1:很多或很多:很多,从不1:1。只有很多:很多情况下你需要一张额外的桌子。

"子"属性和类别将是一个应对的噩梦;你可以摆脱它们吗?

SELECTs会是什么?在某种程度上,它们驱动表格的样子。

包含一千行的表格不需要其字段"标准化"。