Du hast die Entität "Besucher" und die Entität "Seminar". Zwischen diesen besteht eine m:n-Relation; ein Besucher kann an mehreren Seminaren teilnehmen, und ein Seminar hat mehrere Besucher. Um das abbilden zu können, brauchst du eine Entität "TeilnahmeSeminar", welche diese beiden assoziiert. Sie hat jeweils einen Fremdschlüssel für einen Besucher und einen Fremdschlüssel für das Seminar; zusätzlich dazu hat sie einen Fremdschlüssel für die "Gebühr", die dieser Besucher für das jeweilige Seminar zu bezahlen hat. Für jedes Seminar, an dem ein Besucher teilnimmt, wird dort ein eigener Datensatz gespeichert. Der zusammengesetzte Schlüssel "Besucher/Seminar" ist eindeutig.
Für die Teilnahme an Workshops verfährst du genauso.
Vielen Dank für die Nutzung des Bewerten- und Danke-Buttons
Wenn man sieht, dass man einen anderen glücklich gemacht hat, ist die Welt um zwei glückliche Menschen reicher.
Zwischen Besucher und Seminar gibt es dann keine direkte Relation mehr, diese läuft dann nur noch über die Entität TeilnahmeSeminar, welche die m:n-Relation in eine 1:m- und eine n:1- Relation aufsplittet. Das ganze sieht dann so aus wie eine Kette:
Benutzer(1)---------(m)TeilnahmeSeminar(n)----------(1)Seminar
Du hast dann sozusagen eine zusätzliche Entität 'dazwischengeschoben', um die m:n-Relation in zwei 1:m bzw. n:1-Relationen aufzuteilen.
Beispiel:
Entität Benutzer (Id, Name):
- B1, Alice
- B2, Bob
- B3, Charlie
Entität Seminar (Id,Thema):
- S1, Windows
- S2, Linux
- S3, MacOS
Entität TeilnahmeSeminar (BenutzerId,SeminarId)
- B1, S1 // Alice möchte mehr über Windows wissen
- B1, S2 // Alice möchte aber auch Linux kennen lernen
- B2, S3 // Bob möchte mit Alice nichts zu tun haben und wählt deshalb MacOS
- B3, S3 // Charlie kommt aus Solidarität zu Bob mit
- B3, S2 // Charlie ist aber neugierig auf Alice und schreibt sich deshalb auch bei einem ihrer Kurse ein
Zur weiterführenden Frage: Wenn jeder dieselbe Gebühr für ein Seminar zu zahlen hat, kannst du den Fremdschlüssel für die Gebühr als Attribut bei der Entität Seminar hinzufügen, ansonsten ist es besser, sie bei Teilnahme unterzubringen. Wo du die Zahlungsmethode einzufügen hast, kann ich dir nicht genau sagen, es ist alles eine Frage der Abhängigkeit, also der Relation; wahrscheinlich ist es aber wirklich das Beste, sie als Fremdschlüssel in die Entität TeilnahmeSeminar einzutragen.
Du kannst möglicherweise die Entitäten Seminar und Workshop zu einer Entität Kurs zusammenfassen, der du dann das Attribut Typ mit den Werten "Workshop" bzw. "Seminar" hinzufügst.
Geändert von Vereth (11.03.10 um 15:47 Uhr)
Vielen Dank für die Nutzung des Bewerten- und Danke-Buttons
Wenn man sieht, dass man einen anderen glücklich gemacht hat, ist die Welt um zwei glückliche Menschen reicher.
Lesezeichen