Este artigo carece de reciclagem de acordo com o livro de estilo. Sinta-se livre para editá-lo(a) para que este(a) possa atingir um nível de qualidade superior. (Fevereiro de 2012) |
Esta página ou seção foi marcada para revisão devido a incoerências ou dados de confiabilidade duvidosa. Se tem algum conhecimento sobre o tema, por favor, verifique e melhore a coerência e o rigor deste artigo. Considere colocar uma explicação mais detalhada na discussão. (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:
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_constraintUma "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.
Sistemas de gerenciamento de bancos de dados | |
---|---|
Modelagem · Normalização · Estrutura de banco de dados · GDBS distribuídos · Integridade referencial · Álgebra relacional · Cálculo relacional · Banco de dados relacional · Mapeamento objeto-relacional · Modelo relacional · Banco de dados objeto-relacional · Processamento de transação | |
Conceitos | Banco de dados · ACID · CRUD · Null · Chave candidata · Chave estrangeira · Chave primária · Superkey · Surrogate key · Axiomas de Armstrong · NoSQL |
Objetos | Relação (Tabela) · Vista · Trigger · · Cursor · Log de transação · Transação · Índice · Procedimento armazenado · Partição |
Componentes | Controle de concorrência · Dicionário de dados · JDBC · ODBC · Linguagem de consulta · Query optimizer · Query plan |
Funções | Gestão e automatização · Otimização de consulta · Replicação |
Produtos disponíveis no mercado: Orientados a objeto (Comparativo) · Relacionais (Comparativo) · Orientados a documento · NoSQL · NewSQL |