ERM Diagramm erstellen (drigend Hilfe!)

NoBrainDB

Aktiver Benutzer
Beiträge
30
Hallo!

Bei folgender Aufgabe bräuchte ich dringend Hilfe!

Ein Institut für Sprachkurse möchte seine Kurse in einem Datenbanksystem verwalten. Dabei sollen die folgenden Rahmenbedingungen gelten:

Erfassung
· Jeder Teilnehmer wird mit Name, Vorname und Anschrift erfasst.
· Jeder Kursleiter wird mit Name und Vorname erfasst.
· Jede Kursdurchführung ist mit Sprache, Teilnehmern, Kursleiter, Raum und Datum festzuhalten.

Beziehungen
· Ein Kurs hat mehrere Teilnehmer. Teilnehmer können einen Kurs nur einmal besuchen.
· Jeder Kurs hat einen Kursleiter, der nicht aus dem Kreis der Teilnehmer stammt. Ein Kursleiter kann mehrere Sprachen unterrichten.
· Die Dauer und der Preis eines Kurses hängen von der unterrichteten Sprache ab.
· Die Kurse finden an verschiedenen Orten in variierenden Räumen statt.
Vom Raum hängt die maximale Teilnehmerzahl ab.
· Ein Kurs kann mehrmals und an verschiedenen Orten stattfinden.

Meine Ansätze: (PK = primary key, FK = foreign key, falls das nicht eh ersichtlich war)
> Entities
-- Teilnehmer (ID, Vorn, Nachname, Str, Plz, Ort), PK: ID
-- Kursleiter (ID, Vorn, Nachn, Sprache_ID), PK: ID
-- Sprache (ID, Sprache, Dauer, Preis), PK: ID
-- Kursort (PLZ, Ort), PK: ID
-- Kursraum (ID, Name, Kursort_PLZ, max. Teilnehmer), PK: ID
-- Kurs (Teilnehmer, ID, Kursleiter_ID, Kursort_PLZ, Kursraum_ID, Datum), PK:

> Beziehungen
-- Kurs <1:N> Teilnehmer (also Teilnehmer_ID als Fremdschlüssel bei Kurs)
-- Kurs <1:1> Kursleiter (aber Kursleiter in Extra-Tabelle, also Kursleiter_ID als Fremdschlüssel in Kurs)
-- Kursleiter <1:N> Sprachen (D. h. ja, ich muss die Sprachen separat erfassen und dann einen Verweis in die Kursleiter-Tabelle)

Kommt das ungefährt hin?? Ich steht hier echt etwas aufm Schlauch und brauche recht dringend Hilfe!!

Und es gibt noch Erweiterungen:
> Pro Sprache mehrere Level (A1, A2 usw.)
-- da müsste man zum Kurs noch das Level hinschreiben

> Neu soll Preis nur noch von Dauer abhängen
-- Neue Tabelle Preis (Dauer, Preis), PK ist Dauer, und die Dauer als FK in die Tabelle Sprache

> Teilnehmer sollen gleiche Kurstypen mehrfach besuchen können
-- Jetzt n:m beziehung zwischen Kurs und Teilnehmer, also eine neue Tabelle "Kursteilnahme" (ID, Kurs_ID, Teilnehmer_ID), PK: ID

> Für jeden Kursleiter festhalten, welche Kurse er unterrichten darf:
-- N:M Beziehung zw. Kurs und Kursleiter, in Extra-Tabelle "Kurstypen" (ID, Kurstype, Kursleiter_ID), PK: ID

> Kursleiter sollen andere Kursleiter in weiteren Sprachen unterrichten können.
-- Neue Tabelle "Weiterbildungskurs" (ID, Leiter, Kursleiter_ID), PK: ID
 
Werbung:
-- Kurs (Teilnehmer, ID, Kursleiter_ID, Kursort_PLZ, Kursraum_ID, Datum), PK:

Wenn Du das als CREATE TABLE mal zeigen könntest, wäre es einfacher zu verstehen. Sollte das, was ich zitiert habe, die Kurse und deren Teilnehmer abbilden sollen, so frage ich mich was passiert, wenn mehr als nur ein Teilnehmer den Kurs besucht. Was soll Kursort_PLZ? Weiter oben hast Du "Kursort (PLZ, Ort), PK: ID" geschrieben, warum verwendest hier offensichtlich keinen Fremdschlüssel?

Das nur mal so 2 Rosinen, die ich mir rausgepickt habe.
 
Sorry, hier noch mal die Tabelle Kurse:

Kurs(Teilnehmer_ID, Kursleiter_ID, Kursort_PLZ, Kursraum_ID, Datum): PK: ?? (Hatte das vergessen, um anzudeuten, dass ich hier keine Ahnung habe, was der PK wäre - die Tabelle ist aber wohl falsch)

Teilnehmer_ID, Kursleiter_ID, Kursort_PLZ und Kursraum_ID sind Fremdschlüssel auf die ID-Spalten bzw. die PLZ-Spalte in den jeweiligen Tabellen)

Und die Tabelle Kursort:

Kursort (PLZ, Ort), PK: PLZ


Wenn mehr als ein Teilnehmer den Kurs besucht, dann würde ich hier die jeweilige ID des Teilnehmers in die Kurs-Tabelle schreiben...
 
Sorry, hier noch mal die Tabelle Kurse:

Kurs(Teilnehmer_ID, Kursleiter_ID, Kursort_PLZ, Kursraum_ID, Datum): PK: ?? (Hatte das vergessen, um anzudeuten, dass ich hier keine Ahnung habe, was der PK wäre - die Tabelle ist aber wohl falsch)

Teilnehmer_ID, Kursleiter_ID, Kursort_PLZ und Kursraum_ID sind Fremdschlüssel auf die ID-Spalten bzw. die PLZ-Spalte in den jeweiligen Tabellen)


Wenn mehr als ein Teilnehmer den Kurs besucht, dann würde ich hier die jeweilige ID des Teilnehmers in die Kurs-Tabelle schreiben...

Wie, als Komma-Liste?
 
Naja, da würde ich die ID des Teilnehmers aus der Teilehmer-Tabelle nehmen... Also das Feld Teilnehmer_ID ist ja ein Fremdschlüssel auf die ID in der Tabelle Teilnehmer. Und wenn ich 30 Teilnehemer habe, dann hat die Tabelle Kurs 30 Zeilen mit 30 unterschiedlichen Teilnehmer_ID...
so stelle ich mir das jedenfalls derzeit vor :D Kann gut sein, dass ich da gerade ganz im Graben liege...
 
Naja, da würde ich die ID des Teilnehmers aus der Teilehmer-Tabelle nehmen... Also das Feld Teilnehmer_ID ist ja ein Fremdschlüssel auf die ID in der Tabelle Teilnehmer. Und wenn ich 30 Teilnehemer habe, dann hat die Tabelle Kurs 30 Zeilen mit 30 unterschiedlichen Teilnehmer_ID...
... und 30 mal identischen Kursleiter_ID, Kursort_PLZ, Kursraum_ID, Datum.

In Kurz: FAIL.

so stelle ich mir das jedenfalls derzeit vor :D Kann gut sein, dass ich da gerade ganz im Graben liege...

Beschäftige Dich mit Normalisierung.
 
Normalisierung habe ich schon angeschaut, das hilft mir hier nicht weiter, weil ich es nicht übertragen kann. Ich verstehe schon, dass man Funktionale Abhängigkeiten in Betracht ziehen muss, aber ich sehe die hier nicht. Es geht mir auch erstmal nur um dieses konkrete Beispiel. Ichs weiß einfach nicht, wie ich aus dem Text die Beziehungen herleiten soll. Kannst du mir nicht einfach mit diesem konkreten Beispiel helfen? Das würde mir mehr bringen.

Ich glaub, mein Hauptproblem ist grade:
Um zu gewährleisten, dass jeder Teilnehmer jeden Kurs nur 1mal besuchen kann, aber ohne die Kursdaten ständig zu wiederholen, müsste ich ja eine Tabelle anlegen, in der ich eine Kurs_ID und eine Teilnehmer_ID als kombinierten Primörschlüssel habe.Dann kann ja ein Teilnehmer nicht nochmal denselben Kurs machen. Aber da hier Teilnehmer und Kurs eine 1:N Beziehung habe, müsste es doch auch anders gehen, oder? Ich dachte, neue Tabellen muss man nur bei n:m Beziehungen anlegen...?
 
Zuletzt bearbeitet:
Okay, dann wäre mein Stand jetzt:
- Teilnehmer (ID, Vorn, Nachn, Str, Plz, Ort)
- Kursleiter (ID, Name, Vorname)
- Kursteilnahme (Kurs_ID, Teilnehmer_ID)
- Kurs (Kurs_ID, Datum, Kursleiter_ID, Sprache_ID, Ort_PLZ, Raum_ID)
- Sprache (Sprache_ID, Dauer, Preis)
- Ort (PLZ, Ort)
- Raum (ID, Name, max. Teilnehmer)

Ich hab jetzt noch folgende Problem:
- Die Kurse finden an verschiedenen Orten in variierenden Räumen statt.
- Ein Kurs kann mehrmals und an verschiedenen Orten stattfinden.
--> Wie bilde ich das gescheit ab?

und in meiner Tabelle könnte ja jetzt noch ein anderer Kurs mit demselben Kurseltier am selben Datum im selben Raum am selben Ort stattfinden, sehe ich das richtig?
 
und in meiner Tabelle könnte ja jetzt noch ein anderer Kurs mit demselben Kurseltier am selben Datum im selben Raum am selben Ort stattfinden, sehe ich das richtig?

Wie schon gesagt, ohne konkrete CREATE TABLE - Befehle, wo man dann auch nötige Constraints sieht, schwer zu beurteilen.

Wenn Du via DB-Constraint verhindern willst, daß Doppelbuchungen von Kursleitern, Räumen, Teilnehmern etc. auftreten, die reinlogisch nicht gehen, dann wären Exclusion Constraints was für Dich. Allerdings benötigst Du dann auch ein DB-System, was das kann.
 
Also es geht mir hier recht low-level darum, ein möglichst gescheites ERM zu erzeugen. Mehr estmal noch nicht. Es geht mir ein um die Datenmodellierung.
 
Werbung:
Gut, vielleicht mal andersherum. Ich habe hier eine (eventuell falsche) Lösung:

Darin ist die Teilnehmer-Tabelle wie bei mir (ID, Name, Vorname, Str, Plz, Ort)
Ort ist (PLZ, Ort)
Raum ist (ID, Name, PLZ, max. Teilnehmer)
Kursleiter (ID, Name, Vorname)
Kursteilnahme (Kurs_ID, Teilnehmer_ID)

Kurs sieht aber so aus (ID, Sprache, Dauer, Preis)
> In der Aufgabe steht: Dauer und Preis hängen von der Sprache ab. Müsste dann die Sprache nicht in eine eigene Tabelle SPRACHE (ID, Dauer, Preis)?

Weiterhin steht in den Aufgaben, dass die Kurse an verschiedenen Orten in variierenden Räumen stattfinden können. Müsste dann nicht noch eine Tabelle für die n:m Beziehung von Raum und Ort erstellt werden?

Dann steht da, dass ein Kursleiter mehrere Sprachen unterrichten kann. Dann fehlt doch noch eine Tabelle für die 1:N Beziehung von Kursleiter und Sprache, oder?
 
Zurück
Oben