Using PostgreSQL to hold an array of data
Create a view on the table that joins with the enum table and shows an array of text.
Then create an INSTEAD OF INSERT OR UPDATE trigger on the view that translates the strings to numbers and stores the number array in the underlying table.