2013-05-23 6 views
8

Here Ich fand dies:Sind Determinanten und Kandidatenschlüssel gleiche oder verschiedene Dinge?

Definition: Eine Determinante in einer Datenbanktabelle ist jedes Attribut, das Sie die Werte verwenden können, um andere Attribute (s) in der gleichen Zeile zugewiesen zu bestimmen.

Beispiele: Betrachten Sie eine Tabelle mit den Attributen employee_id, first_name, last_name und date_of_birth. In diesem Fall bestimmt das Feld employee_id die verbleibenden drei Felder. Die Namensfelder ermitteln die employee_id nicht, da die Firma mehr als einen Mitarbeiter mit demselben Vor- und/oder Nachnamen haben kann. In ähnlicher Weise ermittelt das Feld DOB die Felder employee_id oder name nicht, da mehrere Mitarbeiter denselben Geburtstag haben können, wenn .

Ist die Definition nicht auch für Kandidatenschlüssel gültig?

Antwort

15

Aus meiner Sicht ist eine Determinante möglicherweise kein Kandidatenschlüssel, wenn die Tabelle nicht vollständig normalisiert ist. In der Tat wird die Wortdeterminante verwendet, wenn der Prozess der Übernahme von nicht-normalen Daten in eine nützlichere, normalisierte Form beschrieben wird.

Betrachten Sie diese (natürlich nicht-normal) Tabelle:

CREATE TABLE US_Address (
    AddressID int, 
    Streetline varchar(80), 
    City varchar(80), 
    State char(2), 
    ZIP char(5), 
    StateName varchar(80), 
    StateTax DECIMAL(5,2) 
) 

Staat eine Determinante für State und StateTax ist, aber es ist für die Zeile kein Kandidat Schlüssel. Korrekte Normalisierung würde daher StateName und StateTax aus der US_Address-Tabelle und in eine States-Tabelle verschieben.

Weitere Informationen finden Sie unter here.

+0

Auch wenn eine Tabelle in BCNF ist, ist jede Teilmenge der Attribute eine Determinante. Was richtig ist, ist "Eine [nicht-triviale FD] Determinante darf nicht [eine Obermenge von] einem Kandidatenschlüssel sein, wenn die Tabelle nicht [in BCNF] ist [aber anders ist]". – philipxy

+0

Auch dieser Link definiert "Determinante" (in einer Tabelle) ungewöhnlich als "Determinante einer vollständigen funktionalen Abhängigkeit". Und seine "Eine Beziehung ist in BCNF, wenn und nur wenn jede Determinante ein Kandidatenschlüssel ist" sollte "jede nicht-triviale Determinante" sein. – philipxy

6
  • Ein Primärschlüssel oder ein beliebiger Schlüssel ist auch eine Determinante, während das Gegenteil nicht zutrifft.
  • Eine Determinante kann ein oder mehrere Attribute in der Zeile eindeutig bestimmen.
  • Ein Kandidatenschlüssel kann die gesamte Zeile eindeutig bestimmen.

ein Beispiel aus here nehmen, lassen Sie es eine Tabelle mit folgenden Spalten sein:

Kunden #, Name, Adresse, Kredit, Sales Rep #, Sales Rep-Name

und lassen Sie uns sagen, dass die Sales Rep # die Sales Rep Name eindeutig bestimmen kann. Somit ist Sales Rep # eine Determinante für Sales Rep Name, ist aber kein Kandidat für diese Tabelle.

4

TL; DR Nein "Determinante" und "Kandidatenschlüssel" ist nicht das gleiche Konzept. Eine Determinante ist eines FD. Ein CK ist einer Tabelle.Wir können vernünftigerweise schlampig sagen, dass ein CK eine Determinante (einer FD) seiner Tabelle ist, da es jede Spalte bestimmt, die darin gesetzt ist.


Alle folgenden Termini/Begriffe sind parallel zur Tabelle definiert Werte und Variablen. Eine Tabellenvariable hat eine Instanz einer FD (funktionale Abhängigkeit), Determinante, Superkey, CK (Kandidatenschlüssel) oder PK (Primärschlüssel) (im Variablen Sinne), wenn jeder Tabellenwert, der dafür in dem gegebenen Geschäft entstehen kann/Anwendung hat diese Instanz (im Sinne der Tabelle).

Für Sätze von Spalten X und Y können wir schreiben X -> Y. Wir sagen, dass X die ist Determinante/set Bestimmen und Y die bestimmt eingestellt von/in funktionaler Abhängigkeit (FD) X -> Y.

sagen wir X funktionell bestimmt Y und Y funktionell durch X. bestimmt wir sagen X ist die Determinante von X -> Y. In {C} -> Y wir sagen, C funktionell bestimmt Y. In X -> {C} wir sagen, X funktional det Hermeline C. Wenn X eine Obermenge von Y ist, sagen wir X -> Y ist Trivial.

Wir sagen X -> Y hält in Tabelle T, wenn jeder Unterzeile Wert für X nur mit einem bestimmten Wert für Unterzeile Y. erscheint Oder wir sagen X -> Y eine FD ist von/in T. Wenn X eine Determinante von einigen FD in Tabelle T ist, sagen wir X ist eine Determinante von/in T. Jede triviale FD einer Tabelle enthält darin.

A Superkey eine Tabelle T ist eine Gruppe von Spalten, die funktionell jede Spalte bestimmt. Ein Kandidatschlüssel (CK) ist ein Superschlüssel, der keinen kleineren Superschlüssel enthält. Wir können eine CK als Primärschlüssel (PK) wählen, und dann die anderen CKs alternative Tasten (AKs) nennen. Eine Spalte ist prime wenn es in einigen CK ist.

beachte, dass eine Determinante ein FD sein kann, oder, sloppily, von (a FD Das gilt in) eine Tabelle. Jeder CK ist eine Determinante seiner Tabelle. (Aber dann, in einer Tabelle jeder Satz von Spalten ist ein ausschlaggebender Faktor.. Von selbst, trivialen Und ähnlich jede Spalte)

(Diese Definitionen sind nicht abhängig von Normalisierung FDs und CKs einer Tabelle. werden verwendet, um es zu normalisieren.Eine Tabelle ist in BCNF, wenn jeder Determinante eines nicht-triviale FD, die in ihm hält, ist ein superkey.)

SQL-Tabellen sind nicht Beziehungen und SQL-Operatoren sind nicht ihre relationalen/mathematischen Pendants. Unter anderem hat SQL doppelte Zeilen, null & eine Art von 3-Wert-Logik. Aber obwohl Sie Begriffe ausleihen und ihnen SQL-Bedeutungen geben können, you can't just substitute those meanings into other RM definitions or theorems and get something sensible or true. Also müssen wir convert an SQL design to a relational design, apply relational notions, then convert back to SQL. Es gibt spezielle Fälle, in denen wir bestimmte Dinge direkt in SQL tun können, weil wir wissen, was passieren würde, wenn wir konvertieren, wenden Sie & zurück konvertieren.

+1

Die Definitionen * hängen nicht von der Normalisierung ab, aber ich wette, sie wurden explizit erfunden, um die Definition der Normalisierung zu ermöglichen. Ihre Definitionen sind sehr präzise und mathematisch. Aber während sie sehr wertvolle Informationen mit sich führen, ist das Lesen viel schwieriger als meine Antwort, obwohl sie falsch war. Meine Antwort brachte die OP schnell dazu zu verstehen, dass es sich um unterschiedliche Konzepte handelte und wo die verschiedenen Konzepte nützlich sein würden. Ihre Antwort ist mehr über formale Beweise. –

+0

Die * Begriffe * erscheinen in der Frage und Ihre Antwort, aber die * Bedeutungen * sind nicht im Kopf des Fragestellers. Ich habe versucht, das anzugehen. Daher Definitionen. Sie sind einfach und korrekt, aber nicht vage. Die vier fett gedruckten Sätze für * FD *, * hält *, * Superkey * und * CK * hätten ausgereicht. Ich habe einige verwandte Begriffe/Begriffe hinzugefügt. Meine Entscheidung spiegelt meine Zweifel wider, dass Unterschiede zwischen Dingen ohne klares Verständnis dessen, was sie sind, geschätzt werden können. – philipxy

Verwandte Themen