Visio-basierte Datenbankmodellierung in Visual Studio .NET Enterprise Architect (Teil 3)

Veröffentlicht: 30. Dez 2001 | Aktualisiert: 19. Jun 2004

Von Terry Halpin

Dies ist der dritte einer Serie von Artikeln, in denen die Visio-basierte Datenbankmodellierungskomponente von Microsoft Visual Studio .NET Enterprise Architect vorgestellt wird. In Teil 1 wurden das Erstellen eines grundlegenden ORM-Quellmodells (ORM = Objektrollenmodellierung) und anschließende Zuordnen zu einem logischen Datenbankmodell sowie das Erzeugen eines DDL-Skripts für das physische Datenbankschema beschrieben. In Teil 2 wurde erläutert, wie der Verbalizer verwendet, ein Objekttyp als unabhängig gekennzeichnet, eine Zuordnung objektiviert und einem ORM-Modell einige weitere ORM-Einschränkungen hinzugefügt werden. In Teil 3 erfahren Sie nun, wie Mengenvergleichseinschränkungen (Teilmenge, Gleichheit und Exklusion) hinzugefügt und exklusive ODER-Einschränkungen durch Kombination von Exklusionseinschränkungen und inklusiven ODER-Bedingungseinschränkungen erstellt werden.

Auf dieser Seite

Mengenvergleichseinschränkungen Mengenvergleichseinschränkungen
Exklusive ODER-Einschränkungen Exklusive ODER-Einschränkungen
Schlussfolgerung Schlussfolgerung
Referenzmaterial Referenzmaterial

Mengenvergleichseinschränkungen

Wenn zwei Rollen von demselben Objekttyp übernommen werden oder die zugehörigen Objekttypen einem gemeinsamen übergeordneten Typ angehören, werden sie als kompatibel bezeichnet, und ein Vergleich ihres Inhalts ist sinnvoll. Das Gleiche gilt für Rollenfolgen (sortierte Listen von Rollen). Für Datenbanken sind nur drei Mengenvergleichsoperatoren relevant: Teilmenge (), Gleichheit (=) und gegenseitige Exklusion ().

Durch eine Teilmengeneinschränkung zwischen einer Quellrollenfolge und einer Zielrollenfolge wird sichergestellt, dass der Inhalt (Menge von Instanzen) der Quellrollenfolge immer eine Teilmenge des Inhalts der Zielrollenfolge sein muss. Die Einschränkung wird durch ein eingekreistes "" dargestellt, und die Verbindung wird durch einen gestrichelten Pfeil von der Quelle zum Ziel angegeben (ein Beispiel können Sie Abbildung 1 entnehmen). In früheren Versionen unseres ORM-Tools wurde die Teilmengeneinschränkung durch den gestrichelten Pfeil selbst angegeben. In VEA wird das eingekreiste Teilmengensymbol immer explizit angezeigt. Dadurch wird die Bedeutung der Einschränkungsnotation verdeutlicht. Zudem werden die seltenen Fälle unterstützt, in denen Quelle und Ziel derselben Zuordnung angehören, und der gestrichelte Pfeil kann in anderen richtungsabhängigen Einschränkungen verwendet werden (z.B. ≤), für die später eine grafische Einschränkungsnotation hinzugefügt werden kann.

Bild01

Abbildung 1. Eine Teilmengeneinschränkung zwischen einzelnen Rollen

Im einfachsten Fall handelt es sich bei einer Rollenfolge nur um eine Rolle. In Abbildung 1 bedeutet die Teilmengeneinschränkung zwischen zwei einzelnen Rollen, dass die Patienten mit Zweitnamen eine Teilmenge der Patienten mit einem Namen sein müssen. Mit anderen Worten, wenn ein Patient einen Zweitnamen besitzt, muss er auch einen Erstnamen haben.

Wenn Sie diese Teilmengeneinschränkung in VEA hinzufügen möchten, geben Sie zunächst die beiden Faktentypen ein (z.B. indem Sie sie im Geschäftsregel-Editor hinzufügen und dann in das Zeichnungsfenster ziehen). Halten Sie dann die UMSCHALTTASTE gedrückt, und wählen Sie die entsprechenden Prädikate aus. Klicken Sie mit der rechten Maustaste, und wählen Sie im Kontextmenü die Option Add Constraints. Wählen Sie im Dialogfeld Add Constraint im Feld Constraint type die Option Subset aus, und legen Sie dann die Quellrolle und anschließend die Zielrolle für die Einschränkung fest. Beim Auswählen der Rollenfelder in diesem Dialogfeld werden die Rollen in der Reihenfolge der Auswahl nummeriert - 1, 2, 3 usw. Wenn Sie diese Einstellungen korrekt vorgenommen haben, sieht das Dialogfeld nun wie in Abbildung 2 dargestellt aus. Die Einschränkung wird im unteren Bereich des Dialogfelds automatisch verbalisiert. Wenn Sie vorerst keine weiteren Einschränkungen auf diese Faktentypen anwenden möchten, klicken Sie auf OK. Andernfalls klicken Sie auf Apply, und fügen Sie dann die gewünschten weiteren Einschränkungen hinzu.

Bild02

Abbildung 2. Festlegen des Teilmengeneinschränkungstyps und anschließendes Auswählen der Quellrolle [1] und der Zielrolle [2] (klicken Sie auf das Bild, um eine größere Darstellung anzuzeigen)

Beachten Sie die Verwendung des Bindestrichs in den Prädikaten has first- (hat Erst-) und has second- (hat Zweit-). Durch den Bindestrich werden die Zusätze first und second an GivenName (Name) gebunden, wenn Einschränkungen für diese Prädikate verbalisiert werden. Schlüsselwörter wie some (ein/e/en) werden daher vor und nicht nach diesem Zusatz eingefügt. Wenn Sie in diesem Beispiel die Bindestriche weglassen, lautet die Verbalisierung stattdessen "If Patient p has second some GivenName then Patient p has first some GivenName", was im besten Fall ungünstig und im schlimmsten Fall unverständlich ist.

Abbildung 3 zeigt eine Teilmengeneinschränkung zwischen Rollenpaaren (jede Rollenfolge enthält zwei Rollen). Wenn die Rollen in einem Paar wie hier zusammenhängend sind, wird die Einschränkung mit der Verknüpfung der Rollen verbunden. Diese Einschränkung bedeutet, dass der Inhalt von Employee-Committee-Paaren (Mitarbeiter-Komitee), die die Chair-Zuordnung (Vorsitz) instanziieren, eine Teilmenge der Member-Zuordnung (Mitglied) sein muss. Demzufolge muss jede Person, die ein Komitee leitet, Mitglied dieses Komitees sein.

Bild03

Abbildung 3. Eine Teilmengeneinschränkung zwischen Rollenpaaren

Zum Hinzufügen dieser Teilmengeneinschränkung fügen Sie die beiden Faktentypen im Diagrammfenster hinzu. Halten Sie beim Auswählen der Prädikate die UMSCHALTTASTE gedrückt, klicken Sie mit der rechten Maustaste, und wählen Sie im Kontextmenü die Option Add Constraints. Wählen Sie im Dialogfeld Add Constraint im Feld Constraint type die Option Subset aus. Beachten Sie, dass sich die Anzeige im unteren Fensterbereich nun ändert: Sind an jedem Ende der Einschränkung mehrere Rollen vorhanden, erhöhen Sie den Wert für Number of roles at each end entsprechend. Standardmäßig ist die Anzahl von Rollen an jedem Ende der Einschränkung auf 1 eingestellt. Da an den Enden dieser Einschränkung jeweils zwei Rollen vorhanden sind, ändern Sie die Einstellung in 2 (siehe Abbildung 4).

Wählen Sie jetzt das Quellrollenpaar und dann das Zielrollenpaar aus, und sortieren Sie die Rollen in den einzelnen Paaren dabei so, dass sie mit der entsprechenden Rolle des anderen Paares übereinstimmen. Beim Auswählen der Rollenfelder in diesem Dialogfeld werden die Rollen in der Reihenfolge der Auswahl nummeriert - 1.1, 1.2, 2.1, 2.2. Der erste Teil der Nummern gibt die Rollenfolge an, und der zweite Teil steht für die Position innerhalb dieser Folge. Wenn Sie diese Einstellungen korrekt vorgenommen haben, sieht das Dialogfeld nun wie in Abbildung 4 dargestellt aus. Die Einschränkung wird im unteren Bereich des Dialogfelds automatisch verbalisiert. Klicken Sie auf OK, damit die Einschränkung übernommen und dem Diagramm hinzugefügt wird.

Bild04

Abbildung 4. Hinzufügen einer Teilmengeneinschränkung zwischen Rollenpaaren (klicken Sie auf das Bild, um eine größere Darstellung anzuzeigen)

Eine Gleichheitseinschränkung zwischen Rollenfolgen gibt an, dass ihr Inhalt immer gleich sein muss. Diese Einschränkung wird durch ein eingekreistes "=" dargestellt, und die Rollenfolgen sind durch eine gestrichelte Linie verbunden. In unserem vorherigen ORM-Tool wurde stattdessen eine gestrichelte Linie mit einer Pfeilspitze an beiden Enden angezeigt, die die beidseitige Äquivalenz zwischen einer Gleichheitseinschränkung und zwei Teilmengeneinschränkungen widerspiegelte. Diese alte Notation wird nicht mehr unterstützt.

Bild05

Abbildung 5. Eine Gleichheitseinschränkung zwischen zwei einzelnen Rollen

Zum Hinzufügen dieser Gleichheitseinschränkung fügen Sie die beiden Faktentypen im Diagrammfenster hinzu. Halten Sie beim Auswählen der beiden Prädikate die UMSCHALTTASTE gedrückt, klicken Sie mit der rechten Maustaste, und wählen Sie im Kontextmenü die Option Add Constraints. Wählen Sie im Dialogfeld Add Constraint im Feld Constraint type die Option Equality aus, und wählen Sie dann die Rollenfolgen aus (in diesem Fall beinhaltet jede Folge nur eine Rolle). Wenn Sie diese Einstellungen korrekt vorgenommen haben, sieht das Dialogfeld nun wie in Abbildung 6 dargestellt aus. Die Reihenfolge der Rollenfolgen spielt in einer Gleichheitseinschränkung eigentlich keine Rolle, da die Gleichheit symmetrisch ist (anders als bei einer Teilmenge). Die Einschränkung wird im unteren Bereich des Dialogfelds verbalisiert. Gleichheitseinschränkungen zwischen längeren Rollenfolgen werden in ähnlicher Weise hinzugefügt wie Teilmengeneinschränkungen.

Bild06

Abbildung 6. Hinzufügen einer einfachen Gleichheitseinschränkung zwischen Rollen (klicken Sie auf das Bild, um eine größere Darstellung anzuzeigen)

Eine Exklusionseinschränkung zwischen Rollenfolgen gibt an, dass ihr Inhalt sich nie überschneiden darf (sich gegenseitig ausschließt). Diese Einschränkung wird durch ein eingekreistes "X" dargestellt, und die Rollenfolgen sind durch eine gestrichelte Linie verbunden. Abbildung 7 zeigt eine Paarexklusionseinschränkung (keine Person schreibt und editiert dasselbe Buch) und eine einfache Exklusionseinschränkung (kein Buch kann gleichzeitig empfohlen und verboten werden).

Bild07

Abbildung 7. Eine Paarexklusionseinschränkung und eine einfache Exklusionseinschränkung

Sie können diese Exklusionseinschränkung schnell und einfach hinzufügen, indem Sie die vier Faktentypen im Diagrammfenster hinzufügen, beim Auswählen der vier Prädikate die UMSCHALTTASTE gedrückt halten, mit der rechten Maustaste klicken und dann im Kontextmenü die Option Add Constraints wählen. Wählen Sie im Dialogfeld Add Constraint im Feld Constraint type die Option Exclusion aus, und wählen Sie dann die Rollen "recommended" (empfohlen) und "banned" (verboten) aus (siehe Abbildung 8). Klicken Sie auf Apply, um die Einschränkung zu übernehmen und anzuzeigen, ohne das Dialogfeld zu schließen. Anschließend fügen Sie die andere Exklusionseinschränkung hinzu.

Bild08

Abbildung 8. Hinzufügen einer einfachen Exklusionseinschränkung (klicken Sie auf das Bild, um eine größere Darstellung anzuzeigen)

Wählen Sie nun im Feld Constraint type die Option Exclusion aus, erhöhen Sie den Wert für Number of roles at each end auf 2, und wählen Sie dann die Rollenpaare in den Faktentypen "writing" (schreiben) und "review" (editieren) aus. Klicken Sie auf OK, um die Einschränkung zu übernehmen und das Dialogfeld zu schließen.

Bild09

Abbildung 9. Hinzufügen einer Paarexklusionseinschränkung (klicken Sie auf das Bild, um eine größere Darstellung anzuzeigen)

 

Exklusive ODER-Einschränkungen

In ORM ist eine exklusive ODER-Einschränkung einfach eine Kombination aus einer inklusiven ODER-Einschränkung (ODER-Bedingungseinschränkung) und einer Exklusionseinschränkung. Diese beiden Einschränkungen überlagern sich standardmäßig wie links in Abbildung 10 dargestellt, wobei durch das Überlagern eines eingekreisten Punktes (ODER-Bedingung) und eines eingekreistes "X" (Exklusion) ein Rettungsringsymbol entsteht. Zum Erstellen dieses Beispiels fügen Sie die zwei Faktentypen im Diagrammfenster hinzu, markieren Sie sie, und klicken Sie mit der rechten Maustaste, um das Dialogfeld Add Constraint zu öffnen. Fügen Sie dann zunächst die eine und dann die andere Einschränkung denselben Rollen hinzu (klicken Sie nach dem Hinzufügen der ersten Einschränkung auf Apply und nach der zweiten auf OK).

Wenn Sie die beiden Einschränkungen, aus denen die inklusive ODER-Einschränkung besteht, optisch voneinander trennen möchten, klicken Sie mit der rechten Maustaste auf das Rettungsringsymbol, und wählen Sie die Option Split X/OR constraint. Die Einschränkungen werden jetzt, wie rechts in Abbildung 10 dargestellt, getrennt voneinander angezeigt. Sie können die Einschränkungen nun einzeln bearbeiten (z.B. nur eine der beiden Einschränkungen löschen, indem Sie sie markieren und auf Delete klicken). Sollen die beiden getrennt angezeigten Einschränkungen wieder zu einem Rettungsringsymbol zusammengeführt werden, markieren Sie eine der Einschränkungen, und ziehen Sie sie über die andere Einschränkung.

Bild10

Abbildung 10. Exklusives ODER entspricht inklusivem ODER plus Exklusion (klicken Sie auf das Bild, um eine größere Darstellung anzuzeigen)

 

Schlussfolgerung

Abgesehen vom Erstellen von Untertypen sind Sie nun ausreichend mit diesem Thema vertraut, um das mit dem Produkt gelieferte Beispiel-ORM-Quellmodell Employee neu zu erstellen. In den nächsten beiden Artikeln werden das Erstellen von Untertypen und anderen ORM-Einschränkungen (Frequenz-, Ring- und Indexeinschränkungen) sowie weitere verwandte Themen, z.B. Einschränkungsschichten, behandelt. Anmerkungen und Fragen zu diesem Artikel können Sie mir per E-Mail senden.

 

Referenzmaterial

  1. Halpin, T. A. Object Role Modeling: An Overview (in Englisch) , MSDN, 2001 (auch verfügbar unter www.orm.net, 1998).

  2. Halpin, T.A. "Object Role Modeling (ORM/NIAM)" Kapitel 4 des Handbook on Architectures of Information Systems (in Englisch), Hrsg. P. Bernus, K. Mertins und G. Schmidt (Heidelberg: Springer-Verlag, 1998), verfügbar unter www.orm.net.

  3. Halpin, T.A. Information Modeling and Relational Databases (in Englisch) (San Francisco: Morgan Kaufmann Publishers, 2001), verfügbar unter www.mkp.com/books_catalog/catalog.asp?ISBN=1-55860-672-6.

  4. Halpin, T.A. Visio-basierte Datenbankmodellierung in Visual Studio .NET Enterprise Architect: Teil 1, MSDN, 2001.

(Eine frühere Version dieses Artikels (in Englisch) erschien erstmals im The Journal of Conceptual Modeling bei InConcept, Inc.)