ERM / SQL rekursive Beziehung?

  • Hallo,

    ich habe eine Frage zur Modellierung eines ERMs bzw. der Überführung ins Relationenmodell:

    Nehmen wir an es gibt die Entitätsmenge "Verkäufer" und die Menge "Käufer"
    die beide eine Spezialisierung (IS-A) von Benutzer sind und beide sich eindeutig durch den ebaynamen identifizieren lassen.

    Wenn man nun den Sachverhalt modellieren möchte dass ein Käufer einen Verkäufer bewertet, entspricht das dann einer rekursiven Beziehung?? Das Problem ist ja dass beide als Primärschlüssel "ebayname" haben.
    Die neue Tabelle "Bewertung" würde dann ja aus (ebayname:string, ebayname:string) bestehen.

    Vielen Dank!!

  • 1) So wie du den Sachverhalt schilderst (3 Entitäten Benutzer, Verkäufer, Käufer - IS A Beziehungen), würde ich sagen, dass es sich nicht um eine rekursive Beziehung handelt. (Hinweis: Eine rekursive Beziehung liegt dann vor, wenn eine Entität eine Referenz auf sich selbst hat - das trifft hier nicht zu)
    2) Da jeder Käufer beliebig viele Verkäufer bewerten kann und jeder Verkäufer von beliebig vielen Käufern bewerten werden kann, ist hier, wie du richtig erkannt hast, eine n:m Beziehung (sprich eine Zwischentabelle) erforderlich. Diese Zwischentabelle "Bewertung" hat, wie du richtig gesagt hast, den Primärschlüssel (ebayname, ebayname), wobei ein "ebayname" aus der Tabelle "Käufer" und der andere "ebayname" aus der Tabelle "Verkäufer" kommt.

    Einmal editiert, zuletzt von Spiderman (3. Oktober 2008 um 14:58)

  • Hallo Spiderman,

    vielen Dank schon einmal für deine Antwort. Es kam mir nur so komisch vor, dass ein Primärschlüssel aus zweimal der gleichen Bezeichnung bestehen kann... Ich bereite mich gerade auf eine Klausur vor und habe schon einige ERMs durch aber in dieser Form ist mir das bisher noch nicht vorgekommen.

    Ein häufiges Beispiel ist ja die rekursive Beziehung zwischen "Teil" und der Relation "Struktur" --> selbst wenn hier jedes Teil eine eindeutige TeileNr bekommt, kann man die Relation Struktur nicht (TeilNr, TeilNr) nennen, sondern die beiden Schlüssel werden umbenannt in zB (OberteilNr, UnterteilNr)

    Ich dachte mir, vielleicht müsste man in meinem ebay Beispiel die Beziehung (K_ebayname, V_ebayname) nennen, war mir aber auch nicht sicher ob das so geht...

  • vl hilft dir das ein wenig weiter:

    Käufer: {[ebayname:string]}
    Verkäufer: {[ebayname:string]}
    bewertet: {[käufername:string, verkäufername:string, bewertung:integer]}

    in "bewertet" sind das fremdschlüssel! (irgendwie ein sinnfreies beispiel da das meines erachtens (und ich bin da kein profi:) nur eine bewertung pro käufer/verkäufer-paar zulässt). uuund so wie ich das sehe deckt sich das mit deinem "Teil" & "Struktur"-beispiel. ausserdem denke ich nicht dass es ein problem darstellt in 2 relationen den gleichen namen zu verwenden. es wird halt unübersichtlicher wenn du da nicht aufpaßt (ausgewählt wird ohnehin mit: "SELECT v.foo FROM bar v")

    http://www-db.in.tum.de/research/publi…/EIS/index.html
    kann ich sehr empfehlen, da steht das alles ganz gut erklärt. va wenn du dann ohnehin mehr machen möchtest.

    Einmal editiert, zuletzt von onu (3. Oktober 2008 um 16:48) aus folgendem Grund: maybe hab ich da ein wenig ungenau gelesen, aber der link hilft dir vl :)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!