我在设计自行车店的ER图时遇到了一些麻烦。这家商店有许多自行车零件(车轮、齿轮、刹车等)。它们有不同的属性。因此,我把每个部分作为一个实体,以便为它们的不同属性建模。它们都包含一个使用继承的数量属性、名称和价格。但是,现在当我有所有这些实体时,它们应该映射到'Bike‘实体,它是所有部件的集合,'Stock’实体,其中列出了所有的部件,以及它们的首选数量和最小数量。
我的问题是,我不知道如何将零件映射到‘自行车’和‘股票’实体。在下图中,我做了两种不同的设计。其中哪一个是正确的,如果有的话?我能用一种更聪明的方式来模拟吗?(我删除了简化的属性)
解决方案1
解决方案2
发布于 2014-02-18 19:49:00
我认为您正在研究一个物料清单类型模式,其中您可以拥有一个部件超级类型和尽可能多的子类型,以便为特定类型的部件保留特定的详细信息。物料清单包含一个数量来容纳制造母件所需的子部件的数量,例如两个轮子,一个框架。这一直到自行车,这只是另一种类型的一部分。然后,该部分可以链接到您的实体以管理库存和库存。
+-----------------+
| BOM |
+-----------------+
| parent_part_id |
| child_part_no |
| quantity |
+-----------------+
| |
| | +-------------+
| | | STOCK |
+-------------+ +-------------+
| PART |-----| ... |
+-------------+ +-------------+
| part_id |
| part_type |
+---------| ... |---------+
| +-------------+ |
| | |
| | |
| | |
+-------------+ +-------------+ +-------------+
| WHEEL | | GEAR | | BIKE |
+-------------+ +-------------+ +-------------+
| part_id | | part_id | | part_id |
| ... | | ... | | ... |
+-------------+ +-------------+ +-------------+
发布于 2014-02-17 19:00:09
他们都不是。抱歉的。
首先,你可以考虑“车轮”,“齿轮”,“刹车”作为一个单一的实体“部分”,而不是单独的实体。
这使得图表更加简单。而且,记忆比可以有更多的部分,如“链”,“灯”,等等。
所以,不要为每个部分定义一个sngle实体,只需为所有人定义一个单独的部分:“部件”。
第二,某些部分可以是另一部分的一部分,等等。这被称为“递归”或“自引用”实体。起初,这看起来很奇怪,但也使图表更加简单。
............................................................
...........+-------------+..................................
...........|.............|..................................
...........|.............|..................................
.........../\............|.........../\.....................
........../ \...........|........../ \....................
........./ \.....Many.|....Many./ \...................
......../ \.1.+-----+----+.../ \...1+----------+..
.......<IsPartOf>--| Part +--< Stores >---+ Stock |..
........\ /...+----------+...\ /....+----------+..
.........\ /.........|..........\ /...................
..........\ /..........|Many.......\ /....................
...........\/...........|............\/.....................
......................./ \.................................
....................../ \................................
...................../ \...............................
..................../ \..............................
...................< Composed >.............................
....................\ By /..............................
.....................\ /...............................
......................\ /................................
.......................\../.................................
........................|...................................
........................|1..................................
...................+----------+.............................
...................| Bike |.............................
...................+----------+.............................
............................................................
干杯。
https://stackoverflow.com/questions/21836728
复制相似问题