多对多约束的库存数据库设计?

8hhllhi2  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(449)

我正在尝试为一个简单的清单程序设计一个数据库体系结构。
这个存货清单将由箱子里的物品组成。框包含项目,并且是项目本身。
我想是吧 box 将是一个超级类型的 item .
我的主要问题是如何构造/约束框之间的关系,以便仍然可以约束一个项目一次只能在一个“位置”的唯一条件。
我知道多对多关系应该让我知道哪些项目在哪些框中,但是其他框中的框呢?
例如: Box A 包含 Item B 以及 Box C . Box C 包含 Item D .
如何设计一个系统,当我寻找 Item D 我会在里面找到的 Box A 以及 Box C (如果我也能知道盒子之间的关系——后者在前者里面——那真是太好了)。

tuwxkamq

tuwxkamq1#

您可以将self关系用于表本身。您可以在数据库设计中提到以下列:

ItemId(PK)
ItemName
ItemType(Can be B for Box and I for item)
ItemContainer(Will contain ItemId from this table itself and will be null if it is not present in any box, if required add check constraint that if itemType is I then it cannot be null)

您可以将数据放置为:

ItemId      ItemName      ItemType     ItemContainer
  1         BoxA             B            (null)
  2         BoxB             B               1
  3         ItemA            I               2

因为itemid是一个主键,所以,数据库只允许每个项有一行,所以只能在一个框中使用。
检查此设计是否有帮助。。。

相关问题