default
.pdfМИНЕСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ Московский государственный институт электроники и математики (Технический университет)
Кафедра ИКТ
Курсовая работа
по курсу: Базы данных на тему:”База данных схем и графов.”
Выполнил: студент группы С-55 Христенко А.А.
Преподаватель: Куприянов Ю..
Москва 2012
Оглавление |
|
Описание............................................................................................................................. |
3 |
Сбор информации .............................................................................................................. |
4 |
Разработка........................................................................................................................... |
4 |
Период обновление базы данных..................................................................................... |
4 |
ER-диаграмма..................................................................................................................... |
4 |
Структура таблиц............................................................................................................... |
6 |
Типы пользователей в базе. .......................................................................................... |
9 |
Представления.................................................................................................................. |
11 |
Триггеры ........................................................................................................................... |
11 |
Список литературы.......................................................................................................... |
13 |
Приложение...................................................................................................................... |
14 |
Графы, используемые в базе данных ......................................................................... |
14 |
Dump базы данных....................................................................................................... |
14 |
2
Описание.
Необходимо разработать базу данных для хранения планов зданий и графов –
планы путей.
В базе данных существуют три типа пользователей: администратор, редактор и
пользователь.
1.Администратор позволяет создавать, редактировать и удалять вершины и ребра графов путей, а также планы зданий.
2.Редактор – способен только редактировать графы и планы.
3.Пользователь – может только просматривать.
База будет обновляться двумя способами – по запрос и по событию.
3
Сбор информации
Информация для курсового проекта собиралась несколькими способами.
Один из них это интернет. В нем бралась информация о синтаксисе запросов СУБД
MySQL. Так же происходил сбор информации о возможных структурах баз данных.
Вторым источником информации были книги по СУБД MySQL. В них находилось то что не получалась найти в интернете или в других источниках. Из них бралась информация о пользователях базы, создание пользователей, выдача привилегий, и смена пароля.
Третьим источником информации были преподаватели. Из этого источника было изучено основы MySQL, запросы, концептуальные диаграммы, и другие основы для лучшего проектирования базы данных.
Разработка
База данных проектировалась в операционной системе Ubuntu с помощью системы управления базами данных MySQL. MySQL портирована на большое количество платформ, поэтому эта свободная система управления базами данных выбрана в качестве создания курсовой. Также в качестве графического интерфейса использовался SQL
Navigator 1.4.2.
Период обновление базы данных
Обновление базы данных будет происходить двумя способами – по запрос и по событию.
Обновление базы по запросу может осуществлять только администратор базы. Это сделано для принудительного обновления базы данных в случаях, если база не обновляется вторым способом.
Обновление базы по событию происходит автоматически при появлении новой информации или изменении старой.
ER-диаграмма
Модель сущность-связь (ER-модель) — модель данных, позволяющая описывать концептуальные схемы предметной области. ER-модель используется при высокоуровневом (концептуальном) проектировании баз данных. С её помощью можно
4
выделить ключевые сущности и обозначить связи, которые могут устанавливаться между
этими сущностями.
В концептуальной диаграмме представленной ниже показано взаимодействие всех
таблиц в базе данных.
users
id PK
name surname date_creation memo
user_type_id FK1
users_type
id PK
user_type
maps
id PK
name date_creation
user_id FK1 memo
plan_path
|
|
|
|
|
verticies |
|
edge |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
id |
PK,FK2,FK3 |
id |
PK |
|
|
|
||
|
|
|
|
|
||
|
|
|
|
|
maps_id |
FK1 |
name |
|
|
|
|
||
|
|
|
|
name |
|
|
date_creation |
|
|
|
|
|
|
|
|
|
|
date_creation |
|
|
user_id |
FK1 |
|
|
|
|
|
|
|
|
user_id |
|
||
verticies_id_1 |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
axis_x |
|
|
verticies_id_2 |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
axis_y |
|
|
length |
|
|
|
|
|
|
|
|
|
|
memo |
|
|
memo |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Концептуальная диаграмма
5
Структура таблиц
База состоит из пяти таблиц: edge, maps, users, users_type, vertices.
Скриншот базы данных
Выше предоставлен снимок экрана, на котором видно все таблицы в базе данных с внесенными данными.
В связи с тем что в данной версии СУБД не реализован функционал пользовательских доменов, то проверка и обработка на корректность вводимой информации осуществляется с помощью функционала триггеров. Все первичные ключи в таблицах реализованы как автоинкрементное поле, что тоже является ограничением данных.
Для поддержания целостности данных в базе данных реализованы foreign key. Так же обязательные поля, установлены как обязательные для заполнения. И для поддержания целостности на определенные поля есть значения по-умолчанию. Теперь посмотрим на структуру таблиц более подробно.
Таблица Users_type
В таблице users_type (тип пользователя), хранится все типы пользователя, которые будут работать с этой базой данных.
Структура
Id |
Name_type |
|
|
6
Id – Тип: Bigint. Автоинкремент. Обязательно к заполнению. Уникально Описание: Индивидуальный идентификатор.
Name_type – Тип: Char(80). Обязательно к заполнению. Уникально.
Описание: Наименование типа пользователя. Здесь прописываются все типы пользователя, которые будут применяться в базе данных. Например: Admin, redactor, user.
o Admin – пользователь имеющий тип admin, имеет все привилегии на изменение всех параметров, всех баз данных.
o Redactor – пользователь, имеющий этот тип, может только создавать или удалять новые вершины или ребра.
o User – пользователь, зашедший под логином user, может только просматривать карты и графы на ней. Прав на изменение таблиц он не имеет.
Таблица Users
В таблице users (пользователи), хранится все пользователи которые были
зарегистрированы в программе.
Структура
Id |
Name |
Surname |
Date_creation User_type_id Login |
Memo |
Id – Тип: Тип: Bigint. Автоинкремент. Обязательно к заполнению.
Уникально Описание: индивидуальный идентификатор.
Name – Тип: Char(80). Обязательно к заполнению. Уникально. Описание:
имя пользователя.
Surname – Тип: Char(80). Обязательно к заполнению. Уникально Описание:
фамилия пользователя.
Date_creation – Тип: Timestamp. Автоинкремент. Обязательно к заполнению.
По-умолчанию ставиться текущая дата. Дата регистрации пользователя.
User_type_id – Тип: Bigint. Обязательно к заполнению. FK на таблицу
Users_type. Описание: Идентификатор типа пользователя.
Login – Тип: Char(80). Oобязательное к заполнению. Описание: логин пользователя в MySQL.
Memo – Тип: Char(250). Описание дополнительная информация.
7
Таблица Maps
В таблице maps (карты), хранятся пути для карты, которые используются для базы
данных.
Структура
Id |
Name |
Date_creation User_id |
Memo |
Plan_path |
Id - Тип: Bigint. Автоинкремент. Обязательно к заполнению. Уникально.
Описание: индивидуальный идентификатор. Присваивается автоматически.
Name – Тип: Char(80). Обязательно к заполнению. Уникально. Описание:
имя карты.
Date_creation – Тип: Timestamp. Автоинкремент. Описание: дата создание карты. Присваивается автоматически.
User_id – Тип: Bigint. Обязательно к заполнению. FK на таблицу Users
Описание: id пользователя добавивший карту в базу.
Memo – Тип: Char(250). Описание: дополнительная информация.
Plan_path – Тип: Char(80). Обязательно к заполнению. Описание: полный путь к файлу и название файла, в котором содержаться карта.
Таблица Vertices
В таблице Vertices (вершины), хранятся данные о вершинах для графов.
Структура
Id |
Maps_id Name |
Date_creation User_id |
Axis_x |
Axis_y |
memo |
Id - Тип: Bigint. Автоинкремент. Обязательно к заполнению. Уникально.
Описание: индивидуальный идентификатор. Присваивается автоматически.
Maps_id – Тип: Bigint. Обязательно к заполнению. FK на таблицу Maps.
Описание: id карты для которого создана эта вершина.
Name – Тип: Char(80). Обязательно к заполнению. Уникально. Описание:
имя вершины.
Date_creation – Тип: Timestamp. Автоинкремент. Описание: дата создание вершины. Присваивается автоматически.
User_id – Тип: Bigint. Обязательно к заполнению. FK на таблицу Users.
Описание: id пользователя добавивший вершину в базу.
Axis_x – Тип: Bigint. Обязательно к заполнению. Описание: координаты вершины по оси Х
8
Axis_y – Тип: Bigint. Обязательно к заполнению. Описание: координаты вершины по оси Y
Memo – Тип: Char(250). Описание: дополнительная информация.
Таблица Edge
В таблице edge (ребра), хранится информация о ребрах графа.
Структура
Id Name Date_creation User_id Verticies_id_1 Verticies_id_2 Length Type_edge memo
Id - Тип: Bigint. Автоинкремент. Обязательно к заполнению. Уникально.
Описание: индивидуальный идентификатор.
Name – Тип: Char(250). Обязательно к заполнению. Уникально. Описание:
имя ребра.
Date_creation – Тип: Timestamp. Автоинкремент. Описание: дата создание ребра. Присваивается автоматически.
User_id – Тип: Bigint. Обязательно к заполнению. FK на таблицу Users.
Описание: id пользователя добавивший ребро в базу.
Verticies_id_1 – Тип: Bigint. Обязательно к заполнению. FK на таблицу
Verticies. Описание: id вершины начала ребра.
Verticies_id_2 – Тип: Bigint. Обязательно к заполнению. FK на таблицу
Verticies. Описание: id вершины конца ребра.
Length – Тип: Bigint. Обязательно к заполнению. Описание: длинна ребра.
Edge_type – Тип: int. Обязательно к заполнению. Описание: тип ребра.
Лестница – соединяет две точки на разных картах. Коридор – соединяет две точки на одной карте.
Memo – Тип: Char(250). Описание: дополнительная информация.
Типы пользователей в базе.
В базе данных имеется три пользователя: admin, redactor и user. Эти пользователи созданы в базе MySQL. Эти пользователи позволяют разным людям заходить в базу данным под разными логинами и создавать или изменять то, что им разрешил администратор базы. Это сделано для соблюдения целостности данных, и для того чтобы обычные пользователи не смогли удалить нужную или добавить не нужную информацию. Для ограничения доступа к данным с помощью команды Grant этим пользователям наложены ограничения на данные в базе.
9
Admin – пользователь имеющий привилегии этого типа, может изменять любой столбец в любой таблице, а также удалять и создавать новые значения.
Redactor – пользователь имеющий привилегии этого типа, может просматривать все таблицы, а также изменять, вставлять или удалять новые значения в таблицах, карт (Maps), вершин (Vertices), и ребер (Edge).
User – пользователь имеющий привилегии этого типа, может просматривать все таблицы, а также изменять дополнительную информацию (Memo), в
доступных таблицах.
Ниже -представлена таблица того как пользователи в базе могут взаимодействовать
с таблицами в базе.
Логин |
|
|
|
|
|
Admin |
Redactor |
User |
|
Таблица |
||||
|
|
|
||
|
|
|
|
|
Users |
Полное редактирование |
Только просмотр |
Изменение в столбце |
|
|
|
|
|
|
Maps |
Полное редактирование |
Изменение, удаление |
Изменение в столбце |
|
|
|
|
|
|
Edge |
Полное редактирование |
Изменение, удаление |
Изменение в столбце |
|
|
|
|
|
|
Vertices |
Полное редактирование |
Изменение, удаление |
Изменение в столбце |
|
|
|
|
|
|
Users_type |
Полное редактирование |
Только просмотр |
Только просмотр |
|
|
|
|
|
Полное редактирование подразумевает, что пользователь может просматривать всю таблицу, а также изменять или добавлять любые записи в любой столбец таблицы.
Только просмотр подразумевает, что пользователь может только просматривать таблицу. Повлиять на неё пользователь никак не может.
Изменение в столбце подразумевает, что пользователь может просматривать всю таблицу, а также добавлять или изменять записи только в каком либо столбце. То, в каком столбце пользователь может изменять записи, определяет администратор.
Так же в самой базе создана таблица пользователей (Users), в которой есть поле
Login, через это поле с использованием встроенной функции USER(), мы можем определить текущего пользователя не только в MySQL, но и в самой базе. Таким образом,
можно в триггерах на добавление заложить функционал, с помощью которого можно автоматически определить ID пользователя в базе из таблицы Users и автоматически присвоить этот ID в соответствующее поле таблицы, в которую добавляем данные. И
возможно заблокировать эти поля для изменения для всех пользователей.
10