我在为自行车商店设计ER图时遇到了一些麻烦。该车间包含许多具有不同属性的自行车零件(车轮,齿轮,制动器等)。因此,我将每个部分都作为一个实体,以模拟他们的不同属性。它们都包含使用继承生成的数量属性,名称和价格。但是,现在当我拥有所有这些实体时,它们应该映射到'Bike'实体,它是所有部件的集合,以及'Stock'实体,其中列出了所有部件以及它们的首选数量和最小数量。 / p>
我的问题是我不确定如何将零件映射到'Bike'和'Stock'实体。在下图中,我做了两个不同的设计。哪一个是正确的,如果有的话?我可以用更聪明的方式进行建模吗? (我已删除了简化的属性)
解决方案1
解决方案2
答案 0 :(得分:1)
我认为您正在查看物料清单类型架构,您可以在其中拥有Part超类型以及您希望保存特定类型的Part的特定详细信息的子类型。物料清单包含一个数量,用于保存制作父部件所需的子部件数量,例如2个轮子,1个框架。这一直到自行车,这只是另一种类型的零件。然后,零件可以链接到您的实体,以管理库存和库存。
+-----------------+
| BOM |
+-----------------+
| parent_part_id |
| child_part_no |
| quantity |
+-----------------+
| |
| | +-------------+
| | | STOCK |
+-------------+ +-------------+
| PART |-----| ... |
+-------------+ +-------------+
| part_id |
| part_type |
+---------| ... |---------+
| +-------------+ |
| | |
| | |
| | |
+-------------+ +-------------+ +-------------+
| WHEEL | | GEAR | | BIKE |
+-------------+ +-------------+ +-------------+
| part_id | | part_id | | part_id |
| ... | | ... | | ... |
+-------------+ +-------------+ +-------------+
答案 1 :(得分:0)
他们都不是。遗憾。
首先,您可能需要将“Wheel”,“Gear”,“Brake”视为单个实体“Part”,而不是单独的实体。
这使得图表更加简单。而且,记住,比可以有更多的部分,如“链”,“灯”等。
因此,不是为每个部分定义一个sngle实体,而是为所有部分定义一个单独的部分:“Part”。
其次,某些部分可以是另一部分的一部分,依此类推。这称为“递归”或“自引用”实体。起初,这可能看起来很奇怪,但也使图表更简单。
............................................................
...........+-------------+..................................
...........|.............|..................................
...........|.............|..................................
.........../\............|.........../\.....................
........../ \...........|........../ \....................
........./ \.....Many.|....Many./ \...................
......../ \.1.+-----+----+.../ \...1+----------+..
.......<IsPartOf>--| Part +--< Stores >---+ Stock |..
........\ /...+----------+...\ /....+----------+..
.........\ /.........|..........\ /...................
..........\ /..........|Many.......\ /....................
...........\/...........|............\/.....................
......................./ \.................................
....................../ \................................
...................../ \...............................
..................../ \..............................
...................< Composed >.............................
....................\ By /..............................
.....................\ /...............................
......................\ /................................
.......................\../.................................
........................|...................................
........................|1..................................
...................+----------+.............................
...................| Bike |.............................
...................+----------+.............................
............................................................
干杯。