Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Se alterarmos um valor de chave primária, por que não precisamos alterar um valor de coluna dependente?


TL;DR Item/A sendo PK (chave primária) implica que há apenas um valor de Fornecedor/B por valor de Item/A. Não diz que há apenas um valor por tabela.

Esse vídeo é um absurdo. Eles estão sofrendo dos mesmos equívocos sobre "dependências" e FDs (dependências funcionais) e PKs como sua pergunta (talvez seja daí que você os obteve) e muitos outros equívocos e eles não sabem do que estão falando. Encontre um livro didático da faculdade/universidade, slides e/ou curso (dos quais muitos são gratuitos online).

Podemos falar sobre os FDs, superchaves, conjuntos de colunas únicas, CKs (chaves candidatas) e PK de uma tabela valor ou uma tabela variável . Uma variável de tabela tem uma instância de uma dessas coisas se cada valor de tabela que pode surgir em um determinado negócio/aplicativo o tiver como uma instância.

Um conjunto de colunas é funcionalmente dependente de outro quando o conjunto determinado pode ter apenas um valor por determinado valor do conjunto determinante.

Mas isso não implica que diferentes valores determinantes tenham diferentes valores determinados.

Uma superchave é um conjunto de colunas que tem um valor de sublinha diferente em cada linha. Um CK é uma superchave que não contém nenhuma superchave menor. Um PK é algum CK que você escolheu para ser PK. Toda O conjunto de colunas depende funcionalmente de cada superchave. Alguns dos quais são CKs. Um dos quais pode ser PK.

Mas isso não significa que algumas sub-linhas outras do que uma superchave/CK/PK (e todo sub-linha deve ser funcionalmente dependente deles por definição) é único.

Não com base em A sendo PK/CK. A sendo PK/CK implica que A e todo superconjunto de A é único. Se você "alterar A" no sentido de olhar para uma linha diferente ou para um valor de tabela diferente que tenha um valor A diferente para essa linha (que não pode estar em nenhuma outra linha de qualquer tabela), isso não restringir o que B pode ser.

Alguns outros restrição pode restringir o que B pode ser. Por exemplo, se o FD {Fornecedor} -> {Supplier Phone} for válido, isso restringe o que o telefone do fornecedor pode estar em outras linhas, mesmo que o item seja PK não.

A validade de qualquer FD em particular depende de quais linhas devem entrar em uma tabela em uma determinada situação e quais situações podem surgir. Então, o que os FDs mantêm determina quais são as superchaves e os CKs. Então você pode escolher um CK como PK.