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.
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
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