Verbund

  • Hallo,
    irgendwie versteh ich diese verbund sache ned ganz...
    zb. wird im Buch Datenbank kompakt die zeile über die der Verbund gemacht wird weggelassen(glaub S.33 Produkt gejoint mit Hersteller)
    bei der übung am dienstag wurde aber aus der tabelle ab und ac
    die tabelle abc.wieso?
    und wie funktioniert dieser "externe" verbund?
    Danke im vorraus...

  • verbund (natürlicher bzw. natural join) verknüpft relationen über ihre
    GEMEINSAMEN attribute, also jene spalten, die gleich heissen UND gleiche werte haben, werden verschmolzen:
    a1b1 join a2c2 wird zu a(1,2)b1c2 - und nur jene zeilen werden gewählt, wo der wert von a ident ist, im bsp ist nur a=4 ident, also ergibt sich nur die zeile 4(4) 5 2
    in sql ist das soviel wie t1 natural join t2
    oder man bildet das kartesische produkt, wo man in where extra die gleichheitsbedingung angibt:
    select *
    from t1,t2 (=das liefert n-tupel v.t1 * n-tupel v.t2)
    where t1.a = t2.a (auch hier wird 'verschmolzen', mit dem unterschied, dass die spalte aber für jede relation angeschrieben wird, also steht 2mal a mit dem selben wert)


    der externe verbund verbindet relationen einerseits über die gemeinsamen attribute, aber nimmt auch noch jene tupel hinzu, die für a kein gleichwertiges attribut haben, also:


    a b c
    2 3 - linke relation ohne passendes a
    4 5 2 natürlicher verbund
    5 7 - linke seite ohne passendes a
    1 - 1 rechte seite .....
    5 -3 rechte seite ......


    wird nur die linke seite od. nur die rechte seite dazugenommen, so ist das der left join od. right join


    also: natürlicher verbund sind nur jene tupel, wo gemeinsame attribute gleiche werte aufweisen
    externer verbund sind auch jene tupel, die keine entsprechung in gemeinsamen attributen haben
    vielleicht hilft diese erklärung? .... der gute wille war da ;-)
    tip: mit google findet man viele informative seiten
    lg, m

  • danke habs verstanden :thumb:
    was mich aber verwirrt ist das im buch S.26
    Produkt JOIN Hersteller
    in einer tabelle resultiert in der das gemeinsame attribut herstellerID weggelassen wird.liegt das daran das im buch von der relationsalgebra ausgegangen wurde, während bei der übung von einer SQL anfrage ausgegengen wurde :confused:

  • es gibt bereits ein Thema (weiter unten) Fehler im Buch Kapitel ...
    da wird auch die seite 26 erwähnt - auch ich gehe davon aus dass HerstID einfachen vergessen wurde und defintiv in die Ergebnisrelation gehört!

  • Ähm und wenn ich T2 vor T1 stelle? dreht sich dann left und right join auch um?


    mfg, Phil.

  • 1. ist ein "natural outer join" nicht wieder gleich einem "natural join"?


    2. bei einem "cross join" kommen gleich benannte spalten doch auch doppelt vor, dh sie werden nicht verschmolzen, oder?


    3. bei den Di-übungsbeispielen wird öfter "join" alleine verwendet. nur join alleine geht aber nicht (zumindest in postgresql)! es geht nur wenn "join... on..." oder "natural join" dasteht. Fehler bei den Angaben am Dienstag (bsp 3)?


    danke für alle antworten.

  • Zitat

    1. ist ein "natural outer join" nicht wieder gleich einem "natural join"?


    ähh noch nie davon gehört:confused:


    Zitat

    2. bei einem "cross join" kommen gleich benannte spalten doch auch doppelt vor, dh sie werden nicht verschmolzen, oder?


    des cross join ist das kartesische produkt.Dh, jede zeile der einen tabelle wird mit jeder zeile der anderen tabelle verschmolzen...


    Zitat

    3. bei den Di-übungsbeispielen wird öfter "join" alleine verwendet. nur join alleine geht aber nicht (zumindest in postgresql)! es geht nur wenn "join... on..." oder "natural join" dasteht. Fehler bei den Angaben am Dienstag (bsp 3)?


    keine Ahnung...

  • Zitat

    Original geschrieben von MarkusL
    1. ist ein "natural outer join" nicht wieder gleich einem "natural join"?


    nein,
    "natural join" bedeutet "natural inner join"

    Zitat


    2. bei einem "cross join" kommen gleich benannte spalten doch auch doppelt vor, dh sie werden nicht verschmolzen, oder?


    sie werden nicht verschmolzen

    Zitat


    3. bei den Di-übungsbeispielen wird öfter "join" alleine verwendet. nur join alleine geht aber nicht (zumindest in postgresql)! es geht nur wenn "join... on..." oder "natural join" dasteht. Fehler bei den Angaben am Dienstag (bsp 3)?


    danke für alle antworten.

    Zitat


    stimmt, bei postgresql geht das nicht, da braucht man entweder "natural" oder "on" oder "using"