База данных SQL, статистические составы спортивных лиг

Я делаю БД для хранения баскетбольной статистики. Я пытаюсь определить, разумен ли мой подход к отслеживанию списков.

В течение сезонов игроки могут менять команды или полностью покинуть лигу / присоединиться к ней. Я хочу отслеживать это и поддерживать возможность запроса:

  • Статистика игрока в разбивке по его пребываниям в каждой команде
  • Статистика команды (в основном полученная от ее игроков) за любой период времени, например, за сезон, включая все игры, в которых любой игрок играл за команду.
  • Составы команд на любую дату

У меня есть подход, но мне трудно думать о его потенциальных ограничениях в будущем.

  • Таблица playerStats содержит статистику каждого игрока в игре с идентификаторами gameID и teamID.
  • В таблице игр есть дата для каждого идентификатора игры.
  • В таблице составов должны быть столбцы для playerID, teamID, fromDate и toDate.

Будет ли этого достаточно? Нужна ли мне вообще таблица составов, в противном случае мне нужен teamID в таблице playerStats или избыточно иметь оба? Как правило, это подход для БД реестрового типа.

Спасибо!


person allstar    schedule 04.03.2013    source источник


Ответы (2)


Вам действительно не нужен Ростер. Вы можете захотеть иметь таблицу Team (teamID, teamName), если вы планируете иметь неописательные идентификаторы команд и/или ожидаете, что команды изменят свои имена.

Вам также понадобится таблица Players для хранения их имен и любых других атрибутов, которые вы хотите сохранить.

person PM 77-1    schedule 04.03.2013
comment
У меня есть это. Если я пойду без списка, где будет храниться информация о том, какой игрок в какой команде? Будет ли это просто определение того, за какую команду игрок сыграл свою последнюю игру в любой день? Это предпочтительнее, чем удаление teamID из таблицы playerStats и сохранение этой информации отдельно? - person allstar; 05.03.2013
comment
@allstar - Если вы хотите знать, какие игроки были в какой команде, даже если они на самом деле не играли, то я думаю, что что-то вроде Roster имеет смысл. - person PM 77-1; 05.03.2013

person    schedule
comment
Так что в целом я так думаю. Мне вообще нужно иметь team_1_ID и team 2 в играх? Если игры происходят, в таблице статистики игроков будет указано, какие команды играли через таблицу составов. - person allstar; 05.03.2013
comment
Может быть, я слишком стараюсь, чтобы избежать избыточности? - person allstar; 05.03.2013
comment
я бы сделал это - поскольку у вас нет хорошего способа узнать, играет ли какой-либо / каждый игрок в команде в игре - было бы проще запросить, даже если этот бит кажется немного избыточным. Попробуйте сформулировать запрос без него и посмотрите, нравится ли вам SQL... - person Randy; 05.03.2013