In any database application you need drop downs, but lot of times most of your drop downs are simply Id and Type.
Example
For Gender (Male,Female) you have table called Gender with GenderId and GenderName
For Salutation(Sir,Mr,Mrs) you have table called Salutation with SalutationId and SalutationName
Therefore in Employee table, you will have GenderId and SalutationId as FK.
I have also seen one generic table that has Category,Type and Id to handle the same information.
So for the above example the table would look something like this
Category ChoiceCode Id
Gender Male, 1
Gender Female, 2
Salutation Mr, 3
Salutation Mrs, 4
The second approach (One generic table) seems easy and does not require creating new table every time we have Type and Id drop down.once you add it to LLBLGen project and once you write one function that takes category as parameter that gets you the desired values, you are set.
But the drawback is there is no real FK or constraints. Because all drop down values remain in this table, it gets used by all scope of the application and could lead to deadlocks?
The first approach(separate table for each drop down) seems standard, you have clean FK constraints, but requires you to add a new table, add it to LLBLGen project, write function to get the data every time.
I just wanted to get some opinion about which of these two approach is better or if there is any other better approach.
Thanks