logo
Сопровождение учебного процесса ПК БГТУ

2.2 Разработка структуры данных

Создание логической модели данных является одной из наиболее важных задач при проектировании любой программы. Поэтому особое внимание было уделено организации хранения данных.

Для хранения расписания всех групп колледжа, а так же информации о зарегистрированных в системе пользователей мною был сделан выбор в пользу СУБД MySQL.

MySQL - это одна из самых популярных и самых распространенных СУБД (система управления базами данных) в интернете. Она не предназначена для работы с большими объемами информации, но ее применение идеально для интернет сайтов, как небольших, так и достаточно крупных. [9]

MySQL отличатся хорошей скоростью работы, надежностью, гибкостью. Работа с ней, как правило, не вызывает больших трудностей. Поддержка сервера MySQL автоматически включается в поставку PHP.

Немаловажным фактором является ее бесплатность. MySQL распространяется на условиях общей лицензии GNU (GPL, GNU Public License). [10]

Рисунок 2.2.1 - Структура данных

Таблица для хранения расписания raspisanie

Таблица состоит из следующих полей

Таблица 2.2.1 - Описание полей таблицы raspisanie

Имя поля

Хранимая информация

id

Хранит идентификатор группы

pn

Хранит расписания для групп на понедельник

vt

Хранит расписания для групп на вторник

sr

Хранит расписания для групп на среду

cht

Хранит расписания для групп на четверг

pt

Хранит расписания для групп на пятницу

sb

Хранит расписания для групп на субботу

Рисунок 2.2.2 - Структура таблицы raspisanie

В каждой ячейке таблицы хранится информация об одном учебном дне (количество пар, их порядок, проводимые предметы, номера аудиторий и фамилии преподавателей).

Информация в ячейках таблицы raspisanie зашифрована следующим образом:

[предм1>преп1>н. аудит1] | [предм2>преп2>н. аудит2] | [предм2>преп2>н. аудит2]

Любой из блоков может быть пропущен, тогда в результирующей таблицы будет пустая ячейка, что будет означать об отсутствии пары в этот учебный день.

Расшифровка данных из ячеек производится с помощью функций getLessonsWeek ($group) и getLessonsTomottow ($group), которые на основе зашифрованной в таблице информации формируют результирующую таблицу на неделю и на следующий учебный день соответственно. Аргументом для функций служит идентификатор группы.

Таблица для хранения информации о зарегистрированных пользователях users

Рисунок 2.2.3 - Структура таблицы users

Таблица состоит из следующих полей:

Таблица 2.2.2 - Описание полей таблицы users

Название поля

Хранимая информация

id

Хранит идентификатор пользователя. Первичный ключ, автоинкремент.

login

Хранит логин пользователя для входа в систему

pswd

Хранит md5-хэш пароля пользователя

FIO

Содержит Фамилию и имя зарегистрировавшегося студента

email

Хранит адрес электронной почты пользователя

showcontant

Отвечает за отображение контактной информации пользователя в общедоступных разделах сайта

icq

Хранит UIN пользователя

st_group

Идентификатор учебной группы, в которой состоит студент

Из за того, что многие пользователя используют один и тот же пароль при авторизации во многих системах, целесообразным в плане безопасности стало решение хранения паролей пользователей в виде хэша md5. MD5 предназначен для создания "отпечатков" или "дайджестов" сообщений произвольной длины и последующей проверки их подлинности.

Зашифрованную информацию невозможно расшифровать, ее можно лишь проверить, сверив хранимый в БД хэш с хэшем введенного пароля.

То есть, пароль пользователя при регистрации записывается в базу в зашифрованном виде, а при авторизации хранимый хэш сравнивается. Таким образом непосредственно пароли на сервере не хранятся, поэтому утечка конфиденциальной информации при нарушении целостности БД невозможна.

Таблица для хранения информации о группах groups

Рисунок 2.2.4 - Структура таблицы groups

Таблица состоит из следующих полей:

Таблица 2.2.3 - Описание полей таблицы users

Название поля

Хранимая информация

id

Идентификатор группы. Так же хранится и в других таблица. По идентификатору происходит выборка имени группы.

group_name

Имя группы

Таблица для хранения новостей news

Рисунок 2.2.5 - Структура таблицы news

Таблица 2.2.4 - Описание полей таблицы users

Название поля

Хранимая информация

id

Идентификатор новости. Служит для идентификации новости для ее редактирования или удаления из базы данных.

title

Заголовок новости

news_text

Текст новости

date

Дата добавления новости

Таблица для хранения списка замен replacement

Рисунок 2.2.6 - Структура таблицы replacement

Таблица 2.2.5 - Описание полей таблицы users

Название поля

Хранимая информация

id

Идентификатор замены. первичный ключ. Автоинкремент.

group_id

Идентификатор группы. определяет для какой группы установлена замена.

n_pari

Номер заменяемой пары.

predmet

Заменяемый предмет

z_predmet

Предмет замены