【发布时间】:2013-07-18 07:12:31
【问题描述】:
我在建模一些数据库表时遇到以下问题:
假设我有一些比赛(在比赛表中,每个比赛都有一个唯一的 ID),并且在每场比赛中他们都会给玩家一些奖品。有 3 个奖项(金、银、铜),每个奖项都有一个标题、一个徽标图像,可能还有其他未来的数据。
但是,在某些比赛中(基于比赛 ID),我希望能够自定义某些奖品的徽标或标题。如果奖品不是自定义的,它们只会有一些默认值。
另一个要求是能够选择在任何比赛中获得金牌的所有玩家(基本上忽略自定义)
到目前为止我的解决方案是:
在 Prizes 表中,除了主键之外,还添加另一个半唯一键。尽管每个定制的金牌都有不同的主键,但它们仍然会共享相同的半唯一键(我们称之为标签)。 这样,我可以自定义奖品的任何列,但保留选择所有金奖得主的能力(使用通用标签)。
将奖品表一分为二:不可变数据和可变(可定制)数据。 这样,我可以为金牌拥有一个唯一的主键,但在可变数据表中,可以在多行中找到该 ID。在此表中,主键是奖品 ID 和比赛 ID 的组合。
就性能和在奖品中添加其他信息的灵活性而言,您最喜欢哪种解决方案? 你有其他建议吗?
【问题讨论】:
标签: mysql sql database-design