Gestaltungsprinzipien Relationaler Datenbanken (Gestaltungsprinzipien Relationaler Datenbanken), Lektion, Seite 724179
https://www.purl.org/stefan_ram/pub/gestaltungsprinzipien_sql (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
SQL-Kurs

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 Siebers

Schulklasse 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 Pennekamp

Klasse

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.

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 2

Schluessel
==========

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
| V

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

| ^ ^ ^ ^
| | | | |
'---'------'-------------'---------'
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

| ^ ^ ^
| | | |
'---'------'---------'
bestimmmt

Klasse

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

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram724179 stefan_ram:724179 Gestaltungsprinzipien Relationaler Datenbanken Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd724179, slrprddef724179, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/gestaltungsprinzipien_sql