- •Выпускная квалификационная работа на соискание академической степени бакалавра
- •Березники 2016
- •Задание на выполнение выпускной работы бакалавра
- •Аннотация
- •Введение. Предметная область
- •Функциональная спецификация
- •Спецификация качества
- •Функциональное моделирование предметной области
- •Информационное моделирование предметной области
- •Логическая модель
- •Физическая модель
- •Проектирование информационной системы
- •Выбор аппаратных средств реализации
- •Выбор программных средств реализации
- •Выбор модели жизненного цикла системы
- •Разработка информационной системы
- •Документация ис
- •Руководство пользования веб-интерфейсом
- •Заключение
- •Список литературы
Физическая модель
Физическая модель базы данных системы приведена на Рис. 8 Логическая информационная модельРис. 8. В таблицах, содержащих поля из других таблиц как FK, зарегистрированы ограничения, выполняющие автоматическое изменение/удаление записей в случае изменения/удаления связанного FK. Таким образом обеспечивается целостность базы данных при любых изменениях данных и автоматически удаляются лишние записи, которые больше ни к чему не относятся. Например, если будет удалена запись таблицы devices, также автоматически будут удалены все связанные с ней записи таблиц owners, sensors и readings.
Кроме этого для каждой из таблиц создана парная архивная таблица, содержащая все её поля, а также уникальный id и timestamp (на рисунке эти таблицы не показаны). Перед удалением записи любой из основных таблиц срабатывает триггер, который добавляет копию этой записи в парную архивную таблицу. Изменять данные в архивных таблицах может только суперпользователь. За счёт этого механизма обеспечивается сохранность данных в случае любых действий, произведённых в веб-интерфейсе: все удалённые данные при необходимости можно восстановить из архивных таблиц.
Рис. 9 Физическая информационная модель
Таблица 1
Атрибуты сущности «devices»
Имя |
Тип |
Описание |
id |
Integer(8) |
Уникальный идентификатор записи |
IMEI |
Varchar(32) |
Уникальный идентификатор мобильного устройства |
phone |
Varchar(32) |
Номер телефона устройства |
location |
Varchar(256) |
Местоположение устройства |
hidden |
Varchar |
Флаг, определяющий будет ли устройство отображаться в списке показаний в веб-интерфейсе |
В сущности devices создан индекс по полю id.
Таблица 2
Атрибуты сущности «users»
Имя |
Тип |
Описание |
id |
Integer(8) |
Уникальный идентификатор записи |
name |
Varchar(128) |
Имя пользователя |
phone |
Varchar(32) |
Номер телефона пользователя |
mobop |
Varchar(32) |
Мобильный оператор пользователя |
send_interval |
Integer(8) |
Интервал времени в часах, через который пользователь будет получать регулярные уведомления |
В сущности users создан индекс по полю id.
Таблица 3
Атрибуты сущности «owners»
Имя |
Тип |
Описание |
id |
Integer(11) |
Уникальный идентификатор записи |
user_id |
Integer(8) |
Уникальный идентификатор пользователя |
device_id |
Integer(8) |
Уникальный идентификатор устройства |
regular |
Boolean |
Флаг, определяющий будет ли пользователь получать регулярные уведомления об этом устройстве |
alerts |
Boolean |
Флаг, определяющий будет ли пользователь получать срочные уведомления об этом устройстве |
В сущности owners созданы индексы по полям id, user_id, device_id.
Таблица 4
Атрибуты сущности «sensors»
Имя |
Тип |
Описание |
id |
Integer(8) |
Уникальный идентификатор записи |
device_id |
Integer(8) |
Уникальный идентификатор устройства |
number |
Integer(8) |
Номер сенсора на устройстве |
location |
Varchar(256) |
Местоположение сенсора |
lowLimit |
Integer(11) |
Нижний предел температуры для сенсора, при выходе значения за который всем привязанным к нему пользователям будут разосланы срочные уведомления |
highLimit |
Integer(11) |
Верхний предел температуры для сенсора, при выходе значения за который всем привязанным к нему пользователям будут разосланы срочные уведомления |
В сущности sensors созданы индексы по полям id, device_id.
Таблица 5
Атрибуты сущности «readings»
Имя |
Тип |
Описание |
id |
Integer(11) |
Уникальный идентификатор записи |
time |
Timestamp |
Время получения показания |
sensor_id |
Integer(8) |
Уникальный идентификатор сенсора |
temperature |
Varchar(256) |
Значение температуры |
В сущности readings созданы индексы по полям id, sensor_id.
Таблица 6
Атрибуты сущности «sms»
Имя |
Тип |
Описание |
id |
Integer(11) |
Уникальный идентификатор записи |
user_id |
Integer(8) |
Уникальный идентификатор пользователя |
time |
Timestamp |
Время отправки SMS |
text |
Varchar(512) |
Текст SMS |
В сущности sms созданы индексы по полям id, user_id.
Таблица 7
Атрибуты сущности «balance»
Имя |
Тип |
Описание |
id |
Integer(8) |
Уникальный идентификатор записи |
time |
Timestamp |
Время получения данных о балансе |
device_id |
Integer(8) |
Уникальный идентификатор устройства |
value |
Integer(11) |
Значение баланса |
В сущности balance созданы индексы по полям id, device_id.
Таблица 8
Атрибуты сущности «errortypes»
Имя |
Тип |
Описание |
id |
Integer(8) |
Уникальный идентификатор записи |
description |
Varchar(256) |
Описание типа ошибки |
В сущности errortypes создан индекс по полю id.
Таблица 9
Атрибуты сущности «errors_devices»
Имя |
Тип |
Описание |
id |
Integer(8) |
Уникальный идентификатор записи |
time |
Timestamp |
Время возникновения ошибки |
dev_id |
Integer(8) |
Уникальный идентификатор устройства |
err_id |
Integer(8) |
Уникальный идентификатор типа ошибки |
comment |
Varchar(1024) |
Комментарий к ошибке |
В сущности errors_devices созданы индексы по полям id, dev_id, err_id.
Таблица 10
Атрибуты сущности «errors»
Имя |
Тип |
Описание |
id |
Integer(8) |
Уникальный идентификатор записи |
time |
Timestamp |
Время возникновения ошибки |
err_id |
Integer(8) |
Уникальный идентификатор типа ошибки |
comment |
Varchar(1024) |
Комментарий к ошибке |
В сущности errors созданы индексы по полям id, err_id.
