Самый простой способ (не обязательно лучший при всех условиях) - создать таблицу с именем colors
(например):
table color
id | color
1 green
2 red
3 blue
....
Это твой enum table. Ваши перечисления c ++ могут быть преобразованы в целые, которые затем могут быть использованы в качестве значений первичного ключа. Но если вы храните эти данные в реляционном хранилище, я не думаю, что вы хотите связать их с артефактом уровня кода, таким как enum. Изменение содержимого таблицы должно привести к изменению кода.
Затем, обычным образом, вы создаете таблицу relational attribute
, чтобы представить отношения «многие ко многим» между вашими командами и цветовыми перечислениями. Поле color_id соответствует первичному ключу таблицы цветов, а team_id - первичному ключу таблицы команд.
table team-colors (color_id + team_id == primary key)
color_id | team_id
1 1
2 1
2 2
3 2
....
И тогда у вас есть стол вашей команды
table teams
id | name
1 vikings
2 angles
....
, чтобы узнать цвета для каждой группы, получить представление (или запустить SQL) со следующим псевдокодом SQL
SELECT a.id as team_id, a.name, b.color, b.id as color_id
FROM teams a, colors b, team_colors c
WHERE a.id = c.team_id and b.id = team_colors.color_id
Есть много синтаксических деталей, над которыми нужно поработать (и есть условия, когда это может быть нежелательно, слишком много, чтобы обсуждать это в одном посте). Тем не менее, это общая идея, более или менее.