EDUCAÇÃO / TECNOLOGIA / UTILIDADE PÚBLICA

Chave primária simples e chave primária composta

É possível criar duas chaves primárias em uma mesma tabela? Ou o conceito correto seria criar uma chave primária composta? Entenda.

Uma das características mais importantes da modelagem de dados é compreender o conceito de chave primária. A chave primária é usada para criar um mecanismo de controle que permite com que os dados inseridos em uma tabela do banco de dados sejam consistentes, isto é, que não haja dados duplicados.

[QUEBRA]

Chave primária simples

O exemplo abaixo mostra como criar uma tabela com uma chave primária simples. Perceba que a chave primária foi criada no campo cidade.

create table cidades(
 cidade varchar(100) primary key,
 estado varchar(10),
 populacao int
)

Agora considere o exemplo abaixo que irá inserir os dados das cidades de Rio Claro/SP e Rio Claro/RJ na tabela criada.

insert into cidades values('Rio Claro','SP',185421)
insert into cidades values('Rio Claro','RJ',17216)

No exemplo acima teremos um erro, pois há uma violação da chave primária, já que o nome Rio Claro será duplicado e isto não é permitido.

Chave primária composta

A solução para o problema acima é criarmos uma chave primária composta. É muito importante entendermos que não existe duas chaves primárias e sim chave primária composta.

A chave primária composta é aquela que é criada em dois campos e desta forma passa a utilizar a junção dos dados dos dois campos indicados para formar um valor único e assim aplicar o bloqueio de duplicidade.

No nosso exemplo, poderemos usar o campo estado junto com o campo cidade para formar uma chave composta. Desta forma Rio Claro/SP será diferente de Rio claro/RJ. Veja o exemplo abaixo:

create table cidades(
 cidade varchar(100),
 estado varchar(10),
 populacao int,
 CONSTRAINT pk_CE primary key(cidade,estado)
)

Constraint é o mesmo que restrição, já que a chave primária é uma restrição. pk_CE é o nome da restrição. Cidade e  estado são os campos que usei para criar a chave composta.

Se executarmos novamente o exemplo do insert, como mostrado abaixo, não teremos erro já que a junção dos nomes das cidades com o estado gerou termos diferentes.

insert into cidades values('Rio Claro','SP',185421)
insert into cidades values('Rio Claro','RJ',17216)

Simples não?

Alguém poderia perguntar: Não seria melhor criar um campo de código da cidade e usá-lo como chave primária simples? Sim. Quando isso for possível, creio que seria mesmo melhor, mas nem sempre é. Outro ponto importante é que muitos bancos já estão constituídos e outros são objetos de sistemas legados. Enfim, há casos e casos.

Chaves candidatas

Em uma tabela, dependendo da modelagem de dados e das características da mesma, pode existir campos que por sua própria existência já configura um candidato a chave primária, como é o caso dos campos CPF, RG, Nº do título de eleitor, entre outros. Isto acontece porque esses atributos não podem por padrão ter valores repetidos.

Em outros casos há tabelas em que não existe um campo candidato a chave primária e ei devemos criar um campo, ainda que a única finalidade dele seja de exercer o papel de identificação dos registros no banco.

Definição

Uma chave primária é uma restrição que criamos em cima de um ou mais campos de uma tabela no banco de dados para permitir que apenas dados sem repetição sejam inseridos nela. Esta característica que é gerenciada pelo próprio banco ajuda a garantir a integridade dos dados.

Por que preciso usar uma chave primária?

Seja ela simples ou composta, sua utilidade e necessidade é grande em uma tabela do banco. Veja abaixo alguns porquês:

Diversas operações, como aquelas que envolvem alteração ou exclusão de dados necessitam de uma identificação para serem realizadas. Ao excluir um dado é preciso dizer ao banco quais registros serão afetados. Se a ideia é excluir um grupo de registros não há necessidade de usar uma chave primária, mas se você precisa excluir um registro específico é necessário ter um campo que o identifica de forma a diferenciá-lo dos demais e isto precisa ser feito com absoluta certeza. Nesta hora entra a chave primária.

Outra razão pelo qual devemos criar e usar chaves primárias é que o modelo de banco de dados relacional exige isso. Por relacional devemos entender que há vários objetos (tabelas) e que os mesmos estão relacionados entre si. Para garantir que esse relacionamento seja íntegro usamos chave primária e chave estrangeira que liga um campo da tabela A (chave primária) com um campo da tabela B (chave estrangeira).

 

Veja também

Comentários

Õlá Gostaria de um exemplo para criar uma chave primaria com 10 digitos assim mais ou menos 1120189 seria a primeira 1120190 e assim por diante... carlos eduardo angeline // São Caetano do Sul
Luis, parabéns pelo seu artigo .. muito elucidativo e o exemplo foi perfeito ... Obrigado. João Carlos Cordeiro // Curitiba-PR
Interessante, e este exemplo gera uma dúvida, se eu tivesse uma tabela referenciando esta tabela através de chaves estrangeiras, seria possível criar uma chave estrangeira composta? E seria necessário dois campos na outra tabela ou um campo com algum tipo de combinação? Grato. Internauta // Aju
Show de Bola! Conseguir compreender o conceito primary key /PK e Composta. Rubem da Silva Cerqueira // Salvador
Primeiramente, parabéns pelo artigo. Mas há uma ressalva: onde você diz que a chave primária composta é a formada por dois campos, na verdade deveria ter informado que ela contém DOIS ou MAIS campos. O caso do dois campos é aplicado neste exemplo específico, porém da forma como foi escrita, dá a impressão de ser algo generalizado. Valeu. Rob // Mauá
© 2008-2017 | LUIS.BLOG.BR | Política de Privacidade | Em Jesus Cristo eu confio