Datenmodellierung + ER
Begriffe
Database / Datenbasis
Menge gespeicherter Daten(objekte) in Beziehung zueinander
Database Management System (DBMS)
Datenbank-Verwaltungssystem / Datenbanksystem Alle Programme um auf Datenbasis zuzugreifen und verwalten
Datenmodell
Wie eine Programmiersprache:
- Beschreibung der Datenobjekte
- Anwendbare Operationen und ihre Wirkung
besteht aus:
- Data definition language DDL
-
Data manipulation language DML → Bildet Datenbankschema, beinhaltet gleichzeitig auch die Query Language (Anfragen Sprache)
Beispiel: SQL
Datenbank-Schema
Legt die Struktur der abgespeicherten Datenobjekte fest. Besteht aus Meta-Daten.
Datenbankausprägung
Aktueller Zustand der Datenbasis.
Entspricht der im Schema festgelegten Struktur.
Ändert sich ständig.
Phasen der Datenmodellierung
- Ausschnitt aus der realen Welt → konzeptuelles Schema
-
Konzeptuelles Schema
reine Beschreibungsmodelle, graphische Notation
- Entity Relationship ER
- semantisches Datenmodell
- UML
-
Logische (Implementations-)Datenmodelle / Implementations Schema
Bildet die Struktur der Tables.
- relationales Datenmodell
(auch andere möglich)
E ntity Relationship Model (ER Model)
- Entities (Rechtecke)
- Relationships (Rauten)
-
Attribute (Kreise oder Ellipsen)
Werden Entities und Relationships zugeordnet. Schlüssel (IDs) werden unterstrichen - jede Entity braucht minimale Menge an Attributen als ID.
-
Rollen
zB in der rekursiven Beziehung voraussetzen werden Rollen zugeordnet ( Vorgänger und Nachfolger )
Beziehungstypen nach Peter Chen
(untere Schranke also immer 0 und die obere Schranke wird dazugeschrieben)
-
1:1-Beziehung
Gibt die Max Anzahl der Partner an.
zb Heiraten wobei Objekte auch alleine sein können.
-
1:N-Beziehung (= N-1)
Beispiel: beschäftigen zwischen Firmen und Personen, wenn wir davon ausgehen, dass eine Firma i.A. mehrere Personen beschäftigt, aber eine Person nur bei einer (oder gar keiner) Firma angestellt ist.
-
N:M-Beziehung
Binäre Beziehungen
Beziehungen definieren partielle Funktionen:
Bezeichnung für eine Funktion, die evtl. für manche Werte aus ihrem Definitionsbereich den speziellen Funktionswert „undefiniert“ hat.
Definitionsmenge → Zielmenge (Nicht alle Elemente definiert)
zB:
Funktionen sind partiell, weil es Entities aus dem Definitionsbereich geben kann, die gar keine Beziehung eingehen.
ternäre Beziehungen
Kardinalitätsangabe N:1:1
dreistellige Beziehung betreuen zwischen den Entitytypen Studenten, Professoren und Seminarthemen
Folgenden partiellen Funktionen müssen gleichzitig gelten:
betreuen : Professoren x Studenten —> Seminarthemen betreuen : Seminarthemen x Studenten —> Professoren
Studenten können mehrere Beziehungen haben aber in jeder Bezeihung darf nur 1 Prof und 1 Seminarthema sein.
Kardinalitätsangabe N:M:1
zB nur ein Professor für jede Prüfung als einzige Beschränkung.
Mit anderen Worten, zu einem Paar aus Studenten und Vorlesungen soll es maximal einen Professor bzw. eine Professorin als Prüfer geben.
prüfen : Studenten x Vorlesungen —> Professoren
Die (min,max)-Notation
nicht nur die Extremwerte
Anzahl auf der gegenüber liegenden Seite die Kardinalität an und nicht auf der eigenen Seite des Objekte
- * bedeutet beliebig oft
- (0,*) ist die allgemeinste Angabe
Im Vergleich:
Existenzabhängige Entitytypen - schwache Entities
Nicht über eigene ID identifizierbar.
- Existenz von übergeordneter Entity abhängig
- oft nur in Kombination mit dem Schlüssel des übergeordneten Entities eindeutig identifizierbar.
Beispiel:
Generalisierung (Vererbung) - is a Beziehung
Besondere Art von Beziehung, deshalb Sechseck statt Raute.
-
disjunkte Spezialisierung
keine Gemeinsamkeiten unter Untertypen
-
vollständige Spezialisierung
Obertyp existiert nicht (hat selbst keine eigenen Elemenet) sondern ist eigentlich die Menge aller Untertypen
Beispiel:
Aggregation - part of Beziehung
Beispiel:
Das relationale Modell
Mengenorientierte Verarbeitung.
Metaebene (Schema) → Instanzebene (Ausprägung)
Relationsschema Definition
Tabellen sind Relationen:
Spalte Attribute oder Felder
Zeile Hier 3 Tupel deren Attributwerte aus String, String, Integer bestehen
Der Primärschlüssel Telefon# wurde unterstrichen
Relationenschemata spezifiziert durch
Telefonbuch : {[Name : string, Adresse : string, Telefon# : integer]}
Als eine Menge {...} von Tupeln [...] aufzufassen: {[...]}
ER Modell → relationales Schema
Das relationale Modell hat keine Entities wie im ER Modell sondern nur Relationen.
n-Stellige Beziehungen
Beziehung zwischen n Entities:
enthält also alle Schlüsselattribute der Entitytypen (Fremdschlüssel) und zusätzlich die der Beziehung zugeordneten Attribute.
Beispiel
Die 4 Entity Typen:
Die Relationen:
Relationales Schema optimieren
Nur möglich für
- 1:1
- 1:N / N:1
Ansonsten würde es zu Anomalien führen.
Regel: Nur Relationen mit gleichem Schlüssel zusammenfassen!
1:N Beziehungen
Beziehung lesen: Eine Vorlesung kann nur von einem einzigen Dozenten gelesen / veranstaltet werden.
lässt sich vereinfachen mit der Hilfe eines neuen Attributes bei Vorlesungen: gelesenVon
1:1 Beziehungen
Pro Raum nur ein Prof
Lässt sich vereinfachen zu:
oder auch zu
wobei dann Null-Werte auftreten würden weil nicht alle Räume von Dozenten besetzt werden. (deshalb erste Methode bevorzugen)