Estou usando o banco de dados mysql. Eu tenho uma confusão entre chave primária e chave exclusiva.
Por favor, ajude-me onde devo criar a chave primária e única. Quero dizer em que situação criamos chave única ou chave primária.
Estou usando o banco de dados mysql. Eu tenho uma confusão entre chave primária e chave exclusiva.
Por favor, ajude-me onde devo criar a chave primária e única. Quero dizer em que situação criamos chave única ou chave primária.
Respostas:
Chave primária:
NULL
- por exemplo, o MySQL adicionaNOT NULL
Chave única:
NULL
valoresNULL
; várias linhas podem ter NULL
valores e, portanto, não podem ser consideradas "únicas"Chave exclusiva (Reino Unido) : é uma coluna ou um grupo de colunas que pode identificar uma exclusividade em uma linha.
Chave primária (PK) : também é uma coluna ou grupo de colunas que pode identificar uma exclusividade em uma linha.
Portanto, a chave Primária é apenas outro nome para a chave exclusiva, mas a implementação padrão no SQL Server é diferente para Chave Primária e Exclusiva.
Por padrão:
Depende realmente de qual é o seu objetivo ao decidir criar um Reino Unido ou PK. Segue uma analogia como "Se há uma equipe de três pessoas, então todas são colegas, mas haverá uma que será um par de colegas: PK e UK têm uma relação semelhante". Eu sugeriria a leitura deste artigo: O exemplo dado pelo autor pode não parecer adequado, mas tente ter uma idéia geral.
http://tsqltips.blogspot.com/2012/06/difference-between-unique-key-and.html
[table_name]_pkey
) é adicionada à tabela (eu ouvi isso chamado de chave substituta). Fonte: postgresqltutorial.com/postgresql-primary-key Eu sou novo nisso tudo, então eu apreciaria um pôster com mais conhecimento para apontar as nuances que eu perdi.
Para uma organização ou empresa, existem muitas entidades físicas (como pessoas, recursos, máquinas, etc.) e entidades virtuais (suas tarefas, transações, atividades). Normalmente, os negócios precisam registrar e processar informações dessas entidades comerciais. Essas entidades comerciais são identificadas em um domínio comercial inteiro por uma Chave.
Conforme o RDBMS em potencial, Key (também conhecida como Chave do Candidato) é um valor ou conjunto de valores que identificam exclusivamente uma entidade.
Para uma tabela de banco de dados, existem tantas chaves que podem ser elegíveis para chave primária. Para que todas as chaves, chave primária, chave exclusiva, etc. sejam chamadas coletivamente como Chave de Candidato. No entanto, o DBA selecionou uma chave da chave candidata para pesquisar registros, chamada Chave Primária.
Diferença entre chave primária e chave exclusiva
1. Comportamento: Chave Primária é usada para identificar uma linha (registro) em uma tabela, enquanto Chave Única é para evitar valores duplicados em uma coluna (com exceção de uma entrada nula).
2. Indexação: Por padrão, o mecanismo SQL cria o Índice em Cluster na chave primária, se não existir, e o Índice Não em Cluster na Chave Exclusiva.
3. Nulabilidade: A chave primária não inclui valores nulos, enquanto a chave exclusiva pode.
4. Existência: uma tabela pode ter no máximo uma chave primária, mas pode ter várias chaves exclusivas.
5. Modificabilidade: você não pode alterar ou excluir valores primários, mas os valores de chave exclusiva podem.
Para mais informações e exemplos:
Uma chave primária deve ser exclusiva.
Uma chave exclusiva não precisa ser a chave primária - veja a chave candidata .
Ou seja, pode haver mais de uma combinação de colunas em uma tabela que pode identificar exclusivamente uma linha - apenas uma delas pode ser selecionada como chave primária. Os outros, embora únicos, são chaves candidatas.
Diferença entre Chave Primária e Chave Única
+-----------------------------------------+-----------------------------------------------+ | Primary Key | Unique Key | +-----------------------------------------+-----------------------------------------------+ | Primary Key can't accept null values. | Unique key can accept only one null value. | +-----------------------------------------+-----------------------------------------------+ | By default, Primary key is clustered | By default, Unique key is a unique | | index and data in the database table is | non-clustered index. | | physically organized in the sequence of | | | clustered index. | | +-----------------------------------------+-----------------------------------------------+ | We can have only one Primary key in a | We can have more than one unique key in a | | table. | table. | +-----------------------------------------+-----------------------------------------------+ | Primary key can be made foreign key | In SQL Server, Unique key can be made foreign | | into another table. | key into another table. | +-----------------------------------------+-----------------------------------------------+
Você pode encontrar informações detalhadas em:
http://www.dotnet-tricks.com/Tutorial/sqlserver/V2bS260912-Difference-between-Primary-Key-and-Unique-Key.html
Uma chave primária tem a semântica de identificação da linha de um banco de dados. Portanto, pode haver apenas uma chave primária para uma determinada tabela, enquanto pode haver muitas chaves exclusivas.
Também pelo mesmo motivo, uma chave primária não pode ser NULL (pelo menos no Oracle, não tenho certeza sobre outros bancos de dados)
Uma vez que identifica a linha, nunca deve mudar. A alteração das chaves primárias provavelmente causará graves dores e provavelmente condenação eterna.
Portanto, na maioria dos casos, você deseja algum ID artificial para chave primária que não seja usado para nada, mas para identificar linhas únicas na tabela.
As teclas exclusivas, por outro lado, podem mudar o quanto você desejar.
Uma chave primária é uma chave exclusiva.
Cada tabela deve ter no máximo UMA chave primária, mas pode ter várias chaves exclusivas. Uma chave primária é usada para identificar exclusivamente uma linha da tabela. Uma chave primária não pode ser, NULL
pois NULL
não é um valor.
Sei que esta pergunta tem vários anos, mas gostaria de fornecer uma resposta para isso, explicando por que, e não como
Objetivo da chave primária : identificar uma linha em um banco de dados exclusivamente => Uma linha representa uma única instância do tipo de entidade modelada pela tabela. Uma chave primária reforça a integridade de uma entidade, AKA Entity Integrity. Chave Primária seria um índice em cluster, ou seja, define a ordem em que os dados são fisicamente armazenados em uma tabela.
Objetivo da chave exclusiva : Ok, com a chave primária, temos uma maneira de identificar exclusivamente uma linha. Mas eu tenho uma necessidade de negócios que, outra coluna / um conjunto de colunas deve ter valores únicos. Bem, tecnicamente, considerando que essas colunas são únicas, pode ser um candidato para reforçar a integridade da entidade. Mas, pelo que sabemos, esta coluna pode conter dados originários de uma organização externa que podem ter dúvidas sobre ser único. Posso não confiar nisso para fornecer integridade à entidade. Eu apenas a tornei uma chave exclusiva para atender aos meus requisitos de negócios.
Ai está!
Se o design do banco de dados for tal que não há necessidade de chave estrangeira, você poderá usar a chave Exclusiva ( mas lembre-se de que a chave exclusiva permite um valor nulo único ).
Se o seu banco de dados exige chave estrangeira, você sai sem opção, mas com a chave primária.
Para ver a diferença entre a chave única e a chave primária, visite aqui
Chave exclusiva: - Deve ser usada quando você precisa fornecer um valor exclusivo. No caso de chave exclusiva, também são permitidos valores nulos. Chaves únicas são aquelas chaves únicas e não semelhantes nessa coluna, como por exemplo, seu nome de animal de estimação .it pode ser nada parecido com nulo e se você estiver perguntando no contexto do banco de dados, deve-se notar que cada nulo é diferente de outro nulo no banco de dados. EXCEPT-SQL Server em que null = null é verdadeiro
chave primária: - Ela deve ser usada quando você precisar identificar uma linha de maneira única. a chave primária que é única para cada linha em uma restrição de banco de dados é que ela não permite nulo nela. tem uma coluna que é incremento automático e é a chave principal da tabela. além disso, ele pode ser usado como uma chave estrangeira em outra tabela. o exemplo pode ser orderId em uma tabela de pedidos e billId em uma tabela de faturamento .
agora voltando à situação em que usá-lo: -
1) chave primária na coluna que não pode ser nula na tabela e você está usando como chave estrangeira em outra tabela para criar relacionamento
2) chave exclusiva na tabela onde isso não afeta na tabela ou no banco de dados inteiro, se você toma o nulo para uma coluna específica, como lanches no restaurante, é possível que você não tome lanches no restaurante
diferença entre chave primária e chave exclusiva
Ambos Primary key
e Unique Key
são usados para definir exclusivamente uma linha em uma tabela.
Primary Key
cria a clustered index
da coluna enquanto a Unique creates an unclustered index of the column
.
A Primary Key
não permite NULL value
, no entanto a Unique Key
, permite one NULL value
.
A Chave Primária Simplesmente é única e não pode ser nula, única pode ser nula e pode não ser única.
may not be unique
significa aqui?
O principal objetivo da chave primária é fornecer um meio para identificar cada registro na tabela.
A chave primária fornece um meio de identificar a linha, usando dados dentro da linha. Uma chave primária pode ser baseada em uma ou mais colunas, como nome e sobrenome; no entanto, em muitos modelos, a chave primária é um número gerado automaticamente a partir de uma coluna de identidade.
Uma chave primária possui as seguintes características:
Uma chave exclusiva também é chamada de restrição exclusiva. Uma restrição exclusiva pode ser usada para garantir que as linhas sejam exclusivas no banco de dados.
Já não fazemos isso com a chave primária? Sim, sim, mas uma tabela pode ter vários conjuntos de colunas que você deseja que sejam únicos.
No SQL Server, a chave exclusiva possui as seguintes características:
fonte: aqui
Os principais recursos de uma chave primária são:
Ele deve conter um valor exclusivo para cada linha de dados. Não pode conter valores nulos. Apenas uma chave primária em uma tabela.
Os principais recursos de uma chave exclusiva são:
Também pode conter um valor exclusivo para cada linha de dados.
Também pode conter valores nulos.
Várias chaves exclusivas em uma tabela.
PRIMARY KEY = UNIQUE KEY + Not Null CONSTRAINT