Pergunta

Por que as restrições exclusivas são necessárias no banco de dados?

Você pode fornecer algum exemplo?

A chave primária é única por padrão ... compreensível, pois são referidas em outras tabelas como chaves estrangeiras ... é necessária a relação para conectá -las à plataforma RDBMS ...

Mas por que se referiria a outras colunas como únicas, o que é o benefício de fazer isso?)

Foi útil?

Solução

O nome de usuário é único, mas não PK. UserID é pk.

Outras dicas

As restrições devem ser usadas o máximo possível para garantir que o banco de dados esteja em conformidade com as expectativas. Nesse caso em particular, restrições exclusivas são mais úteis para garantir a qualidade dos dados.

Uma restrição exclusiva pode, por útil, em uma coluna de endereço de email, por exemplo, o que exigiria que não haja duas linhas o mesmo endereço de email - embora não fosse um PK e normalmente seria permitido mudar.

Sempre que você tem uma expectativa de exclusividade, e o valor ainda não é restrito por um PK ou similar, além de adicionar uma restrição exclusiva, pode garantir que suas suposições sejam sempre preservadas.

Em geral, as restrições também podem ser usado pelo otimizador.

O segundo artigo da série de restrições de Celko é especificamente sobre restrições únicas.

Quando algo é uma chave primária, não espero que mude - deve ser estática, pois é usada para vincular outras tabelas no seu banco de dados. Se a sua "chave primária" mudará (digamos, um nome de usuário), deve ser um campo adicional na sua tabela, e a chave primária deve ser algum tipo de ID incrementador.

No entanto, você ainda não pode ter dois usuários com o mesmo nome de usuário - nesse caso, uma restrição exclusiva é necessária.

Existem algumas diferenças entre um PK e um UQ. Um PK não pode ter valores nulos em que um UQ pode ter 1 valor nulo (o Oracle permite vários valores nulos). Você só pode ter 1 PK por tabela, mas pode ter vários UQ por tabela A PK por padrão está agrupado (mas não precisa ser)

Na maioria das vezes, enquanto projetamos o banco de dados, mantemos nossas chaves primárias como campo de identidade. Mesmo que faça sentido torná -lo como campo de identidade, ele pode não resolver a questão de alcançar a singularidade. Para garantir que a linha seja única, colocamos uma restrição única na coluna (como Andrey especificou um usuário). Isso é o que Msdn dizer:

Você pode usar restrições exclusivas para garantir que nenhum valores duplicados seja inserido em colunas específicas que não participam de uma chave primária. Embora uma restrição única e uma restrição de chave primária aplique a singularidade, use uma restrição única em vez de uma restrição de chave primária quando deseja aplicar a singularidade de uma coluna ou combinação de colunas, isso não é a chave primária.

Hth

Se os dados precisarem ser únicos, você precisará de uma restrição exclusiva. Caso contrário, você receberá dados ruins. Um PK deve ser único, mas isso não significa que outros dados também não precisem ser únicos. Talvez cada registro deva ter um tempo único, é improvável que isso seja o PK, mas a singularidade deve ser aplicada de alguma forma.

Em particular, se você usar uma chave substituta para o PK (que eu recomendo), você deseja garantir que os campos -chave naturais façam parte de uma contragem única para evitar a duplicação de dados.

A mesma coisa para dados do tipo de pesquisa. Suponha que você tenha uma lista de especialidades profissionais para os médicos que seus usuários podem escolher quando inserem dados e supõem que também podem adicionar a esta lista, se precisarem. Uma restrição única impedirá que o oncologista seja inserido várias vezes, o que será mais fácil quando você deseja que o OT encontre o número de pessoas que são oncologistas.

O emailID pode ser único.

diferença entre ID único e Chave primária é um suporte exclusivo de um único nulo em toda a coluna, mas o PK não.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top