枚举替代项

| 我想存储团队的颜色,但不幸的是,我正在使用不支持枚举的sqlite。我想存储团队的颜色,如下所示:
id   |   team name   |  team colors

1      vikings           red,orange,white

2      angles            gold,black
怎么走?
已邀请:
最简单的方法(不一定在所有情况下都是最好的)是创建一个名为
colors
的表(例如):
table color
id | color
1    green
2    red
3    blue
....
那是您的枚举表。您的c ++枚举可以转换为整数,然后用作主键值。但是,如果您将这些数据存储在关系存储中,我认为您不想将它们与枚举之类的代码级工件捆绑在一起。表内容的更改必须强制更改代码。 然后,以典型的规范化方式,创建一个
relational attribute
表,以表示团队与颜色枚举之间的多对多关系。 color_id字段映射到color表的主键,而team_id映射到teams表的主键。
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
与此相关的还有很多语法细节需要处理(在某些情况下,可能不希望这样做,在一个帖子中讨论的太多)。但是,这或多或少是大体上的想法。
也许有点矫kill过正,但是这样的结构怎么样?
COLORS
id  color
1   red
2   orange
3   white
4   gold
5   black

TEAMS
id | team name | team colors
1    vikings     1
2    angles      2

TEAM COLORS
teamid | colorid
1        1
1        2
1        3
2        4
2        5
然后,一些简单的sql将产生您需要的颜色列表。 另一方面,您可以仅存储颜色名称。您必须在应用程序中对其进行解析。
枚举可以转换为整数。假设您有
enum Color { red = 1, orange = 2, white = 4, gold = 8, black = 0x10 };
Color teamColor = red | orange | white;
,然后可以将teamColor存储为整数
(int)teamColor
枚举本质上是一个int,为什么不存储int值呢?

要回复问题请先登录注册