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
Postar um comentário