Relationale Datenbanken
Begriffe
Eine Datenbank ist eine systematisch strukturierte, langfristig verfügbare Sammlung von Daten einschließlich der zur sicheren Manipulation dieser Daten erforderlichen Software. Diese Software wird gelegentlich DBMS (Data Base Management System) genannt.
Man unterscheidet:
Sequentielle Datenbank
Die Daten werden sequentiell, d.h. nacheinander, durch Listentrennzeichen voneinander getrennt, gespeichert. (CSV-Dateiformat, Comma Separated Value) Das Verfahren ist älter und eignet sich heute nur für kleine Datenbanken wie persönliche Adressbücher.
Relationale Datenbank (E. F. CODD 1970)
Die Daten werden in sogenannten Relationen, das sind Tabellen gespeichert. Die Tabellenspalten heißen Felder, die Zeilen heißen Datensätze.
Vorname |
Familienname |
Wohnort |
Petra |
Müller |
Wien |
Walter |
Langbein |
Graz |
Relationale Datenbanken bestehen ab einer bestimmten Komplexität in der Regel aus mehreren Tabellen, die über Beziehungen (Relationships) miteinander verknüpft sind. Für das Auslesen von Daten, auch solcher, die auf mehrere Tabellen verteilt sind, werden Abfragen (Query) verwendet, die die Daten allerdings nicht kopieren, sondern lediglich über Pointer auf diese zugreifen. Die Benutzerschnittstelle am Client heißt Formular, Clients zur Erzeugung von hardcopies heißen Bericht.
Kleinere Datenbanksysteme wie Microsoft Access oder MySQL (Linux) legen alle Datenbankobjekte in einer Datei ab, bei größeren Client/Server-Systemen wie Oracle oder postgreSQL (Linux) liegen Tabellen und Abfragen am Server, während Formulare und Berichte von der Software des Clients erstellt werden. Windowsclients verwenden in der Regel
ODBC (Open DataBase Connectivity),
eine standardisierte Softwareschnittstelle von Microsoft, über die Anwendungsprogramme auf unterschiedliche Datenbanken (Client/Server) zugreifen können.
Als Standard über Datenbanksysteme verschiedener Hersteller hinweg fungiert
SQL (Structured Query Language),
eine systemunabhängige Sprache zur Erstellung, Manipulation und Abfrage von (relationalen) Datenbanken.
Vor allem bei größeren Datenbanksystemen sind Ordnungsprinzipien wesentlich, die garantieren, dass die Benutzer garantiert richtige Ergebnisse auf ihre Anfragen erhalten.
Zu vermeiden sind im Besonderen:
Redundanz
Redundanz ist in einem Datenbestand genau dann vorhanden, wenn ein Teil der Daten ohne Informationsverlust weggelassen werden kann. Das ist etwa dann der Fall, wenn der Name in mehreren Feldern eines Datenbanksystems abgelegt wird, oder Sozialversicherungsnummen und Geburtsdatum in verschiedenen editierbaren Feldern abgelegt sind.
Familienname |
GebDat |
SVNR |
Müller |
1.4.1990 |
1234010490 |
Langbein |
23.10.1985 |
4321231085 |
Inkonsistenz
liegt vor, wenn es zu gleichen Daten unterschiedliche Schreibweisen gibt. (z.B.: "r.k.", "röm.kath.")
Anomalien
Anomalien sind unerwünschte Verhaltensweisen eines Datenbanksystems, wenn Lösch- oder Einfüge- oder Aktualisierungsoperationen über mehrere Tabellen hinweg stattfinden. Beim Streichen eines Kunden sollten wahrscheinlich alle Rechnungsinformationen zur weiteren buchhalterischen Verwendung erhalten bleiben.
ER - Entity-Relatioship Modell
Der Planung einer Datenbank dient das ER-Modell (Peter Chen 1976), das folgende Begriffe verwendet:
Entity(Entität):
Das ist ein in einer Datenbank abzubildendes reales Objekt. Eine Datenbank, die mehrere Hunde und deren Besitzer listet, wird wohl die Entitäten Hund und Hundebesitzer enthalten. In der Umsetzung werden aus den Entitäten dann Tabellen. Diese Entitäten enthalten
Attribute (Felder),
die die Eigenschaften der Entitäten enthalten. Im Beispiel werden Hundebesitzer wohl das Attribut Familienname enthalten und Hund könnte ein Attribut Name haben. Ein Attribut, der
Primärschlüssel
ist ausgezeichnet; es gestattet in der Umsetzung die eindeutige Indentifizierung jedes Datensatzes und ist in der Regel eine Zahl. Zwischen den Entitäten besteht eine
Relationship (Verknüpfung),
die den Zusammenhang beschreibt.
Bei den Verknüpfungen gibt es:
Normalisierung
Um Redundanzen, Inkonsistenzen und Anomalien zu vermeiden oder zu beseitigen, gibt es sogenannte Normalformen von Datenbanken. Es handelt sich dabei um ein theoretisches Regelwerk, das schrittweise auf unstrukturierte Daten angewendet werden kann. Die Vorgangsweise selbst ist algorithmisch, sodass das Normalisieren von Datenbanken auch schon von Software unterstützt werden kann. Das Normalisieren führt in der Regel zu komplexeren Datenbankstrukturen, die jeweils hinsichtlich der gewünschten Funktionalität zu hinterfragen sind. Für wenige Datensätze, die in einer überschaubaren Anzahl von Feldern liegen wird man daher, aller Theorie zum Trotz, mit einer Entität oft das Auslangen finden. Wir gehen anhand eines einfachen Beispiels vor:
Wir betrachten die folgende Tabelle, die Hunde und deren BesitzerInnen auflistet, wobei der Schäferhund Rex zwei Besitzer haben soll:
Name |
Name |
Rasse |
Müller Werner |
Rex, Waldi |
Schäfer, Dackel |
Langbein Angelika |
Wastl |
Dackel |
Müller Lisa |
Rex |
Schäfer |
1.Normalform
Die Widersprüche der gegebenen Tabelle zur 1.Normalform sind augenscheinlich. Da ein Aufteilen in mehere Entitäten nicht zwingend ist erhalten wir die Entität Person_Hund in der 1.Normalform:
HBesitzer_Hund
|
||||
ID_HBesitzer_Hund |
VName |
FName |
HName |
Rasse |
1 |
Werner |
Müller |
Rex |
Schäfer |
2 |
Werner |
Müller |
Waldi |
Dackel |
3 |
Angelika |
Langbein |
Wastl |
Dackel |
4 |
Lisa |
Müller |
Rex |
Schäfer |
Wir erkennen mehrere Unzulänglichkeiten:
2.Normalform
Eine Entität befindet sich in der 2.Normalform, wenn
Wir halten fest, dass HName und Rasse nicht vom Primärschlüssel abhängen. Das kann dadurch bereinigt werden, dass eigene Entitäten für Hund und Rasse, unter Berücksichtigung der Regeln der 1. und 2.Normalform eingefügt werden. Damit ergeben sich die folgenden Tabellen:
HBesitzer
|
Hund |
Rasse |
||||||
ID_HBesitzer |
VName |
FName |
ID_Hund |
HName |
ID_Rasse |
Rasse |
||
1 |
Werner |
Müller |
1 |
Rex |
1 |
Schäfer |
||
2 |
Lisa |
Müller |
2 |
Waldi |
2 |
Dackel |
||
3 |
Angelika |
Langbein |
3 |
Wastl |
Nun sind weder die Besitzverhältnisse noch die Rassen der Hunde ablesbar. Da einerseits Werner Müller Rex und Waldi besitzt und anderseits Rex Werner und Lisa Müller gehört, ist zwischen Person und Hund eine m:n Beziehung zu konstruieren. Da Waldi und Wastl Dackel sind, muss zwischen Rasse und Hund eine 1:n Beziehung gesetzt werden, um Redundanzen zu vermeiden. Außerdem ist die Rasse nicht vom Primärschlüssel der Entität Hund abhängig und daher mit Blick auf die 3.Normalform eine Entität Rasse zu konstruieren. Wir erhalten also vier Tabellen, die Besitzverhältnisse werden über Beziehungen auf Fremdschlüsselfelder geregelt:
HBesitzer
|
HBesitzer_Hund |
Hund
|
Rasse |
||||||||||
ID_HBesitzer |
VName |
FName |
ID_HBesitzer_Hund |
FID_HBesitzer |
FID_Hund |
ID_Hund |
HName |
FID_Rasse |
ID_Rasse |
Rasse |
|||
1 |
Werner |
Müller |
1 |
1 |
1 |
1 |
Rex |
1 |
1 |
Schäfer |
|||
2 |
Lisa |
Müller |
2 |
1 |
2 |
2 |
Waldi |
2 |
2 |
Dackel |
|||
3 |
Angelika |
Langbein |
3 |
3 |
3 |
3 |
Wastl |
2 |
|||||
4 |
2 |
1 |
Die Datenbank hat damit im ER-Modell folgendes Design:
3.Normalform
Eine Entität befindet sich in der 3.Normalform, wenn
Die dritte Normalform ist hier erfüllt. Der Vollständigkeit halber sei erwähnt, dass es bei sehr theoretischem Zugang fünf Normalformen gibt.