Mysql
 sql >> Base de données >  >> RDS >> Mysql

Si nous modifions une valeur de clé primaire, pourquoi ne devons-nous pas modifier une valeur de colonne dépendante ?

TL;DR Item/A étant PK (clé primaire) implique qu'il n'y a qu'une seule valeur Supplier/B par valeur Item/A. Cela ne dit pas qu'il n'y a qu'une seule valeur par table.

Cette vidéo est un non-sens. Ils souffrent des mêmes idées fausses sur les "dépends" et les FD (dépendances fonctionnelles) et les PK que votre question (alors c'est peut-être de là que vous les avez tirées) et de nombreuses autres idées fausses et ils ne savent pas de quoi ils parlent. Trouvez un manuel, des diapositives et/ou un cours collégial/universitaire (dont beaucoup sont gratuits en ligne).

Nous pouvons parler des FD, des super-clés, des ensembles de colonnes uniques, des CK (clés candidates) et du PK d'une valeur de table ou une variable de tableau . Une variable de table a une instance de l'une de ces choses si chaque valeur de table qui peut survenir dans l'entreprise/application donnée l'a comme instance.

Un ensemble de colonnes est fonctionnellement dépendant d'un autre lorsque l'ensemble déterminé ne peut avoir qu'une seule valeur par valeur donnée de l'ensemble déterminant.

Mais cela ne signifie pas que des valeurs déterminantes différentes ont des valeurs déterminées différentes.

Une super-clé est un ensemble de colonnes qui a une valeur de sous-ligne différente dans chaque ligne. Un CK est une super-clé ne contenant pas de super-clé plus petite. Un PK est un CK que vous avez choisi d'être PK. Tous l'ensemble de colonnes dépend fonctionnellement de chaque super-clé. Certains d'entre eux sont des CK. L'un d'entre eux peut être PK.

Mais cela n'implique pas qu'une sous-ligne autre qu'une super-clé/CK/PK (et chaque la sous-ligne doit en dépendre fonctionnellement par définition) est unique.

Pas sur la base que A est PK/CK. A étant PK/CK implique que A et chaque sur-ensemble de A est unique. Si vous "changez A" dans le sens de regarder une ligne différente ou de regarder une valeur de table différente qui a une valeur A différente pour cette ligne (qui ne peut être dans aucune autre ligne de l'une ou l'autre table), cela ne fait pas restreindre ce que B peut être.

Certains autres contrainte pourrait restreindre ce que B peut être. Par exemple, si le FD {Fournisseur} -> {Téléphone du fournisseur} est valide, cela limite ce que le téléphone du fournisseur peut être dans d'autres lignes, même si l'élément étant PK ne le fait pas.

Le fait qu'un FD particulier soit conservé dépend des lignes censées entrer dans une table dans une situation donnée et des situations qui peuvent survenir. Ensuite, ce que les FD contiennent détermine ce que sont les super-clés et les CK. Ensuite, vous pouvez choisir un CK comme PK.