O conceito básico de chave de um BD é que é uma ou mais colunas que distiguem uma linha das demais dentro de uma tabela, sendo esta chamada de chave primária (PK – Primary Key) ou para relacionar com outra tabela, chamada de chave estrangeira (FK – Foreign Key). Essas chaves é que determinam a unicidade de cada registro dentro de uma tabela.
Esta unicidade dos registros, determinada pela chave, é fundamental para a criação de índices.
Tipos de Chaves
Chave Primária / Primary Key (PK)
Este tipo de chave, refere-se aos conjuntos de um ou mais campos, cujos valores, considerando a combinação de valores de todos os campos da tupla (registro), nunca se repetem e que podem ser usadas como um índice para os demais campos da tabela do banco de dados. Em chaves primárias, não pode haver valores nulos nem repetição de tuplas.
Quando a chave é simples ela é formada por um único campo da tabela, sendo que este campo não pode ter dois valores ou mais registros de mesmo valor, e não pode conter registro nulo.
Quando a chave é composta, ou seja, formada por mais de um campo, os valores podem se repetir, mas não a combinação desses valores. Exemplo: a tabela ‘Livros_Autores’ tem como chave primária (cod_livro, cod_autor). Podem existir nessa tabela os registros: (5, 9), (5, 10), (4, 9), (9, 5). Mas não podem existir dois registros (5, 9).
Quando se cria uma chave primária, automaticamente estamos criando um índice do tipo aglomerado (CLUSTERED), sendo este criado por padrão quando não existe outro do mesmo tipo. Caso haja, será criado um do tipo não-aglomerado (NONCLUSTERED).
Podemos criar definir as chaves primárias logo após a declaração dos campos:
CREATE TABLE nome_tabela ( campo1 NOT NULL, campo2 NOT NULL, campoX , PRIMARY KEY (campo1, campo2) )
Vamos ver um exemplo abaixo:
Chave Estrangeira / Foreign Key (FK)
Este outro tipo de chave é utilizado para criar os relacionamentos entre as tabelas. Imagine que você queira cadastrar vários produtos que sejam de uma determinada categoria. Toda vez que você preencher os dados do produto, precisaremos indicar a chave primária da tabela categoria que seja da categoria que o nosso produto pertencerá. Ou seja, quando inserirmos um registro na tabela de produtos com o “id_categoria”, essa chave primária da tabela “categorias” representará uma chave estrangeira (FK) dentro da tabela de produtos. É uma chave que vem de fora, de outra tabela.
Com essa chave estrangeira, podemos facilitar as consultas e fazer cruzamento de dados através destas referências, o que poderia gerar uma consulta que iria pegar o nome do produto e o nome da categoria que ele pertence para exibirmos em uma listagem dos dados.
Perceba que a chave estrangeira não será única dentro da tabela de produtos, já que podemos ter vários produtos de uma categoria. Já no caso da chave primária, sempre será e deverá ser única.
Fico a disposição para esclarecimento de qualquer dúvida pessoal. Grande abraço!
Parabéns. Seu trabalho é excelente. Sucesso e um forte abraço.
Quais são os melhores exemplos de chave estrangeira?
Jozza, tem um exemplo na explicação da postagem.
obrigado amigo, não tinha me atentado ao exemplo
Muito bom!
conteúdo de grande valor para mim, valeu!!
ola como posso adeqerir ma chave de um produto por favor ajuda
Boa noite, e no caso de chaves candidatas? tem como eu definir? ou pelos definir aquele atributo como unico?(tipo o cpf)
Precizo e informar…
Olá…?gostaria de aprender mas sobre esse assunto, estou estudando sobre banco de dado…
Me ajudou bastante aqui, Diego. Obrigado!
Olá!!!Boa Noite!!!Me ajuda!!!!Quero um curso mais avançado de Banco de Dados.Me ajude!!!! Acho muito difícil.