Was sind Datenbankformulare und können Sie Beispiele nennen? [geschlossen]


277

Beim relationalen Datenbankdesign gibt es ein Konzept der Datenbanknormalisierung oder einfach der Normalisierung, bei dem Spalten (Attribute) und Tabellen (Beziehungen) organisiert werden, um die Datenredundanz zu verringern und die Datenintegrität zu verbessern. (wie auf Wikipedia geschrieben ).

Da die meisten Artikel etwas technisch und daher schwerer zu verstehen sind, bitte ich jemanden, eine leichter verständliche Erklärung zu schreiben, die auf Beispielen basiert, was 1NF, 2NF, 3NF, sogar 3,5NF (Boyce-Codd) bedeuten.

Antworten:


435

1NF ist die grundlegendste normale Form - jede Zelle in einer Tabelle darf nur eine Information enthalten, und es dürfen keine doppelten Zeilen vorhanden sein.

Bei 2NF und 3NF geht es darum, vom Primärschlüssel abhängig zu sein. Denken Sie daran, dass ein Primärschlüssel aus mehreren Spalten bestehen kann. Wie Chris in seiner Antwort sagte:

Die Daten hängen vom Schlüssel [1NF], dem gesamten Schlüssel [2NF] und nichts als dem Schlüssel [3NF] ab (also hilf mir, Codd ).

2NF

Angenommen, Sie haben eine Tabelle mit Kursen, die in einem bestimmten Semester belegt wurden, und Sie haben die folgenden Daten:

|-----Primary Key----|               uh oh |
                                           V
CourseID | SemesterID | #Places  | Course Name  |
------------------------------------------------|
IT101    |   2009-1   | 100      | Programming  |
IT101    |   2009-2   | 100      | Programming  |
IT102    |   2009-1   | 200      | Databases    |
IT102    |   2010-1   | 150      | Databases    |
IT103    |   2009-2   | 120      | Web Design   |

Dies ist nicht in 2NF der Fall, da die vierte Spalte nicht auf den gesamten Schlüssel angewiesen ist - sondern nur auf einen Teil davon. Der Kursname hängt von der ID des Kurses ab, hat jedoch nichts mit dem Semester zu tun, in dem er belegt ist. Wie Sie sehen, haben wir doppelte Informationen - mehrere Zeilen geben an, dass IT101 programmiert und IT102 Datenbanken sind. Wir beheben dies, indem wir den Kursnamen in eine andere Tabelle verschieben, in der CourseID der GESAMTE Schlüssel ist.

Primary Key |

CourseID    |  Course Name |
---------------------------|
IT101       | Programming  |
IT102       | Databases    |
IT103       | Web Design   |

Keine Redundanz!

3NF

Okay, nehmen wir an, wir fügen dem RDBMS auch den Namen des Lehrers des Kurses und einige Details dazu hinzu:

|-----Primary Key----|                           uh oh |
                                                       V
Course  |  Semester  |  #Places   |  TeacherID  | TeacherName  |
---------------------------------------------------------------|
IT101   |   2009-1   |  100       |  332        |  Mr Jones    |
IT101   |   2009-2   |  100       |  332        |  Mr Jones    |
IT102   |   2009-1   |  200       |  495        |  Mr Bentley  |
IT102   |   2010-1   |  150       |  332        |  Mr Jones    |
IT103   |   2009-2   |  120       |  242        |  Mrs Smith   |

Nun sollte es hoffentlich offensichtlich sein, dass TeacherName von TeacherID abhängig ist - dies ist also nicht in 3NF . Um dies zu beheben, machen wir das Gleiche wie in 2NF - nehmen Sie das Feld TeacherName aus dieser Tabelle und fügen Sie es in eine eigene ein, die TeacherID als Schlüssel hat.

 Primary Key |

 TeacherID   | TeacherName  |
 ---------------------------|
 332         |  Mr Jones    |
 495         |  Mr Bentley  |
 242         |  Mrs Smith   |

Keine Redundanz !!

Eine wichtige Sache, an die Sie sich erinnern sollten, ist, dass wenn etwas nicht in 1NF ist, es auch nicht in 2NF oder 3NF ist. Jede zusätzliche Normalform erfordert also alles , was die unteren Normalformen hatten, sowie einige zusätzliche Bedingungen, die alle erfüllt sein müssen.


9
Denken Sie nur an die Beziehung zwischen den Dingen. Wenn ich Sie frage "Wie heißt der Kurs mit der ID IT101?", Können Sie mir eine Antwort geben, oder? Ebenso, wenn ich Sie frage "Welcher Lehrer hat die ID 332?" Sie können mir sagen, welcher Lehrer das ist. Somit hängt der Kursname von seiner ID ab.
Smashery

9
Sie können jedoch nicht in die andere Richtung gehen - wenn ich Sie fragen würde: "Was ist Mr. Jones 'Ausweis?" Möglicherweise können Sie keine eindeutige Antwort geben, da es möglicherweise zwei Mr Joneses gibt. Die ID ist also nicht vom Namen abhängig - es ist der Name, der von der ID abhängig ist.
Smashery

2
Sie können es sich auch so vorstellen - sehen Sie sich die dritte Tabelle unten an (die erste mit TeacherName). Was hindert mich daran, "Mr Jones" in der ersten Reihe zu haben und dann "Mr Bloggs" in die zweite Reihe zu setzen? Ich sollte das nicht dürfen, weil beide die ID 332 haben.
Smashery

30
@instantsetsuna - Vollständige Erklärung: In einigen Gerichten wird ein Zeuge gefragt, ob er "Die Wahrheit, die ganze Wahrheit und nichts als die Wahrheit, also hilf mir, Gott" sagen wird. Gott gilt als derjenige mit Autorität, wenn es darum geht zu wissen, ob Sie die Wahrheit sagen. Im Fall von Datenbanken können wir sagen "Die Daten hängen vom Schlüssel, dem gesamten Schlüssel und nichts als dem Schlüssel ab, also hilf mir Codd". Ted Codd ist derjenige, der auf die Idee relationaler Datenbanken gekommen ist - Dinge, die auf Schlüsseln usw. beruhen, also wäre er die Autorität, bei relationalen Datenbanken vorzugehen.
Smashery

5
@Smashery Was ist der Unterschied zwischen 2NF und 3NF?
Zo hat

119

Ich hatte noch nie ein gutes Gedächtnis für genaue Formulierungen, aber in meiner Datenbankklasse sagte der Professor immer etwas wie:

Die Daten hängen vom Schlüssel [1NF], dem gesamten Schlüssel [2NF] und nichts als dem Schlüssel [3NF] ab.


72
... also hilf mir Codd. en.wikipedia.org/wiki/Ted_Codd
Smashery

6
Was ist der Unterschied zwischen The data depends on the key [1NF], nothing but the key [3NF]? Bitte verwirren Sie uns nicht, da 1 Urteilsantwort die Antwort nicht klarstellt, sondern die Besucher verwirrt!
Pratik

2
"Jede Zelle in einer Tabelle darf nur eine Information enthalten, und es dürfen keine doppelten Zeilen vorhanden sein." - Ich sehe nicht, wie "Die Daten hängen vom Schlüssel ab" mit all dem übereinstimmt.
Simon Forsberg

46

Hier ist eine schnelle, zugegebenermaßen geschlachtete Antwort, aber in einem Satz:

1NF: Ihre Tabelle ist als ungeordnete Menge organisiert von Daten, und es gibt keine sich wiederholenden Spalten.

2NF: Sie wiederholen keine Daten in einer Spalte Ihrer Tabelle aufgrund einer anderen Spalte.

3NF: Jede Spalte in Ihrer Tabelle bezieht sich nur auf den Schlüssel Ihrer Tabelle - Sie hätten keine Spalte in einer Tabelle, die eine andere Spalte in Ihrer Tabelle beschreibt, die nicht der Schlüssel ist.

Weitere Einzelheiten finden Sie in Wikipedia ...


1
Soweit ich das beurteilen kann, bezieht sich das Vermeiden von sich wiederholenden Gruppen durch 1NF nicht auf sich wiederholende Spalten, sondern auf einzelne Spalten , die eine beliebige Anzahl von wiederholten Werten für dasselbe Attribut darstellen, dh nicht atomar sind. Ich stütze dies auf zB (1) stackoverflow.com/questions/23194292/… / (2) stackoverflow.com/questions/26357276/…
underscore_d

34

1NF: Nur ein Wert pro Spalte

2NF: Alle Nicht-Primärschlüsselspalten in der Tabelle sollten vom gesamten Primärschlüssel abhängen.

3NF: Alle Nicht-Primärschlüsselspalten in der Tabelle sollten DIREKT vom gesamten Primärschlüssel abhängen.

Ich habe einen Artikel im Detail geschrieben über hier


Weil Sie keine Zuschreibung gemacht haben. Ich habe die Antwort bearbeitet, um sie zuzuordnen.
Robert Harvey

Fügen Sie das Beispiel nach Möglichkeit in die Antwort selbst ein. Ein gelegentlicher Benutzer sollte in der Lage sein, Ihre Antwort zu lesen und einen Nutzen daraus zu ziehen, ohne auf den Blog-Link klicken zu müssen. Die Antwort sollte also in sich geschlossen sein.
Robert Harvey

Ich werde das in Erinnerung behalten. Vielen Dank :)
Arcturus

3
Beachten Sie auch, dass diese Frage zwei Jahre alt ist und bereits eine hoch bewertete Antwort enthält, die vom OP als akzeptiert markiert wurde. Verspätete Antworten werden von der Community genauer geprüft, um festzustellen, ob sie dem OP einen echten Mehrwert verleihen oder nicht.
Robert Harvey

3
@Arcturus las den Artikel durch, immer noch eine der besseren Erklärungen für die Normalisierung da draußen.
Olian04
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.