Unsere Datenschutzrichtlinie wird in Kürze aktualisiert. Bitte sehen Sie sich die Vorschau an.

Grundlagen der Programmierung: Datenbanken

Zweite Normalform

Testen Sie unsere 2016 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Sämtliche Spalten einer Tabelle, welche nicht Teil eines zusammengesetzten Primärschlüssels sind, müssen abhängig vom gesamten Primärschlüssel sein.

Transkript

Bevor Sie sich an der zweiten Normalform oder 2NF versuchen, muss die Datenbank zunächst in der ersten Normalform vorliegen. Die Reihenfolge ist wichtig, also von eins nach drei. Während die erste Normalform mit Wiederholungswerten zu tun hat, geht es bei der zweiten und dritten Normalform um die Beziehung zwischen den Spalten, die als Schlüssel dienen und den anderen Spalten, die keine Schlüssel sind. Die zweite Normalform ist immer dann ein Problem, wenn wir einen zusammengesetzten Primärschlüssel verwenden, also einen Primärschlüssel, der aus zwei oder sogar mehr Spalten besteht. Ich zeige Ihnen hier eine Tabelle, die sich momentan in der ersten, jedoch nicht in der zweiten Normalform befindet. Die Tabelle "Events" hat die Spalten "Course", "Date", "Room", "Capacity", "AvailableSeats" und so weiter. Das Besondere an dieser Tabelle ist, dass der Primärschlüssel mit zwei Spalten definiert ist. Ein zusammengesetzter Primärschlüssel. Wir können hier nicht nur die Spalte "Course" verwenden, weil ja ,wie Sie sehen, "SQL101" mehrfach vorkommt. Diese Spalte kommt also als Primärschlüssel leider nicht in Frage. Die Spalte "Date" können wir auch nicht verwenden. Doch ich kann die "Course" mit "Date" zu einer logischen Einheit kombinieren. Derselbe Kurs kann mehrfach stattfinden und wir können mehrere Kurse zum selben Datum beginnen lassen. Doch es gibt immer nur einen bestimmten Kurs, der an einem bestimmten Datum stattfindet. Folglich ist "SQL101" am 1. März eindeutig. Es ist also ein zulässiger zusammengesetzter Primärschlüssel. Das Problem mit der zweiten Normalform besteht nun darin, dass Sie, wenn Sie einen zusammengesetzten Schlüssel verwenden, genau auf die anderen Spalten in dieser Tabelle achten müssen. Bei meinen Nicht-Schlüsselspalten habe ich als "CourseTitle" den Namen "SQL Fundamentals", den "Room" 4a, "Capacity" ist 12, und es stehen noch vier freie Plätze zur Verfügung. Viele dieser Informationen wären für diesen einen Eintrag, diesen einen Kurs an diesen bestimmten Datum eindeutig, so weit, so gut. Doch die zweite Normalform verlangt, dass alle meine nicht Schlüsselspalten, das heißt, alle, die nicht Teil des Schlüssels sind, abhängig vom gesamten Primärschlüssel sein müssen. Also wären das die Spalten "CourseTitle", "Room", "Capacity" und "Available". Für "Room", "Capacity" und "Available" trifft es auch zu. Dies sind eindeutige Werte basierend auf der Tatsache, dass wir an diesem bestimmten Datum diesen bestimmten Kurs in diesem bestimmten Raum mit einer bestimmten Anzahl von verfügbaren Plätzen durchführen. Alle Einträge werden immer verschieden sein. Bei "CourseTitle" aber könnte ich dies allein mit der Hälfte des Schlüssels erreichen, nur aus dem ersten Teil des Schlüssels. Er hat keine Verbindung zu "Date", welcher Art auch immer. "SQL Fundamentals" wird immer auf "SQL101" basieren. Es spielt keine Rolle, ob der Kurs im März, April oder im Mai durchgeführt wird. Das mag jetzt vielleicht so ein bisschen nach Elfenbeinturm klingen, doch der Effekt sieht so aus. Was passiert ,wenn jemand auf diese Tabelle zugreift, und die "Course" ID ändert, den Titel aber nicht? Nun bekommen wir einen Konflikt. Wir könnten den falschen Titel für das falsche Datenelement haben, das hängt damit zusammen, dass sich meine Daten jetzt nicht in der zweiten Normalform befinden. Und mit geeigneten Gegenmaßnahmen verhindern wir, dass dieser Konflikt jemals auftritt. Und wie machen wir das? Nun, wir reißen wieder einmal die Spalte "CourseTitle" auseinander, wir erstellen eine separate Tabelle "Courses", in der wir wieder die ID des Kurses seiner eigenen Zeile zuordnen. Somit haben wir immer einen spezifischen Titel für eine spezifische ID. Dann richten wir eine eins-zu-viele-Beziehung zwischen "Events" und "Course" ein. Und wenn wir diesen Teil aus der Tabelle "Event" entfernen, dann heißt das, dass alles in dieser Tabelle nun auf dem gesamten Schlüssel beruht. Einem bestimmten Kurs an einem bestimmten Datum, der in einem anderen Raum oder mit einer abweichenden Kapazität, oder einer anderen Anzahl von verfügbaren Plätzen stattfinden kann. Und das Tolle daran ist ,wenn Sie keine zusammengesetzten Schlüssel verwenden, dann ist die zweite Normalform überhaupt kein Thema. Damit können Sie einen Schritt weitergehen, direkt durch die zweite Normalform zum nächsten Schritt der dritten Normalform.

Grundlagen der Programmierung: Datenbanken

Fangen Sie ganz von vorne an und erfahren Sie alles über die Grundlagen zu Datenbanken und deren Einsatzzwecke, um danach eigene Lösungen und Anwendungen zu entwickeln.

3 Std. 6 min (39 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!