Announcement

Collapse
No announcement yet.

Hilfe bei Datenbankstruktur

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Hilfe bei Datenbankstruktur

    Hallo!

    Vielleicht kann mir hier jmd. auf die Sprünge helfen.
    Grundsätzlich möchte ich Informationen zu Artikeln in unterschiedlichen Kategorien in einer Datenbank speichern.

    tbl_item:
    id|name|category
    1|VW Polo| 7
    2|Siemens Herdplatte|8

    tbl_category:
    id|name
    7|Autos
    8|Küchengeräte

    Dann soll es noch eine bzw. mehrere Tabellen für die Daten geben, dabei kann es für jeden Artikel mehrere Einträge geben:

    data:
    id|item_id|eigenschaft1|eigenschaft2|eigenschaft3| eigenschaft4.....
    4|1|Benziner|5Gang|1200kg...
    6|2|Induktion|90cm|Glas|...

    das Problem ist, wie man im Bsp. sieht, dass sich die Eigenschaften von Kategorie zu Kategorie unterscheiden, also andere Namen und unterschiedliche Anzahl von Eigenschaften. Vergleichbar mit zB. ebay.

    Nun könnte man ja entweder für jede Kategorie eine eigene data-Tabelle anlegen, oder eine zusätzliche Tabelle, in der festgelegt wird, welches eigenschaft-Feld bei welcher Kategorie welchen Wert(also zb.: eigenschaft1=Treibstoff/eigenschaft2=Getriebe/eigenschaft3=Gewicht für Kategorie 1) annimmt.

    Vielleicht hat ja jmd. auch noch eine ganz andere, viel bessere Idee. Bin für alle Vorschläge und jede Hilfe offen.

    Vielen Dank!

  • #2
    Also ich würde das so organisieren:

    Code:
    Tabelle Artikel
    ===============
    ArtikelId number primaryKey
    ArtikelName string
    
    Tabelle ArtikelEigenschaften
    ============================
    EigenschaftId number primaryKey
    ArtikelId number foreignKey
    EigenschaftTypId number foreignKey
    EigenschaftWert string
    
    Tabelle EigenschaftTyp
    ======================
    EigenschaftTypId number primaryKey
    Beschreibung string
    TypId number foreignKey
    
    Tabelle Typ
    ===========
    TypId number primaryKey
    Beschreibung string
    EigenschaftTyp und Typ kann man evtl. auch weglassen. Je nachdem wie streng die Eigenschaft gespeichert werden müssen.

    Mit dieser Konstruktion kannst Du praktisch zu einem Artikel eine beliebige Anzahl an Eigenschaften als Key/Value Paare ablegen. Der Nachteil ist natürlich dass diese nicht typisiert sind. Das könnte man aber zumindest durch die EigenschaftTyp und Typ Tabelle noch weiter eingrenzen.

    Comment


    • #3
      hallo,

      danke für den Vorschlag. Das hätte auch den Vorteil, dass ich unabhängig von den Kategorien wäre. Allerdings bekomme ich dann ja eine riesige Tabelle, da ich ja pro Artikel etliche Eigenschaften hätte. Ich stelle mir das performance-mäßig problematisch vor. Ich werde so erstmal für kleinere Datenmengen testen.

      Viele Grüße

      Comment


      • #4
        Mach nen Index drauf, dann brauchst du dir eigentlich erst ab einer siebenstelligen Zahl von Einträgen Gedanken machen. Wenn du hauptsächlich Leseoperationen hast, kannst du auch MyISAM nehmen. Außerdem speicherst du nur die vorhandenen Eigenschaften und nich immer alles.

        Eine Alternativstruktur wäre: tbl_artikel, tbl_kategorien, tbl_eigenschaftsdefinition, tbl_eigenschaft2kategorie, tbl_artikel2eigenschaft. Dann hast du wirklich immer nur die relevanten Daten da.

        Comment

        Working...
        X