首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场

ER图关系
EN

Stack Overflow用户
提问于 2014-02-17 18:36:28
回答 2查看 969关注 0票数 0

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

我的问题是,我不知道如何将零件映射到‘自行车’和‘股票’实体。在下图中,我做了两种不同的设计。其中哪一个是正确的,如果有的话?我能用一种更聪明的方式来模拟吗?(我删除了简化的属性)

解决方案1

解决方案2

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-18 19:49:00

我认为您正在研究一个物料清单类型模式,其中您可以拥有一个部件超级类型和尽可能多的子类型,以便为特定类型的部件保留特定的详细信息。物料清单包含一个数量来容纳制造母件所需的子部件的数量,例如两个轮子,一个框架。这一直到自行车,这只是另一种类型的一部分。然后,该部分可以链接到您的实体以管理库存和库存。

代码语言:javascript
运行
复制
               +-----------------+
               | BOM             |
               +-----------------+
               | parent_part_id  |
               | child_part_no   |
               | quantity        |
               +-----------------+
                     |     |         
                     |     |         +-------------+
                     |     |         | STOCK       |
                 +-------------+     +-------------+
                 | PART        |-----| ...         |
                 +-------------+     +-------------+
                 | part_id     |
                 | part_type   |     
       +---------| ...         |---------+
       |         +-------------+         |
       |                |                |
       |                |                |
       |                |                |
+-------------+  +-------------+  +-------------+ 
| WHEEL       |  | GEAR        |  | BIKE        |
+-------------+  +-------------+  +-------------+
| part_id     |  | part_id     |  | part_id     |
| ...         |  | ...         |  | ...         |
+-------------+  +-------------+  +-------------+
票数 1
EN

Stack Overflow用户

发布于 2014-02-17 19:00:09

他们都不是。抱歉的。

首先,你可以考虑“车轮”,“齿轮”,“刹车”作为一个单一的实体“部分”,而不是单独的实体。

这使得图表更加简单。而且,记忆比可以有更多的部分,如“链”,“灯”,等等。

所以,不要为每个部分定义一个sngle实体,只需为所有人定义一个单独的部分:“部件”。

第二,某些部分可以是另一部分的一部分,等等。这被称为“递归”或“自引用”实体。起初,这看起来很奇怪,但也使图表更加简单。

代码语言:javascript
运行
复制
............................................................
...........+-------------+..................................
...........|.............|..................................
...........|.............|..................................
.........../\............|.........../\.....................
........../  \...........|........../  \....................
........./    \.....Many.|....Many./    \...................
......../      \.1.+-----+----+.../      \...1+----------+..
.......<IsPartOf>--|   Part   +--< Stores >---+   Stock  |..
........\      /...+----------+...\      /....+----------+..
.........\    /.........|..........\    /...................
..........\  /..........|Many.......\  /....................
...........\/...........|............\/.....................
......................./  \.................................
....................../    \................................
...................../      \...............................
..................../        \..............................
...................< Composed >.............................
....................\   By   /..............................
.....................\      /...............................
......................\    /................................
.......................\../.................................
........................|...................................
........................|1..................................
...................+----------+.............................
...................|   Bike   |.............................
...................+----------+.............................
............................................................

干杯。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21836728

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档