Relationales Modell

Das relationale Modell

Das relationale Datenmodell

Werkzeuge und Sprachen um Daten zu beschreiben und zu verarbeiten

Das Relationale Schema

Relation / Tabelle

RD1××Dn\small R \subseteq D_{1} \times \cdots \times D_{n}

RelName: ( Attr 1:dom1,, Attr n: dom n) \small \text {RelName: }\left(\text { Attr }_{1}: \operatorname{dom}_{1}, \ldots, \text { Attr }_{n}: \text { dom }_{n}\right) 

Attributwerte (Spalten) haben eigene Domänen (Datentypen)

Tupel / Zeile

tRt \in R

Schema

R string × string × integer  \small R \subseteq \text { string } \times \text { string } \times \text { integer } 

Telefonbuch: { Name: string, Straße: string, TelefonNr: integer } \small \text{Telefonbuch: \{ Name: string, Straße: string, TelefonNr: integer \}} 

Ausprägung

Menge an Tupeln: keine Ordnung, keine Duplikate

{ ( “Mickey Mouse", “Main Street", 4711), (“Minnie Mouse", “Broadway", 94725), ( “Donald Duck", “Highway", 95672) } \small\begin{aligned}&\{ \\ &\text {\quad ( “Mickey Mouse", “Main Street", 4711), } \\&\text {\quad (“Minnie Mouse", “Broadway", 94725), } \\&\text {\quad ( “Donald Duck", “Highway", 95672) } \\ &\}\end{aligned} 

ER → Relationales Schema

Konzeptuelles Schema \rarr Implementations Schema

Das relationale Modell hat keine Entities wie im ER Modell sondern nur Relationen.

N:M

Alle Schlüssel nehmen.

1:1:N

Bei Funkionalität alle Schlüssel nehmen.

Bei der (min,max)-Notation nur den Schlüssel von der 1-Seite nehmen.

Generalisierung

Schlüssel von Parent speichern.

Schwache Entitäten

Schwache Entitäten können von anderen schwachen Entitäten abhängen.

Deshalb überall zur ID von schwachen Entiät auch ID von starken Entität mitnehmen.

Relationales Schema optimieren

Entities und Relationships können eigene Tabellen bekommen oder zusammengefasst werden.

Ziel

Wenige Redudanzen

Wenige Null Werte

(Über Performance und geringe Anzahl an notwendigen Queries machen wir uns erstmal keine Gedanken)

💡
Zusammenführen:

Nur möglich für 1:1, 1:N oder N:1 beziehungen.

Nur Relationen mit gleichem Schlüssel zusammenfassen!

Falsches zusammenführen

Wir wollen die lesen-Relation auslassen.

Richtig:

Wir speichern die ID von Prof in Vorlesung.

Falsch:

Wir speichern die Id von Vorlesung in Prof.

  • Mehrfacheinträge wo nur die ID von Vorlesung anders ist.
  • Profs ohne Vorlesung haben null
  • Beim updaten von einem Prof müsste man alle Zeilen suchen und unabhängig voneinander updaten.
  • Löschen von Prof, löscht auch Vorlesung

Anzahl berücksichtigen

Es gibt 100.000 studierende und nur 200 Räume.

Nicht Raum in Student zusammenführen, sonst zu viele null

Minimum bei min-max berücksichtigen

Hier sollte man Professor-ID in Raum speichern.