Pular para o conteúdo principal

(SQL) Unique e primary key diferenças



PRIMARY KEY define qual é a chave primária da tabela. Ou seja, qual é o conjunto de colunas que deve identificar uma tupla de forma única e não-ambígua. Além disso, a tabela costuma ser organizada internamente de acordo com a forma como a chave primária é definida. Além disso, o que é exportado para outras tabelas como chave estrangeira é a chave primária.
Entretanto, pode haver mais do que um jeito de se identificar uma tupla de forma única, e é aí que o UNIQUE entra.
Por exemplo, vamos supor que uma tabela usuario tenha os seguintes campos: nome, id, CPF, RG, e-mail e data de nascimento.
Vejamos, o id seria a chave primária. Entretanto, não podemos ter dois usuários com o mesmo e-mail, então o e-mail é UNIQUE. Também não podemos ter dois usuários com o mesmo RG ou o mesmo CPF, que são UNIQUE também.
Além disso, de vez em quando uma pessoa pode trocar de RG. Se o RG fosse a chave primária, você teria que sair cascateando as alterações em todas as chaves estrangeiras, problema esse que não existe em colunas UNIQUE que não sejam PRIMARY KEY.
Uma outra diferença, é que colunas UNIQUE podem ser NULL, enquanto que colunas PRIMARY KEY, não podem. Por exemplo, nesse caso que dei acima, isso seria útil se você for cadastrar um estrangeiro que não tem CPF e nem RG. Se um desses fosse chave primária, você iria se ferrar.

Comentários

Postagens mais visitadas deste blog

(Java) Tipo primitivo, classe invólucro, tamanho

A classe invólucro parece muito com o tipo primitivo, na maioria as diferenças estão na letra inicial que é minuscula no tipo primitivo e maiúscula na classe invólucro. A classe invólucro tem por função tratar o tipo primitivo como uma classe, pois assim será possivel executar métodos como parseInt ou valueOf.

(SQL)Chave primária e auto increment

A chave primária ou primary key()  evita repetições de registros no banco de dados, ela geralmente vai estar no cpf, rg, matricula, que são coisas unicas nos campos de um cadastro, exemplo : primary key(cpf) Já o auto_increment pode ser usado para criar uma automação incrementando +1 automaticamente no campo determinado, exemplo : id int auto_increment,

(Java) Estruturas condicionais if, else, if else, switch e case

ESTRUTURA CONDICIONAL SIMPLES ESTRUTURA CONDICIONAL COMPOSTA COM ELSE CONDIÇÃO COMPOSTA ENCADEDA IF ELSE SWITCH E CASE