Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

default

.pdf
Скачиваний:
7
Добавлен:
08.02.2015
Размер:
1.15 Mб
Скачать

МИНЕСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ Московский государственный институт электроники и математики (Технический университет)

Кафедра ИКТ

Курсовая работа

по курсу: Базы данных на тему:”База данных схем и графов.”

Выполнил: студент группы С-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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]