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