2010-04-11 78 views
1

我正在實施一個小型數據庫(大學項目),我面臨以下問題。實體關係圖 - 組成

我創建的類圖,其中我有一個類

火車{ID,名稱,詳細}

和A類

全部車輛

這比機車和FreightWagon推廣。

甲列車由多個全部車輛在某一時間組成(在不同天滾動

庫存將組成不同的列車)。

我所代表的關係火車 - 車輛作爲填充金剛石(UML),但我仍然

有許多人在兩個表之間一對多的關係。

所以我想我必須創建一個額外的表來解決多對多的關係

train_RollingStock。

但我如何表示組成?

我還可以使用鑽石嗎?如果是,在哪一邊?

感謝

回答

2

填充金剛石和金剛石清晰之間進行選擇時,我有一個簡單的經驗法則。

如果子對象的存在依賴於父對象,則它是一個實心菱形。 單手有5個手指。如果手消失,手指也會消失。

如果子對象的存在不依賴,則使用明確的菱形。 如果火車頭離開了,那麼鐵路車輛仍然會存在,所以這是一個明顯的鑽石關係。

但在這種情況下,您可能會模擬哪個車輛連接到哪個列車的歷史以及何時。

所以你可能有一個加入班級,引用火車,機車車輛,並有一個開始和結束日期時間。 然後你必須決定關係。你可以有:

  • 列車有許多RollingStockRelatinships的(實心菱形封裝)
  • RollingStockRelationship有一個車輛(透明鑽石封裝)

或者你可以有:

  • 滾動庫存有多個RollingStockRelationships(實心菱形封裝)
  • RollingStock StockRelationship有一個全部車輛(透明鑽石封裝)

或者你可以有:

  • RollingStockRelationship分兩種類型中的一種(清鑽石封裝)

最好的設計取決於如何你會使用它,可能還有一些你甚至無法預測的其他因素。你只需要選擇一個就可以了。