Predefinição:Manutenção/Categorizando por assunto
Esta página ou seção foi marcada para revisão devido a incoerências ou dados de confiabilidade duvidosa.Fevereiro de 2008) ( |
Chaves primárias (em inglês, Primary keys ou "PK"), sob o ponto de vista de um banco de dados relacional, referem-se aos conjuntos de um ou mais campos, cujos valores, considerando a combinação de valores em caso de mais de uma chave primária, nunca se repetem na mesma tabela e, desta forma, podem ser usadas como um índice de referência para criar relacionamentos com as demais tabela do banco de dados (daí vem o nome banco de dados relacional). Portanto, uma chave primária nunca pode ter valor nulo, nem repetição.
Simplificando, quando a chave primária é simples, ou seja, é formada por um único campo da tabela, esse campo não pode ter dois ou mais registros de mesmo valor e também não pode conter nenhum registro nulo. Se a chave primária é composta, ou seja, formada por mais de um campo, os valores de cada campo podem se repetir, mas nunca 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).
Ao criarmos uma chave primária, criamos automaticamente um índice do tipo aglomerado (CLUSTERED). Este é o tipo criado por padrão, mas caso já exista um índice desse tipo em sua tabela, então é necessário ser criado um índice do tipo não-aglomerado (NONCLUSTERED).
Podemos inserir uma chave primária durante ou após a criação da tabela. Com a tabela já criada, o campo que escolhermos para ser a chave primária deve ter a opção NOT NULL adicionada. Para inserirmos durante a criação usamos a seguinte sintaxe:
CREATE TABLE nome_tabela ( Codigo int CONSTRAINT nome_constraint PRIMARY KEY CLUSTERED, Nome nvarchar(17) )
Nessa estrutura, escolhemos um índice do tipo CLUSTERED e resolvemos nomear com algum nome desejado a constraint de primary key. O índice poderia ser do tipo Nonclustered e poderíamos deixar o próprio SQL Server nomear a constraint, da seguinte forma:
CREATE TABLE nome_tabela ( Codigo int PRIMARY KEY NONCLUSTERED, Nome nvarchar(17) )
Além disso, pode-se definir a chave primária após a declaração dos campos, como segue:
CREATE TABLE nome_tabela ( campo1 <tipo> NOT NULL, campo2 <tipo> NOT NULL, campoX <tipo>, PRIMARY KEY (campo1, campo2) )
Na definição de chave primária, usamos o comando ALTER TABLE para inserirmos e excluirmos uma primary key. As sintaxes respectivamente são:
ALTER TABLE nome_tabela ADD CONSTRAINT nome_constraint PRIMARY KEY NONCLUSTERED(nome_campo)
ALTER TABLE nome_tabela DROP CONSTRAINT nome_constraint
Uma "chave candidata" consiste em um atributo ou grupo de atributos cujo valor identifica unicamente cada tupla em uma relação e para o qual nenhum dos atributos pode ser removido sem destruir a identificação única.