mysql - 使用 0/NULL 值进行归一化还是可以设计得更好?

标签 mysql sql-server database-design normalization database-normalization

我正在为以下场景规划 MySQL 中的数据库 -

我正在尝试建立一个逐场比赛系统,例如NBA,赛事等

 Play event[id, play_type_id, play_outcome_id, points] 

  Substitution event[id, player1_in_id, player2_out_id]  

  Foul event[id, foul_type_id, player_id] 

在主 play_by_play 记分卡中,特定事件应与特定时间和比赛相关联

Play_by_Play[id, match_id, time_id, play_event_id, substitution_event_id, foul_event_id] 

但是,假设在某一特定分钟,三个事件中仅发生一个 - 三分之二的事件记录中只有一个具有 id,其他事件记录将为 0 或 NULL。我剩下的问题是这种设计的归一化是否良好,或者是否有更好的方法来做到这一点?

最佳答案

如果目标是跟踪事件,则将重点放在单个表中每个事件的一行上。

play_typefoul_type 混合为一个类型,并替换为另一种类型`。

考虑将“替换”分为两个事件:玩家被移除和玩家被添加。这消除了专门为此事件而存在的额外玩家列。 (但是如果您想将其称为单个事件,事情就会变得复杂。)

可能需要少量的可空列。

关于mysql - 使用 0/NULL 值进行归一化还是可以设计得更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41546335/

相关文章:

php - 在 MySQL 中存储 HTML

php - Prestashop 管理选项卡 - clausole 不起作用的地方

sql - 获取在 sql server 存储过程中更新或插入的记录数

sql-server - sql Try Block中的恢复错误未被捕获

sql-server - 数据库和 UI 开发的最佳方法?

sql - Mysql多对多查询

mysql - mysql邻接表模型中是否有父离线?

C# 在 SQL Server 中存储文本以进行全文搜索

mysql - 存储较长时间和时区的统计数据

database - 来自值组合的值 - 数据库设计