sql >> Databasteknik >  >> RDS >> Mysql

Om vi ​​ändrar ett primärnyckelvärde, varför måste vi då inte ändra ett beroende kolumnvärde?

TL;DR Artikel/A är PK (primärnyckel) innebär att det bara finns ett värde för leverantör/B per artikel/A-värde. Det står inte att det bara finns ett värde per tabell.

Den videon är nonsens. De lider av samma missuppfattningar om "beroende" &FDs (funktionella beroenden) &PK:er som din fråga (så det är kanske där du fick dem ifrån) och många andra missuppfattningar och de vet inte vad de pratar om. Hitta en lärobok för högskola/universitet, bilder och/eller kurs (varav många är gratis online).

Vi kan prata om FD:er, supernycklar, unika kolumnuppsättningar, CK:er (kandidatnycklar) och PK för ett tabellvärde eller en tabell variabel . En tabellvariabel har en instans av en av dessa saker om varje tabellvärde som kan uppstå i den givna verksamheten/applikationen har det som en instans.

En kolumnuppsättning är funktionellt beroende av en annan när den fastställda uppsättningen endast kan ha ett värde per givet värde av den bestämmande uppsättningen.

Men det betyder inte att olika bestämningsvärden har olika bestämda värden.

En supernyckel är en uppsättning kolumner som har olika underradvärde i varje rad. En CK är supernyckel som inte innehåller någon mindre supernyckel. En PK är någon CK som du valt att vara PK. Varje kolumnuppsättningen beror funktionellt på varje supernyckel. Några av dem är CK. En av dem kan vara PK.

Men det betyder inte att vissa subrow andra än en supernyckel/CK/PK (och varje underrad måste vara funktionellt beroende av dem per definition) är unikt.

Inte utifrån att A är PK/CK. En vara PK/CK innebär att A och varje supermängd av A är unik. Om du "ändrar A" i betydelsen att titta på en annan rad eller titta på ett annat tabellvärde som har ett annat A-värde för den raden (som inte kan finnas i någon annan rad i någon av tabellen), gör det inte det begränsa vad B kan vara.

Några andra begränsning kan begränsa vad B kan vara. T.ex. om FD {Supplier} -> {Supplier Phone} håller, begränsar det vad Supplier Phone kan vara i andra rader även om artikeln är PK inte.

Huruvida någon speciell FD håller beror på vilka rader som är tänkta att gå in i en tabell i en given situation &vilka situationer som kan uppstå. Sedan vad FDs håller avgör vad supernycklarna &CKs är. Sedan kan du välja en CK som PK.



  1. få id för flera rader infogade i psycopg2

  2. Dynamisk SQL-resultat till temporär tabell i SQL Stored-procedur

  3. Gruppera tabeller i en MySQL-databas

  4. Få ID för senast infogade post i Oracle db