2
  • ER圖表示數據模型的抽象表示,
  • 類圖表示所提出的系統的靜態結構和行爲。 ER圖


  • 主要構建塊是實體,
  • 類圖的主要構建塊是類,

存在ER圖實體和類類圖之間有密切的關係
它們被映射爲1到1。沒有額外的類或沒有多餘的實體
類圖中的類與ER圖中的實體之間的映射?

這意味着

  • 存在的類圖在ER圖中每個實體類
  • 沒有在課堂上每類ER圖中的實體如下圖所示

    --------------------------------------------- 
    class diagram     ER Diagram 
    --------------------------------------------- 
    class A   <---->   Entity A 
    class B   <---->   Entity B 
    class C   <---->   Entity C 
    class D   <---->   Entity D 
    class E   <---->   Entity E 
    

是否總是存在1:1的類圖和ER圖中的實體之間的映射

是否有任何特殊的時刻?

如果有什麼特殊的時刻會發生什麼?

P.s--我沒有理解這兩個圖之間的區別的問題。

回答

0

那麼,你可以地圖1:1,但你絕對不能。 1:1路徑是第一個快速路徑中最簡單的路徑。但出於性能原因,您通常需要/需要在表中引入冗餘。所以在這種情況下,你的表並不代表你的類所說的。

你在這種情況下做的是從更抽象的類模型派生數據庫模型。許多工具都提供了轉換來支持這種類型的任務(儘管我更喜歡簡單的複製/粘貼,並且只需在包之間設置一個<<derived>>關係)。

0

一切都取決於你的兩個模型的目的。如果類圖和ER圖都是用來表示單個設計或單個實現,那麼顯而易見的問題是爲什麼你需要兩張不同的圖片?另一方面,如果它們是兩種不同的實現方式,可能使用不同的技術並執行不同的工作,那麼這對於將一個映射到另一個上會有一些影響。對於每種情況都不能有一個單一的答案。

您已使用relational-database標記標記此標記,雖然它與您的問題沒有直接關係。在關係模型中,關係模式是變量而類別是類型。從根本上說,這些是非常不同的東西,把它們當作等價物的錯誤稱爲第一大錯誤。你沒有在你的問題中犯這個錯誤,但你可能會發現this link有啓發性。

1

系統開發人員可以選擇在類和數據庫表之間有1:1的表示。這種映射是一種選擇,不是必須的。在實際項目中使用這種方法很常見。面向對象的世界並沒有解決RDBMS中的關係類型。例如,您無法自動在類中強制執行FK。你做出的決定是非常重要的,因爲你將建立的許多類將取決於它。在晚些時候改變你的想法將是非常昂貴的。

RDBMS和OO世界的世界是兩個不同的世界。事實上,有對象數據庫完全支持面向對象(例如見:Wiki-Object-Databases。這些差異超出了你提出的問題,有一組工具可以用來解決這些差異,或者至少作爲。這兩個世界對這個概念的一些背景看,例如:Wiki-Object Relational Mapping

要獲取更多有關OO世界和關係詞之間的差異,你可能要檢查這一點:Wiki-Object-relational impedance mismatch

許多其他有關此主題的參考文獻,例如:is-there-really-object-relational-impedance-mismatch

也許很好問,何時不要使用1:1映射...這將是一個有趣的問題。

+0

然後... 當不使用1:1映射嗎?... – Susantha7

+2

這需要一些分析...例如,如果您有很多從父類繼承的類,並且父類有很多方法,你不想編寫每個子類中的許多方法。但是,有可能存在覆蓋此的OO模式。 – NoChance

+0

@ Susantha7建立模擬域時,一對一映射可能是合適的。在爲域建立信息系統時,通常並不合適。 – reaanb