Wert als Array in Text oder gesonderte Tabelle?

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

  • Wert als Array in Text oder gesonderte Tabelle?

    Hallo,

    ich stehe vor einer Entscheidung und weiß nun nicht, was sinnvoller wäre. Folgende Situation:

    Ein Artikel hat mehrere Varianten. Die Varianten-Arten stehen in einer gesonderten Tabelle. Jeder Artikel kann keine, eine oder mehrere Varianten-Arten haben.

    Nun habe ich die Möglichkeit, die Varianten des Artikels in einer Zwischentabelle zu speichern oder aber in der Artikeltabelle als ein (serialisiertes) Array in einem Textfeld.

    Z. B.

    - habe ich den Artikel mit der ID 7
    - 3 mögliche Varianten mit den IDs 1, 2 und 3
    - und folgende Kombination:

    Artikel 7 hat für die Variante 1 den Wert "rot"
    Artikel 7 hat für die Variante 2 den Wert "XL"
    Artikel 7 hat für die Variante 3 den Wert "langarm"

    Beispiel Zwischentabelle:

    tbl_artikel:
    id, name

    tbl_varianten:
    id, name

    tbl_artikelvarianten:
    id, artikel_id, varianten_id, wert

    Inhalt von tbl_artikelvarianten:
    (1, 7, 1, rot)
    (1, 7, 2, xl)
    (1, 7, 3, langarm)

    Beispiel Textfeld in der Artikeltabelle:

    tbl_artikel:
    id, name, varianten

    tbl_varianten:
    id, name

    Inhalt von tbl_artikel:
    (7, shirtX, 1:rot;2:xl;3:langarm)

    Im Prinzip lässt sich alles mit gleichem Aufwand lösen. Die Unterschiede bzw. Nachteile liegen meines Erachtens nach in folgenden Punkten:

    - Bei der Zwischentabelle sind für alle Aktionen mehr DB-Abfragen notwendig.
    - Bei der Lösung mit dem Array im Textfeld wird hingegen mehr Speicherplatz benötigt.

    Welche Lösung ist (warum) sinnvoller, wenn sich nicht vorher sagen lässt, wie viel Prozent der Artikel überhaupt Varianten besitzen werden, wie viele Varianten es geben wird und in welchem Umfang sie genutzt werden. Kann man das "universell" beantworten, gibt es irgendwelche Richtwerte oder ist das in solchen Fällen "Geschmackssache"?

    pb

  • #2
    Den Trade-Off zwischen Performance und Speicherverbrauch hat man fast immer. Wenn die eines davon besonders wichtig ist (schnelle Seite vs. kleine Platte), dann ist die Entscheidung einfach. Anderenfalls würde ich mich an bewährte Methoden halten - schau dir mal http://de.wikipedia.org/wiki/Normalisierung_(Datenbank) an.

    Kommentar

    Lädt...
    X