Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Existência de mais de um PK em uma table

Uma coisa que nunca entendi e sempre me causa confusão é esta questão de 2 chaves primárias em uma mesma tabela.

Sempre aprendi que uma tabela pode ter apenas uma chave primária. E se vc deseja que um valor não se repita na tabela ele deve ser colocado como UNIQUE.

Neste caso, o que significa a existência de 2 chaves primárias? Significa que a chave primária é composta por 2 campos? Ou seja, a combinação dos 2 campos não podem se repetir? No caso, 'Nº Nota Fiscal' e 'Código Produto' são PK. Então entendi que não posso ter uma mesma nota fiscal com um mesmo código do produto se repetindo. Mas se possuo uma nota fiscal diferente eu poderia repetir o código do produto (e vice versa). Está correto meu entendimento?

3 respostas

Olá Eduardo, tudo bem?

É normal, que em bases de dados, possam existir mais de uma chave primária.

Por exemplo:

Vamos pensar, em um cadastro de usuário, onde o e-mail e o CPF, não pode se repetir.

Caso o usuário 01, for cadastrar, será:

CPF: 12312312345
email: usuario@gmail.com

Caso o usuário 02, for cadastrar, será:

CPF: 12312312345
email: usuario2@gmail.com

Caso o usuário 03, for cadastrar, será:

CPF: 12312312346
email: usuario@gmail.com

O usuário 01, será cadastrado normalmente, porém, nem o 2 nem o 3, serão, pois haverão chaves "únicas", sem que seja necessário, realizar uma consulta para verificar se elas já estão inseridas.

Existem linguagens, que já retornam valores customizados de erro nesse quesito, então, você economiza processamento em não entrar na estrutura para realizar uma consulta..

Qualquer dúvida, estou a disposição!

Abraços.

Cayo, bom dia. Tudo bem?

De tudo o que pesquisei é que existem dois tipos de chaves:

  • Chave Primária Simples - onde apenas uma coluna é a chave do registro e não pode se repetir.
  • Chave Primária Composta - onde possuo combinações de colunas para representar o registro.

No exemplo da aula de SQL haviam duas PK, a de Nota Fiscal e a de Código do Produto. Assim, uma NF poderia ter mais de uma Código do Produto e um Código poderia estar em mais de uma NF, mas nunca poderia ser repetido dentro da mesma NF.

No exemplo que você deu de CPF e e-mail, entendo que para dar certo o CPF deveria ser PK e o e-mail UNIQUE. Caso contrário, eu poderia cadastrar o mesmo CPF com e-mail diferente ou vice versa.

solução!

Olá Eduardo, tudo bem? É exatamente como você falou, uma chave composta é a combinação de 2 campos, portanto não podem se repetir juntos, por exemplo, se você tiver um item nota fiscal que tenha o número 1 e o código do produto 5, então não pode existir outro registro nessa mesma tabela item nota fiscal com o número 1 e o código do produto 5. Porém é possível ter um item nota fiscal com número 1 mas com o código do produto 2, ou o contrário, porém os dois juntos igual ou registro não é possível.

Espero ter ajudado!