Hmm, ich kenne zwar Firebird nicht, aber in
mySQL ist die übliche Lösung dafür ein Enum. Das ist zwar von Programmseite aus wieder nur ein String, aber man kann die erlaubten Werte abfragen und zumindest theoretisch kann die Datenbank die Speicherung dieser Information optimieren. Denk immer dran, dass Strings grundsätzlich nichts schlechtes sind für Datenbanken - das macht sie in meinen Augen leichter wartbar. Und so ein extremes Aufblähen ist das im Normalfall auch nicht. Ob ein Datensatz jetzt 1500 oder 1510 Byte hat, ist relativ wurscht.