В настоящее время у меня есть прикрепленная модель данных для календаря и база данных результатов для ультразапускаемых событий.Мой вопрос вращается вокруг того, как наилучшим образом настроить таблицы и отношения для курсов (все различные расстояния для события) и рас (случай события, использующего определенный курс).Мой модельный сайт - calendar.ultrarunning.com , хотя некоторые функции я буду строить по-другому.
Таблицы
СОБЫТИЯ Общая информация о (обычно) повторяющемся событии. - В одном событии может быть много курсов (один-ко-многим). - В одном событии может быть много гонок (один-ко-многим)
КУРСЫ Вся информация о курсе, который может использовать событие (например, 50 миль, 50 км, 100 миль). Один курс можно использовать во многих гонках (например, курс в 50 миль в гонке каждого года на соревновании).
RACES Конкретный случай события на определенную дату с использованием одного из курсов в таблице COURSES.- В одной гонке может быть много (?) Курсов (это одна из тех, о которых у меня есть вопрос !!) - возможно, многие ко многим с КУРСАМИ
РЕЗУЛЬТАТЫ Результаты дляконкретная гонка, включая время, позиции и т. д. для каждого бегуна.- У одной гонки есть много результатов - (ИЛИ промежуточная таблица, связанная с КУРСАМИ и РАСАМИ, см. Вопрос ниже)
RUNNERS Информация о каждом бегуне, который участвует в гонке и получает результат.- У бегуна может быть много результатов
Вопросы
Теперь я думаю о том, как бороться с разделением данных на КУРСЫ и РАСЫ.
- IМожно выбрать отношения многие ко многим и позволить каждой гонке иметь много курсов.То есть гонка в этом случае - это все, что происходит на мероприятии в конкретную дату, включая все предлагаемые дистанции / курсы.
- Я могу выбрать отношения один ко многим и создать одну гонку для каждого курса на мероприятии в конкретную дату.То есть мне нужно создать много гонок, если в этом году будет много трасс, а не как в # 1, где мне нужна только одна гонка с несколькими трассами.
- Я перехожу на полностью иерархическую модель с RACES,ДЕТЬ КУРСОВ.То есть для каждой гонки я выбираю один (или несколько?) Курсов, которые автоматически связывают гонку с событием этого курса.
Сценарий 1 : В случае# 1, могу ли я создать промежуточную таблицу - возможно, содержащую дату - с которой связаны результаты этого конкретного экземпляра (определенного курса на определенную дату)?В этом случае, возможно, дата должна быть в обеих RACES и в этой промежуточной таблице?Или, возможно, не в RACES?
Сценарий 2 : В случае # 2 я бы связал каждый результат с одной гонкой в RACES, и эта гонка имеет только один курс.Достаточно просто.
В сценарии 1 преимущество может состоять в том, что проще создать гонку, и у меня может быть описание того, что уникально для события в эту конкретную дату.
ВВ сценарии 2 будет сложнее создать, скажем, 4-5 различных рас для экземпляра события, и эти расы не имеют ничего общего, кроме даты.
Сценарий 3 СВ полностью иерархической структуре достаточно легко понять отношения, поскольку у каждой расы есть один (или много?) ход (ы), который, в свою очередь, относится к событию.И результаты, очевидно, связаны с гонкой.
Дисплеи
Следующие дисплеи, которые я планирую, связаны с КУРСАМИ и ГОНКАМИ.а.Список всех предстоящих гонок с названием события из СОБЫТИЯ в качестве заголовка, но с отображением расстояний от таблицы КУРСЫ для каждой гонки из РАС на эту дату.б.Предстоящие и прошедшие гонки под подробностями события на странице события.с.Подробная страница для курса, в котором перечислены все предстоящие и прошедшие гонки для этого курса.д.Страница результатов для события.е.Страница результатов для конкретного экземпляра гонки.е.Просмотры с лучшими результатами по полу и возрастной группе для конкретного курса.г.Лучшие списки (годовые и за все время) для каждой дистанции, поверхности и т. Д.
Последний вопрос
Какой подход к взаимоотношениям между КУРСАМИ, РАСАМИ и РЕЗУЛЬТАТАМИ является лучшим для достижения этой цели?