Using enum isn't just about limiting the value to predefined options, it also requires less storage space, however for most applications I would agree (and use the same concept myself) of having the value:text pairs in the app code on the model (or a helper class if it's a common type of column, ie several tables might have a "state" column.)