Diese Frage ist offensichtlich eine Hausaufgabe. Ich kann meinen Professor nicht verstehen und habe keine Ahnung, was er während der Wahl gesagt hat. Ich muss Schritt für Schritt Anweisungen machen, um die folgende Tabelle zuerst in 1NF, dann 2NF, dann 3NF zu normalisieren.
Ich schätze jede Hilfe und Anweisung.
Okay, ich hoffe, ich erinnere mich an alle richtig, fangen wir an ...
Um sie sehr kurz zu machen (und nicht sehr präzise, nur um Ihnen eine erste Vorstellung davon zu geben, worum es geht):
Eine Spalte " state
" hat Werte wie "WA, Washington". NF1 wird verletzt, weil das zwei Werte, Abkürzung und Name ist.
Lösung: Um NF1 zu erfüllen, erstellen Sie zwei Spalten, STATE_ABBREVIATION
und STATE_NAME
.
Stellen Sie sich vor, Sie haben einen Tisch mit diesen vier Spalten, der internationale Namen von Automodellen ausdrückt:
COUNTRY_ID
(numerisch, Primärschlüssel) CAR_MODEL_ID
(numerisch, Primärschlüssel) COUNTRY_NAME
(varchar) CAR_MODEL_NAME
(varchar) Die Tabelle kann diese zwei Datenzeilen enthalten:
Das heißt, das Modell "Fox" heißt in den USA "Fox", aber in Deutschland heißt das gleiche Automodell "Polo" (erinnere dich nicht, ob das tatsächlich stimmt).
NF2 wird verletzt, weil der Name des Landes nicht von der Fahrzeugmodell-ID und der Länder-ID abhängt, sondern nur von der Länder-ID.
Lösung: Um NF2 zu erfüllen, verschieben Sie COUNTRY_NAME
in eine separate Tabelle "COUNTRY" mit den Spalten COUNTRY_ID
(Primärschlüssel) und COUNTRY_NAME
. Um eine Ergebnismenge einschließlich des Ländernamens zu erhalten, müssen Sie die beiden Tabellen mit einem JOIN verbinden.
Sagen Sie, Sie haben einen Tisch mit diesen Spalten, der die klimatischen Bedingungen der Staaten ausdrückt:
STATE_ID
(varchar, Primärschlüssel) CLIME_ID
(Fremdschlüssel, ID einer Klimazone wie "Wüste", "Regenwald", etc.) IS_MOSTLY_DRY
(bool) NF3 wird verletzt, weil IS_MOSTLY_DRY nur von der CLIME_ID abhängt (nehmen wir das zumindest an), aber nicht von der STATE_ID (Primärschlüssel).
Lösung: Um NF3 zu erfüllen, setzen Sie die Spalte MOSTLY_DRY
in die Klimazonen-Tabelle.
Hier sind ein paar Gedanken zur tatsächlichen Tabelle in der Übung:
Ich wende die oben erwähnten NF-Regeln an, ohne die Primärschlüsselspalten anzufechten. Aber sie ergeben eigentlich keinen Sinn, wie wir später sehen werden.
Wenn Sie also alle Spalten löschen, die NF2 oder NF3 verletzen, bleibt nur der Primärschlüssel (EMP_ID und DEPT_CD). Dieser verbleibende Teil verstößt gegen die gegebenen Geschäftsregeln: Diese Struktur würde es einem Mitarbeiter ermöglichen, gleichzeitig in mehreren Abteilungen zu arbeiten.
Sehen wir uns das aus der Ferne an. In Ihrem Datenmodell geht es um Mitarbeiter, Abteilungen, Fähigkeiten und die Beziehungen zwischen diesen Entitäten. Wenn Sie dies normalisieren, erhalten Sie eine Tabelle für die Mitarbeiter (mit DEPT_CD als Fremdschlüssel), eine für die Abteilungen, eine für die Fähigkeiten und eine weitere für die Beziehung zwischen Mitarbeitern und Fähigkeiten, die "Skill Jahre "für jedes Tupel von EMP_ID und SKILL_CD (mein Lehrer hätte letzteres eine" assoziative Entität "genannt).
Betrachten Sie die ersten beiden Zeilen Ihrer Tabelle, und schauen Sie sich an, welche Spalten in dieser Tabelle mit "PK" markiert sind, und unter der Annahme, dass "PK" für "Primärschlüssel", "und" steht Wenn ich mir die Werte anschaue, die für diese beiden Spalten in diesen beiden Zeilen erscheinen,
würde ich Ihrem Professor empfehlen, sich aus dem Datenbankunterricht zu befreien und nicht zurück zu kommen, bis er selbst richtig auf der Thema.
Diese Übung kann nicht ernst genommen werden, da die Problembeschreibung selbst hoffnungslos widersprüchliche Informationen enthält.
(Beachten Sie, dass es als Konsequenz auf diese Frage einfach keine "gute" oder "richtige" Antwort gibt !!!)
Eine weitere übermäßig vereinfachte Antwort steht bevor.
In einer relationalen 3NF-Tabelle wird jeder Nicht-Schlüssel-Wert durch den Schlüssel, den ganzen Schlüssel und nichts als den Schlüssel bestimmt (also hilf mir Codd;)).
1NF: Der Schlüssel. Dies bedeutet, dass beim Angeben des Schlüsselwerts und einer benannten Spalte höchstens ein Wert am Schnittpunkt der Zeile und der Spalte vorhanden ist. Ein Mehrfachwert, wie eine Reihe von Werten, die durch Kommas getrennt sind, ist nicht zulässig, da Sie nicht direkt mit einem Schlüssel und einem Spaltennamen auf den Wert zugreifen können.
2NF: Der ganze Schlüssel. Wenn eine Spalte, die nicht Teil des Schlüssels ist, durch eine richtige Teilmenge der Schlüsselspalten bestimmt wird, wird 2NF verletzt.
3NF: Und nichts als der Schlüssel. Wenn eine Spalte von einer Gruppe von Nicht-Schlüsselspalten bestimmt wird, wird 3NF verletzt.
3NF erfüllt nur dann, wenn es in der zweiten Normalform vorliegt und keine transitive Abhängigkeit aufweist und alle Nicht-Schlüsselattribute vom Primärschlüssel abhängen sollten.
Transitive Abhängigkeit: R = (A, B, C). A- & gt; B UND B- & gt; C THEN A- & gt; C
Tags und Links database database-schema database-design relational-database normalization