In working on applications at client sites you tend to come across code that makes you think "what were they thinking"? This week I found one that just made me do the "facepalm":
select top 1 @_StateTrueKey = OverEngineeredKey from OverEngineered
where Value = 'true'
select top 1 @_StateFalseKey = OverEngineeredKey from OverEngineered
where Value = 'false'
(The names have been obviously obfuscated.) When I saw this I had to look at the table contents:
OverEngineeredKey Value
0 False
1 True
OK, it's really great that you want to be flexible in your design, and allow growth, but this is just plain silly.
Use constants in your code where you have truly constant values. Things like True/False, Male/Female, Off/On, etc. aren't going to "grow" and gain new values in time. Use constants in your code, and save the trips to the database for things that really will change over time.
Allen