No SQL, são chaves compostas ou compostas?

31

Sobre SQL (computação / bancos de dados):

Quando temos dois ou mais campos em uma tabela que, juntos, identificam seus registros exclusivamente, qual é a maneira correta de chamá-los? Chaves compostas ou compostas?

Vi na web os dois usos, por isso não tenho muita certeza.

igordcard
fonte
11
Confira estas duas tendências da Pesquisa Google: goo.gl/5u4XdR .
igordcard

Respostas:

32

A chave composta e a chave composta descrevem uma chave candidata com mais de um atributo. De acordo com o Dicionário de Banco de Dados Relacional (CJDate), eles significam a mesma coisa.

Na modelagem de ER, o termo "chave composta" também tem um significado mais específico. Significa uma chave cujos atributos constituintes são referências a chaves em outras entidades - ou seja, uma chave composta forma um relacionamento de identificação. Para a maioria dos propósitos, esse não é um conceito especialmente útil ou importante; portanto, os termos composto / composto costumam ser tratados como intercambiáveis. Provavelmente, é melhor manter a "chave composta", a menos que você esteja se referindo especificamente ao conceito de modelagem de ER de uma chave composta.

nvogel
fonte
3
"Na modelagem de ER, o termo" chave composta "também tem um significado mais específico" - Parece convincente :) Mas você tem uma citação?
usar o seguinte código
Portanto, uma chave composta seria a chave normalmente encontrada em uma tabela de junção usada para muitos relacionamentos, por exemplo?
Josh P
19

Ainda não sei por que http://en.wikipedia.org/wiki/Compound_key não foi consultado. Ele afirma muito claramente (e está correto):

No design do banco de dados, uma chave composta é uma chave que consiste em 2 ou mais atributos que identificam exclusivamente uma ocorrência de entidade. Cada atributo que compõe a chave composta é uma chave simples por si só.

Isso geralmente é confundido com uma chave composta, na qual, embora também seja uma chave que consiste em 2 ou mais atributos que identificam exclusivamente uma ocorrência de entidade, pelo menos um atributo que compõe a chave composta não é uma chave simples.

Uma chave composta é composta de elementos que podem ou não ser chaves estrangeiras. Exemplo: Em uma tabela de detalhes da Transação, a chave é (TransactionId, ItemNumber). Um detalhe da transação é uma subentidade de uma transação. TransactionId é uma chave estrangeira, referenciando a tabela Transações. O ItemNumber não é uma chave por si só. Ele identifica apenas um item exclusivamente no contexto de uma única transação.

Uma chave composta é uma chave pela qual qualquer parte da chave é uma chave estrangeira. Exemplo: em um sistema de reserva de hotel, uma reserva possui a chave composta (GuestId, HotelId, ArrivalDate). GuestId identifica um convidado e faz referência à tabela Convidados. HotelId identifica um hotel e faz referência à tabela de hotéis. ArrivalDate identifica uma data. Pode ou não haver uma tabela Datas que ela faça referência, mas identifica uma Entidade (uma Data) de qualquer maneira.

Também é digno de nota o fato: uma chave simples é uma chave composta de uma coluna, enquanto uma chave composta é composta de duas ou mais colunas.

jcolebrand
fonte
4
jcolebrand: "Uma chave composta é uma chave pela qual qualquer parte da chave pode identificar o registro." Isso está incorreto. Por definição, uma chave deve ser irredutível (uma superchave mínima). Se apenas alguns dos atributos são necessários para identificar exclusivamente uma tupla, por definição isso é uma superchave e não uma chave.
Nvogel
a) Eu estava citando a página da Wikipedia. b) Eu tendem a concordar com isso. Qualquer parte de uma chave composta é uma chave simples. Não me importo se você também chamar de superchave. Porém, não acredito que todas as chaves compostas possam ser superchaves. Portanto, eu mantenho o que está no artigo da Wikipedia, e mantenho a definição que citei. Posso buscar meu livro de design de banco de dados de capa dura publicado, se isso o deixaria mais feliz.
jcolebrand
2
Acho que você perdeu o ponto relevante, que é que uma chave composta é composta de chaves de outras entidades . Um subconjunto adequado de uma chave não pode ser uma chave. Como eu tenho certeza que você sabe, é necessário que uma chave seja mínima (dentro da tabela da qual é uma chave) - portanto, se você remover qualquer atributo dela, não será mais uma chave.
Nvogel
2
"Chave" é apenas a abreviação de "chave candidata". A definição do livro didático de uma chave candidata é e sempre foi uma "superchave mínima". Referências: Date's Dictionary pg17 ou The Alice Book, se você tiver alguma dúvida sobre a definição de uma chave.
Nvogel
11
As definições de " chave composta " e " chave do site " na página da Wikipedia foram alteradas em 13 de julho de 2014 e não correspondem mais às definições nesta resposta. (Eu não alterar as definições, apenas apontando que as definições não correspondem agora.)
spencer7593
3

Em inglês, são "chaves compostas". Por exemplo, dê uma olhada no site do MSDN (qualquer pesquisa que contenha "chave composta sql" será suficiente).

http://www.google.com/search?q=sql+composite+key+site:msdn.microsoft.com

Supondo que a pergunta se refira a bancos de dados relacionais, procurei uma definição "neutra" na Wikipedia :

Uma chave composta é uma chave composta de dois ou mais atributos em uma tabela que (juntos) identificam exclusivamente um registro

Hemme
fonte
11
Sem fonte, sem referência, sem link, sem nada ... resposta ruim.
google.com/search?q=sql+composite+key+definition só vai trazê-lo para um zilhão de locais que falam sobre SQL Composite Chaves
Hemme
11
assim será uma pesquisa no google por chave composta
jcolebrand
3
Isto é científico: googlefight.com/…
Hemme
3

Uma chave composta consiste em mais de um atributo para identificar exclusivamente uma ocorrência de entidade. Isso difere de uma chave composta, pois um ou mais dos atributos, que compõem a chave, não são chaves simples por si só.

Por exemplo, você tem um banco de dados que contém sua coleção de CDs. Uma das entidades é chamada de faixas, que contém detalhes das faixas em um CD. Esta possui uma chave composta do nome do CD, número da faixa.

dilbag koundal
fonte
2

Parece-me que uma chave composta é um superconjunto que inclui chaves compostas. Se aceitarmos que uma chave composta é feita com mais de um atributo (de qualquer tipo), e uma chave composta é feita com mais de uma chave simples. Uma chave composta é um tipo de chave composta com um significado mais específico, mas o termo chave "composta" é sempre apropriado para uso.

Tom Gnade
fonte