Eddie: Wie realisiert ihr folgende beiden Datentypen/Wertebereiche?

Beitrag lesen

Hallo allerseits,

ein Problem, das bei mir immer wieder auftaucht, ist, dass ich fuer ein Attribut nur bestimmte Werte vorsehe, also den Wertebereich begrenze.
Und ich frage mich jedesmal, wie ich das dann mit MySQL speichern soll :-/

BEISPIEL 1:
  Nicht erweiterbarer Wertebereich, also keine
  weiteren Werte denkbar.

gottheit.beherrschtesElement ENUM('Feuer', 'Wasser', 'Erde', 'Luft') NOT NULL

BEISPIEL 2:
  weitere Werte könnten irgendwann dazu kommen,
  wären dann aber auch wiederum fest vorgegeben:

gottheit.farbe ENUM('abricot', 'rosa') NOT NULL

So wie ich das sehe, habe ich in beiden Fällen folgende Möglichkeiten:

  1. so wie im Beispiel einfach als ENUM-Attribut speichern.
       Bei Bedarf (2. Beispiel) die Definition der Spalte erweitern.

  2. als text-Wert speichern, also ohne wirklich festen Wertebereich
       Das hätte wohl Vorteile in Sachen Portierbarkeit, aber eigentlich
       will ich ja bei MySQL bleiben.

  3. auslagern in eine extra Tabelle, z.B.:
          farbe.id int NOT NULL
          farbe.name ENUM('mausgrau', 'aschfahl') NOT NULL
       um dann in der Tabelle "gottheit" mittels Fremdschlüssel zu verweisen.
       Dann wäre auch sowas denkbar:
          farbe.erklaerung text NOT NULL

Ein Freund von mir favorisiert meistens Variante 3, darum will ich das jetzt mal hinterfragen. Wie seht ihr das, was sind die Vor- und Nachteile?

Danke für eure Hilfe,
Eddie

--
Old men and far travforelers may lie with authority.