ER图关系

时间:2014-02-17 18:36:29

标签: database database-design entity-relationship

我在为自行车商店设计ER图时遇到了一些麻烦。该车间包含许多具有不同属性的自行车零件(车轮,齿轮,制动器等)。因此,我将每个部分都作为一个实体,以模拟他们的不同属性。它们都包含使用继承生成的数量属性,名称和价格。但是,现在当我拥有所有这些实体时,它们应该映射到'Bike'实体,它是所有部件的集合,以及'Stock'实体,其中列出了所有部件以及它们的首选数量和最小数量。 / p>

我的问题是我不确定如何将零件映射到'Bike'和'Stock'实体。在下图中,我做了两个不同的设计。哪一个是正确的,如果有的话?我可以用更聪明的方式进行建模吗? (我已删除了简化的属性)

解决方案1 Solution 1 解决方案2

enter image description here

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   |.............................
...................+----------+.............................
............................................................

干杯。