MyWackoSite: NsuTs/Вам запрещён доступDocumentation/devguide/dbchanges ...

Home Page | Каталог | Изменения | НовыеКомментарии | Пользователи | Регистрация | Вход:  Пароль:  

Изменения в базе данных

Решение

Удобнее все-таки выделять команды
См. схему базы данных 1.3.0_new

Концепция:

1.2.8 – Есть команды, которые привязаны к олимпиаде, к туру. Участники команды записываются как обычные данные о команде.
1.3.0 – Есть пользователь.
Он может привязывать себя к различным олимпиадам (создается запись user_team), подставляя себе определенные данные(ФИО, город)
В олимпиадах возможно создавать команды.

Отличия:

  1. Наличие внешних ключей, каскадное удаление (раньше просто подразумевалась связь)
  2. Строгое именование таблиц: в каждой таблице id, название таблицы в ед. числе, через подчерк
  3. Изменение сущностей

Users -> User + User_olympiad
Forms -> Attribute + Olympiad_attribute
Olympiad поле teams_alllowed Командная / Личная?

Удаление объектов

Каскадное удаление возможно не везде, т.к. необходимо удалять связанные файлы
объект что удалить
олимпиада инф о туре + туры + команды-участники
условие инф об условии + файл
задача инф о задаче + сабмиты (исходный код) + тесты + условие
команда все ее сабмиты, неоткрытые вопросы

Подробности хранения данных:

1. Город

Создаем особый фильтр «Город», при выборе которого предлагается список городов, взятый из таблицы city
тип value varchar(255), поэтому храним id города в строковом виде.

Если города нет в таблице, то предварительно записываем набранный пользователем город в таблицу city, поле moderation = 0
0 – не обработан
1 – прошел модерацию
2 – игнорировать

Аналогично таблица university

2. Типы олимпиад


Типы олимпиад: командная, личная (поле teams_allowed: 0 – личная, 1 – командная)

3. Добавление команд


Команда заводится на олимпиаду.
Пользователь является незарегистрированным на олимпиаду, пока у него не определена команда.

При регистрации на командную олимпиаду предлагается список зарегистрировавшихся команд.
Предлагается присоединиться к ним, или создать свою.

После подтверждения создается запись user_team для этого user и для этой team
пользователю высылается сообщение, что он был добавлен в такую-то олимпиаду в такую-то команду.
При первом открытии олимпиады, если есть незаполненные поля для участника, предлагаем заполнить их.

На вкладке “Команда” есть возможность пригласить в команду других участников: Возможные ответы
1) пользователя не существует
2) уже состоит в другой команде на эту олимпиаду
3) приглашение выслано

 
Файлов нет. [Показать файлы/форму]
Комментариев нет. [Показать комментарии/форму]