Как я должен обращаться с неполной историей в моей базе данных бейсбольных кувшинов - PullRequest
0 голосов
/ 03 марта 2012

Я работаю над довольно простым приложением базы данных, где я слежу за бейсбольными питчерами MLB.В настоящее время у меня есть две таблицы:

  1. pitchers => name: string, ...
  2. start => start_date: date, pitch_count: integer, Strikes: integer, balls: integer, era: float, run: integer, win: integer

При такой конфигурации было бы довольно просто разработать отчет для каждого питчера, если у меня есть все исторические старты питчера.

Мой вопрос заключается в том, как лучше всего справиться с двумя приведенными ниже ситуациями, когда у вас нет полной информации о начале истории:

  1. Ситуация 1 - у вас нет историиНачните подробно, но у вас есть историческая сводная информация: старты, победы, высот и т. д. за год и время жизни.Это случай кувшина, который удалился.

  2. Ситуация 2 - У вас есть некоторые исторические подробности начала, а также историческая сводная информация, описанная в Ситуации 1.

Как лучше всегоОбработка этого:

Должен ли я создать фиктивные записи в стабильных стартах для представления сводной информации или создать третью таблицу, содержащую сводную информацию, и просто обновлять эту таблицу после каждого старта для активных игроков, илиЕсть некоторые другие альтернативные лучшие практики.

1 Ответ

1 голос
/ 03 марта 2012

Насколько я вижу, у вас есть 3 варианта:

  • Храните сводную информацию в другой таблице ТОЛЬКО тогда, когда вы этого не сделаете индивидуальные старты
  • Хранить сводную информацию, включая Обобщенная информация для отдельных стартов в отдельной таблице
  • Иметь специальный тип стартовой записи для представления сводной информации. предназначен для получения правильных результатов при выполнении сводного запроса на весь стартовый стол

Я думаю, что второй лучше. Просто чтобы прояснить это, идея в том, что вы, когда у вас есть только сводная информация, вы помещаете ее в сводную таблицу, но вы также помещаете сводную информацию, сгенерированную из отдельных стартов, которые у вас есть в эту таблицу. Это нарушает нормализацию, поскольку некоторая сводная информация полностью зависит от существующих начальных записей, но будет более эффективной, особенно если вам часто приходится выводить обобщенную информацию. Это требует, чтобы вы обновляли сводную информацию каждый раз, когда добавляете или изменяете стартовую запись. Вам нужно будет внести 2 изменения в транзакцию для обеспечения согласованности.

...