2010-12-10 11 views
4

Es gibt zwei funktionale Abhängigkeiten in den SQL-Datenbanken.funktionale Abhängigkeiten in SQL-Datenbanken Normalformulare

a) Partielle funktionale Abhängigkeit: Eine Nicht-Schlüsselspalte hängt von einigen, aber nicht allen Spalten in einem zusammengesetzten Primärschlüssel ab.

b) Transitive funktionale Abhängigkeiten: Jede Nicht-Schlüsselspalte hängt von anderen Nicht-Schlüsselspalten ab.

Für eine gute SQL-Datenbank.

Regel 1: Columns enthalten nur atomare Werte

Regel 2: keine sich wiederholenden Gruppen von Daten

Regel 3: Haben keine Teil Abhängigkeiten

Regel 4: hat keine transitive Abhängigkeiten

Ich habe die Anforderungen der 1. und 2. Regel verstanden, warum brauchen wir die 3. und 4. Regel, anstatt zu sagen, dass die Spalte no nicht von anderen Spalten abhängig sein sollte. Warum gibt es zwei separate Regeln (3 und 4)?

Quelle: Head First SQL

Vielen Dank im Voraus!

+0

"Keine Spalte sollte nicht von anderen Spalten abhängen" - meinen Sie so etwas wie "Nicht-Schlüsselspalten sollten nur von der Gesamtheit der Schlüssel abhängen"? Doppelte Negative in Englisch sind knifflig. – outis

+0

@outis: Danke für die Klärung der Frage, ich meine, anstatt separate Regeln, können wir nicht sagen, wie "Die Spalten einer Datenbank sollten nicht auf andere Spalten als Primärschlüssel Spalte abhängen. Und wenn der Primärschlüssel ist eine zusammengesetzte Spalte, dann, ich meine, es wird als eine einzelne Spalte für dieses Abhängigkeitsproblem betrachtet werden " –

+0

Ja natürlich gibt es verschiedene Möglichkeiten, das gleiche zu erklären. Deine Definition ist jedoch nicht perfekt. Die Abhängigkeit von EINEM Schlüssel ("Primärschlüssel") ist nicht ausreichend. Jedes Attribut sollte von ALLEN Schlüsseln der Tabelle abhängen. – sqlvogel

Antwort

7

Gute Frage. Aus historischen und pädagogischen Gründen sind diese beiden oft getrennt.

Zweite Normalform (2NF) befasst sich mit der Beseitigung nur teilweise Schlüsselabhängigkeiten. Normalerweise ist 2NF alleine nicht besonders wichtig, da die dritte Normalform, Boyce Codd Normalform und höhere Normalformen auch dieselben Teilschlüsselabhängigkeiten eliminieren, und diese NFs (> 2NF) sind normalerweise das gewünschte Ziel beim Datenbankentwurf. Es ist jedoch üblich, Normalisierung unter Verwendung eines Prozesses von Zerlegung zu lehren. Bei der Zerlegungsmethode werden in der Regel partielle Schlüsselabhängigkeiten zuerst berücksichtigt. In der Realität wird dies selten von den meisten Praktikern getan, die oft alle Abhängigkeiten auf einmal berücksichtigen.

Definitionen von Normalformularen höher als 2NF nicht unbedingt teilweise Schlüsselabhängigkeiten als Sonderfall überhaupt erwähnen. Boyce Codd Normal Form kann kurz zusammengefasst werden, was bedeutet, dass jede nicht-triviale funktionelle Determinante ein Superkey ist - mit anderen Worten, keine nicht-trivialen FDs (irgendeiner Art) auf irgendetwas anderem als Schlüsseln.

Verwandte Themen