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.
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.
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.
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.
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.
Seja ela simples ou composta, sua utilidade e necessidade é grande em uma tabela do banco. Veja abaixo alguns porquês:
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.
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.
COMPARTILHE: Facebook Twitter WhatsApp