Qual é a diferença entre Chave primária e Chave super no DBMS

20

Eu sou novo nos DBMSs e ainda estou aprendendo a teoria.

Estou ficando realmente confuso com esse negócio importante e, depois de pesquisar no Google, reduzi-o para apenas 2 chaves que não recebo (chave primária e super chave).

Eu tenho algumas perguntas sobre DBMS. Ficaria muito grato se você puder respondê-las por mim.

1) Qual é a diferença entre Chave primária e Chave super no DBMS? Aprecio muito se você pode usar um exemplo abrangente para explicar corretamente

2) Tecla Can Primária e Super chave ambos têm várias colunas combinados para formar chave primária e chave Super?

3) A chave primária é um subconjunto da super chave ou vice-versa?

MikeHil
fonte
11
Uma coisa que é encoberta muito é que a tupla (linha) em si é uma superchave. Como a intenção é ser capaz de identificar exclusivamente a linha, ou seja, ser capaz de identificar exclusivamente a tupla contendo uma combinação específica de valores, uma maneira de fazer isso é já ter todos os valores disponíveis. Portanto, a tupla é uma superchave para si mesma, pois uma vez que conhecemos os valores na tupla, sabemos claramente como encontrar a tupla com esses valores. Parece bobo no começo, mas estabelece um limite superior para o que pode ser uma superchave para uma tupla - a própria tupla.
Dave
@Dave O conjunto de todos os nomes de colunas de uma relação / tabela (e, portanto, cada uma de suas tuplas / linhas) é uma superchave. Não "a tupla (linha) em si".
31418 philipxy
@ philipxy você está certo e eu falo errado - eu estou corrigido. Obrigado por adicionar o esclarecimento.
Dave

Respostas:

23

Uma Super Chave é simplesmente uma Chave Candidata não mínima , ou seja, uma com colunas adicionais que não são estritamente necessárias para garantir a exclusividade da linha.

Uma Chave Primária é uma Chave Candidata mínima , ou seja, todas as colunas constituintes são estritamente necessárias para garantir a exclusividade.

Como desenvolvedor / designer de banco de dados com 30 anos de experiência, eu nunca tinha ouvido o termo Super Key até ver essa pergunta e procurá-la. O conceito de Super Key parece mais pertinente ao tópico desempenho e design do esquema físico, pois é mapeado diretamente para o conceito de um índice não clusterizado exclusivo com colunas adicionais para melhor cobertura da consulta.

Pieter Geerkens
fonte
3
Isso é bastante impreciso. Você está usando superkey, CK e PK no lugar de superkey, superkey e CK adequados. Uma superchave é um conjunto ÚNICO. (Uma CK é uma super-chave "mínima". Não há noção de "CK mínima". Toda CK é uma super-chave. Portanto, uma super-chave não precisa ter mais colunas que uma CK. Uma PK é uma CK que se chama PK. Se tivesse que ser uma "CK mínima", "mínima" teria que significar "arbitrária".) SQL PK & UNIQUE NOT NULL declaram superchaves. (Uma PK do SQL pode ou não ser uma PK.) As super-chaves são críticas para a definição de CK, essencial para o design, incluindo a normalização. Veja minha resposta.
25417 philipxy
11
Além disso, é necessário o entendimento da SK para usar o Boyce-Codd NF
Tanckom em
16

Super Chaves: Super chave significa superconjunto de uma tecla. Uma Super Chave é um conjunto de um ou mais atributos que são coletados e podem identificar todos os outros atributos exclusivamente.

Por exemplo, estamos tendo tabela

Book (BookId, BookName, Author)

Portanto, nesta tabela, podemos ter

   (BookId)
   (BookId,BookName)
   (BookId, BookName, Author)
   (BookId, Author)
   (BookName, Author)

Como nossa chave Super. Cada super chave é capaz de identificar exclusivamente cada tupla (registro).

Chaves candidatas As chaves candidatas são uma super chave que não possui atributos redundantes. Em outras palavras, as chaves candidatas são super-chaves mínimas. Por exemplo, na ilustração acima

   (BookId)
   (BookName,Author)

Essas duas chaves podem ser candidatas, pois as chaves restantes possuem atributos redundantes. Os meios no registro de super chave (BookId, BookName) podem ser identificados exclusivamente por apenas bookid e, portanto, Bookname é atributo redundante

Chave primária: é uma chave candidata escolhida pelo designer do banco de dados para identificar entidades em um conjunto de entidades. OU Uma chave usada para identificar exclusivamente cada registro é conhecida como chave primária.

Acima, as chaves candidatas podem ser a chave primária. E o outro que não foi escolhido como chave primária será conhecido como chave alternativa

Payal Trivedi
fonte
Isso responde à pergunta e merece voto positivo.
SRK
Observe também que um outro nome para alternative keyé secondary keyque eles são os mesmos. Ótima resposta!
Wael Alshabani 01/12
2

A partir desta resposta stackoverflow.com minha :

Uma chave candidata é um conjunto de colunas que identifica exclusivamente linhas e que não contém subconjuntos menores ("apropriados") de colunas que identificam exclusivamente linhas.

Uma superchave é um conjunto de colunas que identifica exclusivamente linhas. Portanto, uma chave candidata é uma superchave que não contém superchave menor.

No SQL, você não pode declarar uma chave candidata vazia. Além disso, UNIQUE NOT NULL e PRIMARY KEY (que em termos de restrições significa apenas UNIQUE NOT NULL) declaram superchaves, não chaves por si só. Se o conjunto de colunas dessa declaração não contiver um conjunto menor de colunas declarado como superchave, a superchave que está declarando é uma chave candidata.

A partir desta resposta stackoverflow.com, há uma tabela específica:

Para conjuntos de colunas X e Y podemos escrever X -> Y . Dizemos que X é o conjunto determinante e Y é o conjunto determinado de / na dependência funcional ( FD ) X -> Y.

Dizemos que X determina funcionalmente Y e Y é determinado funcionalmente por X. Dizemos que X é o determinante de X -> Y. Em {C} -> Y, dizemos que C determina funcionalmente Y. Em X -> {C} dizemos X determina funcionalmente C. Quando X é um superconjunto de Y, dizemos que X -> Y é trivial .

Dizemos que X -> Y se mantém na tabela T quando cada sub-faixa de valores para X sempre / só aparece com a mesma sub-faixa de valores para Y. Ou dizemos que X -> Y é um DF de / em T. Quando X é um determinante de algum DF na tabela T dizemos que X é um determinante de / em T.

Uma superchave de uma tabela T é um conjunto de colunas que determina funcionalmente todos os atributos. Uma chave candidata ( CK ) é uma superchave que não contém superchave menor. Podemos escolher uma CK como chave primária ( PK ) e depois chamar as outras chaves alternativas de CKs . Uma coluna é primordial quando está em algumas CK.

(Como eu comentei lá, "As quatro frases em negrito para FD, hold, superkey e CK seriam suficientes.")

(Uma tabela com uma CK vazia é restrita a conter no máximo uma linha. Um conjunto de colunas determinado pelo conjunto vazio é restrito a ter o mesmo valor de subrow em cada linha.)

philipxy
fonte
1

Chave Uma chave é uma única ou combinação de vários campos. Seu objetivo é acessar ou recuperar linhas de dados da tabela de acordo com o requisito. As chaves são definidas em tabelas para acessar ou sequenciar os dados armazenados de forma rápida e suave. Eles também são usados ​​para criar links entre diferentes tabelas.

Tipos de chaves As tabelas ou relações a seguir serão usadas para definir diferentes tipos de chaves.

Chave primária O atributo ou combinação de atributos que identifica exclusivamente uma linha ou registro em uma relação é conhecido como chave primária.

Chave secundária Um campo ou combinação de campos que é base para recuperação é conhecido como chave secundária. Chave secundária é um campo não exclusivo. Um valor-chave secundário pode se referir a muitos registros.

Chave candidata ou Chave alternativa Uma relação pode ter apenas uma chave primária. Pode conter muitos campos ou combinação de campos que podem ser usados ​​como chave primária. Um campo ou combinação de campos é usado como chave primária. Os campos ou a combinação de campos que não são usados ​​como chave primária são conhecidos como chave candidata ou chave alternativa.

Chave composta ou chave concatenada Uma chave primária que consiste em dois ou mais atributos é conhecida como chave composta.

Chave de classificação ou controle Um campo ou combinação de campos que é usado para sequenciar fisicamente os dados armazenados chamados chave de classificação. Também é conhecido como chave de controle.

Uma superchave é uma combinação de atributos que podem ser usados ​​exclusivamente para identificar um registro do banco de dados. Uma tabela pode ter muitas superchaves. As chaves candidatas são um subconjunto especial de superchaves que não contêm informações estranhas.

Exemplo para super chave: imagine uma tabela com os campos Nome, Idade, SSN e <Extensão telefônica>. Esta tabela possui muitas superchaves possíveis. Três deles são SSN, extensão de telefone e nome. Entre as listadas, apenas o SSN é uma chave candidata, pois as outras contêm informações desnecessárias para identificar registros exclusivamente.

Chave estrangeira Uma chave estrangeira é um atributo ou combinação de atributos em uma relação cujo valor corresponde a uma chave primária em outra relação. A tabela na qual a chave estrangeira é criada é chamada de tabela dependente. A tabela à qual chave estrangeira se refere é conhecida como tabela pai.

para chave Super mínima, consulte este link, é mais claro lá http://www.answers.com/topic/superkey-1

Ved Prakash
fonte