2014-02-17 97 views
0

我在設計自行車店的ER圖時遇到了一些麻煩。該商店包含許多具有不同屬性的自行車部件(車輪,齒輪,剎車等)。因此,我將每個部分都作爲一個實體來模擬他們的不同屬性。它們都包含使用繼承製作的數量屬性,名稱和價格。但是,現在,當我擁有所有這些實體時,它們應該映射到「自行車」實體,該實體是所有零件的集合,以及列出所有零件的「庫存」實體以及它們的首選數量和最小數量。ER圖關係

我的問題是,我不知道如何將零件映射到'Bike'和'Stock'實體。在下圖中我做了兩種不同的設計。哪一個是正確的,如果有的話?我可以用更聰明的方式對它進行建模嗎? (我已刪除爲了簡化的屬性)

溶液1種 Solution 1 溶液2

enter image description here

回答

1

我認爲您正在查看材料清單類型模式,您可以在其中找到零件超類型和多個子類型,以便爲特定類型的零件保留特定的詳細信息。材料清單包含一個數量,用於保存製作父部件所需的子部件數量,例如2個輪子,1個框架。這一直到Bike,這只是另一種類型的部分。零件然後可以鏈接到您的實體以管理庫存和庫存。

   +-----------------+ 
       | BOM    | 
       +-----------------+ 
       | parent_part_id | 
       | child_part_no | 
       | quantity  | 
       +-----------------+ 
        |  |   
        |  |   +-------------+ 
        |  |   | STOCK  | 
       +-------------+  +-------------+ 
       | PART  |-----| ...   | 
       +-------------+  +-------------+ 
       | part_id  | 
       | part_type |  
     +---------| ...   |---------+ 
     |   +-------------+   | 
     |    |    | 
     |    |    | 
     |    |    | 
+-------------+ +-------------+ +-------------+ 
| WHEEL  | | GEAR  | | BIKE  | 
+-------------+ +-------------+ +-------------+ 
| part_id  | | part_id  | | part_id  | 
| ...   | | ...   | | ...   | 
+-------------+ +-------------+ +-------------+ 
+0

偉大的解決方案。謝謝 – barto90

0

沒有。抱歉。首先,您可能希望將「車輪」,「齒輪」,「制動器」視爲單個實體「零件」,而不是單獨的實體。

這使得圖更簡單。而且,記住,比可以有更多的部分,比如「鏈」,「燈」等等。

因此,不要爲每個零件定義一個sngle實體,只需定義一個:「零件」即可。

二,一些零件可以是另一零件的零件,依此類推。這被稱爲「遞歸」或「自引用」實體。起初,這可能看起來很奇怪,但也使圖更簡單。

............................................................ 
...........+-------------+.................................. 
...........|.............|.................................. 
...........|.............|.................................. 
.........../\............|.........../\..................... 
........../ \...........|........../ \.................... 
........./ \.....Many.|....Many./ \................... 
......../  \.1.+-----+----+.../  \...1+----------+.. 
.......<IsPartOf>--| Part +--<Stores>---+ Stock |.. 
........\  /...+----------+...\  /....+----------+.. 
.........\ /.........|..........\ /................... 
..........\ /..........|Many.......\ /.................... 
...........\/...........|............\/..................... 
......................./ \................................. 
....................../ \................................ 
...................../  \............................... 
..................../  \.............................. 
...................<Composed>............................. 
....................\ By /.............................. 
.....................\  /............................... 
......................\ /................................ 
.......................\../................................. 
........................|................................... 
........................|1.................................. 
...................+----------+............................. 
...................| Bike |............................. 
...................+----------+............................. 
............................................................ 

乾杯。

+0

我已經考慮過這個選項,但不同的部分有不同的屬性和屬性數。所以我不認爲這是一種選擇。它們具有的共同屬性(價格,名稱,ID)被分離爲他們繼承的另一個實體。 – barto90