Всем привет. Запутался в написании БД для футбольной лиги. Описание БД простым языком:
Таблица players: id, firstname, team_id, lastname, birthday, passport, password
Таблица teams: id, name, regdate, captain_id
Таблица teams_history: id, action_id, player_id, team_id, date
Таблица actions: id, value
Таблица tournaments: id, name, startdate, enddate, format_id, price, prizes
Таблица games_action: id, game_id, player_id, gameaction_id, game_time
Таблица gameaction: id, value
Таблица games: id, team1_id, team2_id, team1_score, team2_score, tournament_id, date
Возникло очень много вопросов касательно оптимизации структуры БД, поэтому хочется услышать мнение людей.
- Вопрос 1: Правильно ли я сделал, что добавление игры - это
добавление результата игры в таблицу games данных о результате? Что
делать, если нужно будет составить расписание и внести в таблицу
games уже готовые игры, но без результата?
- Вопрос 2: Если мне нужно будет, к примеру, все игры определенного игрока, что мне нужно будет сделать? Игроки могут выходить из команд и заходить в команды, а мне нужно, чтобы их прошлые игры были видны. Нужно создавать промежуточную таблицу, где будут данные об игроке и команде, за которую он играл?
- При условии, что игроки выходят и заходят в команды, хочу это отслеживать, чтобы писать в историю команды, что такой-то игрок зашел/вышел из команды, а также писать в историю игрока, что вышел/зашел в такую-то команду. Промежуточная таблица teams_history для этого подойдет?
- В некоторых турнирах могут быть 2 этапа - групповой этап и игры на выбывание. Если я хочу отследить определенный этап, то мне следует в games помимо tournament_id записывать этап игры/тур группового этапа, где все команды играют каждая с каждой?
- Где в данной БД лучше использовать представления, а где таблицы?
- Что делать с индексами? Некоторые таблицы будут заполняться быстро, т.е. 1 игра может вставить, к примеру, от 10 до 50 строк в таблицу games_action, туда будут записываться желтые и красные карточки, голы и замены. P.S. сам про индексы только читаю, до этого с большими проектами дел не имел, поэтому индекс был 1 на всю таблицу - первичный ключ (id)
Заранее спасибо за ответы! Надеюсь, что этот вопрос будет полезен не только мне!