[Из песочницы] Формирование турнирных таблиц, stored procedures SQL
На днях прочитал пост об автоматизированном формирование футбольных чемпионатов и решил поделится своим решением данной задачи, которое использовал для небольшой игры. Реализация жеребьевки сделана не стандартным подход при помощи хранимых процедур MS SQL Server.В итоге у меня получилась структура базы данных и хранимые процедуры, которые позволяют формировать таблицу игр между командами(выполнять жеребьевку) и обрабатывать результаты чемпионата. Все скрипты можно скачать с репозитория на github.
Таблица игр чемпионата
Основная хранимая процедура — это процедура формирования игр чемпионата между командами. При формировании я придерживался основных правил турнира:
- Количество команд участвующих в турнире должно быть четным;
- Каждая команда должна сыграть с другой командой 2 раза — на своем стадионе и на стадионе соперников;
- В одном туре команда одна и та же команда может играть лишь один раз;
- За победу в матче команда получает — 2 очка, за ничью — 1 очко, а за проигрыш соответственно — 0.
Давайте поэтапно рассмотрим алгоритм формирования таблицы игр. Логику буду стараться описывать детально, не скучно и с демонстрацией схем. Как пример давайте возьмем чемпионат в котором участвуют 4 команд для простоты понимания, хотя алгоритм может работать с любым четным количеством команд. Условно давайте обозначим наши команды под номерами 1, 2, 3 и 4, который в моей реализации являются их прямыми ID.
Читать дальше →