Entity-Relationship-Modell: Unterschied zwischen den Versionen
(29 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
[[Kategorie:Datenbanken]] | |||
[[Kategorie:Informatik]] | [[Kategorie:Informatik]] | ||
[[Kategorie:Informatik-Q1]] | |||
[[Kategorie:Informatik-10]] | |||
[[Kategorie:Informatik-Abitur]] | [[Kategorie:Informatik-Abitur]] | ||
Zeile 5: | Zeile 8: | ||
Realität -> Anforderungsermittlung -> '''Entity-Relationship-Modell''' -> [[Relationales Datenmodell]] -> Datenbanksystem | Realität -> Anforderungsermittlung -> '''Entity-Relationship-Modell''' -> [[Relationales Datenmodell]] -> Datenbanksystem | ||
=Erklärvideos= | |||
* [https://youtu.be/lu2V4kEErxw Entity-Relationship-Modellierung] | |||
=Fachbegriffe= | |||
Entität, Entitätsmenge, Attibut, Relation (=Beziehung), 1:1-Beziehung, 1:n-Beziehung, n:m-Beziehung, Kardinalität | |||
=Entität, Entitätsmenge und Attribut= | =Entität, Entitätsmenge und Attribut= | ||
* '''Entität''': ein reales Objekt | |||
* '''Entitätsmenge''': mehrere Entitäten werden in einer Entitätsmenge zusammengefasst; | [[File:ER-modell-entitaetsmenge-attribute.png|thumb|Entitätsmenge lehrer mit Attributen |234px]] | ||
* '''Attribut''': Eigenschaft einer Entitätsmenge; jede Entität der Entitätsmenge kann einen eigenen '''Wert''' für das Attribut haben. | * '''Entität''': ein reales Objekt oder ein realer Vorgang. | ||
** z.B. die Lehrerin Brigitte Huber. | |||
** z.B. eine Überweisung von 300€ auf das Abikonto. | |||
* '''Entitätsmenge''': mehrere gleichartige Entitäten werden in einer Entitätsmenge zusammengefasst; | |||
** Entitätsmengen werden als '''Rechteck''' dargestellt. | |||
** z.B. die Entitätsmenge ''lehrer'', in der alle Lehrer zusammengefasst werden; die Lehrerin Brigitte Huber gehört zur Entitätsmenge ''lehrer''. | |||
** z.B. Alle Überweisungen werden in die Entitätsmenge ''ueberweisung'' zusammengefasst. | |||
* '''Attribut''': Eigenschaft einer Entitätsmenge; jede Entität der Entitätsmenge kann einen eigenen '''Wert''' für das Attribut haben. | |||
** Attribute werden als '''Ovale''' dargestellt. Sie werden durch eine Linie mit der Entitätsmenge verbunden, zu der sie gehören. | |||
** z.B. ''name'' ist ein Attribut der Entitätsmenge ''lehrer''. Jeder einzelne Lehrer hat dann einen eigenen Wert für ''name'', z.B. Huber, Zimmermann, ... Die Werte können doppelt vorkommen. | |||
** z.B. ''betrag'' ist ein Attribut der Entitätsmenge ''ueberweisung''. | |||
==Entsprechungen zur Datenbank== | ==Entsprechungen zur Datenbank== | ||
Entität, Entitätsmenge und Attribut haben folgende Entsprechungen in der Datenbank: | Entität, Entitätsmenge und Attribut haben folgende Entsprechungen in der Datenbank: | ||
{| class="wikitable" | |||
|- | |||
! Entity-Relationship-Modell !! Datenbank !! Darstellung in der Datenbank-Tabelle | |||
|- | |||
| Entitätsmenge || Datenbank-Tabelle || ganze Tabelle | |||
|- | |||
| Entität || Datensatz in einer Tabelle ||eine ''Zeile'' der Tabelle | |||
|- | |||
| Attribut || Attribut|| eine ''Spalten''überschrift in der Tabelle | |||
|- | |||
| Wert || der Wert eines Attributes in einem Datensatz || eine ''Zelle'' in der Tabelle. | |||
|} | |||
=Relationen und Kardinalitäten= | =Relationen und Kardinalitäten= | ||
Mithilfe von '''Relationen''' kann man die Beziehungen zwischen den Entitätsmengen im ER-Modell festhalten. | * Mithilfe von '''Relationen''' kann man die Beziehungen zwischen den Entitätsmengen im ER-Modell festhalten. | ||
Relationen haben einen Namen und 2 '''Kardinalitäten'''; die Kardinalitäten geben an, in welcher zahlenmäßigen Beziehung die zwei Entitätsmengen stehen. | * Relationen haben einen '''Namen''' und werden als '''Raute''' dargestellt. Der Name der Relation sollte die inhaltliche Bedeutung der Beziehung widerspiegeln; so ist z.B. ''hat'' als Name einer Relation fast immer ungeeignet. | ||
* Jede Relation hat 2 '''Kardinalitäten'''; die Kardinalitäten geben an, in welcher zahlenmäßigen Beziehung die zwei Entitätsmengen stehen. | |||
[[File:ER-modell-kardinalitaeten.png|thumb|Relationen und Kardinalitäten |358px]] | |||
Folgende Kardinalitäten sind denkbar: | Folgende Kardinalitäten sind denkbar: | ||
Zeile 33: | Zeile 63: | ||
** Jeder Schüler nimmt an <u>mehreren</u> Kursen teil. | ** Jeder Schüler nimmt an <u>mehreren</u> Kursen teil. | ||
** An jedem Kurs nehmen <u>mehrere</u> Schüler teil. | ** An jedem Kurs nehmen <u>mehrere</u> Schüler teil. | ||
==Begründung der Kardinalitäten== | |||
Wie oben gezeigt, werden die Kardinalitäten einer Beziehung durch 2 Sätze begründet. | |||
Diese Sätze sollten jeweils mit '''Jeder''' anfangen; damit stellt man sicher, dass man die richtige Kardinalität erhält. | |||
=Beispielaufgabe= | =Beispielaufgabe= | ||
Zeile 45: | Zeile 80: | ||
* Jeder Kurs wird von einem Lehrer unterrichtet. | * Jeder Kurs wird von einem Lehrer unterrichtet. | ||
* Für Lehrer müssen Name, Vorname und Kürzel gespeichert werden. | * Für Lehrer müssen Name, Vorname und Kürzel gespeichert werden. | ||
==Aufgabe== | |||
* Zeichnen Sie zu dieser Anforderungsermittlung ein Entity-Relationship-Modell. | |||
* Begründen Sie die Kardinalitäten. | |||
==Entity-Relationship-Modell== | ==Entity-Relationship-Modell== | ||
[[File:ER-modell-lehrer-kurs-schueler.png|thumb|ER-Modell Kurssystem |572px]] | [[File:ER-modell-lehrer-kurs-schueler.png|thumb|ER-Modell Kurssystem |572px]] | ||
Anmerkung zum Attribut '''note''': | |||
* Die Note kann nicht Attribut von ''schueler'' sein, denn dann hätte jeder Schüler eine fächerübergreifende Pauschalnote. | |||
* Die Note kann nicht Attribut von ''kurs'' sein, denn dann hätten alle Schüler eines Kurses die gleiche Note. | |||
* Die Note gehört zur Relation ''belegt''; damit kann jede Kursbelegung durch einen Schüler mit einer Note versehen werden. | |||
==Begründung für die Kardinalitäten== | ==Begründung für die Kardinalitäten== | ||
* schueler - kurs: n:m | * schueler - kurs: '''n:m''' | ||
** Jeder Schüler nimmt an | ** Jeder Schüler nimmt an <u>mehreren</u> Kursen teil. | ||
** An jedem Kurs nehmen | ** An jedem Kurs nehmen <u>mehrere</u> Schüler teil. | ||
* kurs - lehrer: n:1 | * kurs - lehrer: '''n:1''' | ||
** Jeder Kurs wird von | ** Jeder Kurs wird von <u>einem</u> Lehrer unterrichtet. | ||
** Jeder Lehrer unterrichtet | ** Jeder Lehrer unterrichtet <u>mehrere</u> Kurse. | ||
= | =Syntax= | ||
Damit man das ER-Modell problemlos in das relationale Datenmodell und in die Datenbank übertragen kann, sollten einige Konventionen zur Schreibweise beachtet werden. | Damit man das ER-Modell problemlos in das relationale Datenmodell und in die Datenbank übertragen kann, sollten einige Konventionen zur Schreibweise beachtet werden. | ||
* '''keine Umlaute''', '''kein ß''', '''keine Sonderzeichen''' (=dann streikt die Datenbank) | * '''keine Umlaute''', '''kein ß''', '''keine Sonderzeichen''' (=dann streikt die Datenbank) | ||
Zeile 62: | Zeile 107: | ||
* '''alles klein''' schreiben (=erleichtert hinterher die SQL-Abfragen) | * '''alles klein''' schreiben (=erleichtert hinterher die SQL-Abfragen) | ||
= | =Primärschlüssel= | ||
Entity-Relationship-Modelle orientieren sich an der Realität, so, wie sie durch die Anforderungsermittlung | Entity-Relationship-Modelle orientieren sich an der Realität, so, wie sie durch die Anforderungsermittlung dargestellt wird.<br/> | ||
Das heißt: In ER-Modellen müssen rein "technische" Primärschlüssel ("IDs") noch nicht eingetragen werden. Diese kommen erst beim [[relationales_Datenmodell|relationalen Datenmodell]] dazu. Vgl. [https://de.wikipedia.org/wiki/Entity-Relationship-Modell Wikipedia: Entity-Relationship-Modell]. | |||
Wenn es allerdings einen "natürlichen" Primärschlüssel gibt (z.B. eine Personalnummer), dann wird dieser <u>unterstrichen</u>. | |||
''<u>Hinweis:</u>''<br/> | |||
''Die Vorgaben des Zentralabiturs sehen auch im ER-Modell schon "technische" Primärschlüssel ("IDs") vor. | |||
=Was häufig schiefgeht= | |||
==Relation vs. Attribut== | |||
Man muss die Attribute daraufhin überprüfen, ob sie nicht die Beziehung zu einer anderen Entitätsmenge darstellen. | |||
So ist z.B. ''empfaengerkonto'' kein Attribut der Entitätsmenge ''ueberweisung'', sondern eine Relation zur Entitätsmenge ''konto''. | |||
==Begründungen von Kardinalitäten== | |||
Folgende Begründung für die Beziehung ''kurs''-''lehrer'' ist ungeeignet: | |||
'''Falsch''': | |||
* Viele Lehrer unterrichten <u>viele</u> Kurse | |||
* Viele Kurse werden von <u>vielen</u> Lehrern unterrichtet. | |||
Das ließe auf eine n:m-Beziehung schließen - ''es ist aber keine!'' | |||
D.h. mit diesen Sätzen, die natürlich inhaltlich richtig sind, lassen sich Kardinalitäten '''nicht''' begründen. | |||
'''Richtig''': | |||
* <u>Jeder</u> Lehrer unterrichtet <u>viele</u> Kurse | |||
* <u>Jeder</u> Kurs wird von <u>einem</u> Lehrer unterrichtet. | |||
Und schon erhält man die - korrekte - n:1-Beziehung. | |||
'' | Das Beispiel zeigt, dass die beiden Sätze am besten immer mit '''Jeder''' anfangen. |
Aktuelle Version vom 13. August 2023, 14:03 Uhr
Mithilfe von Entity-Relationship-Modellen (kurz: ER-Modellen) kann man relationale Datenbanken planen:
Realität -> Anforderungsermittlung -> Entity-Relationship-Modell -> Relationales Datenmodell -> Datenbanksystem
Erklärvideos
Fachbegriffe
Entität, Entitätsmenge, Attibut, Relation (=Beziehung), 1:1-Beziehung, 1:n-Beziehung, n:m-Beziehung, Kardinalität
Entität, Entitätsmenge und Attribut
- Entität: ein reales Objekt oder ein realer Vorgang.
- z.B. die Lehrerin Brigitte Huber.
- z.B. eine Überweisung von 300€ auf das Abikonto.
- Entitätsmenge: mehrere gleichartige Entitäten werden in einer Entitätsmenge zusammengefasst;
- Entitätsmengen werden als Rechteck dargestellt.
- z.B. die Entitätsmenge lehrer, in der alle Lehrer zusammengefasst werden; die Lehrerin Brigitte Huber gehört zur Entitätsmenge lehrer.
- z.B. Alle Überweisungen werden in die Entitätsmenge ueberweisung zusammengefasst.
- Attribut: Eigenschaft einer Entitätsmenge; jede Entität der Entitätsmenge kann einen eigenen Wert für das Attribut haben.
- Attribute werden als Ovale dargestellt. Sie werden durch eine Linie mit der Entitätsmenge verbunden, zu der sie gehören.
- z.B. name ist ein Attribut der Entitätsmenge lehrer. Jeder einzelne Lehrer hat dann einen eigenen Wert für name, z.B. Huber, Zimmermann, ... Die Werte können doppelt vorkommen.
- z.B. betrag ist ein Attribut der Entitätsmenge ueberweisung.
Entsprechungen zur Datenbank
Entität, Entitätsmenge und Attribut haben folgende Entsprechungen in der Datenbank:
Entity-Relationship-Modell | Datenbank | Darstellung in der Datenbank-Tabelle |
---|---|---|
Entitätsmenge | Datenbank-Tabelle | ganze Tabelle |
Entität | Datensatz in einer Tabelle | eine Zeile der Tabelle |
Attribut | Attribut | eine Spaltenüberschrift in der Tabelle |
Wert | der Wert eines Attributes in einem Datensatz | eine Zelle in der Tabelle. |
Relationen und Kardinalitäten
- Mithilfe von Relationen kann man die Beziehungen zwischen den Entitätsmengen im ER-Modell festhalten.
- Relationen haben einen Namen und werden als Raute dargestellt. Der Name der Relation sollte die inhaltliche Bedeutung der Beziehung widerspiegeln; so ist z.B. hat als Name einer Relation fast immer ungeeignet.
- Jede Relation hat 2 Kardinalitäten; die Kardinalitäten geben an, in welcher zahlenmäßigen Beziehung die zwei Entitätsmengen stehen.
Folgende Kardinalitäten sind denkbar:
- 1:1 z.B. trainer trainiert mannschaft:
- Jeder Trainer trainiert eine Mannschaft.
- Jede Mannschaft wird von einem Trainer trainiert.
- 1:n z.B. schueler gehoert zu klasse
- Jeder Schüler gehört zu einer Klasse.
- Zu jeder Klasse gehören mehrere Schüler.
- n:m z.B. schueler nimmt teil an kurs
- Jeder Schüler nimmt an mehreren Kursen teil.
- An jedem Kurs nehmen mehrere Schüler teil.
Begründung der Kardinalitäten
Wie oben gezeigt, werden die Kardinalitäten einer Beziehung durch 2 Sätze begründet.
Diese Sätze sollten jeweils mit Jeder anfangen; damit stellt man sicher, dass man die richtige Kardinalität erhält.
Beispielaufgabe
Die Entity-Relationship-Modellierung wird jetzt an einem Beispiel vorgestellt.
Anforderungsermittlung
Die Firma Schooltech möchte ein Datenbanksystem entwickeln, das es Gymnasien ermöglicht, Schüler, Kurse und Noten in der Oberstufe zu verwalten, u.a. für den Zeugnisdruck. Aus Gesprächen mit mehreren Schulen ergeben sich folgende Anforderungen für die Datenspeicherung:
- Es gibt keine Schulklassen wie in der Unter- und Mittelstufe, sondern nur noch Kurse. In jedem Schulhalbjahr belegt jeder Schüler ca. 10-12 Kurse.
- Am Ende des Halbjahres bekommt jeder Schüler in jedem Kurs eine Note.
- Für jeden Schüler müssen Name, Vorname, Geburtsdatum, Geschlecht und Adresse gespeichert werden.
- Für die Kurse müssen Name, Kürzel und Schulhalbjahr (z.B. 201213/2) gespeichert werden.
- Jeder Kurs wird von einem Lehrer unterrichtet.
- Für Lehrer müssen Name, Vorname und Kürzel gespeichert werden.
Aufgabe
- Zeichnen Sie zu dieser Anforderungsermittlung ein Entity-Relationship-Modell.
- Begründen Sie die Kardinalitäten.
Entity-Relationship-Modell
Anmerkung zum Attribut note:
- Die Note kann nicht Attribut von schueler sein, denn dann hätte jeder Schüler eine fächerübergreifende Pauschalnote.
- Die Note kann nicht Attribut von kurs sein, denn dann hätten alle Schüler eines Kurses die gleiche Note.
- Die Note gehört zur Relation belegt; damit kann jede Kursbelegung durch einen Schüler mit einer Note versehen werden.
Begründung für die Kardinalitäten
- schueler - kurs: n:m
- Jeder Schüler nimmt an mehreren Kursen teil.
- An jedem Kurs nehmen mehrere Schüler teil.
- kurs - lehrer: n:1
- Jeder Kurs wird von einem Lehrer unterrichtet.
- Jeder Lehrer unterrichtet mehrere Kurse.
Syntax
Damit man das ER-Modell problemlos in das relationale Datenmodell und in die Datenbank übertragen kann, sollten einige Konventionen zur Schreibweise beachtet werden.
- keine Umlaute, kein ß, keine Sonderzeichen (=dann streikt die Datenbank)
- keine Leerzeichen; stattdessen einen Unterstrich verwenden, z.B.: kurs_hat_teilnehmer
- alles klein schreiben (=erleichtert hinterher die SQL-Abfragen)
Primärschlüssel
Entity-Relationship-Modelle orientieren sich an der Realität, so, wie sie durch die Anforderungsermittlung dargestellt wird.
Das heißt: In ER-Modellen müssen rein "technische" Primärschlüssel ("IDs") noch nicht eingetragen werden. Diese kommen erst beim relationalen Datenmodell dazu. Vgl. Wikipedia: Entity-Relationship-Modell.
Wenn es allerdings einen "natürlichen" Primärschlüssel gibt (z.B. eine Personalnummer), dann wird dieser unterstrichen.
Hinweis:
Die Vorgaben des Zentralabiturs sehen auch im ER-Modell schon "technische" Primärschlüssel ("IDs") vor.
Was häufig schiefgeht
Relation vs. Attribut
Man muss die Attribute daraufhin überprüfen, ob sie nicht die Beziehung zu einer anderen Entitätsmenge darstellen.
So ist z.B. empfaengerkonto kein Attribut der Entitätsmenge ueberweisung, sondern eine Relation zur Entitätsmenge konto.
Begründungen von Kardinalitäten
Folgende Begründung für die Beziehung kurs-lehrer ist ungeeignet:
Falsch:
- Viele Lehrer unterrichten viele Kurse
- Viele Kurse werden von vielen Lehrern unterrichtet.
Das ließe auf eine n:m-Beziehung schließen - es ist aber keine!
D.h. mit diesen Sätzen, die natürlich inhaltlich richtig sind, lassen sich Kardinalitäten nicht begründen.
Richtig:
- Jeder Lehrer unterrichtet viele Kurse
- Jeder Kurs wird von einem Lehrer unterrichtet.
Und schon erhält man die - korrekte - n:1-Beziehung.
Das Beispiel zeigt, dass die beiden Sätze am besten immer mit Jeder anfangen.