sql >> Base de Datos >  >> RDS >> Mysql

Si cambiamos un valor de clave principal, ¿por qué no tenemos que cambiar un valor de columna dependiente?

TL;RD El elemento/A siendo PK (clave principal) implica que solo hay un valor de proveedor/B por valor de elemento/A. No dice que solo hay un valor por tabla.

Ese video es una tontería. Están sufriendo los mismos conceptos erróneos sobre "depende" y FD (dependencias funcionales) y PK como su pregunta (así que tal vez de ahí los obtuvo) y muchos otros conceptos erróneos y no saben de lo que están hablando. Encuentre un libro de texto, diapositivas y/o curso de colegio/universidad (muchos de los cuales son gratuitos en línea).

Podemos hablar de FD, superclaves, conjuntos de columnas únicos, CK (claves candidatas) y PK de una tabla valor o una tabla variable . Una variable de tabla tiene una instancia de una de esas cosas si cada valor de tabla que puede surgir en el negocio/aplicación dada lo tiene como una instancia.

Un conjunto de columnas depende funcionalmente de otro cuando el conjunto determinado solo puede tener un valor por cada valor dado del conjunto determinante.

Pero eso no implica que diferentes valores determinantes tengan diferentes valores determinados.

Una superclave es un conjunto de columnas que tiene un valor de subfila diferente en cada fila. Una CK es una superclave que no contiene una superclave más pequeña. Un PK es un CK que elegiste para ser PK. Cada El conjunto de columnas depende funcionalmente de cada superclave. Algunos de los cuales son CK. Uno de los cuales puede ser PK.

Pero eso no implica que algún subbrow otro que una superclave/CK/PK (y cada subbrow debe ser funcionalmente dependiente de ellos por definición) es único.

No sobre la base de que A sea PK/CK. A ser PK/CK implica que A y cada superconjunto de A es único. Si "cambia A" en el sentido de mirar una fila diferente o mirar un valor de tabla diferente que tiene un valor A diferente para esa fila (que no puede estar en ninguna otra fila de ninguna tabla), eso no significa restringir lo que B puede ser.

Algunos otros la restricción podría restringir lo que B puede ser. Por ejemplo, si el FD {Proveedor} -> {Teléfono del proveedor} se mantiene, eso restringe qué Teléfono del proveedor puede estar en otras filas, aunque el Artículo que es PK no lo hace.

Si un FD en particular se mantiene depende de qué filas se supone que deben ir en una tabla en una situación dada y qué situaciones pueden surgir. Luego, lo que contienen los FD determina cuáles son las superclaves y las CK. Entonces puedes elegir un CK como PK.