Разработка базы данных 'Гостиничная сеть'
Оглавление
Введение
Глава 1. Описание и анализ предметной
области
1.1 Описание
предметной области
Глава 2. Разработка концептуальной
модели (ER-диаграммы)
2.1
Проектирование ER модели базы данных "Гостиничные сети"
Глава 3. Разработка логической модели
базы данных. Нормализация таблиц базы данных
3.1 Краткий
обзор современных СУБД
.2
Нормализация таблиц
Глава 4. Создание базы данных.
Разработка запросов, пользовательских функций и триггеров
4.1 Создание
базы данных в SQLServer
4.2 Создание SQL-запросов, хранимых
процедур, пользовательских функций и триггеров
4.2.1
Создание запросов
.2.2 Хранимые
процедуры
.2.3 Триггеры
Глава 5. Разработка форм, отчетов,
модулей, главной формы приложения
5.1 Создание
форм
.2 Создание
отчётов
Глава 6. Настройка работы базы данных
в многопользовательской среде
6.1 Создание
пользователей базы данных
.2 Создание
полной резервной копии сформированной базы данных
Заключение
Список
используемых источников
Приложения
Введение
Целью курсовой работы является разработка базы данных "Гостиничная
сеть".
Задачи работы следующие:
. Провести проектирование ER модели разрабатываемой базы данных.
. Провести разработку логической модели БД.
. Разработка триггеров, хранимых процедур, запросов
. Написать пользовательский интерфейс для работы с созданной базой
данных.
. Настройка работы БД в многопользовательской среде.
. Автоматизация и упрощение работы сотрудников гостиничной сети по
регистрации, учету, поиску и формированию отчетности о соискателях и
работодателях.
Актуальность работы заключается в том, что гостиничная сеть - это
многоуровневый комплекс с огромным объёмом информации, для систематизации и
хранения которой создаётся база данных.
По ходу работы требуется выполнены все поставленные задачи, отчёт о
которых будет представлен в заключении.
Глава 1.
Описание и анализ предметной области
.1 Описание
предметной области
Данная база данных предоставляет информацию о деятельности гостиничной
сети. Работает она по следующему принципу: Гостиничная сети с названием N
располагает рядом подчинённых ей гостиниц, в которых есть номера и услуги. Вся
эта информация объединяется в сущности "Предложение", изучив которую,
мы можем узнать стоимость проживания в той или ной гостинице с учётом выбора
номера и услуги. Клиент заказывает себе то или иное предложение, выставляемое
гостиницей, и на основе его заказа формируется сущность "Бронь", где
храниться информация о клиенте, который выбрал одно из предложений на какой-то
период времени. Значит есть 6 сущностей, каждая со своим описанием (этот аспект
рассмотрим ниже при описании ER-модели): гостиницы, номера, услуги,
предложение, бронь, клиенты.
Оперируя всей информацией предоставляемой базой данных, можно без проблем
узнать какой номер относиться к какой гостинице, какая услуга связана с одной
из имеющихся гостиниц, сколько стоит это, и какой клиент проживает в каком
номере, а значит какой номер занят, а какой свободен. На основе забронированных
номеров и услуг, можно вести бухгалтерский учёт проданных предложений.
Глава 2.
Разработка концептуальной модели (ER-диаграммы)
.1
Проектирование ER модели базы данных "Гостиничные сети"
Для разработки базы данных "Гостиничные сети" использовалась
программа AllFusionERwinDataModeler. С её помощью были определены сущности,
атрибуты, и отношения между сущностями, составлена ER-диаграмма или
концептуальная модель данных
Таблица 2.1.1 - Сущность - Гостиницы
Атрибут
|
Домен
|
ID_Гостиницы (PK)
|
Number
|
Название
|
String
|
Страна
|
String
|
Город
|
String
|
Улица
|
String
|
Дом
|
Number
|
Количествозвёзд
|
Number
|
Таблица 2.1.2 - Сущность-Комнаты
Атрибут
|
Домен
|
ID_Комнаты (PK)
|
Number
|
Этаж
|
Number
|
Количество мест
|
Number
|
Наличиесан. узла
|
Blob
|
Тип
|
String
|
ID_Гостиницы(FK)
|
Number
|
Таблица 2.1.3- Сущность-Услуги
АтрибутДомен
|
|
ID_Услуги (PK)
|
Number
|
Наименование
|
String
|
Описание
|
String
|
Number
|
Таблица 2.1.4 - Сущность-Предложение
Атрибут
|
Домен
|
ID_Предложение(PK)
|
Number
|
Стоимость
|
Number
|
ID_Услуги (FK)
|
Number
|
ID_Гостиницы(FK)
|
Number
|
Таблица 2.1.5 - Сущность-Бронь
Атрибут
|
Домен
|
ID_Бронь (PK)
|
Number
|
ID_Клиента (FK)
|
Number
|
ID_Предложени (FK)е
|
Number
|
ID_Номера (FK)
|
Number
|
ID_Услуги (FK)
|
Number
|
Дата_заселения
|
Datetime
|
Дата_выселения
|
Datetime
|
Таблица 2.1.6 - Сущность-Клиент
Атрибут
|
Домен
|
ID_Клиента (PK)
|
Number
|
ФИО
|
String
|
Серия_паспорта
|
String
|
Номер_Паспорта
|
Number
|
Гражданство
|
String
|
Сущности и их атрибуты определены.
Далее переходим к определению связей. Для создания
новой связи следует:
) установить курсор на нужной кнопке (в палитре
инструментов кнопка соответствует идентифицирующей связи, и кнопка соответствуют неидентифицирующей
связи) в палитре инструментов и нажать левую кнопку мыши;
) щелкнуть сначала по родительской, а затем по
дочерней сущности.
Связь между сущностью Гостиницы и Номера -
неидентифицированая, подобного рода связь установлена и между сущностями
Гостиница- Услуги, Услуги - Предложение и Номера-Предложение. Между остальными
сущностями установлена идентифицированная связь. В результате получаем
ER-диаграмму.
Глава 3.
Разработка логической модели базы данных. Нормализация таблиц базы данных
.1 Краткий
обзор современных СУБД
Система управления базами данных (СУБД) - это совокупность языковых и
программных средств, предназначенных для создания, ведения и совместного
использования БД многими пользователями.
Классификации СУБД:
. По модели данных
· Иерархические
· Сетевые
· Реляционные
· Объектно-ориентированные
. По степени распределённости
· Локальные СУБД (все части локальной СУБД размещаются на одном
компьютере)
· Распределённые СУБД (части СУБД могут размещаться на двух и
более компьютерах).
. По способу доступа к БД
· Файл-серверные
Для разработки базы данных будет использоваться СУБД Microsoft SQL Server
2008.SQL Server- система управления реляционными базами данных (СУРБД),
разработанная корпорацией Microsoft. Основной используемый язык запросов -
Transact-SQL, создан совместно Microsoft и Sybase. Transact-SQL является
реализацией стандарта ANSI/ISO по структурированному языку запросов (SQL) с
расширениями. Используется для работы с базами данных размером от персональных
до крупных баз данных масштаба предприятия; конкурирует с другими СУБД в этом
сегменте рынка.SQL Server 2008 - интеллектуальная платформа для управления
данными, позволяющая ощутимо сократить затраты как на разработку новых
приложений, так и на обслуживание существующих систем. Эта надёжная и крайне
эффективная система готова к работе в самых важных и требовательных
бизнес-приложениях, предоставляя широкие возможности BI для каждого сотрудника
компании.
Основные возможности Microsoft SQL Server2008
• Составление запросов
• Выполнение поиска
• Проведение синхронизации
• Подготовка отчётов
• Анализ данных
•Возможность доступа к информации с настольных ПК и мобильных устройств.
Ключевые преимущества Microsoft SQL Server2008:
• SQL Server 2008 обеспечивает возможность динамического шифрования
полной базы данных, всех файлов данных, а также файлов журналов. При этом
отсутствую изменения в уже существующих приложениях.
• SQL Server 2008 обеспечивает сжатие исходящего потока журнала, позволяя
достичь оптимальной производительности зеркалирования и при этом свести к
минимуму нагрузку на сеть.
• SQL Server 2008 осуществляет управление на основе политик, позволяя с
лёгкостью управлять одним, либо несколькими имеющимися экземплярами SQL Server
2008.
3.2
Нормализация таблиц
Первая задача при проектировании базы данных - составление списка таблиц
и разработка структуры каждой таблицы. В реляционных базах данных есть понятие
нормализации таблиц. Нормализация - это процесс организации данных в базе
данных, включающий создание таблиц и установление отношений между ними в
соответствии с правилами, которые обеспечивают защиту данных и делают базу
данных более гибкой, устраняя избыточность и несогласованные зависимости.
Рассмотрим первые 3 нормальные формы таблиц.
Первая нормальная форма характеризуется тем, что все строки должны быть
различными и все элементы внутри ячеек должны быть атомарными (не списками).
Другими словами, элемент является атомарным, если его нельзя разделить на
части, которые могут использовать в таблице независимо друг от друга.
Вторая нормальная форма - это когда, прежде всего, таблица находиться в
первой нормальной форме. Главной же особенностью следующего этапа нормализации
это когда любое поле таблицы, не входящее в состав первичного ключа,
функционально полно зависит от первичного ключа.
Третья нормальная форма - сущность находится в третьей нормальной форме,
если она находится во второй нормальной форме и никакой неключевой атрибут не
зависит от другого неключевого атрибута, то есть не должно быть
взаимозависимости между неключевыми атрибутами.
Судя по приведённому описанию, таблицы разрабатываемой базы данных
находятся во всех 3 нормальных формах.
Глава 4.
Создание базы данных. Разработка запросов, пользовательских функций и триггеров
.1 Создание
базы данных в SQLServer
Да этом этапе приступаем у созданию базы данных в MS SQL Server 2008.
Запускаем программу "Среда SQL ServerManagementStudio". При запуске
программы появляется окно "Соединение с сервером". Выбираем нужное
имя сервера и нажимаем "Соединить". В окне "Обозреватель
объектов" мы увидим вкладку с именем нашего SQL-сервера. Для добавления
новой базы данных, в "Среде Microsoft SQL ServerManagementStudio"
кликаем правой кнопкой мышки на вкладке "Базы данных" и выбираем
"Создать базу данных". Появляется форма, в которой нужно указать имя
базы данных - в моём случает это radevich1. Жмём кнопку OK и видим в списке баз
данных только что созданную базу.
Далее нужно создать таблицы соответствующие созданной ER-модели в
AllFusionERwinDataModeler. Для этого выбираем уже созданную базу данных
radevich1, отмечаем ветку "Таблицы" и по правой кнопке нажимаем по
пункту меню "Создать таблицу". Я для удобства в дальнейшем
использовании перевёл все сущности созданные в ERwin на английский язык. В
SQLServer они получили такие названия: Гостиницы - Hotel, Комнаты - Rooms, Сервис
- Service, Предложение - Supply, Бронь - Booking, Клиенты - Client. Для начала
создаём таблицу Hotel и заполняем её соответственно критериям приведённым выше.
Таблица 4.1.1 - Hotel
Атрибут
|
ТипДанных
|
ID
|
Int
|
Country
|
nvarchar(50)
|
City
|
Nchar(10)
|
House
|
int
|
Stars
|
int
|
Street
|
Nchar(10)
|
Name
|
nvarchar(50)
|
Таблица 4.1.2 - Rooms
Атрибут
|
ТипДанных
|
ID
|
Int
|
Hotel_ID
|
int
|
Floor
|
int
|
Seats
|
Char(10)
|
Type
|
Nchar(10)
|
Toilet
|
Nchar(10)
|
Таблица 4.1.3 - Service
Атрибут
|
ТипДанных
|
ID
|
Int
|
Hotel_ID
|
int
|
Service_Name
|
Nvarchar(50)
|
Description
|
text
|
Таблица 4.1.4 - Supply
Атрибут
|
ТипДанных
|
ID
|
Int
|
Rooms_ID
|
int
|
Service_ID
|
Int
|
Cost
|
int
|
Таблица 4.1.5 - Booking
Атрибут
|
ТипДанных
|
ID
|
Int
|
Supply_ID
|
Int
|
Int
|
Date_of_entry
|
Date
|
Date_of_departure
|
date
|
Таблица 4.1.6 - Client
Атрибут
|
ТипДанных
|
ID
|
Int
|
Full_Name
|
text
|
Passport_series
|
Nchar(10)
|
Pasport_number
|
Nchar(10)
|
Citizenship
|
Nvarchar(50)
|
база гостиница триггер поиск
Когда все таблицы созданы, нужно определить между ними связи, установленные
в ER-диаграмме. Для этого в Обозревателе объектов нужно щёлкнуть правой кнопкой
мыши на пункт "Диаграммы баз данных" и после чего в появившемся меню
выбрать пункт "Создать диаграмму данных".
В открывшемся окне располагаем таблицы в зависимости от личных
предпочтений и устанавливаем связи между ключевыми атрибутами.
Заключительный этап создания базы данных - заполнение таблиц. Для этого
необходимо в Обозревателе объектов щёлкнуть правой кнопкой мыши на уже
созданную таблицу, в результате этого действия появиться меню, в котором
выбираем "Изменить первые 200 строк", после чего в отдельной вкладке
появиться выбранная таблица, которую и необходимо заполнить нужной информацией.
4.2 Создание
SQL-запросов, хранимых процедур, пользовательских функций и триггеров
.2.1 Создание
запросов
1. Запрос о
заказах клиента
SELECT Booking.ID, Booking.Supply_IDBooking INNER JOIN Client
ON Booking.Client_ID = Client.ID(Client.Full_Name LIKE 'Belkevich Maria
Genagievna')
2. Запрос на соответсвие заданной маске
-------------Full_NameClientFull_Name
LIKE 'D_%'
. Запрос на удаление
-------------= 17
. Запрос на объединение таблиц
USEradevich1
-------------Floor, Seats, Toilet,NameHotel INNER JOIN
RoomsHotel.ID = Rooms.IDService_Name, Description, NameHotel INNER JOIN Service
ON Hotel.ID = Service.ID
5. Запрос на добавление одной записи в базу
USE radevich1
-------------* from HotelINTO HOTEL (ID, Name, Country, City,
House, Stars, Street)('15', 'Big Hotel Plaza', 'USA', 'New York','10', '5',
'Time Square')
6. Запрос на конкретное значение
-------------
Select * fromRooms_ID=1Hotel_ID=5
7. Запрос на множественное добавление в базу
USE radevich1
-------------* From RoomsINTO Rooms (ID,Hotel_ID, Floor,
Seats, Type, Toilet)('42', '12', '4', '1', 'Family', 'Yes')* From ClientINTO
Client (ID, Full_Name, Passport_series, Passport_number, Citizenship)('19',
'PetrovPetrePetrovich', 'MC', '12344321', 'Ukranian')
8. Запрос на запрашиваемую сумму предложения
--------------*SupplyCost <'500'
9. Запрос на обновление цены
-------------
UPDATE SupplyCost = 1150ID = 1
or= 15
. Запрос на сумму заказов
USEradevich1
-------------SUM (Cost) as [sum_cost]Booking INNER JOIN
Supply ON Booking.Supply_ID = Supply.ID
4.2.2 Хранимые процедуры
. Хранимая процедура на объединение таблиц
CREATE PROCEDURE proc_one5FUll_Name, NameHotel INNER JOIN
ClientHotel.ID = Client.IDDate_of_entry, Date_of_departure, Full_NameBooking
INNER JOIN ClientBooking.ID = Client.ID
После написания процедуры необходимо выполнить её и сохранить. Для того
чтобы запросить процедуру необходимо создать новый запрос, где ввести команду
CREATE PROCEDURE proc_one5 GO.
. Хранимая процедура на добавление записей
_one9
as*HotelINTO Hotel (ID, Name, Country, City, House, Stars,
Street)('17', 'WH', 'Russia', 'Pskov', '6', '2', 'Pushkin')*ClientINTO Client
(ID, Full_Name, Passport_series, Passport_number, Citizenship)('17', 'Smirnov
MichailVictorovich', 'MP', '12332145', 'Russian')
Для того чтобы запросить процедуру необходимо создать новый запрос, где
ввести команду CREATE PROCEDURE proc_one9 GO.
. Хранимая процедура на запрашиваемую сумму
_one6
as*Supplycost < 1000
Для того чтобы запросить процедуру необходимо создать новый запрос, где
ввести команду CREATE PROCEDURE proc_one6 GO. Результат в Приложение А4.2.2.3
.2.3 Триггеры
. Триггер на запрет смены названия отеля
CREATE TRIGGER trigger11HotelUPDATENOCOUNT ON;UPDATE (NAME)
2. Триггер на запрет ввода записи с ценойболее 2000
CREATE TRIGGER trigger20SupplyINSERTNOCOUNT ON;(select cost
from inserted)>2000
ROLLBACK'действие запрещено'
. Триггер на запрет удаления заявок
CREATETRIGGERtrigger21BookingDELETENOCOUNT ON;(select
Date_of_departure from deleted) <'2015-01-07'
. Триггер на запрет смены серии паспорта клиента
CREATE TRIGGER trigger23ClientUPDATENOCOUNT
ON;UPDATE(Passport_series)
5. Триггер на запрет вставлять запись о клиенте без гражданства
CREATE TRIGGER trigger24ClientINSERTNOCOUNT ON;(select
Citizenship from inserted)=''
ROLLBACK
Глава 5.
Разработка форм, отчетов, модулей, главной формы приложения
Для создания интерфейса необходимо БД "Гостиничные сети"
связать с MSAccess.
.1 Создание
форм
Необходимо создать 6 форм, соответствующих таблицам
базы данных. Для создания новой формы (например Hotels) необходимо выполнить
следующее:
. В окне приложения Access 2007 выбрать вкладку
Создание и выполнить щелчок на пиктограмме "Конструктор форм". В окне
редактирования появится окно с пустой областью данных
.. Для отображения списка полей требуемой таблицы
нужно выполнить щелчок на пиктограмме "Добавить существующие поля",
появится список таблиц. Щелкнув на знак "+" необходимой таблицы,
откроется список ёё полей.
. Далее нужно поместить поля таблицы на форму, для
этого требуется два раза щёлкнуть по каждому полю мышью.
В этом же разделе можно создать кнопки для формы,
чтобы удобнее было переключаться между содержимым полей. С помощью можно создать гипперссылку на
требуемую страницу.
В результате проделанных операций получилось 6 форм.
Рисунок 5.1.1 - Hotels
Рисунок 5.1.2 - Clients
Рисунок 5.1.3 - ФормаRooms
Рисунок 5.1.4 - Booking
Рисунок 5.1.5 - Форма Service
Рисунок 5.1.6 - Форма Supply
В завершении создания основных 6 форм, по тому же принципу создаём форму
Main Menu, на которой располагаются ссылки на 6 предыдущих.
Рисунок 5.1.7 - Форма MainMenu
.2 Создание отчётов
Для начала нужно выбрать необходимую таблицу. На вкладке Создание нажать
Отчёт и появляется готовый отчёт , где отображается вся информация по выбранной
таблицу. необходима сделать отчёты по 3 таблицам Cliets, Booking и Supply.
Рисунок 5.2.1 - Отчёт Supply
Рисунок 5.2.2 - Отчёт Client
Рисунок 5.2.3 - Отчёт Booking
Глава 6.
Настройка работы базы данных в многопользовательской среде
.1 Создание
пользователей базы данных
1. В обозревателе объектов раскройте папку Базы данных.
2. Разверните базу данных, в которой создается новый пользователь
базы данных.
. Щелкните правой кнопкой мыши папку Безопасность, выберите пункт
Создать, а затем Пользователь.
. В диалоговом окне Пользователь базы данных - создать, на
странице Общие выберите один из следующих типов пользователей из списка Тип
пользователя: SQL-пользователь с именем входа, SQL-пользователь без имени
входа, Пользователь, сопоставленный с определенным сертификатом, Пользователь,
сопоставленный с асимметричным ключом или Пользователь Windows.
. В поле Имя пользователя введите имя для нового пользователя.
Если выбрать элемент Пользователь Windows в списке Тип пользователя, вы можете
также щелкнуть многоточие (…) и открыть диалоговое окно Выбор пользователя или
группы.
. В поле Имя входа введите имя входа для пользователя. Либо можно
щелкнуть многоточие (…), чтобы открыть диалоговое окно Выбор имени входа. Имя
входа доступно, если выбрать элемент SQL-пользователь с именем входа или
Пользователь Windows в списке Тип пользователя.
. Укажите схему, которая будет владеть объектами, созданными
пользователем, в поле Схема по умолчанию. Или щелкните многоточие (…), чтобы
открыть диалоговое окно Выбор схемы. Схема по умолчанию доступна, если выбрать
элемент SQL-пользователь с именем входа, SQL-пользователь без имени входа или
Пользователь Windows в списке Тип пользователя.
. Введите сертификат для пользователя базы данных в поле Имя
сертификата. Вместо этого, можно щелкнуть многоточие (…) и открыть диалоговое
окноВыбор сертификата. Имя сертификата доступно, если выбрать элемент
Пользователь, сопоставленный с сертификатом в списке Тип пользователя.
. Введите ключ для пользователя базы данных в поле Имя
асимметричного ключа. Вместо этого можно щелкнуть многоточие (…), чтобы открыть
диалоговое окно Выбор асимметричного ключа. Имя асимметричного ключа доступно,
если выбрать элемент Пользователь, сопоставленный с асимметричным ключом в
списке Тип пользователя.
. Нажмите кнопку ОК.
6.2 Создание
полной резервной копии сформированной базы данных
Для создания резервной копии необходимо в контекстном меню на БД
"radevich1" правой кнопкой "мыши" выбрать Задачи →
Создать резервную копию…
Имя резервной копии:radevich1-Полная База данных Резервное копирование
Заключение
В данной курсовой работе для создания базы данных "Гостиничные
сети" было проделано следующее:
В AllFusionERwinDataModeler была разработана концепция будущей базы
данных, определены сущности и атрибуты, а для их графического отражения была
создана ER-диаграмма, затем в MS SQL Server 2008 разрабатывалась сама база
данных. На её основе были созданы запросы на добавление данных, их удаление,
модернизацию выборку и т.д., были созданы хранимые процедуры и триггеры. Затем
для более удобного использования база данных была перенесена в MS Access для
создания пользовательского интерфейса, который разрабатывался с помощью конструктора
форм. Формы были сделаны по шести таблицам базы данных и добавлена ещё одна
форма в качестве главного меню. По основным таблицам разработаны отчёты.
Завершилась работа созданием резервной копии для безопасности базы данных.
Список
используемых источников
1. Голицына
О.Л. Базы данных: учебное пособие. / О.Л. Голицына, Н.В. Максимов, И.И. Попов -
М.: ФОРУМ: ИНФРА-М, 2006. - 352 с: ил. - (Профессиональное образование).
. Википедия -
Режим доступа:://ru.wikipedia.org/wiki/Microsoft_SQL_Server- Дата доступа:
11.05.2015.
. Режим
доступа:
#"867659.files/image014.gif">
Рисунок 1 - ER-диаграмма
Приложение 2
Рисунок 2 - Готовая база данных
Приложение 3
Рисунок 3 - Запрос о заказах клиента
Приложение 4
Рисунок 4 - Запрос на соответствие заданной маске
Приложение 5
Рисунок 5 - Запрос на удаление
Приложение 6
Рисунок 6 - Запрос на объединение таблиц
Приложение 7
Рисунок 7 - Запрос на добавление одной записи в базу
Приложение 8
Рисунок 8 - Запрос на конкретное значение
Приложение 9
Рисунок 9 - Запрос на множественное добавление в базу
Приложение 10
Рисунок 10 - Запрос на запрашиваемую сумму предложения
Приложение 11
Рисунок 11 - Запрос на обновление цены
Приложение 12
Рисунок 12 - Запрос на сумму заказов
Приложение 13
Рисунок 13
Приложение 14
Рисунок 14 - Хранимая процедура на добавление записей
Приложение 15
Рисунок 15 - Хранимая процедура на запрашиваемую сумму
Приложение 16
Рисунок 16 - Результат триггера на запрет смены названия отеля
Приложение 17
Рисунок 17 - Результат триггера на запрет ввода записи с ценой более 2000
Приложение 18
Рисунок 18 - Результат триггера на запрет удаления заявок
Приложение 19
Рисунок 19 - Результат триггера на запрет смены серии паспорта клиента
Приложение 20
Рисунок 20 - Результат триггера на запрет вставлять запись о клиенте без
гражданства