Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wenn wir einen Primärschlüsselwert ändern, warum müssen wir dann nicht einen abhängigen Spaltenwert ändern?

TL;DR Dass Artikel/A PK (Primärschlüssel) ist, impliziert, dass es nur einen Lieferanten-/B-Wert pro Artikel-/A-Wert gibt. Es heißt nicht, dass es nur einen Wert pro Tabelle gibt.

Das Video ist Unsinn. Sie leiden unter den gleichen Missverständnissen über "Abhängigkeiten" und FDs (funktionale Abhängigkeiten) und PKs wie Ihre Frage (vielleicht haben Sie sie daher her) und viele andere Missverständnisse, und sie wissen nicht, wovon sie sprechen. Finden Sie ein Lehrbuch, Folien und/oder einen Kurs einer Hochschule/Universität (von denen viele kostenlos online sind).

Wir können über die FDs, Superkeys, eindeutige Spaltensätze, CKs (Kandidatenschlüssel) und PK eines Tabellen-Werts sprechen oder eine Tabellen-Variable . Eine Tabellenvariable hat eine Instanz von einem dieser Dinge, wenn jeder Tabellenwert, der in dem gegebenen Geschäft/der Anwendung auftreten kann, es als Instanz hat.

Ein Spaltensatz ist funktional von einem anderen abhängig, wenn der bestimmte Satz nur einen Wert pro gegebenem Wert des bestimmenden Satzes haben kann.

Aber das bedeutet nicht, dass unterschiedliche Bestimmungswerte unterschiedliche Bestimmungswerte haben.

Ein Superschlüssel ist eine Reihe von Spalten, die in jeder Zeile einen anderen Unterzeilenwert haben. Ein CK ist ein Superschlüssel, der keinen kleineren Superschlüssel enthält. Ein PK ist ein CK, das Sie als PK ausgewählt haben. Alle Spaltensatz hängt funktional von jedem Superkey ab. Einige davon sind CKs. Einer davon kann PK sein.

Aber das bedeutet nicht, dass einige Unterzeilen andere sind als ein Superkey/CK/PK (und jeder Unterzeile muss per Definition funktional von ihnen abhängig sein) ist einzigartig.

Nicht auf der Grundlage, dass A PK/CK ist. Da PK/CK ist, impliziert, dass A und jede Obermenge von A eindeutig ist. Wenn Sie A ändern, indem Sie eine andere Zeile oder einen anderen Tabellenwert betrachten, der einen anderen A-Wert für diese Zeile hat (der sich in keiner anderen Zeile einer der beiden Tabellen befinden kann), ist dies nicht der Fall einschränken, was B sein kann.

Einige andere Einschränkung könnte einschränken, was B sein kann. Wenn z. B. FD {Supplier} -> {Supplier Phone} gilt, dann schränkt das ein, was Supplier Phone in anderen Zeilen sein kann, obwohl Artikel mit PK dies nicht tut.

Ob ein bestimmter FD gilt, hängt davon ab, welche Zeilen in einer bestimmten Situation in eine Tabelle aufgenommen werden sollen und welche Situationen auftreten können. Was die FDs halten, bestimmt dann, was die Superkeys und CKs sind. Dann können Sie einen CK als PK auswählen.