我该怎样处理棒球投手数据库中不完整的历史记录

时间:2012-03-03 13:46:07

标签: database ruby-on-rails-3 database-design

我正在使用一个相当简单的数据库应用程序来跟踪MLB棒球投手。目前,我有两个表:

  1. pitchers => name:string,...
  2. starts => start_date:date,pitch_count:integer,strikes:integer,balls:integer,era:float,run:integer,win:integer
  3. 通过这种配置,为每个投手开发报告将非常简单,前提是我拥有​​所有投手的历史性开始。

    我的问题是,当您没有完整的历史起始信息时,处理以下两种情况的最佳方法是什么:

    1. 情况1 - 您没有历史开始细节,但您确实有历史摘要信息:每年和每年的开始,获胜,投球等。这是退休的投手的情况。

    2. 情况2 - 您有一些历史起始细节以及情况1中描述的历史摘要信息。

    3. 处理此问题的最佳方式是什么:

      我应该在starts stable中创建虚拟条目来表示摘要信息,还是应该创建一个包含摘要信息的第三个表,并在每次启动活动玩家后简单地更新该表,或者是否有其他替代最佳实践。

1 个答案:

答案 0 :(得分:1)

就我所见,你有三种可能性:

  • 仅在您不这样做时,将摘要信息保存在另一个表中 让个人开始
  • 保留摘要信息,包括 在单独的表格中汇总各个开始的信息
  • 有一种特殊类型的开始记录来表示摘要信息 旨在在运行摘要查询时生成正确的结果 整个开始表

我认为第二个是最好的。只是为了澄清它,我们的想法是,当您只有摘要信息时,将它放在摘要表中,但是您还可以将您在此表中单独启动时生成的摘要信息。它打破了规范化,因为某些摘要信息完全依赖于现有的开始记录,但如果您必须经常输出汇总信息,它会更有效。它要求您每次添加或更改开始记录时都更新汇总信息。您需要在事务中进行2次更改以确保一致性。