Сейчас такие олимпиады и туры просто остаются открытыми для просмотра зарегистрованных участников, а для дорешивания заводятся новые туры в тренировках. Но для имитации соревнований в дорешивании такого тура в режиме виртуального нужно отображать и посылки официального рейтинга.
То есть нужно либо уметь переносить рейтинг в новый тур, либо открывать для дорешивания официальные туры с заведением новой вкладки «Виртуальный рейтинг».
1. Должны ли разные участники одного виртуального тура видеть друг друга в рейтинге?
2. В частности, должен ли участник видеть свои решения из других сессий этого виртуального тура?
3. Может ли участник самостоятельно начинать новые сессии виртуального тура или ему нужна определённая привилегия или администратор должен каждый раз добавлять участника в тур?
Вариант реализации будет похож на предложение А.
В таблицы submits И timeshift добавить поле virtualuser типа int(11) может быть NULL, значения по умолчанию NULL.
Таблица virtualtour должна иметь следующие поля:
имя | тип | NULL? | default |
id | int(11) | Нет | |
tour | int(11) | Нет | |
duration | int(5) | Да | NULL |
id | int(11) | Нет | |
user | int(11) | Нет | |
virtualtour | int(11) | Нет | |
start_time | datetime | Нет |
Для создания SQL таблиц можно выполнить следущий код:
ALTER TABLE `submits` ADD `virtualuser` INT( 11 ) NULL DEFAULT NULL AFTER `user` ;
ALTER TABLE `timeshift` ADD `virtualuser` INT( 11 ) NULL DEFAULT NULL AFTER `user` ;
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
CREATE TABLE IF NOT EXISTS `virtualuser` (
`user` int(11) NOT NULL,
`virtualtour` int(11) NOT NULL,
`start_time` datetime NOT NULL,
PRIMARY KEY (`id`),
KEY `user` (`user`),
KEY `virtualtour` (`virtualtour`)
DROP TABLE IF EXISTS `virtualtour`;
CREATE TABLE IF NOT EXISTS `virtualtour` (
`tour` int(11) NOT NULL,
`duration` int(5) default NULL COMMENT 'in minutes',
PRIMARY KEY (`id`),
KEY `tour` (`tour`)