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 a diferença e algumas respostas para dúvidas relacionadas a chave primária e sua finalidade em uma tabela do banco de dados.

Home » Tecnologia

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.

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:

  • Identificação única: A função principal de uma chave primária é tornar um registro de uma tabela único, ou seja, sua finalidade está relacionada com a integridade dos dados. com uso da chave primária podemos garantir que um dado será único, evitando assim a repetição de um dado que poderia causar grande problema na identificação gerando por exemplo informações dúbias. Imagine um sistema de cadastro que permitisse que um CPF fosse cadastrado duas vezes? Consegue imaginar os problemas que isso poderia gerar?
  • Integridade: 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.
  • Relacionamento: 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).

Posso criar uma tabela sem chave primária?

Sim isso é possível, mas não é o ideal na maioria dos casos. Se você está criando uma tabela que não fará relacionamento com nenhuma outra tabela, na verdade não precisará necessariamente ter uma chave primária, exceto se precisar garantir que os dados sejam únicos. Mas a chave primária está mais relacionada a situações onde você tem múltiplas tabelas e elas serão relacionadas entre si.

Qual a diferença de chave primária e auto numeração?

Auto numeração é um recurso do banco de dados que permite que um campo tenha o seu valor gerado automaticamente e de forma sequencial, não necessitando assim informar o valor para ele. Imagine que você tenha um cadastro e queira numerar sequencialmente os registros, para isso poderia criar um campo ID ou código e setar para ser auto-increment (mySQL) ou identity (SQL Server), por exemplo.

A chave primária pode ser aplicada inclusive nesse mesmo campo, mas a sua função é de garantir a integridade, dados únicos e permitir relacionamento, Mas ela não implica na geração de valores automático para um campo, seja ele qual for.


VEJA TAMBÉM:

CANAL NO YOUTUBE

INSCREVA-SE:



Sistemas Web

Playlist de SQL

Youtube Youtube Youtube
© 2021 - Utilidade Pública: Tecnologia, Educação e Cidadania.