![]() | ![]() | ||||||||||||
![]() | ![]() | ||||||||||||
| Kardinalität zwischen Klassen
Genauso wie Objekte miteinander in Verbindung stehen, muss nun auch zwischen den Klassen die Beziehung in das Klassendiagramm eingetragen werden. Dabei gibt es verschiedene Typen einer Beziehung, die als Kardinalität bezeichnet wird. Wir lernen die beiden Kardinalitäten 1:n und m:n kennen.
Klassen können miteinander in Beziehung stehen. Diese Beziehung wird durch zwei Linien zwischen den Klassen dargestellt. Jede Linie wird eindeutig bezeichnet und mit einer entgegengesetzten Richtung versehen. Am Beginn der Linie notiere man sich stets die Ziffer 1. ![]() Beide Linien drücken dieselbe Beziehung aus. Wichtig sind beide Linien, um zu ermitteln, in welchem Verhältnis die beiden Klassen zueinander stehen. Dabei ist zwischen zwei Beziehungstypen zu unterscheiden: 1 : n – Beziehung m : n – Beziehung (auf weitere mögliche Beziehungen 1:1, 0:1, usw. soll an dieser Stelle nicht eingegangen werden). Das Diagramm kann nun von beiden Seiten wie folgt gelesen werden: 1 Mitarbeiter gehört zu ? Gehaltsklassen. 1 Gehaltsklasse wird verdient von ? Mitarbeitern. Die beiden Fragezeichen sind nun zu beantworten etweder mit einer 1 wenn ein Objekt genau zu einem anderen gehört oder mit einem m bzw. n falls mehrere Objekte in Beziehungs stehen können. Bei der Beantwortung ist nicht die aktuelle, sondern stets die maximal mögliche Anzahl zu berücksichtigen. Als erstes ist also die Frage zu beantworten, ob ein Mitarbeiter nur einer Gehaltsklasse angehören kann, oder ob er auch mehrere Gehaltsklassen haben kann. In der Regel ist dies eindeutig zu beantworten. Jeder Mitarbeiter gehört genau zu einer Gehaltsklasse. Sicherlich kannst du nun Beispiele konstruieren, dass eine Firma einem Mitarbeiter auch mehrere Gehaltsklassen zuordnen kann, das soll für unsere Firma hier aber nicht gelten. Wir beantworten die erste Frage damit eindeutig mit einer 1. (Andernfalls müssten wir ein n als Kardinalität dieser Seite für das Fragezeichen eintragen.) Die zweite Frage ist, ob eine Gehaltsklasse von mehreren Mitarbeitern verdient werden kann. Dies wird man sicherlich mit ja beantworten können. Zwei Mitarbeiter können dasselbe Gehalt haben. Die Kardinalität ist also nicht 1, sonder größer 1. Dafür setzen wir den Buchstaben n. Ergebnis: Bei dieser Beziehung zwischen den Klassen Mitarbeiter und Gehaltsklasse handelt es sich also um eine Beziehung der Kardinalität 1:n (sprich: 1 zu n) und nicht um eine Kardinaltität m:n. ![]()
Gegeben sind folgende Klassen für die Verwaltung unseres Fertigungsbetriebes: ![]() Unsere Firma produziert Geräte. Es sollen folgende Situation vorliegen: Für jedes Gerät benötigt man zur Herstellung Maschinen. Jede Maschine wird von mindestens einem Mitarbeiter bedient. Analysiere folgendes Klassendiagramm eines Fertigungsbetriebes. Benenne die Beziehungen mit einem aussagekräftigen Namen, gib sodann die Kardinalität an. ![]() Das sieht schon sehr kompliziert aus, nachdem du dich ein wenig in das Diagramm eingelesen hast, wirst du aber sicher damit klarkommen. Unser Beispielbetreib produziert Geräte, z.B. Spielzeugautos. Dafür werden Maschinen benötigt, in denen Bauteile zum fertigen Gerät zusammengesetzt werden. Die Maschinen werden von Mitarbeitern bedient. Jeder Mitarbeiter gehört zu einer Gehaltsklasse und auch zu einer (Gesetzlichen) Krankenversicherung. Kunden bestellen die Geräte, die wir hergestellt haben. Auf eine Besonderheit möchte ich dich an dieser Stelle hinweisen: Es ist ja möglich, dass ein Kunde ein Gerät nicht nur einmal bestellt, sondern öfters. Das Bestelldatum und das Lieferatum ist sicherlich wichtig für die Bearbeitung des Auftrages im Unternehmen. Diese beiden Attribute passen aber weder zum Kunden noch zum Gerät. Es ist auch möglich, Attribute direkt einer Beziehung zuzuordnen, was wir hier bei der Bestellung getan haben. Du siehst noch ein weiteres Beispiel bei den Bauteilen. Aut Spielzeugauto besteht z.B. aus vier gleichen Rädern. Bei einem anderen Modell, z.B. einem Lkw sind aber sechs dieser Räder verbaut. Die Anzahl des Bauteils passt weder zum Gerät noch zum Bauteil. Auch hier wird das Attribut direkt an die Beziehung gekoppelt.
Übung 1: Eine Stadtbücherei soll mit einer Datenbank verwaltet werden. Diese Aufgabenstellung hatten wir schon mehrfach. Die Objekte hatten wir schon im zweiten Kapitel gefunden. Fertige ein mögliches Klassendiagramm einer einfachen Ausleihe an! Übung 2: Zeichne ein Klassendiagramm für ein Kaufhaus mit Artikeln, Abteilungen und Mitarbeitern Übung 3: Modelliere eine Datenbank für die Verwaltung einer Internet-Auktion, z.B. bei eBay. Da gibt es z.B. Verkäufer, Käufer, Artikel und Gebote Übung 4: Beschreibe, worin der Unterschied zwischen einer "1:n-Beziehung" und einer "m:n-Beziehung" besteht! Übung 5: Beim Erstellen von Klassendiagrammen habe ich ein anderes Ergebnis als in der Musterlösung erzielt. Begründe, warum verschiedene Lösungen richtig sein können! Lösungsansatz Übung 1: ![]() Anmerkung: Es fehlen hier sicherlich einige wichtige Attribute, z.B. das Datum der Ausleihe. Dieses könnte direkt bei der Beziehung entleiht noch ergänzt werden. Anfänger der Datenbankmodellierung sind sich oft unsicher, ob sie eine Eigenschaft, z.B. den Namen des Autors als Attribut der Klasse BUCH verwenden sollen oder eine eigene Klasse AUTOR erstellen sollen. Dies ist für den Moment nicht entscheidend. Wir werden später unter dem Stichwort Normalformen bzw. Redundanz gesondert auf dieses Problem eingehen. Lösungsansatz Übung 2: ![]() Interessant ist hier die Frage, ob ein Artikel nur in einer Abteilung verkauft wird. Ich habe dies bei meiner Lösung verneint, es gibt vielleicht einen Artikel, z.B. eine Batterie, die sowohl in der Elektroabteilung als auch bei den Spielwaren verkauft wird. Lösungsansatz Übung 3: ![]() Zu beachten, weil es von Anfängern oft falsch gemacht wird: Ein Käufer kann viele Artikel kaufen und verkaufen, aber wenn ich von der Klasse Artikel ausgehe und sage, ein Artikel wird gekauft, dann ist tatsächlich ein einziger Artikel gemeint und der kann nur von einem Bieter ersteigert werden! Zeit und Höhe des Gebotes ist in meiner Lösungsskizze keine eigene Klasse, sondern die beiden Attribute werden an die Beziehung kauft angeheftet. Ist doch schön, oder? ;-) Lösungsansatz Übung 4: Bei einer 1:n-Beziehung hat ein Objekt in einer der beiden Richtugnen genau eine Beziehung zu einem Objekt der anderen Klasse, in umgekehrter Richtung können von einem Objekt aus mehrere Beziehungen zu der Klasse bestehen. Lösungsansatz Übung 5: Jeder, der die Aufgabe löst, wird eine andere Lösung haben. Das ist normal. Oft ist nicht klar, ob eine Information zu dem einen Objekt gehört oder ein eigenes Objekt darstellt. Der Ort eines Mitarbeiters könnte ein eigenes Objekt sind. Die Gehaltsklasse und die Krankenversicherung könnten Attribute des Objektes Mitarbeiter sein. Theoretisch werden wir dieses Problem später beim Thema "Redundanz" behandeln. An dieser Stelle entscheidet sich auch, ob wir eine gute oder eine schlechte Datenbankstruktur haben werden. Aber keine Sorge, im Laufe der Übungen wirst du ein Gefühl dafür kriegen, wie gute Datenbanken modelliert werden. Im Moment sind alle (oder die meisten) Lösungen richtig!
Damit ist die zweite Stunde auch schon vorbei. Hausaufgaben Wie immer: Die Hausaufgaben solltest du nicht sofort machen - gönne dir eine Pause von mindestens einer Stunde, bevor du dich an die Arbeit machst. Nur dann hast du die Chance, langfristig zu lernen! Die Hausaufgaben hier haben es richtig in sich! Aufgabe 1 Es soll eine Fluglinie modelliert werden. Diese hat Flugzeuge mit verschiedener Platzanzahl, die zwischen verschiedenen Flughäfen verkehren. Für jeden Flug gibt es Piloten und Stewardessen, sowie einen Wochentag und eine Uhrzeit für den Abflug und die Uhrzeit für die Ankunft. Kunden können die Flüge buchen. Aufgabe 2 Die Bahnauskunft soll modelliert werden. Züge verkehren an bestimmten Uhrzeiten zwischen verschiedenen Bahnhöfen.
Kardinalität: Bezeichnung für die Art der Beziehung zwischen zwei Klassen. 1:n-Beziehung: Ein Objekt A1 hat eine Beziehung zu genau einem Objekt B, dieses kann aber mehr als eine Beziehung zu Objekten haben, z.B. zu A1, A2, A3 usw. Schreibweise der Beziehung: Zwischen zwei Klassen werden zwei Linien gezeichnet, jeweils mit einer Richtung. Jede Linie erhält einen aussagekräftigen Namen. Dort wo die Linie beginnt wird die Ziffer 1 geschrieben, auf der anderen Seite die Ziffer 1 oder ein Platzhalter m bzw. n. Copyright 2003 - Letzte Änderung am 4. September 2004 |