2012-06-14 4 views
0

Salut à tous J'ai un examen à venir et je ne reçois pas beaucoup d'aide du conférencier sur deux questions sur l'examen de pratique. Elle a fourni la réponse mais n'a pas répondu à mes questions sur la réponse, j'espère que quelqu'un ici pourra expliquer pourquoi la réponse est telle qu'elle est.algèbre relationnelle naturel rejoindre

Tenir compte des deux tables R et S avec leurs instances suivantes:

R  S 
A B C D E 
a x y x y 
a z w z w 
b x k  
b m j  
c x y  
f g h 

a) πA(R[natural join]B=D S) 

la réponse étant (a,b,c), pourquoi est-ce pas (a,a,b,c)? est-ce qu'une projection le rend distinct?


b) π A(R[natural join] B<>D S) 

la réponse étant (a,b,c,f), pourquoi est-a une réponse? b = d les deux fois où les valeurs sont x et z, alors pourquoi cela est-il imprimé?

+0

Accepter une réponse si vous en avez trouvé une qui est correcte. – JustinDanielson

Répondre

0

[jointure naturelle] B = D

Ce n'est pas une jointure naturelle car « jointure naturelle » est une jointure qui rejoint les relations exclusivement sur les attributs du même nom. La construction que vous décrivez peut dans certains endroits être étiquetée/appelée "equijoin" ou similaire, mais c'est certainement une "jointure naturelle".

[jointure naturelle] B <> D

Ce n'est pas une jointure naturelle car « jointure naturelle » est une jointure qui rejoint ensemble tuples des relations argument si et seulement si les valeurs d'attribut sont égales.

Vous êtes désespérément maltraité et mal éduqué. Matériel de référence: "une introduction aux systèmes de bases de données", C.J.Date. Cela ne vous servira à rien pour vos examens, mais si vous cherchez une carrière plus tard dans la technologie de base de données, il peut être utile de s'en souvenir.

Mais pour répondre à vos questions réelles (en ligne avec des réponses précédentes):

a) La valeur de l'attribut 'a' ne peut pas apparaître deux fois dans le résultat d'une projection, car une projection produit une relation , et une relation est définie comme définir et les ensembles ne peuvent pas contenir de doublons. B) La jointure [non] naturelle contient à la fois les tuples (axyzw) et (azwxy). "Premier" tuple de R avec "deuxième" tuple de S, et inversement. La projection inclut le résultat (a).

1

a) Dans l'algèbre de relations, l'opérateur de projection assure l'élimination des doublons. En SQL, ce n'est pas l'opération par défaut, mais c'est pour l'algèbre relationnelle. Voici mon source. Pour l'instant, je ne peux pas me rappeler pourquoi cela fait double emploi, mais c'était mon professeur pour les bases de données et il est très compétent. (Je pense que c'est parce que Relation Algebra utilise set-logic et que les ensembles n'ont pas de doublons.)

b) La jonction de 2 tables crée un CROSS PRODUCT entre les 2 tables. Vous avez 6 lignes et 2 lignes. Donc, le produit croisé est 6x2 = 12 lignes. Pour la ligne 1 de la table R, vous avez x y. Cela sera associé à x y ET z w résultant en [a x y x y] et [a x y z w]. Le deuxième appariement est valide pour cette instruction d'algèbre relationnelle. Les colonnes B et D ne correspondent pas à x! = Z.

1
a) πA(R[natural join]B=D S) 
the answer being (a,b,c), why isn't it (a,a,b,c)? does a projection make it distinct? 

En algèbre relationnelle, les tuples en double ne sont pas autorisés; qu'une différence principale entre sql (où est nécessaire distincte) et de l'algèbre relationnelle

b) π A(R[natural join] B<>D S) 
the answer being (a,b,c,f), why is a an answer? b=d both times when values are x and z, so why is this being printed out? 

naturel opération de jointure renvoie l'ensemble de toutes les combinaisons de tuples en R et S, dans ce cas renvoie également tuples (axyzw) et (azwxy); donc un doit être dans la projection résultante.

Questions connexes