As shown below, in multiple places in my DB Design I am creating tables for "options" if you will. Example, RFP Stages. Which would hold things like "Complete", "Bidding", etc.

I'm doing this because it was recommended to me at one point in a question that was deleted. Is this the proper way to do this? Or should I just store these options as text, given there is only 5 or so possibilities?

enter image description here

enter image description here


1 Answer 1


If I interpret your question correct. I think you have at least 4 alternatives.

  1. ENUM https://www.postgresql.org/docs/current/datatype-enum.html
  2. Table lookup
  3. Local lookup
  4. Plain Text

Personally I prefer table lookup with id and name. You store only the ID. So you have to join tables when fetching. It is easier to add or delete options. And it is easier to search for status 1. And the footprint will be smaller.

  • What's a "local lookup"? Apr 23, 2019 at 8:41
  • 1
    At client side, you can do a list (php or similar) that you lookup and select from. I use this when the options are static.
    – sibert
    Apr 23, 2019 at 9:35
  • Or a Variable List you import into React would be an example of local lookup, something I considered but this seemed like a better practice.
    – Matt Weber
    Apr 23, 2019 at 15:10
  • 1
    @MattWeber I treat local lookup exact like a table lookup with id and name.
    – sibert
    Apr 23, 2019 at 15:14

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.