Как правильно сформировать модели Django в данной ситуации?
Добрый вечер! Помогите советом, как правильнее сформировать модели Django в проекте. Суть следующая, хочу сформировать базу данных спортивных мероприятий, допустим футбольных матчей. Для начала планирую сделать следующие модели:
- Сезон (год)
- Тур (номер)
- Матч (дата проведения, место проведения, результат 1(команды 1), результат 2(команды 2))
- Результат (команда домашняя, команда на выезде(соперник), забитые мячи, пропущенные, пенальти, угловые и т.п.)
- Команда (название)
Сезон состоит из Туров, Туры из Матчей, а каждый Матч из двух Результатов (с показателями для первой и второй команды соответственно). На данном этапе запутался в том, как правильно связать модели Матч и Результат друг с другом, как OneToOne или лучше ForeignKey? Или модели вообще лучше переписать по другому?
Изначально хотел записывать все показатели в модель Матч, но мне показалось очень громоздким решением + в будущем из полученных результатов хочу сделать выборку и составить таблицу по количеству забитых голов, пропущенных мячей и т.п., сравнивать показатели команд в одном матче или в разных. Из Матча это выдёргивать будет не так удобно, как из Результата, как мне кажется.
В общем я только учусь, хотелось бы совета от бывалых...
sim3x, результат/действие будет один у одной команды, и один у другой, только с разными показателями. Так же и результаты/действия в матче могут быть только в одном экземпляре от каждой из команд и больше нигде присутствовать не могут, т.к. конкретный матч с конкретными неповторимыми показателями. Это мои рассуждения, возможно я не прав.
sim3x, подскажи, а что с чем лучше связать? В модели Действия добавить FK для связи с матчем, или как указал выше, в Матч через FK подвязать действия команды 1 и действия команды 2?
Вариант 1:
Матч():
дата проведения
место проведения
Действия():
команда
забито
пропущено
угловые
и т.п.
FK Матч
или
Вариант 2:
Действия():
команда
забито
пропущено
угловые
и т.п.
Матч():
дата проведения
место проведения
результаты дом. команды FK действия
результаты выезд. команды FK действия
Команда:
название
....
Матч:
дата_время
место_проведения = ФК()
...
# для ускорения можно сохранить _результат_ матча в данной модели
Действие:
команда_хозяин = ФК(Команда)
команда_гость = ФК(Команда)
матч = ФК(Матч)
тип_действия = Choices(угловой, ...)
актор = Choices(гость, хозяин)
? игрок
время
Вариант2
Команда:
название
....
Матч:
дата_время
место_проведения = ФК()
команда_хозяин = ФК(Команда)
команда_гость = ФК(Команда)
результат
# и пишите в жсоне как хотите
действия = JSON_field