PDA

View Full Version : [FRAGE] - Wahr oder Falsch?


Kugelfisch
14-06-2004, 21:11
In den Folien zur Relationalen Algebra gibt es so Wahr oder Falsch Beispiele.
Ich hab die heute mit einem Freund durchbesprochen und wir sind bei einem Hängengeblieben:
R(AB), S(BC)

PIB(R leftSEMIjoin S) = PIB(S leftSEMIjoin R)

Lt. Folien sollte das Falsch sein. Warum? Ich bzw. wir glauben dass es stimmt. Wir haben es auch an den verschiedensten Beispielen ausprobiert und das Ganze sogar noch zerlegt in Selectionen und Kartesische Produkte...

Kann mir da jemand weiterhelfen?

Wäre echt toll!!

Thx Kugel

and_Y
14-06-2004, 21:56
Das habe ich mich auch schon gefragt !

R kann ich mit S über B joinen. OK.
Wenn ich jetzt den Semijoin bei beiden anwende und sowieso nach B projiziere ist es ja egal ob ich von links nach rechts oder von rechts nach links joine.

Nur der vollständigkeit halber:
Das Beispiel steht im dm5.pdf auf Seite 8/11 links unten

grassi3000
14-06-2004, 22:58
das liegt daran, dass beide male der leftsemijoin verwendet wird, wo man immer nur die elemente der linken tabelle übernimmt, die auch in der rechten vorhanden sind (schlagt mich für diese erklärung, sollte sie zu trivial sein)

wenn nun R!=S ist, dann hast du unterschiedliche elemente, da einmal die von R und beim anderen mal die von S übernommen werden

google
14-06-2004, 23:32
wenn nun R!=S ist, dann hast du unterschiedliche elemente, da einmal die von R und beim anderen mal die von S übernommen werden

schon, aber es werden ja die elemente übernommen, die joinpartner in der anderen tabelle haben (also gleiche werte in B)... einmal von R nach S und einmal von S nach R...

wenn du für ein tupel aus R einen partner in S findest (also R.B=S.B) und es daher in der ergebnismenge auf der linken seite liegt, bedeutet das auch im gegenzug, dass derselbe partner bei der umgekehrten operation ein passendes tupel findet und damit in der ergebnismenge auf der rechten seite auftaucht. dasselbe gilt, wenn man die überlegung auf der rechten seite beginnt.

links und rechts der gleichung stehen also mengen, die sich noch durch ihr schema und der anzahl der tupel, die es zu einem bestimmten wert von B gibt unterscheiden. aber alle werte von B auf der linken seite kommen in irgendeinem B auf der rechten seite vor und umgekehrt.

eine projektion auf das gemeinsame attribut B - was implizit eine duplikateliminierung nach sich zieht - führt dazu, dass die schemen auf beiden seiten gleich werden und dass sich die ergebnismengen nicht mehr durch mehrfach vorkommende tupel unterscheiden können...

hab ich einen denkfehler?

oder haben die einen?

5piritus
15-06-2004, 01:07
nö, das ist schon falsch!
das ist nämlich nicht kommutativ, wenn man mal von seite 91 sich den semi join mitsamt tabellen hernimmt und mal die tabellen vertauscht!!

ciao

derbrain
15-06-2004, 02:13
hmm. könntest du das genauer erläutern, vielleicht an einem beispiel?
laut seite 91 ist L left-semi-join R = R right-semi-join L, oder? dann sollte das beispiel eh auch für die eine fragestellung von kugelfisch anwendbar sein.
also das ergebnis von L lsj R ist (a1, b1, c1), das von R lsj S ist (c1, d1, e1). wenn ich bei beiden jetzt eine projektion auf C mache, bekomm ich doch auf beiden seiten c1. wieso ist das dann falsch http://hades.gothic.at/iforum/images/smilies/confused.gif

snowfox
27-01-2005, 18:28
ist schon bisserl länger her, aber vielleicht nutzt es doch noch jemanden, da ich grad zufällig am diesen Bsp hängengeblieben bin.

ich denk mal, dass es mit dem unteren bsp. vertauscht worden ist.
demnach wäre das hier genannte bsp. "true" und das nachfolgende bsp auf der folie "false".

da beim nachfolgenden bsp. ein ausser join vom kreuzprodukt die mengendifferenz gebildet werden soll. ist aber nicht möglich, aufgrund des unterschiedlichen schemas!

[fl]Quel`Tos
27-01-2005, 19:07
danke für das rauskramen, bin auch bei dem hängen geblieben.
bin voll und ganz deiner meinung