Das Video kommt von YouTube: erst beim Abspielen verbindet sich die Seite mit YouTube (Google).
Die drei Normalformen in einer Datenbank. Einfach erklärt
Das Wichtigste aus dem Video
Tipp auf eine Zeit – das Video springt genau dorthin.
Transkriptautomatisch erstellt · 55 Zeilen
- Ihr wollt die ersten drei Normalformen aus dem Bereich Datenbanken nachvollziehen? Das machen wir hier, und zwar ganz simpel, ganz trivial und ganz einfach. Und wir starten direkt.
- Wir beginnen erstmal damit, dass wir uns die Tabelle einer Schule angucken. In dieser Tabelle speichern wir dann von unseren Schülern die SchülerID, den Namen, die Klasse, den
- Klassenlehrer, die AG ID, die die verschiedenen Schüler wählen können, plus die Beschreibung der AG und inwiefern die Schüler teilgenommen haben, also mit Erfolg oder ob sie einfach nur
- teilgenommen haben. Diese Tabelle befindet sich jetzt in der nullten Normalform, und die bringen wir jetzt step by step in die dritte Normalform. Bevor wir starten, die SchülerID stellt in diesem
- Fall den Primärschlüssel dar, das heißt der Wert identifiziert diesen Datensatz ganz klar. Also, der Harald Wolf hat die SchülerID 1, und die SchülerID 1, die ist einzigartig,
- die kriegt kein anderer Schüler. Und diesen Primärschlüssel, den benötigt jede Tabelle, das heißt, wir müssen uns in jeder Tabelle für ein oder mehrere Spalten entscheiden,
- die am Ende den Primärschlüssel stellen. Und das wird nachher noch wichtig. Und warum das wichtig wird, das gucken wir uns gleich an. Aber jetzt erstmal zur Definition der ersten
- Normalform, und die lautet: Eine Tabelle befindet sich in der ersten Normalform, wenn sich die Werte in jedem Feld nicht weiter zerlegen lassen. Klingt einfach und ist es auch.
- Und wir gucken uns mal hier die SchülerID an. Die SchülerID ist völlig in Ordnung, denn hier steht nur ein einziger Wert, also die 1. Aber wenn wir jetzt einmal nach rechts gehen,
- da finden wir den Namen Harald Wolf. Das heißt, wir haben ja einen Vor- und wir haben einen Nachnamen, und das müssen irgendwie aufspalten. Das heißt, wir müssen aus dieser Spalte zwei
- verschiedene Spalten machen. Wir brauchen einmal die Spalte "Vorname" und einmal die Spalte "Nachname". Und das ist nicht mal nur der Fall, dass wir neue Spalten erschaffen müssen,
- sondern manchmal müssen wir tatsächlich auch neue Zeilen erschaffen. Und das ist der Fall, wenn wir Wiederholungsgruppen vorfinden. Also, das heißt, wir gucken uns jetzt beispielsweise
- mal den Harald Wolf an. Und der Harald Wolf, der hat in der AG Fußball und Börse mitgemacht. Und das bedeutet, wir können diesen Wert in dieser Zelle noch weiter zerlegen. Denn bei AG ID da
- steht eine 1 und eine 2, und bei Beschreibung da steht Fußball und Börse. Und das heißt, wir benötigen für jedes Mal, wo der Schüler an einer AG teilnimmt, eine neue Zeile, wo wir dann
- jede Teilnahme in jeder AG einzeln festhalten, damit sich der Wert innerhalb dieser Zellen nicht weiter zerlegen lässt. Und dann sprechen wir davon, dass wir Wiederholungsgruppen auflösen.
- So, wenn wir diese beiden Änderungen dann einmal durchführen, dann haben wir eine Tabelle in der ersten Normalform, und die hat jetzt mehr Spalten und mehr Datensätze. Und was sich tatsächlich auch
- geändert hat, das ist der Primärschlüssel. Denn der besteht jetzt aus den Attributen "SchülerID" und "AGID". Denn wir haben ja gerade gelernt, diese Attribute in dieser Kombination dürfen
- nur einmal vorkommen. Und wenn "SchülerID" alleine den Primärschlüssel darstellen würde, dann hätten wir ein Problem. Dann können wir die ersten beiden Datensätze also wegen
- der "SchülerID" schon mal nicht eintragen. So, und auf die erste Normalform folgt die zweite Normalform. Und wir beginnen hier wieder mit der Definition, und die lautet folgendermaßen:
- Eine Tabelle befindet sich in der zweiten Normalform, wenn sie sich in der ersten Normalform befindet und jedes nichtschlüsselattribut vom Primärschlüssel voll funktional abhängig ist.
- Das sagt im Kern nichts anderes aus, als dass ich über den Wert des Primärschlüssels immer auf den Wert des nichtschlüsselattributs schließen kann, und dafür brauche ich alle Werte des
- Primärschlüssels, nicht mehr und nicht weniger. Und wenn wir uns jetzt beispielsweise einmal die Beschreibung der AG angucken, dann brauche ich an dieser Stelle nicht die "SchülerID",
- um auf die Beschreibung "Fußball" oder "Börse" zu kommen, sondern ich brauche alleine die "AGID". Was bedeutet, das nichtschlüsselattribut "Beschreibung", das ist nicht voll funktional
- abhängig vom gesamten Primärschlüssel. Weshalb wir jetzt eine neue Tabelle kreieren müssen. Und jetzt kommt das Konzept des Fremdschlüssels ins Spiel. Aber Step by Step: Wir erstellen eine
- neue Tabelle, und zwar die Tabelle "AG" mit dem Primärschlüssel "AGID". Und hier können wir direkt von dem gesamten Primärschlüssel auf das nichtschlüsselattribut "Beschreibung"
- schließen. Und die "AGID" fungiert hier als Primärschlüssel, das seht ihr ja an dem Symbol für den Primärschlüssel. Und die "AGID" in der Tabelle "Schüler" ist nicht verschwunden,
- die ist immer noch da, aber als Fremdschlüssel, das heißt, sie referenziert die "AGID" in der Tabelle "AG". Also, mit anderen Worten: Das Original der AG ist selber steht in der
- Tabelle "AG" mit der "AGID", und darüber einmal zu finden. Und wenn ich darauf verweisen möchte, beispielsweise in der Tabelle "Schüler", der die verschiedenen AGs wählt, dann greife ich
- auf den Fremdschlüssel zurück, der immer auf den Primärschlüssel in der Originaltabelle, also in diesem Fall "AG", verweist. Und wir haben es hier mit einer eins zu n Beziehung zu tun,
- die "AGID" selber als Primärschlüssel taucht einmal auf, dafür steht dann die eins, und sie kann in der Tabelle "Schüler" auftauchen, also dafür steht dann das n für beliebig viele.
- Und wir sind noch nicht ganz fertig, denn wenn wir uns jetzt einmal die "AGID" angucken, sehen wir, dass die "AGID" zwar als Fremdschlüssel genutzt wird, aber auch als Teil des Primärschlüssels.
- Und wenn wir uns die verschiedenen nichtschlüsselattribute angucken, sehen wir auch, dass wir verschiedene funktionale Abhängigkeiten vorfinden. Denn
- die nichtschlüsselattribute "Name", "Vorname", "Klasse" und "Klassenlehrer" sind funktional abhängig zur "SchülerID", denn ich kann jeweils über die "SchülerID" den Wert des Attributs
- herausfinden. Aber das Attribut "Nachweis", also ob die Schüler jetzt mit Erfolg teilgenommen haben oder nur an einer AG teilgenommen haben, dafür benötige ich die "SchülerID" und die "AGID",
- denn ich kann ja nicht sagen, der Schüler Harald Wolf hat teilgenommen, sondern ich brauche an dieser Stelle die "AGID", also ich muss wissen, an welcher AG er teilgenommen hat, um zu sagen,
- welchen Nachweis er am Ende bekommt. Also, kurzum, ich brauche die "SchülerID" und die "AGID", um auf den Nachweis "teilgenommen" zu schließen. Und dass wir hier verschiedene funktionale Abhängigkeiten
- bzw. vollfunktionale Abhängigkeiten haben, das ist darauf zurückzuführen, dass wir eventuell für die zweite Normalform noch mal nachbessern müssen. Also, sprich, dass wir eine neue Tabelle brauchen.
- Und in dieser neuen Tabelle, also in dieser neuen Tabelle "SchülerAG", müssen wir jetzt realisieren, dass wir die "SchülerID" und die "AGID" zusammen als Primärschlüssel nutzen. Und
- das nichtschlüsselattribut "Nachweis" dort unterbringen, denn das ist dann voll funktional vom gesamten Primärschlüssel abhängig. Und diese beiden Schlüsselattribute
- fungieren dann auch gleichzeitig als Fremdschlüssel. Also, das heißt, das Original "AGID" findet ihr in der Tabelle "AG" wieder, und die "SchülerID" als Original, die findet ihr in
- der Tabelle "Schüler" wieder. Und in der Tabelle "Schüler" da haben wir jetzt die Situation, die wir für die zweite Normalform brauchen. Also, jedes nichtschlüsselattribut, also "Name",
- "Vorname", "Klasse" und der "Klassenlehrer", ist jeweils funktional vom gesamten Primärschlüssel abhängig, bedeutet, ihr könnt jeweils von der "SchülerID" auf jedes nichtschlüsselattribut
- schließen. Hier haben wir übrigens eine n zu m Beziehung aufgelöst, also eine viele zu viele Beziehung, denn die Schüler selber können viele AGs wählen, und die AGs können von vielen Schülern
- gewählt werden. Und am Ende lösen wir eine n zu m Beziehung durch zwei eins zu n Beziehungen auf. Wenn ihr das noch mal im Detail nachvollziehen wollt, guckt euch gerne das oben verlinkte Video
- an, da habe ich das noch mal wirklich detailliert erklärt. Und auf Normalform 2 folgt Normalform 3, und wie immer zuerst die Definition: Eine Tabelle befindet sich in der dritten Normalform,
- wenn sie sich in der zweiten Normalform befindet und keine nichtschlüsselattribute funktional voneinander abhängig sind. Klingt auch hier wieder etwas kompliziert,
- ist im Grunde genommen aber ganz einfach. Wir können ja tatsächlich uns nur die "Schüler"-Tabelle angucken, denn nur hier haben wir mehrere nichtschlüsselattribute. Und hier
- schauen wir uns zuerst den "Namen" an und den "Vornamen". Und die sind nicht voneinander abhängig. Das heißt, ich kann von den "Namen" nicht auf den "Vornamen" schließen und von den
- "Namen" "Wolf" selber auch nicht auf die "Klasse". Aber zwischen der "Klasse" und dem "Klassenlehrer" da finden wir eine funktionale Abhängigkeit vor. Denn ich kann von der "Klasse" immer auf den
- "Klassenlehrer" schließen. Und da wir an dieser Stelle eine funktionale Abhängigkeit vorfinden, müssen wir die in eine Tabelle auslagern. Und zwar in eine neue Tabelle, wo wir "Klasse"
- als Schlüssel benutzen und "Klassenlehrer" als nichtschlüsselattribut. Das heißt, "Klassenlehrer" befindet sich nicht mehr in der Tabelle "Schüler", beziehungsweise das Attribut, und "Klasse" bleibt
- an dieser Stelle stehen. Und wir nutzen hier die "Klasse" dann als Fremdschlüssel. Das heißt, die "Klasse" referenziert an dieser Stelle die "Klasse" aus der Tabelle "Klasse". Und somit
- sind die ganzen nichtschlüsselattribute, die wir haben, nicht mehr funktional voneinander abhängig. Und wir haben alle unsere Tabellen in die dritte Normalform überführt.
- Und damit sind wir durch. Hier links, da habe ich meine komplette Playlist mit allen Normalformen, also alles von der ersten bis zur fünften Normalform, verlinkt. Und hier rechts,
- da findet ihr meine Playlist zum ER-Modell. Schaut euch eins der beiden Sachen auf jeden Fall als nächstes an. Vergesst nicht zu abonnieren, und ansonsten bis zum nächsten Mal.