Also herzlich willkommen zur Vorlesung konzeptionelle Modellierung.
Wir wiederholen wie immer kurz, was wir beim letzten Mal besprochen haben. Beim letzten Mal
hatten wir das Kapitel Normalisierung und da ging es darum, wir haben eine Menge von Tabellen und
jetzt wollen wir feststellen, sind diese Tabellen wirklich redundanzfrei oder haben wir da nicht
vielleicht Tabellen drin, die eigentlich Informationen enthalten, die zu verschiedenen Entity-Typen
gehören. Um das rauszukriegen, haben wir funktionale Abhängigkeiten zwischen den Attributen in dieser
Tabelle untersucht. Den Begriff funktionale Abhängigkeit, den haben wir schon länger gekannt,
den wenden wir jetzt eben nicht mehr auf verschiedene Entity-Typen an, sondern wir gucken, ob bestimmte
Attribute voneinander funktional abhängig sind. Attribut B ist funktional abhängig von einem
Attribut A, wenn es zu einem Wert in A immer nur höchstens einen Wert in B auch gibt. Wir sagen
dann eben auch A bestimmt B. Wir haben mal solche funktionalen Abhängigkeiten untersucht und
basierend auf diesen funktionalen Abhängigkeiten, die wir in den Tabellen gefunden haben, haben wir
dann verschiedene Normalformen definiert. Okay, die erste Normalform, die steht hier schon an der
Tafel, die ist für uns nichts Neues, denn so haben wir eigentlich unsere Tabellen im relationalen
Datenmodell überhaupt definiert. Jedes Feld in einer Tabelle enthält nur atomare Attributwerte,
also da dürfen wir nicht mehrere Werte in ein Feld reinschreiben und da gehören dann noch
andere Eigenschaften dazu. Wir haben eine Menge von Spalten, eine Menge von Zeilen, es gibt keine
zwei gleichen Zeilen in der Tabelle, in jedem Feld steht nur ein atomarer Attributwert, der zum
Wertebereich des jeweiligen Attributs gehört. Wenn das alles der Fall ist, dann reden wir von einer
Tabelle in erster Normalform. Die Tabelle ist in zweiter Normalform, wenn sie in erster Normalform
ist und zusätzlich gilt, es gibt keine partiellen Abhängigkeiten, vereinfacht ausgedrückt. Oder,
da hatten wir auch uns überlegt, was ist der Fall, den wir da eliminieren wollen. Wir haben einen
zusammengesetzten Premierschlüssel oder einen zusammengesetzten Schlüsselkandidaten aus zwei
Attributen mindestens, A und B und jetzt haben wir da noch mehrere Attribute in unserer Tabelle drin
und wir haben eine funktionale Abhängigkeit, sagen wir mal so, C ist funktional abhängig von A und B,
jedes Attribut ist funktional abhängig von A und B, weil A und B der Premierschlüssel in dieser
Tabelle ist. Dann ist automatisch jedes andere Attribut davon funktional abhängig. Jetzt haben
wir aber zusätzlich hier eine partielle Abhängigkeit, D ist nur von B alleine funktional abhängig und nicht
vom ganzen Premierschlüssel, das heißt, D ist nicht voll funktional abhängig, so haben wir das
genannt von diesem Premierschlüssel und das nennen wir eine partielle Abhängigkeit. Dann besteht eben
der Verdacht, dass B alleine schon Entities eines anderen Typs identifiziert. Wir haben mal festgestellt,
wenn wir so eine Tabelle haben, da ist dann wirklich redundante Information drin. Das eliminieren wir,
indem wir das abhängige Attribut rausziehen. Wir machen also da zwei Tabellen draus, R1, was bleibt
in der Tabelle drin? Alles bis auf dieses abhängige Attribut, also da bleibt drin A, B und C, A, B ist
nach wie vor der Premierschlüssel und dieses abhängige Attribut, das ziehen wir raus. Da haben
wir jetzt übrig im R2, D haben wir rausgezogen und D wird identifiziert über einen Premierschlüssel D,
das ist diese funktionale Abhängigkeit hier, die wir rausgezogen haben. Wir hatten gefordert,
wenn wir Tabellen zerlegen, dann müssen zwei Eigenschaften erfüllt sein, nämlich erstens,
diese Zerlegung muss verlustfrei sein, das heißt, dass diese zwei neuen Tabellen,
muss man eigentlich unsere ursprüngliche Tabelle wieder zusammensetzen können. Und dass das hier
verlustfrei ist, das können Sie sich auch leicht überlegen, für jedes Tupel A, B, C in R1 können
wir den fehlenden D-Wert in der Tabelle R2 nachgucken, denn für jedes B hier, was wir hier haben,
können wir nachgucken, welches D gehört dazu. Da gibt es nur eins, weil D funktional abhängig ist
von B. Dieses B hier ist also gleichzeitig an Fremdschlüssel, auf dieses B. Über diese
Primär-Fremdschlüssel-Beziehung können wir diese zwei Tabellen wieder zusammenführen und die
ursprüngliche Tabelle wieder draus gewinnen. Das ist also verlustfrei. Die zweite Eigenschaft,
die wir gefordert hatten, war funktionale Abhängigkeiten, die von unserer ursprünglichen
Tabelle bereits garantiert werden, die sollen auch von unserer Zerlegung garantiert werden. Also bei
unserer ursprünglichen Tabelle hatten wir einen Primärschlüssel A, B und wenn wir den haben,
dann garantiert uns das, dass es pro Kombination aus A und B gibt es nur ein C und es gibt nur
Presenters
Zugänglich über
Offener Zugang
Dauer
01:21:39 Min
Aufnahmedatum
2010-06-08
Hochgeladen am
2011-04-11 13:53:28
Sprache
de-DE