Wenn ich ein konzeptuelles Klassendiagramm erstelle, in dem jede Klasse "Name" und "Attribute" erfasst, aber nicht "Operationen", habe ich dann nicht grundsätzlich etwas erstellt, was sonst als ERD betrachtet würde? Ich versuche zu verstehen, was die Unterschiede zwischen dem Erstellen eines konzeptionellen Klassendiagramms, wie ich es beschrieben habe, und dem Aufrufen eines ERDs? Wenn das immer noch zwei verschiedene Tiere sind, kann mir bitte jemand erklären, was die Unterschiede sind?Unterschiede zwischen einem konzeptionellen UML-Klassendiagramm und einem ERD?
Antwort
wurde leider wenig Unterschied in der Ausdruckskraft von beiden (wenn wir uns auf die Attribute, Klassen und Assoziationen Teil konzentrieren nur), wenn Sie Entity-Relationship-Diagramme Erweiterte verwenden (die häufigste Fall heute)
Es stimmt, sie aussehen auf der grafischen Ebene sehr unterschiedlich, da sie unterschiedliche Symbole für die Elemente verwenden, aber die "Semantik" ist ziemlich ähnlich. Beide erlauben Vererbung (wieder, ich spreche über EER), n-ary Assoziationen, Assoziationsklassen, ...
Das Klassendiagramm enthält nur die Klassen in Ihrem Objektmodell mit eventuellen Verknüpfungen/Beziehungen, die Diagrammelemente verbinden. Diese Verbindungen entsprechen jedoch nicht unbedingt den physikalischen Beziehungen wie in einem ERD-Diagramm, sondern repräsentieren logische Verbindungen.
Das Klassendiagramm ist nur das Objektmodell Ihrer Anwendung und enthält keine persistenzspezifischen Informationen. Wenn Sie über das Klassendiagramm nachdenken, vergessen Sie die Datenbank oder andere Speicher, die Sie verwenden können.
Das ERD-Diagramm auf der anderen Seite ist ein Persistenz-spezifisches Diagramm, das die Entitäten (Tabellen) anzeigt, die in einer (meist) relationalen Datenbank existieren. Außerdem werden die physischen Beziehungen (und Kardinalitäten) zwischen diesen Tabellen und allen anderen datenbankspezifischen Informationen angezeigt. Das ERD-Diagramm kann manchmal ähnlich dem Klassendiagramm aussehen, aber das bedeutet nicht, dass es dasselbe wie ein Klassendiagramm ist.
Ich verstehe, was Sie sagen, dass das ERD-Diagramm Persistenz-spezifisch ist und das Klassendiagramm keine Persistenz-spezifischen Informationen enthält, jedoch würde ich dies eher als abgeleitete Tatsache betrachten, als wenn man die Diagramme nebeneinander betrachtet. Sie erwähnen auch, dass das Klassendiagramm keine expliziten Beziehungen zwischen Diagrammelementen enthält. Wenn ich jedoch sowohl Zuordnungen als auch Multiplizität zwischen Elementen im Klassendiagramm zeige, unterscheidet sich dies von den Beziehungen und Kardinalitäten, die zwischen Entitäten auf der ERD angezeigt werden Diagramm? – Adam
Die Beziehung im Klassendiagramm ist logisch, aber auf der anderen Seite ist eine ERD-Beziehung eine echte physische Einschränkung zwischen Tabellen. Sie haben Recht, dass die Diagramme in einfachen Szenarien sehr ähnlich aussehen können, aber in komplexeren Fällen ist der Unterschied offensichtlich. Das Klassendiagramm unterstützt weit mehr Abstraktion als die ERD. Wenn Sie das ERD-Diagramm mit der klassischen Chen-Notation zeichnen, ist der visuelle Unterschied zu einem UML-Klassendiagramm selbst in einfachen Szenarien enorm. –
OK, danke für die Erklärung und was du über eine logische gegenüber einer physischen Konstanz sagst macht für mich Sinn. Angesichts der Tatsache, dass ein Klassendiagramm weit mehr Abstraktion als ein ERD-Diagramm unterstützt, kann man in einem komplexeren Szenario sagen: – Adam
Es hängt von der Situation ab, wo Sie nicht möchten, die ER-D zu tun. Aber stellen Sie sich vor, wenn Sie eine separate Datenschicht haben, in der die Datenlogik behandelt wird. In diesem Fall dürfen viele Details der Daten nicht mit der Anwendungsschicht geteilt werden. Und Ihr Klassendiagramm sollte nicht über die Anwendungsschicht hinausgehen. Ich muss betonen, dass beide Diagramme nicht gleich sind. Und es gibt Situationen, in denen Sie beides tun müssen, hauptsächlich in der Multi-Tier-Architektur, und es gibt Situationen, in denen Sie vielleicht nur das Klassendiagramm verwenden können; z.B. einstufige Anwendung.
Ich befürworte stark die Ansicht, dass Klassendiagramm das E-R-Diagramm nicht aufhebt.
Designklassendiagramme werden aus konzeptuellen Modell- und Kollaborationsdiagrammen erstellt. Design-Klassendiagramme sind:
- Klassen, Assoziationen und Attribute
- Methoden
- Typen von Attributen
- Schiffbarkeit
- Abhängigkeiten
Die ER-Diagramme ich gesehen habe (die meisten häufig ERWin IE Notation) haben sich auf das Design für eine Datenbank konzentriert. Sie beschäftigen sich mit Primärschlüsseln, Fremdschlüsseln, haben unbenannte Beziehungen und haben in der Regel keine Generalisierung/Spezialisierung.
Ein gutes UML konzeptuellen Klassendiagramm, auf der anderen Seite, ist nicht betroffen mit Schlüsseln, spiegelt die Problemdomäne und hat Assoziationsend-Eigenschaften, die mindestens Hinweis bei der Semantik, warum Dinge verwandt sind. Dies hilft dabei, die Domäne an jüngere Entwickler zu kommunizieren, sodass sie nicht raten müssen.
- 1. Unterschiede zwischen einer Erweiterung und einem Modul?
- 2. Unterschied zwischen einem jQuery-Plugin und einem jQuery-Widget?
- 3. Rendering Unterschiede zwischen NSTextField und NSTextView auf einem schwarzen Hintergrund
- 4. Unterschiede zwischen ActionExecutingContext und HttpActionContext
- 5. Bash Unterschiede zwischen {} und()?
- 6. Unterschiede zwischen BaseHttpServer und wsgiref.simple_server
- 7. Unterschiede zwischen SipApplicationSession und ServletContext
- 8. Unterschiede zwischen RestKit und AFIncrementalStore
- 9. Was ist der Unterschied zwischen einer ERD und einem "relationalen Diagramm"?
- 10. Was sind die Unterschiede zwischen einem Webdienst und einem Windows-Dienst?
- 11. Unterscheidung zwischen Speichermodell- und konzeptionellen Modellfeldnamen (Entity Framework)
- 12. Was ist der Unterschied zwischen Domain-Modell und konzeptionellen Modell
- 13. Unterschied zwischen einem Rennen und einem toten Schloss
- 14. Gibt es einen Unterschied zwischen einem CGRect und einem NSRect?
- 15. Unterschied zwischen einer "Coroutine" und einem "Thread"?
- 16. Unterschied zwischen einem Repository und Factory-Muster
- 17. Unterschiede zwischen Go und Cython
- 18. Unterschiede zwischen Mustererkennung und Vereinheitlichung?
- 19. Unterschiede zwischen memchr() und strchr()
- 20. Unterschiede zwischen Thread.sleep() und TimeUnit.SECONDS.sleep()
- 21. Unterschiede zwischen Minimalschlüssel und Kandidatenschlüssel?
- 22. Unterschiede zwischen Coroutines und `goto`?
- 23. Unterschiede zwischen Log und Logger?
- 24. Unterschiede zwischen _redirect ('*/* /') und _redirect ('*/*')
- 25. Unterschiede zwischen schwach und unsafe_unreated
- 26. Unterschiede zwischen BasicRenderEngine und LazyRenderEngine?
- 27. Unterschiede zwischen AForge und OpenCV
- 28. Unterschiede zwischen ado und bde
- 29. Unterschiede zwischen OPC und DDS?
- 30. Unterschiede zwischen mousemove und touchnove
Wie ermöglicht ERD Vererbung ?! – Trix
Wie ich bereits sagte, begann ER mit einem ersten Vorschlag von Peter Cheng, entwickelte sich jedoch schnell zu einer vollständigen Familie von (erweiterten) ER-Sprachen, die der sprachartigen Vererbung neue Funktionen hinzufügten. Also, ja, einige (E) ER-Versionen erlauben die Vererbung –