2016-03-22 12 views
0

Angenommen, wir haben eine funktionale Abhängigkeit von einem Attribut außerhalb des Primärschlüssels zu einem Attribut innerhalb des Primärschlüssels. Wie können wir diese Abhängigkeit (die ich intuitiv für schlecht halte) loswerden?Wie man ein in die Schlüsselabhängigkeit loswerden?

Insbesondere nehmen wir die folgenden funktionalen Abhängigkeiten:

CS -> T 
T -> C 

wo CS den Primärschlüssel ist. In meinem Beispiel passiert es zum Glück, dass TS könnte zunächst auch der Primärschlüssel sein, so ist die Situation umgerechnet:

TS -> C 
T -> C 

, die tatsächlich eine Situation, wo wir mehr nicht in die wichtigsten Abhängigkeiten haben, aber wir haben eine partielle Abhängigkeit, die unseren Tisch leicht gelöst werden können in zwei Tabellen durch die Spaltung als

| T | C | 

und

| T | S | 
folgt

aber was, wenn TS nicht auch ein Primärschlüssel war? Wie können wir die ursprüngliche in den Schlüssel Abhängigkeit/Anomalie loswerden?

Antwort

0

Beliebig "in den Schlüssel" Abhängigkeit in einer gegebenen Beziehung R wird entfernt, wenn die Beziehung in Boyce-Codd Normalform (BCNF) zerlegt wird.

BCNF stellt sicher, dass alle Abhängigkeiten "aus dem vollständigen Schlüssel" sind.

Look here für wie in BCNF-Form zu zerlegen.

bearbeitet

  • Vom Vollkeilwuchtung: Von dem vollständigen Primärschlüssel zum Schlüssel außen.
  • In Schlüsselabhängigkeit: Von außerhalb der Schlüssel in den Schlüssel.

Und der Vollständigkeit halber, die anderen 2 Arten von Abhängigkeiten - Teil Abhängigkeiten durch Zersetzung zu 2NF und transitive Abhängigkeiten entfernt werden werden durch weitere Zersetzung es in 3NF entfernt. Daher durch weiter in BCNF Zersetzen im Wesentlichen Sie alle drei Arten von Abhängigkeiten entfernen (Teil, transitiv, in den Schlüssel)

1

Zuerst wird eine Notiz über die Terminologie: „Primärschlüssel“ ist ein Begriff für eine Beziehung verwendet verwaltet von ein relationales Datenbank-Management-System, während in der Normalisierung Theorie die Begriffe normalerweise verwendet werden "Supertasten" und "Kandidat Schlüssel" oder einfach "Schlüssel".

Zweitens in Ihrem Beispiel Sie fragen:

Wie können wir von dieser Abhängigkeit loszuwerden (was ich es schlecht ist intuitiv denken)?

Der Punkt ist, dass die Abhängigkeit tatsächlich schlecht ist, in dem Sinne, dass Sie eine Beziehung mit Anomalien haben (in diesem Fall Redundanz), aber Sie nicht von diese Anomalie loszuwerden, ohne eine weitere Anomalie aufweist, dass verliert eine funktionale Abhängigkeit.

In der Tat Sie das Schema in BCNF, mit den folgenden zerlegt Schemata verwandeln könnte:

R1 < (CT), {T → C}>

R2 < (ST), { }>

aber, wie Sie sehen können, ist die Abhängigkeit CS → T nicht mehr erhalten, da kein Teilschema alle drei Attribute enthält. Und das ist schlimmer als mit einer Redundanz, da Sie Inkonsistenzen in der Datenbank führen könnten, dass sind Fälle, in denen die Abhängigkeit verletzt wird.

In der Tat ist dies ein klassisches Beispiel, in dem das Schema bereits in der dritten Normalform (3NF), dass per Definition erlauben Abhängigkeiten von einem Satz von Attributen, die keine Schlüssel sind, um ein Attribut, das ist Teil eines Schlüssels (genannt "prime" -Attribut).

Also, diese Art von Anomalie wird allgemein akzeptiert, und die Beziehung zerlegt wird nicht.

Verwandte Themen