2017-09-28 4 views
-1

Ich muss Spalte zu einer Tabelle hinzufügen, die den Ursprung des Werts in einer anderen Spalte darstellen. I.e. es ist ein aufgezählten Wert bekannter Herkunft.Der beste Datentyp für die Spalte, die den Aufzählungstyp angibt

Was ist der beste Datentyp, um den Wert darzustellen? Sollte ich eine ganze Zahl oder eine Zeichenfolge verwenden? Mir ist klar, dass das beste Design beide Spalten in einer anderen Tabelle speichern würde, aber das ist momentan nicht möglich.

Würde es auch besser sein, unbekannte Herkunft mit einem festen Wert oder Null zu repräsentieren?

+0

scheint relevant: https://stackoverflow.com/questions/203469/how-to-use-enums-in-oracle –

Antwort

0

"Ich realisiere, das beste Design würde beide Spalten in einer anderen Tabelle speichern, aber das ist im Moment nicht möglich."

Wenn Sie keine Nachschlagetabelle erstellen können, müssen Sie die Bedeutung speichern. Wählen Sie also den Datentyp, der der Bedeutung entspricht. Das heißt, wenn Ihre Aufzählung "Rot, Bernstein, Grün" lautet, wählen Sie varchar2(5). Verwenden Sie eine Prüfbedingung, um sie auf eine gültige Eingabe zu beschränken.

Wenn Sie Integer verwenden, müssen Sie die Übersetzung woanders speichern. Die Bedeutung von Daten muss in der Datenbank liegen.

Offensichtlich müssen Sie die Liste der Werte in jeder Benutzeroberfläche duplizieren, die die Spalte füllt. Dies ist die technische Schuld, die entsteht, wenn keine Nachschlagetabelle erstellt wird.

"wäre es besser, einen unbekannten Ursprung mit einem festen Wert oder Null zu repräsentieren?"

Die beste Option wäre ein expliziter Wert von 'unknown' oder was auch immer passt. Die nächstbeste Option ist null: Nullen sind unordentlich und können Abfragen schwieriger schreiben, aber magische Werte sind schlechter, da sie wie echte Daten funktionieren und daher zu irreführenden Ergebnissen führen können.

Verwandte Themen