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

(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...

(Android Studio) Radio button e group - Verificando qual está marcado

Diferente do checkbox, o radio Button, aceita que você escolha apenas uma opção. Isso, se faz usando o radio group. PRIMEIRO adiciona o radioGroup, muda a orientação dele para vertical, se for o caso, e coloca os dois radioButton dentro. Depois de criar, é preciso criar a variável que recebe as informações. Agora, abaixo, aprenda a verificar se algum radioButton foi selecionado no radioGroup. Faremos isso dentro de um método. Outra coisa interessante é que vamos adicionar o evento setOnCheckedChangeListener()  para verificar se tem algum radio Button marcado. No parêntese desse evento entrará um comando que chamará um método. Meio complicado, né? No caso abaixo, o evento foi chamado junto com o objeto resposta. resposta.setOnCheckedChangeListener Veja que eu digitei apenas new RadioGroup e apareceu várias opções, no caso basta clicar na primeira opção Após isso, irá aparecer um método sobrescrito, como pode se ver abaixo. Basicame...

(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.