Vererbungsmöglichkeit in MySQL

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Vererbungsmöglichkeit in MySQL

    Hi,

    für verschiedene Produktgruppen soll ein Datenbankdesign erzeugt werden.
    Ich dachte man erstellt eine Tabelle, in der die Daten gespeichert sind, die alle Produkte gemeinsam haben (Beschreibung, Titel usw.)

    In jeweils einer Tabelle für die Produktarten sollen dann nur die Daten drinstehen, die unterschiedlich sind bzw. spezifisch für die Produktgruppe sind (Verknüpfung per Fremdschlüssel).

    Gibts es dafür noch eine bessere Möglichkeit? Eine einzige große Tabelle würde ja viele Spalten enthalten, die nur NULL-Werte enthält.
    Zuletzt geändert von lx-club; 17.06.2011, 13:29.

  • #2
    produkte (p_id, name, desc)
    eigenschaften (e_id, name)
    werte (p_id,e_id,value)

    Wenn (fast) jedes Podukt andere (zusatz-)eigenschaften hat, kannst du die zweite Tabelle auch weg lassen.

    Kommentar


    • #3
      Die zweite Tabelle sollte ich auch mit übernehmen, denn es soll ja z.B. Produktgruppen geben wie TV, Netbook, Surfstick und zu jeder Gruppe dann die einzelnen Produkte. Diese einzelnen Produkte einer Produktgruppe haben ja die gleichen Eigenschaften.

      -produktgruppe (id,name)
      -produkt(id,produktgruppe_id,titel usw...)
      -eigenschaft (id, name)
      -wert (produkt_id,eigenschaft_id,value)

      Welche Vorteile habe ich denn gegenüber meinem Vorschlag?

      Kommentar


      • #4
        welche Rolle spielt die Produktgruppe in deinem aktuellen Modell? Offensichtlich keine.

        Kommentar


        • #5
          Ohne Produktgruppe weiß ich nicht wohin das Produkt gehört. Angenommen ich möchte alle TV-Geräte anzeigen bzw. allgemein Produkte nach Produktgruppe anzeigen. Dazu benötige ich doch die Information.

          Kommentar


          • #6
            Das hat aber nichts mit den zusätzlichen Eigenschaften zu tun. Eine Produktgruppe hat ja jedes Produkt. Wir reden hier ja auch nicht über den Hersteller (den hat nämlich auch jedes Produkt).

            Kommentar


            • #7
              Da hast du Recht, die Eigenschaften betrifft es nicht.
              Aber du hast ja geschrieben man kann diese Tabelle auch weglassen.
              Alle Produkte einer Produktgruppe haben ja die gleichen Zusatzeigenschaften, und deshalb ist die Tabelle ja genau richtig.

              In die Tabelle eigenschaften kommt

              id | name
              1 | bildschirmdiagonale

              Alle Produkte aus der Gruppe TV haben diese Eigenschaft

              Kommentar


              • #8
                Alle Produkte einer Produktgruppe haben ja die gleichen Zusatzeigenschaften, und deshalb ist die Tabelle ja genau richtig.
                Wenn dem so ist (und du das abbilden willst), vergisst du aber noch die Tabelle, die die Eigenschaften der Produktgruppe zugehört!

                In die Tabelle eigenschaften kommt
                id | name
                1 | bildschirmdiagonale
                Eh klar!

                Kommentar


                • #9
                  Zitat von TobiaZ Beitrag anzeigen
                  Wenn dem so ist (und du das abbilden willst), vergisst du aber noch die Tabelle, die die Eigenschaften der Produktgruppe zugehört!
                  das versteh ich gerade nicht. Wie meinst du das?
                  Die Eigenschaften stehen doch in der Tabelle eingeschaften schon drin?

                  Kommentar


                  • #10
                    Aber es steht nirgends, welche Eigenschaften die Produkte in der Gruppe XY haben.

                    Kommentar


                    • #11
                      Am Anfang hatte ich ja geschrieben, 3 Tabellen anzulegen. Quasi für jede Produktgruppe eine Tabelle mit den speziellen Zusatzeigenschaften. Daraus wäre ja ersichtlich, welche Eigenschaften die Produkte in der Gruppe XY haben.

                      Aber ich weiß immer noch nicht was gemient ist. In der Produkttabelle ist doch die ID der Produktgruppe drin.
                      Wie sollte denn die Tabelle aussehen, die die Eigenschaften der Produktgruppe zugehört?

                      Kommentar


                      • #12
                        Am Anfang hatte ich ja geschrieben, 3 Tabellen anzulegen. Quasi für jede Produktgruppe eine Tabelle mit den speziellen Zusatzeigenschaften. Daraus wäre ja ersichtlich, welche Eigenschaften die Produkte in der Gruppe XY haben.
                        Wie kommst du auf 3? Wenn es 1 Produktgruppe gibt, wären es 3. Wenn es 2 Gruppen gibt, sind es schon 4, usw.

                        Das es bei dieser Konstellation zu nicht unerheblichen Redundanzen (bspw. Bildschirmdiagonale bei TV und Handys) dürfte wohl klar aber definitiv nicht wünschenswert sein. Ganz zu schweigen davon, dass später Joins mit X (=Anzahl der Produktkategorien) erforderlich werden könnten (oder entsprechend hässliche Subselects).

                        Aber ich weiß immer noch nicht was gemient ist. In der Produkttabelle ist doch die ID der Produktgruppe drin.
                        Noch mal: Wo speicherst du die Information, welche Eigenschaften (z.B. "Bildschirmdiagonale" oder "Displaytyp") in welchen Produktgruppen benötigt werden?

                        Wie sollte denn die Tabelle aussehen, die die Eigenschaften der Produktgruppe zugehört?
                        Dies ist kein Satz

                        Kommentar


                        • #13
                          Zitat von TobiaZ Beitrag anzeigen
                          Wie kommst du auf 3?
                          ich bin von TV, Netbook und Surfstick ausgegangen, sorry war etwas unglücklich ausgedrückt :-)

                          Zitat von TobiaZ Beitrag anzeigen
                          Noch mal: Wo speicherst du die Information, welche Eigenschaften (z.B. "Bildschirmdiagonale" oder "Displaytyp") in welchen Produktgruppen benötigt werden?
                          Ich bin von deinem Vorschlag ausgegangen. Welche Eigenschaften die jeweilige Gruppe hat, ist nirgends hinterlegt. Ich dachte über die Verknüpfung der Tabelle "werte" und "produkte" bekomme ich dann die Gruppe + Eigenschaften.

                          Kommentar


                          • #14
                            ich bin von TV, Netbook und Surfstick ausgegangen, sorry war etwas unglücklich ausgedrückt :-)
                            Und wenn eine Gruppe hinzu kommt, machst du ne neue Tabelle? Ist blöd, oder? Einfach verwerfen diese Idee!

                            Ich bin von deinem Vorschlag ausgegangen.
                            Ähm, in meine, Vorschlag wurden Produktgruppen noch gar nicht berücksichtigt. Du hast sie erst ins Spiel gebracht, allerdings ohne eine Verbindung zu den Eigenschaften herzustellen. Weshalb ich dich zunächst gefragt habe, welche Rolle die Gruppen in diesem Zusammenhang hier spielen und nachdem du klar gemacht hast, dass das eine Voraussetzung für die Zuordnung sein soll, habe ich dich darauf hingewiesen, dass jedoch keine Zuordnung zwischen Gruppen und Eigenschaften stattfindet. Diese solltest du also hinzufügen. (Wie habe ich auch schon angedeutet. )

                            Ich dachte über die Verknüpfung der Tabelle "werte" und "produkte" bekomme ich dann die Gruppe + Eigenschaften.
                            Das ist die falsche Richtung. Versuch das ganze doch mal zu implementieren (zumindest im Kopf), dann merkst du hoffentlich an welcher Stelle du stecken bleibst.

                            Kommentar


                            • #15
                              Hi,

                              also irgendwie steht ich grad auf dem Schlauch.
                              Ich komme nicht klar mit der Zuordnung Gruppe->Eigenschaft bzw. Produkt->Eigenschaft.
                              Aber du hast vorhin das Beispiel mit der Bildschirmdiagonale angesprochen, also fehlt noch die Tabelle mit den Zuordnungen. Nun kann man auch die Eigenschaft "bildschirmdiagonale" 2 Produktgruppen zuordnen.
                              -produktgruppe_eigenschaft(produktgruppe_id,eigenschaft_id)

                              und hier dann der Rest:
                              -produktgruppe (id,name)
                              -produkt(id,produktgruppe_id,titel usw...)
                              -eigenschaft (id, name)
                              -wert (produkt_id,eigenschaft_id,value)

                              Wäre das so ok?

                              Kommentar

                              Lädt...
                              X