我正在尝试为简单的清单程序设计数据库体系结构。
此库存将由框中的项目组成。框包含项目,并且本身就是项目。
我想象box
将是item
的超类型。
我的主要难题是如何构造/约束盒子之间的关系,以便我仍然可以约束唯一的条件,即一件物品一次只能位于一个“位置”。
我知道多对多关系应该让我知道哪些项目在哪个盒子中,但是其他盒子中的盒子又如何呢?
例如:
Box A
包含Item B
和Box C
。 Box C
包含Item D
。
如何设计一个系统,当我寻找Item D
时会在{{1}}和Box A
中找到它(如果我也能知道盒子之间的关系,那真是太好了- -后者在前者之内。
答案 0 :(得分:0)
您可以将自身关系与表本身一起使用。您可以在数据库设计中提及以下提到的列:
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是主键,因此,数据库每个项目仅允许一行,因此,它仅在一个框中可用。
检查此设计是否有帮助...