Andreas: Ersatz für ENUM und SET

Hallo zusammen,

ich baue mir schon seit einigen Tagen eine Datenbankstruktur zusammen die möglichst ohne ENUM() und SET() laufen soll. (MySQL 4.1)

Bestimme Felder sollen einen Wert aus einer Liste oder mehrere Werte aus einer Liste enthalten können. Dazu kommt das in manchen wenigen Feldern auch mehr als 64 Werte gespeichert werden sollen.

Ich habe mir überlegt anstatt ENUM und SET einfach auf varchar() oder in fällen wo viele Werte gespeichert text() werden umzustellen. Die einzelnen Werte würde ich dann durch , oder ; voneinnander trennen.

Was haltet ihr davon ? Ist das sinnvoll ? Ich möchte auf ENUM und SET verzichten um kompatibel zu anderen Datenbanken zu bleiben.

Mir macht da eine spätere Suchabfrage sorgen, angenommen ein Benutzer sucht nach einem Datensatz der in einer Splate mehr als einen Wert enthalten kann, so müsste ich wohl oder übel mit LIKE und % suchen. Macht es Sinn über eine solche Splate einen Index zu legen ?

Ich hoffe ihr versteht meine Gedanken, danke jedenfalls für jeden Tipp !

LG Andreas

  1. hi,

    ich baue mir schon seit einigen Tagen eine Datenbankstruktur zusammen die möglichst ohne ENUM() und SET() laufen soll. (MySQL 4.1)

    Und warum ohne? Die gab/gibt's doch m.W. in 4.1 auch schon ...?

    Bestimme Felder sollen einen Wert aus einer Liste oder mehrere Werte aus einer Liste enthalten können. Dazu kommt das in manchen wenigen Feldern auch mehr als 64 Werte gespeichert werden sollen.
    Was haltet ihr davon ? Ist das sinnvoll ?

    Finde ich eigentlich eher nicht.
    Wenn du einen Anwendungsfall für ENUM oder SET vorliegen hast, würde ich sie auch benutzen.

    Ich möchte auf ENUM und SET verzichten um kompatibel zu anderen Datenbanken zu bleiben.

    Ach deshalb - sag das doch gleich :-)

    Mir macht da eine spätere Suchabfrage sorgen,

    Mir auch.

    Wäre da, wenn du ENUM und SET aus Kompabilitätsgründen nicht verwenden willst, nicht vielleicht eher eine weitergehende Normalisierung angebracht, die die gewünschte(?) 1:n-Beziehung mittels einer weiteren Tabelle abbildet?

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Hello,

      Wäre da, wenn du ENUM und SET aus Kompabilitätsgründen nicht verwenden willst, nicht vielleicht eher eine weitergehende Normalisierung angebracht, die die gewünschte(?) 1:n-Beziehung mittels einer weiteren Tabelle abbildet?

      SET wäre aber (1:)n:m(:1)

      Er müsste also eine Wertevorratstabelle und eine Brückentabelle zusätzlich anlegen.
      Und sowas nachher noch überschaubar abzufragen und dann auch noch in Client-Server verbindungslos abzubilden ist nicht mehr so trivial.

      Harzliche Grüße vom Berg
      esst mehr http://www.harte-harzer.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau