1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

Tabelle zeigt auf mehrere andere Tabellen

Dieses Thema im Forum "Datenmodellierung, Datenbank-Design" wurde erstellt von wolfgangpue, 15 November 2010.

  1. wolfgangpue

    wolfgangpue Neuer Benutzer

    Problemstellung:

    Ich habe eine Datenbank wo ich zu verschiedene Tabellen(Produkte, Kontakte, usw.) Kommentare abspeichern will. Zum Beispiel kann ein Produkt mehrere Kommentare haben.

    Ich denke mir nun, zu jeder Tabelle eine eigene Kommentartabelle zu erstellen kann auch nicht sinnvoll sein. Dann würde ich ca. 8 Tabellen erstellen, die eigentlich den gleichen Inhalt haben nur dass sie auf verschiedene Tabellen verweisen zu denen sie zugeordnet sind. Der Fremdschlüssel wäre in diesem Fall leicht zu setzen.

    Was gibt es noch für Möglichkeiten dies zu realisieren?

    Könnte ich nur eine Tabelle "Kommentare" erstellen, welche einen zusätzlichen Eintrag hat zu welcher Tabelle sie gehört.

    z.B

    Kommentare
    -------------------
    ID
    Referenz_ID
    Referenz_Tabelle (Produkte, Kontakte, usw...)

    Dann würde ID der Primarykey sein. Aber was ist mit Referenz_ID, in diesem Feld ist entweder eine ID vom Kontakt, vom Produkt, usw enthalten und erst durch die Referenz_Tabelle weiß ich wo genau das Kommentar dazugehört. Zum Implementieren würde das auch gehen, aber was ist mit den Integritätsbedingungen im Bezug auf den Fremdschlüsseln. Also wenn das Produkt gelöscht wird auch automatisch alle Kommentare mitgelöscht werden.

    lg Wolfgang


    Update:

    Würde das vielleicht eine gute Lösung sein:


    Tabelle Kommentare:

    ID Primary Key
    Produkt_ID Foreign Key
    Kontakt_ID Foreign Key
    Benutzer_ID Foreign Key
    ...........
    TEXT Inhalt


    Und es darf immer nur ein Foreign Key gesetzt sein, alle anderen müssen NULL sein. Kann ich das auch in MySQL umsetzen, sodass er automatisch nur einen Foreign Key setzten lässt?
     
  2. thomas_w

    thomas_w Datenbank-Guru

    AW: Tabelle zeigt auf mehrere andere Tabellen

    Ja, ich denke, dass läßt sich so in MySQL lösen (Engine=InnoDB vorausgesetzt). Ich habe mal was ähnliches verbrochen, richtig glücklich bin ich dabei nicht geworden. Ich tendiere daher zu der "8-Tabellen-Lösung" ein paar Tabellen mehr oder weniger sind nichts gegen die Vorteile einer klaren, einfachen, hundsprimitiven und übersichtlichen Lösung.

    Grüße
    Thomas
     
  3. wolfgangpue

    wolfgangpue Neuer Benutzer

    AW: Tabelle zeigt auf mehrere andere Tabellen

    Ich war der Meinung, die Lösung mit den 8-Tabellen ist die unsaubere Variante, da wenn ich ein Attribut beim Kommentar hinzufügen will, ich es auch bei jeder einzelnen Tabelle extra machen muss.

    Hab grad gesehen, dass mit CONSTRAINT ich auch festlegen kann, dass nur ein Fremdschlüssel gesetzt werden darf. Was waren die Nachteile, bei der Lösung mit den zusätzlichen Fremdschlüsseln, weil du damit nicht richtig glücklich geworden bist? Als Vorteil seh ich halt an, dass die Datebank um einige Tabelle "Kommentare" bereinigt wird.
     
  4. thomas_w

    thomas_w Datenbank-Guru

    AW: Tabelle zeigt auf mehrere andere Tabellen

    Mein Problem war ungefähr so...

    Wenn Du die kombinierte Kommentartabelle durchsuchst und auf die "richtige" Haupttabelle zugreifen willst, kommt in etwa sowas dabei heraus:

    Schematisch...

    Code:
    If produkt_id IS NULL THEN
    ELSE IF kunde_id IS NULL THEN 
    ...
    
    Wie findet die Kindtabelle die richtige Vatertabelle?

    Nein, mir ist KISS (Keep it simple stupid) lieber, da ändere ich lieber 8 Tabellen, wenn es mal nötig ist. Da der Befehl dann fast identisch ist, geht sowas mit copy&paste.

    Grüße
    Thomas
     
Die Seite wird geladen...

Diese Seite empfehlen