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.

(Android Studio) Como trabalhar com checkbox e classe array list

Nem sempre é possível trabalhar com vários check box puros, isso visto que o usuário do sistema pode marcar todos, e dentro de um textview só aparece um. O array list é uma maneira de mostrar todos ao mesmo tempo. 1°Passo : crie um objeto com a classe ArrayList que guarda String. Nesse caso o objeto se chama check. 2°Passo : obviamente, a estrutura de checkbox deve estar criada. Nesse caso ela é branca, verde, vermelho. 3°Passo: Nesse caso eu criei um método escolhendo  checkbox, que depois irei chamar dentro da ação do botão. No começo tem o check.clear(); esse comando serve para excluir as checkbox chamadas anteriormente, para que não fique se acumulando no array, basicamente ele limpa o array. depois tem o check add, esse comando vai adicionar texto dentro do objeto array "check". Texto esse que mais tarde será chamado e convertido para string. O is checked(); é um metodo que checa se o check box está marcado, ele não tem nada haver com o...

(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