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

(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 poo) - encapsulamento

O encapsulamento é como se fosse uma forma de tornar o código algo mais restrito por meio da criação de uma interface e do private. Primeiro passo: crie uma interface e coloque todos os métodos principais nela com o nome abstract 2°passo : basta criar uma classe com os métodos especiais getter e setter, criar os atributos normalmente. 3°passo : fazer a implementação da interface na classe e chamar os métodos da interface para a classe. Basta digitar implements e nome da interface, depois clicar na lâmpada vermelhar, onde terá a opção para implementar todos os métodos abstratos @override significa : sobrescrever 4° passo : usar normalmente o método dentro da classe

(Android Studio) Aplicativo gasolina ou álcool

1° Passo: criei a interface visual 2°passo: criar as variaveis e colocar os id´s dentro delas 3°passo: eu comecei fazendo tudo em apenas um método, que foi o método on click do botão. Depois decidir criar outros dois métodos, só por organização. Esses dois métodos foram o de verificação se os campos realmente estão marcados e outro método que fazia o calculo para saber se é melhor álcool ou gasolina. Esse primeiro método que eu criei abaixo, é responsável por dizer se o melhor é gasolina ou álcool, perceba que ele irá modificar o texto. Abaixo, esse outro método é responsável por verificar se os campos estão vazios. Caso esteja vazio ele vai mostrar o erro, caso não esteja, ele irá continuar a execução do primeiro método que diz qual é o melhor combustível. Pronto, esse é o método principal, pois ele é o ON CLICK, veja que ficou bem pequenininho, pois só precisará executar os métodos já criados.