Gestaltungsprinzipien Relationaler Datenbanken
Die Anforderung der ersten Normalform
Die Anforderung der ersten Normalform verlangt im wesentlichen, daß alle Daten in Tabellen gehalten werden.
(In verschiedenen Quellen findet man verschiedene Angaben dazu, was genau nun die erste Normalform ist. Wir geben hier eine eigene Auswahl von Kriterien an.)
Tabellenform
Eine Tabelle ist ein rechteckiges Gebilde, das aus waagerechten Zeilen besteht, die alle gleich viele Zellen enthalten. Durch diese Anforderung sind also tabellenähnliche Gebilde mit Zeilen, die unterschiedliche Anzahlen oder Typen von Spalten enthalten, ausgeschlossen.
- Gegenbeispiel (schlecht)
.------------.------------------.---------------.------------.
| Roland | von Arentsschild | Hamburg | Frankfurt |
'------------'------------------| |-------------.------------.
| Antje | Teschner | | Kartoffeln /| Temperatur |
| | | | / | Sommer 22 |
| | | | / | Herbst 17 |
| | | | /Ort| Winter 9 |
'------------'------------------' '-------------'------------'
| Andreas | Boetel | | 192 cm |
'------------'------------------'---------------'---------'
Einwertige Zellen
Jede Zelle muß genau einen Wert enthalten.
Im folgenden Gegenbeispiel enthält die Zellen zu Wohnorten mehrere Wohnorte in einer kommagetrennten Liste und erfüllt daher nicht die erste Normalform.
- Gegenbeispiel (schlecht)
Vorname Nachname Wohnorte
.------------.----------.--------------------------------.
| Thomas | Keppler | Hamburg, Frankfurt, Regensburg |
'------------'----------'--------------------------------'
Einfache Attribute
Zu jedem Attribut muß es genau eine Spalte geben. Im folgenden Gegenbeispiel hat das Attribut „Wohnort“ mehrere Spalten.
- Gegenbeispiel (schlecht)
Vorname Nachname Wohnort0 Wohnort1 Wohnort2 Wohnort3 Wohnort4
.------------.----------.------------.-----------.------------.------------.------------.
| Thomas | Keppler | Hamburg | Frankfurt | Regensburg | | |
'------------'----------'------------'-----------'------------'------------'------------'
Das Entitätsprinzip
Entitätsprinzip: Pro Entitätstyp sollte genau eine Tabelle verwendet werden.
Wenn Entitäten den gleichen Entitätstyp haben und durch die gleichen Felder (mit den gleichen Bedeutungen) beschrieben werden, dann sollten sie auch in einer einzigen Tabelle beschrieben werden.
Zu viele Tabellen
Für eine Erfassung von Schülern ist eine Tabelle richtig, da alle Schüler den gleichen Entitätstyp haben. Ein Aufteilung von Schülern auf mehrere Tabellen ist schlecht.
- Aufteilung eines Entitätstyps auf mehrere Tabellen (verletzt das Entitätsprinzip) (schlecht)
Schulklasse 7A
Person Vorname Nachname
0 Petra Bredemayer
1 Sabine Gründler-Stang
2 Silke Radzig
3 Uwe Kämmer
4 Susanne SiebersSchulklasse 7B
Person Vorname Nachname
0 Regina Fischer
1 Thomas Nowak
2 Dirk Waschkeit
3 Annette Kühn
4 Helga Wunderl
5 Gerlinde Pennekamp- Eine Tabelle für alle Personen (Schüler) (gut)
Person
Person Klasse Vorname Nachname
0 7A Petra Bredemayer
1 7A Sabine Gründler-Stang
2 7A Silke Radzig
3 7A Uwe Kämmer
4 7A Susanne Siebers
5 7B Regina Fischer
6 7B Thomas Nowak
7 7B Dirk Waschkeit
8 7B Annette Kühn
9 7B Helga Wunderl
10 7B Gerlinde Pennekamp
Zu wenige Tabellen
Umgekehrt sollten Information über Entitäten verschiedener Typen nicht in einer Tabelle vermischt werden.
Wenn wir einmal annehmen, daß in der Klasse 7A die zweite Fremdsprache Latein und in der Klasse 7B die zweite Fremdsprache Französisch unterrichtet wird, dann enthält die folgende Tabelle Informationen über zwei verschiedene Entitätstypen vermischt : Schüler und Klassen.
- Eine Tabelle mit Informationen über Schüler und über Klassen (schlecht)
Person
Person Klasse Fremdsprache Vorname Nachname
0 7A Latein Petra Bredemayer
1 7A Latein Sabine Gründler-Stang
2 7A Latein Silke Radzig
3 7A Latein Uwe Kämmer
4 7A Latein Susanne Siebers
5 7B Franzoesisch Regina Fischer
6 7B Franzoesisch Thomas Nowak
7 7B Franzoesisch Dirk Waschkeit
8 7B Franzoesisch Annette Kühn
9 7B Franzoesisch Helga Wunderl
10 7B Franzoesisch Gerlinde Pennekamp
Die folgende Datenbank enthält eine Tabelle mit Informationen über Schüler und eine Tabelle mit Informationen über Klassen.
- Eine Tabelle über Schüler und eine Tabelle über Klassen (gut)
Person
Person Klasse Vorname Nachname
0 7A Petra Bredemayer
1 7A Sabine Gründler-Stang
2 7A Silke Radzig
3 7A Uwe Kämmer
4 7A Susanne Siebers
5 7B Regina Fischer
6 7B Thomas Nowak
7 7B Dirk Waschkeit
8 7B Annette Kühn
9 7B Helga Wunderl
10 7B Gerlinde PennekampKlasse
Klasse Fremdsprache
7A Latein
7B Franzoesisch- Zitat
- “[T]he correct way to design a relational database is to break up your data so that you have one table per subject ”
- SQL Queries for Mere Mortals – John L. Viescas (2014)
Redundanz
Unter Redundanz versteht man eine vermeidbare Wiederholung derselben Information.
In der folgenden Tabelle wird erfaßt, welche Note ein Schüler in einem bestimmten Fach und Halbjahr erhalten hat. Dabei wird die Information, daß die Zahl »2« für »gut« steht aber doppelt gegeben, während die Erläuterung anderer Noten, wie »3« fehlt.
- Gegenbeispiel mit Redundanz (schlecht)
Benotung
Schüler Schulnote Schulnotenname
------- --------- --------------Ralf Bollmer 1 sehr gut
Sybille Doijien 2 gut
Klaus Kramer 2 gut
Redundanz in einer Datenbank führt zu verschiedenen Problemen und sollte daher vermieden werden.
- Einfügeanomalie: Nach dem beim Einfügen von „Daniela Keller, 2, befriedigend“ wäre die Bedeutung der Schulnote 2 unklar.
- Löschanomalie: Beim Ausscheiden von Ralf Bollmer würde die Bedeutung der Schulnote 1 aus der Datenbank verschwinden.
- Änderungsanomalie: Falls die Bedeutung der Schulnote 2 verändert werden soll, könnte eine Zeile vergessen werden.
Die Wiederholung kann vermieden werden, indem die Tabelle auf zwei Tabellen aufgeteilt wird. (Daher ist sie eine vermeidbare Wiederholung – also Redundanz.)
- Beispiel (gut)
Benotung
========Schüler Schulnote
------- ---------Ralf Bollmer 1
Sybille Doijien 2
Klaus Kramer 2Schluessel
==========Schulnote Schulnotenname
--------- --------------1 sehr gut
2 gut
3 befriedigend
4 ausreichend
5 mangelhaft
6 ungenügend
Das Redundanzprinzip: Redundanz in Datenbanken sollte vermieden werden.
Man sieht, daß das Beispiel für das Redundanzprinzip dem zweiten Beispiel zum Entitätsprinzip ähnelt – beide Prinzipien überlappen sich also.
Die Boyce-Codd-Anforderung
In einer relationalen Datenbank sollte jede Tabelle die Boyce-Codd-Anforderung erfüllen. Die Boyce-Codd-Anforderung ist eine etwas formalere Formulierung, welche sich mit den schon gegebenen Anforderungen (Entitätsprinzip und Redundanzprinzip) überlappt.
Ein Tabelle erfüllt die Boyce-Codd-Anforderung, wenn (vereinfacht gesagt) die Werte jeder Spalte, welche die Werte einer anderen Spalte bestimmen, die Werte aller anderen Spalten der Tabelle bestimmt.
In Falle der folgenden Tabelle bestimmt die Klasse die Fremdsprache, aber nicht den Schüler. Die Klasse ist also eine Spalte, welche die Werte einer anderen Spalte (Fremdsprache), aber nicht die Werte aller anderen Spalten bestimmt. Daher erfüllt die Tabelle nicht die Boyce-Codd-Anforderung.
- Eine Tabelle mit Informationen über Schüler und über Klassen (schlecht)
Person
Person Klasse Fremdsprache Vorname Nachname
.------.
| |bestimmt
| V0 7A Latein Petra Bredemayer
1 7A Latein Sabine Gründler-Stang
2 7A Latein Silke Radzig
3 7A Latein Uwe Kämmer
4 7A Latein Susanne Siebers
5 7B Franzoesisch Regina Fischer
6 7B Franzoesisch Thomas Nowak
7 7B Franzoesisch Dirk Waschkeit
8 7B Franzoesisch Annette Kühn
9 7B Franzoesisch Helga Wunderl
10 7B Franzoesisch Gerlinde Pennekamp| ^ ^ ^ ^
| | | | |
'---'------'-------------'---------'
bestimmmt
Die Verletzung deutet daraufhin, daß eine Klasse eigentlich ein eigener Entitätstyp ist, der eine eigene Tabelle braucht. Nach Aufteilung auf zwei Tabellen ist die Boyce-Codd-Anforderung dann erfüllt.
- Eine Tabelle über Schüler und eine Tabelle über Klassen (gut)
Person
Person Klasse Vorname Nachname
0 7A Petra Bredemayer
1 7A Sabine Gründler-Stang
2 7A Silke Radzig
3 7A Uwe Kämmer
4 7A Susanne Siebers
5 7B Regina Fischer
6 7B Thomas Nowak
7 7B Dirk Waschkeit
8 7B Annette Kühn
9 7B Helga Wunderl
10 7B Gerlinde Pennekamp| ^ ^ ^
| | | |
'---'------'---------'
bestimmmtKlasse
Klasse Fremdsprache
7A Latein
7B Franzoesisch^
| |
'------------'
bestimmt
Die Boyce-Codd-Anforderung überlappt sich mit dem Entitätsprinzip und dem Redundanzprinzip, aber sie wird oft in einer formaleren Weise formuliert, so daß ihre Einhaltung auch in Zweifelsfällen oft noch überprüft werden kann.
Auch im folgenden Beispiel ist die Boyce-Codd-Anforderung verletzt. Können Sie erkennen, warum?
- Beispiel (schlecht)
Benotung
Schüler Schulnote Schulnotenname
------- --------- --------------Ralf Bollmer 1 sehr gut
Sybille Doijien 2 gut
Klaus Kramer 2 gut