Kapitel 9
Datenbankgrundlagen
174
In diesem Kapitel sollen Sie endlich eine Antwort auf viele Fragen erhalten, die sich zwischenzeitlich
ergeben haben: Was ist eigentlich eine Datenbank? Was sind Primärschlüssel oder Fremdschlüssel?
Was haben Datenbanken mit Beziehungen zu tun? Wie und warum normalisiert man eine Daten-
bank? Was ist ein Index?
Um die graue Theorie gleich an einem Beispiel in die Praxis umsetzen zu können, werden wir Ihnen
die Datenbank von CineCity vorstellen. Anhand dieses Beispiels demonstrieren wir Ihnen den Weg
von der Problemstellung zum Entwurf einer Datenbank. Als Ergebnis des Entwurfs sollen in diesem
Kapitel die einzelnen Tabellen der Datenbank CineCity mit ihren Feldern definiert werden, auf die
im Laufe des Buches immer wieder zurückgegriffen wird.
Was ist eine relationale Datenbank?
Access ist eine relationale Datenbank – im Gegensatz zu einer hierarchischen oder objektorientier-
ten Datenbank –, doch was bedeutet das eigentlich? Eine Datenbank ist eine Sammlung nicht redun-
danter – sich nicht wiederholender – Daten, die von mehreren Applikationen benutzt werden kön-
nen. Relationale Datenbanken speichern Daten in einer oder mehreren Tabellen, die miteinander in
Beziehung stehen können. Der Mathematiker E. F. Codd – damals Forscher bei IBM – hat 1970 das
relationale Datenmodell entwickelt. Seine Definition liest sich wie: Sind W(A
1
), W(A
2
),..., W(A
n
)
endliche Mengen, so heißt die Menge aller Kombinationen ihrer Elemente ihr kartesisches Produkt
[W(A
1
)×W(A
2
)×...×W(A
n
)]. Die Elemente von kartesischen Produkten heißen Tupel. Jede Teil-
menge von R eines kartesischen Produktes W(A
1
) × W(A
2
) × ... × W(A
n
) heißt eine (n-stellige)
Relation über W(A
1
) × W(A
2
) × ... × W(A
n
). Jede Relation R W(A
1
) × W(A
2
) × ... × W(A
n
)
kann als Tabelle dargestellt werden. Die Spalten tragen die Namen der Attribute, in den Zeilen sind
die Elemente von R (die Tupel) aufgeführt.
Stopp!! So soll das nicht weitergehen. Heute sind zwar die meisten Datenbanken mit dem relationa-
len Datenmodell implementiert, aber man kann sich relationalen Datenbanken auch weniger
mathematisch nähern:
Tabellen und Primärschlüssel
Tabellen stellen in einem relationalen Modell »Dinge« der realen Welt dar: Kunden, Städte, Fahr-
räder oder auch Kinofilme. Jede Tabelle sollte nur eine einzige Art eines solchen Dings (oft mit Enti-
tät oder Objekt bezeichnet) beschreiben. Jede Tabelle besteht aus mehreren Zeilen und Spalten. Das
relationale Datenbankmodell schreibt vor, dass jede Zeile einer Tabelle eindeutig sein muss. Diese
Voraussetzung ist durchaus sinnvoll, denn ist sie nicht erfüllt, kann man sich bei der Wahl eines
Kunden nicht sicher sein, ob man zufällig die richtige Adresse des entsprechenden Kunden oder
dummerweise die falsche ausgewählt hat.
Man kann Eindeutigkeit mithilfe eines so genannten Primärschlüssels erreichen: Dazu werden eine
oder mehrere Spalten einer Tabelle verwendet, die eindeutige Werte für diese Tabelle enthalten. Jede
Tabelle kann nur einen Primärschlüssel besitzen, auch wenn mehr als eine Spalte oder Spaltenkom-
binationen eindeutige Werte bereitstellen. Alle Spalten (oder Spaltenkombinationen) mit eindeuti-
gen Werten werden als Schlüsselkandidaten bezeichnet. Einer davon muss als Primärschlüssel aus-
gewählt werden.
Was ist eine relationale Datenbank?
175
Tabellen
Es gibt keine Regeln, welchen Schlüssel man am besten unter den Schlüsselkandidaten für den
Primärschlüssel auswählt, aber einige Punkte sind zu bedenken: Es ist sicher sinnvoll, einen Schlüssel
zu wählen,
der sich aus so wenig Spalten wie möglich zusammensetzt,
der sich so wenig wie möglich ändert bzw.
der möglichst einfach und, wenn möglich, dem Benutzer bekannt ist.
Man stelle sich eine Firma vor, die eine Tabelle Kunden pflegt, die Sie in Abbildg. 9.1 sehen können.
Abbildg. 9.1
Die Tabelle Kunden
Schlüsselkandidaten sind hier die KundenNr, die Kombination aus Name und Vo rn am e, die Telefon-
nummer, die Kombination aus Ort und Straße. Nach obigen Überlegungen würde man sofort die
Telefonnummer und die Adresse aussortieren, da sich diese Angaben häufig ändern. Die Wahl
zwischen der KundenNr und der Kombination aus Name und Vo r na me ist weniger offensichtlich.
Wie wahrscheinlich ist es, dass sich der Name ändert? Kommt es häufig zu Schreibfehlern bei der
Namenseingabe? Ist auf der anderen Seite dem Benutzer die KundenNr geläufig?
Die meisten Entwickler bevorzugen numerische Primärschlüssel, weil Suchen und Sortierungen in
Access in numerischen Feldern schneller sind als in Textfeldern. Das bedeutet, dass man der Kun-
denNr den Vorzug geben würde.
In Access werden häufig so genannte AutoWerte für den Primärschlüssel verwendet. Ein AutoWert
ist eine Zahl, die automatisch von Access vergeben wird. Eine solche Zahl eignet sich hervorragend
für Spalten, in denen kein Wert doppelt vorkommt, da Access dabei von selbst nur Zahlen wählt, die
zuvor noch nicht benutzt wurden. Es gibt zwei verschiedene Arten von AutoWerten: Entweder man
wählt die Art Inkrement, dabei nummeriert Access ab Eins jeden neu hinzukommenden Datensatz,
oder man verwendet Zufall, dann wählt Access Zahlen zufällig aus.

Get Microsoft Office Access 2007 - Das Handbuch now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.