It will work. But I recommend changing the names, datatypes and indexing:
create table options_table (
grouping`type` VARCHAR(20) NOT NULL, -- keep it short
key `value` VARCHAR(20) UNSIGNED NOT NULL, -- keep it short
description VARCHAR(999) NOT NULL,
PRIMARY KEY(type, value) -- probably the only index needed
) ENGINE=InnoDB;
I did something like that once in 30 years. I used description
to make some web pages more user-friendly.
One table (and 2-column JOIN) versus many tables (and 1-column JOINs) -- very little performance difference.
See also ENUM
and SET
and FIND_IN_SET()
.