O que exatamente é a chave candidata sobreposta?


8

Alguém pode me explicar em termos simples o que é overlapping candidate key? Qual é overlappingo nome sugerido?

Considere a relação abaixo

R(L,M,N,O,P) 
{
    M -> O
    NO -> P
    P -> L
    L -> MN
}

Qual das dependências funcionais acima está trazendo a chave candidata sobreposta na relação acima?

Vamos restringir a discussão a dependências, não estou interessado no BCNF no momento

Respostas:


9

Você está certo com as possíveis chaves candidatas, vikkyhacks. As chaves candidatas sobrepostas são chaves candidatas compostas (consistem em mais de um atributo) com pelo menos um atributo em comum. Portanto, suas chaves candidatas sobrepostas são NM e NO (elas compartilham N).

Explicação adicional do exposto acima, originalmente deixada nos comentários:

Todas as chaves candidatas sobrepostas são grupos de (por exemplo, duas ou mais) chaves candidatas. Isso significa que o primeiro critério é que sua relação Rdeve ter mais de uma chave candidata (mínimas super chaves). Para que qualquer uma das chaves candidatas se sobreponha, cada uma delas (novamente duas ou mais) deve atender a algumas condições adicionais. 1) Ambos devem ser chaves candidatas compostas. Eles devem consistir em mais de um atributo; portanto, uma chave como Anunca será sobreposta, mas ABpode se sobrepor a outra chave. 2) As chaves compostas devem compartilhar um atributo. ABsobrepõe com ACe BDmas não CDou EF.

Para resumir: dois ou mais conjuntos de atributos em que 1) cada conjunto é uma chave candidata (superchave mínima) para a relação, 2) cada conjunto é uma chave composta (consiste em mais de um atributo) e 3) um ou mais de os atributos das chaves compostas se sobrepõem a um atributo de outra chave no conjunto. Portanto, você pode descartar MNOPe NOPLcom base em que elas não são superchaves mínimas. Você pode descartar Pe Lcom base em que elas não são chaves compostas (elas consistem em um atributo). Você fica com duas chaves NOe NM, que compartilham o atributo N, para concluir.

Exemplo

Também pode ajudar a ter um exemplo que você realmente pode entender. A única vez que eu vi onde você terá chaves candidatas sobrepostas é quando você tem 1) dois atributos que determinam uma à outra (por exemplo, um relacionamento individual entre Ae Bonde Atem um Be Btem um A) e 2) esses atributos fazem parte das chaves candidatas compostas.

Por exemplo, em alguns sistemas, a Customerpossui um CreditCarde a CreditCardpertence a um Customer. Na tabela Aluguel, você identifica exclusivamente um Rentalpor EquipmentId, Datee CustomerId. Por conveniência, você também armazenou CreditCardnesta tabela.

Isso significa que os seguintes FDs são válidos:

{CustomerId, EquipmentId, Date} -> {CreditCard}
{CustomerId} -> {CreditCard}

Mas como a associação é individual, os seguintes DFs também são válidos:

{CreditCard} -> {CustomerId}
{CreditCard, EquipmentId, Date} -> {CustomerId}

Desde CustomerIde CreditCardpode ser usado alternadamente para identificar exclusivamente o seu cliente.

No cenário acima, você tem chaves candidatas sobrepostas:

{CreditCard, EquipmentId, Date}
{CustomerId, EquipmentId, Date}

Eles se sobrepõem porque são chaves compostas (consistem em mais de um atributo) e porque pelo menos um de seus atributos é compartilhado (nesse caso, eles compartilham ambos EquipmentIde Date.

Você disse que não se importa BCNFno momento, mas, para trazer essa questão completamente para casa, o cenário acima é o motivo pelo qual você ocasionalmente verá uma tabela que está dentro, 3NFmas não está BCNF. A tabela acima está dentro 3NF, mas não BCNF.

3NFpermite DFs onde 1) o DF é trivial 2) o lado esquerdo do DF é uma chave candidata ou 3) o lado direito do DF é um atributo de chave (um atributo usado para fazer qualquer chave). Como CreditCarde CustomerIdsão os dois principais atributos, todos os DFs atendem a 2 ou 3.

BCNFé muito semelhante, mas permite apenas as condições 1 e 2 permitidas por 3NF. Como a 3ª condição não é permitida BCNF, e ambas CID -> CCe CC -> CIDusam a condição 3, essa tabela não é BCNF, mas é 3NF.

Para fins práticos, o caso é bastante raro e essa informação é pedante. A oferta de que sua mesa tem um problema será o fato de CreditCard/CustomerIdpares serem repetidos em sua mesa. Você também pode reconhecer que a tabela nem ficaria 2NFsem essa rara condição em que o lado direito de um FD pode ser um atributo de chave porque CreditCardé uma dependência parcial da chave primária (depende ou CustomerIdnão .EquipmentIdDate


4

Uma chave candidata é um conjunto de atributos que constituem uma superchave mínima. Diz-se que duas chaves candidatas, A e B, se sobrepõem se tiverem alguns atributos em comum, ou seja: A ∩ B não está vazio. No seu caso, MN e NO estariam sobrepondo chaves candidatas em R.

Devido ao requisito de minimalidade (irredutibilidade), uma chave candidata nunca pode ser um subconjunto de outra na mesma relação. Daqui resulta que, para que duas chaves candidatas distintas de uma relação se sobreponham, ambas devem consistir em mais de um atributo, ou seja: para qualquer par de chaves candidatas que se sobrepõem, A - (A be B) não deve estar vazia e B - (A ∩ B ) deve estar não vazio.


1

Os três primeiros DFs se combinam para dar

MNOP -> L

então MNOP é uma possível chave candidata, CK1.

Da mesma forma, os três últimos DFs se combinam para dar

NOPL -> M

então NOPL é outra chave candidata possível, CK2.

No entanto, CK1 e CK2 têm colunas NOP em comum, tornando-as sobrepostas de chaves candidatas.


11
NOPL e MNOP são chaves de super, as chaves de candidatos possíveis são P, L, NO, e NMsuper-chave qualifica um como uma chave candidata somente se não tem qualquer subconjunto mínimo. Tomar o seu exemplo MNOPé super-chave porque o subconjunto mínimo Pem que pode derivar todos os outros atributos na relação
vikkyhacks

-1

Para verificar se uma relação está tendo uma dependência de chave Candidate sobreposta:

Verifique se existe alguma dependência em que uma chave Candidato Completo está determinando uma chave Parte do Candidato. Então a dependência do OCK mantém

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.