FANDOM


Relationenmodell Bearbeiten

Einleitung Bearbeiten

Das Relationenmodell dient zum Überführen eines Entity-Relationship-Modells in eine Datenbank. Diese Form ist für Computer „verständlicher“. Im Relationenmodell verwendet man Tabellen, statt einer grafischen Darstellung. Der Titel der Tabelle ist dabei der Name des darzustellenden Objekts (Entitys). Die Eigenschaften (Attribute) des Entitys (Objekts) sind Spalten dieser Tabelle.

Beispiel: Bearbeiten

Man möchte Personen mit folgenden Eigenschaften darstellen: Personalausweisnummer, Vorname, Nachname, Geburtsdatum und Adresse. Man bezeichnet die Personen in diesem Beispiel auch als Entitätstypen, also Objekte (Entitys) vom Typ Person.

Die Tabelle heißt folglich „Person“ und hat die 5 Spalten Personalausweisnummer, Vorname, Nachname, Geburtsdatum und Adresse.

Primärschlüssel Bearbeiten

Der Primärschlüssel dient der eindeutigen Identifikation eines Entitys. Häufig werden als Primärschlüssel Nummern verwendet. In obigem Beispiel ist der Primärschlüssel die Nummer des Personalausweises. Diese ist einmalig und deshalb als Primärschlüssel geeignet. Wenn etwa der Name als Primärschlüssel gewählt wird, ist der Aufwand eine bestimmte Person mit dem Namen „Müller“ zu finden enorm hoch, wohingegen eine Suche mit Eingabe der Personalausweisnummer exakt einen Treffer mit der gesuchten Person erzielt.

Darstellung Bearbeiten

Die Darstellung der Entitätstypen erfolgt als Relationen mit Entitäten und Beziehungen. Die Attribute werden in Klammern aufgezählt und der Primärschüssel unterstrichen.

Beispiele: Bearbeiten

Person(Personalausweisnummer, Vorname, Nachname, Geburtstag, Adresse)

Auto(Fahrgestellnummer, Farbe, Marke, Halter)

Beziehungen Bearbeiten

Beziehungen werden ebenfalls als Relationen abgebildet. Als Attribute werden sowohl die Primärschlüssel der Entitys, als auch die der Beziehung verwendet. Der Primärschlüssel der gesamten Relation wird von den Primärschlüsseln der einzelnen Entitys gebildet. Allerdings sind diese Primärschüssel der Entitys in Bezug auf die Beziehung sogenannte Fremdschlüssel. Darunter versteht man einen Schlüssel (Identifikationsmerkmal), der auf den Primärschlüssel eines Entitys verweist.

Beispiele:

Ein Schüler leiht ein Buch aus:

leiht(Schülernummer, Buchnummer, Name, Vorname, Klasse, Autor, ISBN)


Ein Fahrer fährt mit einem Auto:

fährt(Personalausweisnummer, Nummernschild, Name, Vorname, Geburtstag, Marke, Farbe)


Außerdem wird den Fremdschlüsseln ein Pfeil ↑ vorangestellt. Also lauten obige Beispiele korrekt:

leiht(↑Schülernummer, ↑Buchnummer, Name, Vorname, Klasse, Autor, ISBN)

fährt(↑Personalausweisnummer, ↑Nummernschild, Name, Vorname, Geburtstag, Marke, Farbe)

Optimierungen Bearbeiten

1:1 Beziehungen Bearbeiten

Bei eindeutigen Fällen, in denen eine 1:1 Beziehung wirklich für jedes Entity zutrifft, kann die Datenbank optimiert werden, in dem man die Attribute in einer Tabelle zusammenfasst so die Anzahl der Tabellen verringert. Das funktioniert folgendermaßen:

Als Beispiel nehme man etwa ein Mensch besitzt einen Personalausweis. Der Primärschlüssel des Personalausweises sei seine Nummer, die des Menschen sein Name (unrealistisch, aber für diese Veranschaulichung irrelevant). Man würde die Tabellen also folgenermaßen anlegen:

Tabelle 1:

Mensch(Name, Vorname, Geburtsdatum, ...)

Tabelle 2:

Personalausweis(Nummer, ...)

Tabelle 3:

besitzt(Name, Nummer)

In diese Tabelle kommen nur die beiden Primärschlüssel, da die Beziehung ja eindeutig ist.

Möchte man diese Datenbank optimieren, so kann man eine Tabelle Mensch erstellen und dort alle Attribute verwalten:

Mensch(Name, Vorname, ..., Nummer, ...)

Diese Optimierung macht jedoch nur in Fällen sinn, bei denen wirklich jedes Entity auch mit einem anderen in Verbindung steht. Würde man z. B. Menschen und Führerscheine verwalten, würde die Datenbank nach der Optimierung so aussehen:

Mensch(Name, Vorname, ..., Führerscheinnummer)

Da aber nicht jeder Mensch einen Führerschein besitzt, wäre die Spalte Führerscheinnummer in manchen Fällen leer und der Speicher ungenutzt. Deshalb muss man abwägen, ob sich eine Optimierung auch wirklich rentiert.