NsuTs/Documentation/devguide/taskbank
Банк задач
Описание:
- Теги к задаче (год написания; турнир, в котором задача была впервые использована; автор)
- Основной формат хранения условий задач – La Te X?
Текст задач больше не будет храниться в базе данных. Полнотекстовый поиск по условиям будет проводиться системными средствами (утилиты grep, awk, sed), либо, если объём базы данных потребует более мощного поискового механизма, с помощью пакета Sphinx.
- В БД хранятся основные данные о сложности и трудоёмкости задачи: лимиты времени и ограничения по используемой памяти. Данные ограничения предполагается хранить в отдельной таблице, так как поиск собственно по ним производиться не будет, поэтому задача их индексирования остро не стоит.
- поле “сложность” целочисленное (10-бальное), сложность сверху и снизу
Предполагаемые таблицы
Таблица 1.1. Таблица пользователей банка задач
id | login | password | name | role |
int(10) | varchar(50) | varchar(32) | varchar(50) | int(4) |
Примечание: в качестве логина будет использоваться e-mail, пароль в базе будет храниться в виде результата хэш-функции.
Таблица 1.2. Таблица рубрик банка задач.
id | title | description |
int(10) | varchar(50) | text |
Таблица 1.3. Таблица тегов банка задач.
id | title |
int(10) | varchar(50) |
Примечание: следует различать теги и рубрики. Рубрицирование используется для указания тематики задачи, тегирование – для вспомогательных данных, полезных при навигации по базе.
Таблица 1.4. Таблица задач.
id | authorId | title | shared | sharedSolution | minComplexity | maxComplexity | description |
int(10) | int(10) | varchar(255) | int(4) | int(4) | int(4) | int(4) | text |
Примечание: функционал некоторых полей из предыдущей версии перенесён на файловую систему.
Таблица 1.5. Распределение задач по рубрикам
taskId | categoryId |
int(10) | int(10) |
Таблица 1.6. Тегирование задач
taskId | tagId |
int(10) | int(10) |
Таблица 1.7. Технические данные по задачам
id | memoryLow | memoryHigh | timelimitLow | timelimitHigh |
int(10) | int(32) | int(32) | int(10) | int(10) |
Вопросы
- Надо ли вводить новую систему пользователей?
Как можно больше интегрировать с NSUts, чтобы затем из этого набора задач, можно было формировать новые туры, и наоборот
- Вместо authorid строкой хранить имя автора
- Таблица задач.shared?
- Хранить путь на 1) архив с тестами (+чекером) 2) условие 3)архив с решениями и генераторами тестов