Я пытался читать документацию Laravel и другие подобные сообщения о взаимоотношениях с базой данных Laravel, но, похоже, я не могу обдумать это и то, как это применимо к моему варианту использования.
Я управляю веб-сайтом дляЛегкая атлетика средней школы.У меня есть 5 таблиц:
- школы - Автономный список всех школ в штате.
- спорт - Автономный список всех видов спорта, разрешенных государством.
- сезоны- Автономный список сезонов (один сезон на учебный год).
- Лиги - Автономный список лиг / конференций.
- league_divisions - Список дивизионов для лиг, которые имеют несколько дивизионов (например, «Большая десятка»).Восток "и" Большая Десять Запад "), где league = parent и league_divisions = child.Примечание. Лига будет иметь дочерние записи в этой таблице только в том случае, если в ней есть подразделения;В большинстве спортивных конференций / лиг старших классов нет разделений, и поэтому в этой таблице не было бы соответствующей записи.
Время от времени школы меняют лиги или могут менять, какое подразделение лиги ониявляются частью.(подумайте «школьные лиги»)
Аналогичным образом, школа может начать заниматься новым видом спорта (в школе А в прошлом никогда не было футбола для девочек, но теперь у них есть команда) или прекратить старое (школа В нет.дольше есть футбольная команда).(подумайте "school_sports")
Кроме того, хотя государство может санкционировать 25 видов спорта, сама лига может только санкционировать 10. Мой веб-сайт предназначен для самой Лиги, поэтому мне также нужен способ перечислить, какие виды спорталига санкций.(подумайте "league_sports")
В моей старой (до Laravel) модели данных у меня просто была таблица "school_leagues", в которой хранится информация о том, к какой лиге (и подразделению, если применимо) принадлежала школа для определенного диапазонасезонов (через start_season_id, end_season_id).Кроме того, в HTML я просто жестко закодировал статический список того, какие виды спорта разрешены в лиге, и какие команды должны появиться в турнирной таблице этого вида спорта.
Однако, когда я перестраиваю свою модель данных, я думаю, чтоможет потребоваться более сложная таблица (таблицы) отношений, которая объединяет школы, спорт, сезоны, лиги и (необязательно) дивизии лиг.
Кроме того, вместо использования start_season_id и end_season_id (где end_season_id = NULL, если отношениевсе еще действует), заставит ли меня конвенция Laravel иметь 1 запись на школу на спорт в сезон на лигу / дивизион?(Это напрямую присоединится к season_id, а не к столбцам start / end_season_id)
Любая помощь приветствуется!
Я мог бы просто использовать 3 таблицы отношений: school_leagues, school_sports и league_sports, ивсе присоединяются к сезону либо по сезону (1 запись в год), либо по началу / окончанию_сезона.
ИЛИ у меня будет 1 основная таблица, объединяющая school_id, sport_id, season_id, league_id и (необязательно) league_division_id.В каждом экземпляре будет 1 запись, поэтому каждый год я буду генерировать новую группу записей.