======Modellierung von Datenbanken======
Datenbanken müssen so aufgebaut sein, dass Anomalien, Inkonsistenzen und Redundanzen vermieden werden. Deshalb geht man bei der Modellierung von Datenbanken in zwei Schritten vor:
* Erstellen eines Entity-Relationship-Diagramms (**ER-Modell**)
* Überführung des ER-Modells in die Tabellen (**relationales Modell**)
=====ER-Modellierung=====
====Begriffe====
* **Entität** (**Entity**) - eindeutig identifizierbares Datenobjekt
* **Entitätsmenge** ( **Entitätsklasse**) – Zusammenfassung von Entitäten mit gemeinsamen Eigenschaften
* **Attribut** – Eigenschaft der Entitätsmenge
* **Attributwert** - konkreter Wert eines Attributs
* **Primärschlüssel** – minimale Menge von Attributen zur eindeutigen Identifikation der Entität
* **Relationship** – Beziehung zwischen Entitätsmengen
====Symbole in ER-Diagrammen====
Ein ER-Diagramm ist die grafische Darstellung eines bestimmten praktischen Sachverhalts und seiner Zusammenhänge, für den eine Datenbank erstellt werden soll. Aus dem ER-Diagramm werden dann die Datenbanktabellen (relationale Modellierung) abgeleitet. Die folgenden grafischen Elemente kommen in einem ER-Diagramm vor:
{{ :neuerlehrplan:klasse09:erd_elemente.png?400 |}}
====Relationstypen====
Insgesamt gibt es zwischen zwei Entitätsmengen drei grundlegende Relationstypen. (Relationen zwischen drei oder Entitätsmengen sollen hier nicht betrachtet werden.)
* Bei einer **1-1-Relation** ist jedem Element der Entitätsmengen A ein Element der Entitätsmengen B zugeordnet und jedem Element der Entitätsmenge B das entsprechende Element der Entitätsmenge A. Es handelt sich also um eine **eineindeutige Zuordnung**. \\ \\ Ein Beispiel für eine **1-1-Relation** ist die Beziehung „besitzt“ zwischen der Entitätsmenge „Erwachsene Person“ und der Entitätsmenge „Personalausweis“. Jede Person besitzt genau einen Personalausweis und zu einem Personalausweis gehört genau eine Person.
{{ :neuerlehrplan:klasse09:rel-1-1.png?400 |}}
* Bei einer **n-1-Relation** ist jedem Element der Entitätsmenge A ein Element der Entitätsmenge B zugeordnet. Einem Element der Entitätsmenge B können mehrere Elemente der Entitätsmenge A zugeordnet sein. Erhandelt sich also um eine **eindeutige Zuordnung**. \\ \\ Ein Beispiel für eine **n-1-Relation** ist die Beziehung „lernt in“ zwischen der Entitätsmenge „Schüler“ und der Entitätsmenge „Klasse“. Ein Schüler lernt in genau einer Klasse. In einer Klasse lernen mehrere Schüler.
{{ :neuerlehrplan:klasse09:rel-1-1.png?400 |}}
* Bei einer **n-m-Relation** können jedem Element der Entitätsmenge A mehrere Elemente der Entitätsmenge B und jedem Element der Entitätsmenge B mehrere Elemente der Entitätsmenge A zugeordnet sein. Es handelt sich also um eine **mehrdeutige** Zuordnung. \\ \\ Ein Beispiel für eine für eine **n-m-Relation** ist die Beziehung „unterrichtet“ zwischen den Entitätsmengen „Lehrer“ und „Schüler“. Ein Lehrer unterrichtet mehrere Schüler und ein Schüler wird von mehreren Lehrern unterrichtet.
{{ :neuerlehrplan:klasse09:rel-n-m.png?400 |}}
====Beispiel für eine Modellierungsaufgabe====
In dieser Aufgabe wird ein Teil von Instahub (https://instahub.org/) vereinfacht modelliert.
In Instahub gibt es User (id, username, Name, Größe, Geschlecht, Geburtsdatum, Ort) und Fotos (id, Beschreibung, erstellt am, URL). Ein Foto kann von mehreren Nutzern kommentiert werden. Ein Nutzer kann mehrere Fotos kommentieren.
**Lösung:**
{{ :neuerlehrplan:klasse09:instahub.png?600 |}}
====Aufgaben====
**Aufgabe 1**
Welche Kardinalität hat die jeweilige Relation?
^Relation ^Kardinalität |
|Freiberufler und Firma | |
|Mutter und Kind | |
|Computer und Nutzer | |
|Eigentümer und Fahrzeug | |
|Schüler und Schülerausweis | |
|Blatt und Baum | |
|Kind zu einem Paar Großeltern | |
**Aufgabe 2**
Erstelle für die folgenden Sachverhalte jeweils ein ER-Diagramm! Kennzeichne sinnvolle Primärschlüssel!
* a) Ein Lehrer (Kürzel, Vorname, Nachname, Fach1, Fach2, Fach3, E-Mail) unterrichtet Klasse (Bezeichnung, Jahrgangsstufe, Anzahl Schüler). Ein Lehrer unterrichtet mehrere Klassen und eine Klasse wird von mehreren Lehrern unterrichtet.
* b) In einer Firma arbeiten Mitarbeiter (Personalnummer, Nachname, Vorname, Geburtsdatum) an Projekten (Projektnummer, Bezeichnung, Beschreibung). An einem Projekt arbeiten mehrere Mitarbeiter, ein Mitarbeiter kann an mehreren Projekten arbeiten. Ein Projekt wird von genau einen Mitarbeiter geleitet. Ein Mitarbeiter kann maximal ein Projekt leiten. Ein Mitarbeiter ist in genau einer Abteilung (Abteilungsnummer, Bezeichnung) beschäftigt. In einer Abteilung sind mehrere Mitarbeiter beschäftigt.
=====Relationale Modellierung=====
Im nächsten Schritt sollen aus dem ER-Diagramm die Tabellen abgeleitet werden. Dazu benötigen wir noch einen weiteren Begriff:
**Fremdschlüssel** - Attribut, welches in einer anderen Tabelle Primärschlüssel ist.
Zum Aufschreiben der Tabellen verwenden wir die folgenden Konventionen:
* Hinter den Tabellennamen stehen die Attribute durch Komma getrennt in Klammern
* Primärschlüssel werden überstrichen, Fremdschlüssel werden unterstrichen
Wir betrachten bei unseren Aufgaben nur einfache ER-Diagramme, bei denen die Relationen keine Attribute haben. Deshalb können wir zum Ableiten der die folgenden Vereinfachten Regeln verwenden:
**Regeln zum Ableiten der Tabellen**
* Jede Entitätsmenge bildet eine eigene Tabelle in der die Attribute als Spaltennamen vorkommen.
* Bei einer 1-1-Relation erscheint der Primärschlüssel der einen Entitätsmenge als Fremdschlüssel in der Tabelle der anderen Entitätsmenge.
* Bei einer n-1-Relation erscheint der Primärschlüssel der Seite 1 als Fremdschlüssel in der Tabelle der Seite n.
**Beispiel:** Ableitung der Tabellen aus dem Beispiel-ER oben
**1. Schritt:**
Wir wenden die Regel 1 an und lassen die Tabellen offen:
$\text{User} \left(\underline{\text{id}}, \text{username}, \text{Name}, \text{Größe}, \text{Geschlecht}, \text{Geburtsdatum}, \text{Ort}\right.$
$\text{Foto} \left( \underline{\text{id}}, \text{Beschreibung}, \text{erstellt_am}, \text{URL} \right.$
**2. Schritt:**
Jetzt werden die einzelnen Relationen entsprechend den Regeln 2 bis 4 abgearbeitet und weitere Tabellen bzw. Fremdschlüssel ergänzt. Wenn alle Relationen abgearbeitet sind, können die Tabellen geschlossen werden.
In unseren Fall kommt die Regel 4 zur Anwendung und die anderen Tabellen können geschlossen werden. Zu beachten ist, dass die beiden Fremdschlüssel in der Tabelle Kommentiert denselben Namen haben. Deshalb ergänzt man den Namen der Ausgangstabelle.
$\text{User} \left(\underline{\text{id}}, \text{username}, \text{Name}, \text{Größe}, \text{Geschlecht}, \text{Geburtsdatum}, \text{Ort}\right)$
$\text{Foto} \left( \underline{\text{id}}, \text{Beschreibung}, \text{erstellt_am}, \text{URL} \right)$
$\text{Kommentiert} \left( \underline{\overline{\text{User.id}}, \overline{\text{Foto.id}}} \right)$
**Aufgabe 3**
Leite aus den ER-Diagrammen der Aufgabe 2 die Tabellen ab!