Database Entity Design for Enumeration Table

identityunique-constraint

I have an enumeration of ~10 values – they are Char such as A through K. These are all unique. They are used for two purposes – an application is forced to select acceptable values and also there is a many to many relation between product and this enumeration table.

Is it bad practice to set the Primary Key as simply this unique value [A-K]?
So basically one column of char(1) as the Primary Key. Or should I use an ID field and then set these values in a column and force that column to unique?

The values in this enumeration will never change. They are fixed by the representation. For example, position 1 can only be position 1, like first base will always be first base and never will it become 3rd base (or at least in the last 150 years it has not – my app might not last that long). So that is why I was thinking to simply do it this way – because it truly is permanent, non-changing.

Best Answer

If there was any sort of choice to be made by your designers or users in the selection of these values I would go for the surrogate ID approach. What has been decided can be un-decided and the change will be easier with surrogates in place.

Since you are adamant the values are fixed by a Law Of Nature (or, at least, some external authority) I would be OK with using the single-column approach. In these circumstance the chances of change, and the wider impact, mean you'll likely have sufficient notice to effect the application update.