Проектирование базы данных
Приложение использует две базы данных для снижения общей нагрузки на сервер. К существующей на сайте sql-ex.ru база данных MS SQL добавляются 3 новых таблицы, также используются три существующие.
exercises |
|
поле |
тип |
id_ex |
Int |
author |
Int |
descript |
Varchar(MAX) |
eng_descript |
Varchar(MAX) |
sql_test |
Varchar(3000) |
Таблица exersises содержит 5 полей. Первичный ключ — поле id_ex. В ней содержится информация обо всех задачах на сайте, описание задач на английском языке.
users |
|
поле |
тип |
id_user |
Int |
login |
Varchar(50) |
Varchar(255) |
|
Таблица users содержит 3 поля. Первичный ключ — поле id_user. В таблице содержится информация о зарегистрированных на сайте пользователях. Используется для авторизации на сайте и в модулях.
x_users |
|
поле |
тип |
id_user |
Int |
id_ex |
Int |
time_answer |
datetime |
Таблица cars содержит 3 поля. Первичный ключ составной — поля id_user и id_ex (уникальные номера пользователя и упражнения). Таблица хранит информацию о том, какой пользователь и в какой момент времени решил задачу.
competitions |
|
поле |
тип |
id_ex |
Int |
competition_start |
Datetime |
competition_end |
Datetime |
status |
Varchar(50) |
publisher |
Int |
Таблица competitions содержит 5 полей. Первичный ключ — поле id_ex (уникальный номера упражнения). Таблица хранит информацию о существующих конкурсах. В полях хранятся данные о датах проведения, текущем статусе и авторе конкурса.
users_competitions |
|
поле |
тип |
id_ex |
int |
id_user |
int |
ratio |
int |
points |
int |
Таблица competitions содержит 4 поля. Первичный ключ составной — поля id_ex, id_user и ratio (уникальный номер упражнения, уникальный номер пользователя и рейтинг). Таблица хранит информацию о достижениях участников в каждом конкурсе.
bonuses |
|
поле |
тип |
id_ex |
int |
id_user |
int |
bonus_points |
int |
reason |
Varchar(255) |
Таблица bonuses содержит 4 поля. Первичный ключ составной — поля id_ex и id_user (уникальный номер упражнения и уникальный номер). Таблица хранит информацию о бонусах участников по каждой задаче.
Для конкурса по оптимизации создаётся также вспомогательная база MySQL, которая состоит из двух таблиц.
solutions_comments |
|
поле |
тип |
id_comment |
int(11) |
id_solution |
int(11) |
login |
Varchar(50) |
comment |
Varchar(255) |
id_parent |
int(11) |
comment_date |
Datetime |
level |
int(11) |
Таблица solution_comments содержит 7 полей. Таблица хранит информацию о комментариях по решению каждой задачи. Поле id_parent необходимо для создания древовидной структуры коментариев.
users_competitions_solutions |
|
поле |
тип |
id_ solution |
int(11) |
id_ex |
int(11) |
id_user |
int(11) |
points |
int(11) |
solution |
Varchar(8000) |
description |
Varchar(8000) |
eng_description |
Varchar(8000) |
publish_date |
Datetime |
login |
Varchar(50) |
Таблица users_competitions_solutions содержит 9 полей. Таблица хранит информацию о пользовательских решениях каждой задачи, а также авторские комментарии.
