库存数据库

时间:2015-04-06 12:46:47

标签: database database-design relational-database data-modeling

我需要制作一个库存数据库,我想出了以下内容:

enter image description here

STRUCTURE和CONTAINER的PK也是PLACE PK的FK。 PLACE还有一个PARENTID列,因此我可以将容器放在容器内和结构内。

因此,INV_ITEM可以存储在结构或容器中,容器可以放在另一个容器中,也可以放在具有递归关系的结构中。

与设备相同。我可以将它存储在一个结构本身或容器中。

问题是我还可以将一件设备,一个容器或一个库存物品存放在未指定为容器的设备中。例如,汽车和扳手都是设备,扳手可以存放在汽车内或汽车内的容器中。我该如何解决这个问题?

更新
更多细节
结构:具有各种用途的建筑物。可以是仓库,工厂,棚屋等 容器:用于存储的更具体位置,驻留在结构中。可以是物品,如垃圾箱或托盘,也可以是一个位置,如“抽屉3”。如果它是一个物理项目,唯一的目的是存储东西,它是一个容器,而不是设备。
设备:公司使用的工具。汽车,扳手,叉车。不作为产品销售。可以存储在结构或容器中。有一个“序列”列来唯一标识它。
INV_ITEM:产品,公司经常购买或销售的任何产品。股票。例如衬衫,烛台,太阳镜,螺丝。它还包括公司设备的燃料。可以存储在结构或容器中。有一个“库存量”栏目。
PLACE:解决STRUCTURE和CONTAINER之间独有弧问题的基表,允许我们将容器放在结构中。

1 个答案:

答案 0 :(得分:0)

有几点。

  • 表格跟随功能,所以如果汽车也可以是一个容器,那么你的架构也必须显示。但在你这样做之前,在车内扳手的想法是你自己的假设条件吗?因为通常情况下,一个库存物品不能放在第二个库存物品中,除非它是该物品的一部分,无论它在多大程度上具有后勤意义。例如,备用轮胎。但在那种情况下,备胎不是一个单独的项目,它是汽车的一部分。
  • 此外,通过将PARENTID放置到位,您还可以说可以将结构放在容器内的结构中。这就是你想要的吗?

因此,您可能需要考虑的一个更改是将PARENTID移动到Container。并且,除非这是作业,并且它是作业的一部分,不要担心将物品放入其他物品。这通常不是现实生活中的条件。