Frage zu grundlegender Tabellenstruktur



  • Hallo,

    ich habe den selben Beitrag schon in einem anderen Forum gepostet, aber in der Hoffnung das sich so eher jemand findet der mir helfen kann, poste ich hier auch nochmal. Ich hoffe das ist kein Problem.

    ich habe mal darüber nachgedacht, wie eigentlich eine komplexere relationale Tabellenstrukur aufgebaut wird. Mir sind verschiedene Möglichkeiten eingefallen allerdings würde ich gerne wissen, was hier "State of the Art" ist, sprich wie man diese Art von Problem überlicherweise löst.

    Das Problem, das ich habe ist, wie strukturiert man eine Klassenhirachie sinnvoll in Tabellen. Um zu beschreiben was ich meine, nehme ich mal die Datenbank von Amazon als Beispiel. Einige Datenfelder sind etwas an den Haaren herbeigezogen, um ein einfaches Beispiel aufbauen zu können.

    ---------------------------
    einfache Datenstruktur
    ---------------------------
    Produkt
    - Name
    - Preis

    Buch <- Produkt
    - Seitenzahl

    Film <- Produkt
    - FSK

    VHS <- Film
    - Banddicke

    Digitialer Film <- Film
    - Auflösung

    DVD <- Digitialer Film
    - CSS Kopierschutz

    Blu-Ray <- Digitialer Film
    - BD+ Kopierschutz

    Elektrogerät <- Produkt
    - Stromverbrauch

    DVD Player <- Elektrogerät
    - DivX unterstützung

    Nun fallen mir die verschiedensten Möglichkeiten ein, soetwas in Tabellen zu prügeln aber ich weis einfach nicht so recht, was die vernünftigste Lösung ist:

    ----------------------------
    Flach
    ----------------------------
    Produkte
    - Typ
    - Name
    - Preis
    - Seitenzahl
    - FSK
    - Banddicke
    - Auflösung
    - CSS Kopierschutz
    - BD+ Kopierschutz
    - Stromverbrauch
    - DivX unterstützung

    Nun wird das ganze ja relativ schnell relativ breit, was mir sowohl vom Speicherverbrauch als auch von der Unterstützung der Datenbanken her sorgen macht.

    -----------------------------
    Universell
    -----------------------------
    Produkte
    - Typ
    - Name

    Produktattribute
    - Produktid
    - Attributname
    - Attributwert

    Diese ist sehr universell, allerdings weis die Datenbank ja nun nichts mehr über die genauen Typen und Strukturen. Allerdings
    lässt Sie sich vollkommen universell abfragen.

    ----------------------------
    Abgeleitet
    ----------------------------
    Produkt
    - Typ
    - Name
    - Preis

    Buch
    - Produktid
    - Seitenzahl

    Film
    - Produktid
    - FSK

    VHS
    - Produktid
    - Banddicke

    Digitialer Film
    - Produktid
    - Auflösung

    DVD
    - Produktid
    - CSS Kopierschutz

    Blu-Ray
    - Produktid
    - BD+ Kopierschutz

    Elektrogerät
    - Produktid
    - Stromverbrauch

    DVD Player
    - Produktid
    - DivX unterstützung

    Hier ist es ja relativ aufwändig, die Benötigten Daten für einen Film zusammenzusuchen.

    ----------------------------
    einfach Abgeleitet
    ----------------------------
    Produkt
    - Typ
    - Name
    - Preis

    Buch
    - Produktid
    - Seitenzahl

    VHS
    - Produktid
    - FSK
    - Banddicke

    DVD
    - Produktid
    - FSK
    - Auflösung
    - CSS Kopierschutz

    Blu-Ray
    - Produktid
    - FSK
    - Auflösung
    - BD+ Kopierschutz

    DVD Player
    - Produktid
    - Stromverbrauch
    - DivX unterstützung

    Hier würden nur für die Blätterklassen Tabellen angelegt. Allerdings dupliziere ich damit ja viele Felder. Auserdem kann ich
    bestimmte Felder nicht mehr allgemein abfragen, z.B. gib mir alle Filme, die ab 12 sind.

    Perfekt erscheint mir keine Lösung:( Ich würde gerne wissen welche Lösung in der Praxis verwendet wird, und welche unter den
    gegebenen technischen Möglichkeiten am sinnvollsten ist. Es tut mir leid, das der Beitrag so lang geworden ist, aber ich
    wusste nicht wie ich es kürzer beschreiben soll.

    Vielen herzlichen dank im voraus für jeden, der ein bischen Licht in meinen Strukturjungel bringen kann.:)

    Grüße
    template



  • Da gibts mehrere Ansätze, jeder mit seinen Vor- und Nachteilen.
    http://www.agiledata.org/essays/mappingObjects.html#MappingInheritance


Anmelden zum Antworten