Название
сущности 1
|
Название
сущности 2
|
Вид отношения
|
Описание
|
Номер
|
Вид номера
|
1: ∞
|
По полю
"Код вида номера"
|
Бронирование
номера
|
Номер
|
1: ∞
|
По полю
"Код номера"
|
Счет за проживание
|
Номер
|
1: ∞
|
По полю
"Код номера"
|
Счет за
проживание
|
Бронирование
номера
|
1: 1
|
По полю "№
записи в журнале бронирования" (необязательная связь)
|
Бронирование
номера
|
Клиент
|
1: ∞
|
По полю
"Код клиента"
|
Проживание в
номере
|
Клиент
|
1: ∞
|
По полю
"Код клиента"
|
Проживание в
номере
|
Счет за
проживание
|
1: ∞
|
ПО полю "№
счета за проживание"
|
Счет за услуги
|
Клиент
|
1: ∞
|
По полю
"Код клиента"
|
Оказание услуг
|
Счет за услуги
|
1: ∞
|
По полю "№
счета за услуги"
|
Оказание услуг
|
Вид услуг
|
1: ∞
|
По полю
"Код вида услуг"
|
На основе разработанной логической модели, получена структура
таблиц, входящих в базу данных. Структура таблиц данных приведена на логической
модели данных (рисунок 3.1).
3.2
Разработка физической модели данных
Разработка физической модели данных выполняется согласно
разработанной логической модели (структуре базы данных). База данных создается
на сервере СУБД MySQL. Создание базы данных подразумевает создание следующих объектов
на сервере СУБД:
база данных;
таблицы;
поля таблиц.
СУБД MySQL позволяет работать со следующими основными
типами данных:
CHAR: символьный фиксированной длины;
VARCHAR: текстовый переменной длины;
NUMBER: числовой с задаваемой точностью;
DOUBLE: числовой с плавающей точкой;
DECIMAL: числовой с фиксируемой точностью;
INTEGER: целочисленный;
DATE: дата;
DATE_TIME: дата и время.
Основанием для выбора типов данных полей в базе данных
является тип данных в атрибутах сущностей, описываемых в базе данных. Ниже
приведен перечень сущностей из логической модели и атрибуты с указанием
целесообразного типа данных.
Рисунок 3.2 - Физическая структура базы данных
Номер:
Номер комнаты: текстовый, 5 знаков;
Этаж: целочисленный;
Вид номера: целочисленный, по коду.
Вид номера:
Наименование вида номера: текстовый, 100 знаков;
Текущая цена проживания за 1 сутки: с фиксированной точностью
до 2-х знаков.
Вид услуг:
Наименование вида услуги: текстовый, 100 знаков;
Текущая стоимость услуги: с фиксированной точностью до 2-х
знаков.
Клиент:
Наименование или ФИО физического лица: текстовый, 100 знаков;
Серия паспорта: текстовый, 4 знака;
Номер паспорта: текстовый, 6 знаков;
Данные о выдаче паспорта: текстовый, 100 знаков;
ИНН: текстовый, 30 знаков;
КПП: текстовый, 30 знаков;
Расчетный счет: текстовый, 100 знаков.
Бронирование номера:
Дата бронирования: дата и время;
Дата заезда: дата;
Дата выезда: дата;
Дополнительное примечание: текстовый, 200 знаков;
Клиент: целочисленный (по коду);
Бронируемый номер: целочисленный (по коду).
Счет за проживание:
Номер счета: целочисленный;
Дата выписки счета: дата;
Дата заезда в номер: дата;
Дата выезда из номера: дата;
Номер в котором осуществляется проживание: целочисленный (по
коду);
Стоимость номера: с фиксированной точностью до 2-х знаков;
Номер записи предварительного бронирования: целочисленный.
Проживание в номере:
Клиент: целочисленный (по коду);
Номер счета за проживание: целочисленный.
Счет за услуги:
Номер счета: целочисленный;
Дата выписки счета: дата;
Клиент: целочисленный (по коду).
Оказание услуг:
Вид услуги: целочисленный (по коду);
Номер счета за услуги: целочисленный;
Цена оказания услуги: с фиксированной точностью до 2-х
знаков;
Количество раз оказания услуги: с фиксированной точностью до
2-х знаков.
Разработанная физическая модель базы данных приведена на
рисунке 3.2.
4. Реализация
базы данных
4.1
Реализация SQL-запросов для создания объектов в БД
Объекты базы данных создаются на сервере СУБД MySQL. Создание объектов базы
данных выполняется с помощью языка SQL-запросов. Все SQL-запросы для создания
объектов в базе данных получены с помощью автоматической генерации скриптов в
программе ER-Win на основе построенной физической модели.
SQL-запрос для создания базы данных следующий:
CREATE DATABASE "HOTEL"
Каждая таблица в базе данных может быть создана с помощью SQL-оператора следующего
синтаксиса:
CREATE TABLE table_name
(column_1 data_type,_2 data_type,
…,_KEY (column_1)
)
где table_name - имя создаваемой таблицы;
column_1, column_2 - имена полей таблицы;
data_type - тип данных для поля;
PRIMARY_KEY (имя_поля) - создание первичного ключа.
Таблица APPARTMENT_CUST ("Счет за проживание") создана с
помощью следующего SQL-запроса:
CREATE TABLE IF NOT EXISTS `appartment_cust` (
`ID` int (10) NOT NULL auto_increment,
`CUST_DATE` date NOT NULL,
`APPARTMENT_ID` int (11) NOT NULL,
`START_DATE` date NOT NULL,
`END_DATE` date NOT NULL,
`APPARTMENT_PRICE` decimal (10,2) NOT NULL,
`APPARTMENT_RESERV_REC_ID` int (11) default
NULL,KEY (`ID`)
)
Таблица APPARTMENT_CUST_DETAIL ("Проживание в
номере") создана с помощью следующего SQL-запроса:
CREATE TABLE IF NOT EXISTS
`appartment_cust_detail` (
`APPARTMENT_CUST_ID` int (10) NOT NULL,
`CUSTOMER_ID` int (10) NOT NULL,KEY
(`APPARTMENT_CUST_ID`,`CUSTOMER_ID`)
)
Таблица APPARTMENT_RESERV ("Бронирование номера") создана с
помощью следующего SQL-запроса:
CREATE TABLE IF NOT EXISTS `appartment_reserv` (
`REC_ID` int (10) NOT NULL auto_increment,
`CUSTOMER_ID` int (10) NOT NULL,
`APPARTMENT_ID` int (10) NOT NULL,
`START_DATE` date NOT NULL,
`END_DATE` date NOT NULL,
`ADDITIONAL_NOTE` varchar (200) default NULL,KEY
(`REC_ID`)
)
Таблица CUST ("Счет за услуги") создана с помощью
следующего SQL-запроса:
CREATE TABLE IF NOT EXISTS `cust` (
`ID` int (10) NOT NULL auto_increment,
`CUST_DATE` date NOT NULL,
`CUSTOMER_ID` int (11) NOT NULL,KEY (`ID`)
)
Таблица CUSTOMER ("Клиент") создана с помощью
следующего SQL-запроса:
CREATE TABLE IF NOT EXISTS `customer` (
`ID` int (10) NOT NULL auto_increment,
`CUSTOMER_NAME` varchar (100) NOT NULL,
`PASSPORT_SER` varchar (4) default NULL,
`PASSPORT_NUM` varchar (6) default NULL,
`PASSPORT_DATA` varchar (100) default NULL,
`INN` varchar (30) default NULL,
`KPP` varchar (30) default NULL,
`BANK_REQ` varchar (100) default NULL,KEY (`ID`)
)
Таблица CUST_DETAIL ("Оказание услуги") создана с помощью
следующего SQL-запроса:
CREATE TABLE IF NOT EXISTS `cust_detail` (
`CUST_ID` int (10) NOT NULL,
`SERVICE_ID` int (10) NOT NULL,
`QUANTITY` decimal (10,2) NOT NULL default
'1.00',
`PRICE` decimal (10,2) NOT NULL default
'0.00',KEY (`CUST_ID`,`SERVICE_ID`)
)
Таблица SPR_APPARTMENT ("Номер") создана с помощью следующего
SQL-запроса:
CREATE TABLE IF NOT EXISTS `spr_appartment` (
`ID` int (10) NOT NULL auto_increment,
`APPARTMENT_TYPE_ID` int (10) NOT NULL,
`ROOM_NUMBER` varchar (5) NOT NULL,
`LEVEL_NUMBER` int (5) NOT NULL,KEY (`ID`)
)
Таблица SPR_APPARTMENT_TYPE ("Вид номера") создана с помощью
следующего SQL-запроса:
CREATE TABLE IF NOT EXISTS `spr_appartment_type`
(
`ID` int (10) NOT NULL auto_increment,
`NAME` varchar (100) NOT NULL,
`SIZING` int (10) NOT NULL,
`PRICE` decimal (10,2) NOT NULL,KEY (`ID`)
)
Таблица SPR_SERVICE ("Вид услуги") создана с помощью
следующего SQL-запроса:
CREATE TABLE IF NOT EXISTS `spr_service` (
`ID` int (10) NOT NULL auto_increment,
`SERVICE_NAME` varchar (100) NOT NULL,
`PRICE` decimal (10,2) NOT NULL,KEY (`ID`)
)
Ограничения целостности данных по внешним ключам не
поддерживаются используемой версией сервера MySQL (версия 5.2, ENGINE=MyISAM). Данные ограничения
реализованы программным способом на стороне клиентского приложения средствами
технологии доступа к данным ADO.net.
4.2
Реализация SQL-запросов для получения отчетов
Отчет "Прайс-лист на услуги" является простейшей
выборкой из справочника услуг и реализован с помощью следующего SQL-запроса:
select service_name "Наименование
услуг","Цена"spr_service
Отчет "Прайс-лист на проживание" реализован с
помощью следующего SQL-запроса:
select apt. name "Категория номеров",
apt. sizing "Количество мест",
apt. price "Цена, руб. ",
(select count (*) from spr_appartment where
appartment_type_id=apt. ID)"Количество номеров",spr_appartment_type aptby "Количество номеров" desc,
sizing, price
Отчет "Предоставление услуг" реализован с помощью
следующего SQL-запроса:
select c. ID "Счет №",
c. cust_date "Дата счета",
cs. CUSTOMER_NAME "Клиент",
s. SERVICE_NAME "Наименование услуг",
cd. PRICE "Цена, руб. ",
cd. QUANTITY "Количество",
cd. PRICE*cd. QUANTITY "Сумма, руб. "
from cust_detail cdspr_service s on cd.
service_id=s. idcust c on c. id=cd. CUST_IDcustomer cs on c. CUSTOMER_ID=cs.
IDc. cust_date>=@start_date and c. cust_date<@end_date
order by c. id
4.3
Реализация приложения для работы с базой данных
Приложение для работы с базой данных построено на
платформе.net Framework версии 3.5 Программа написана на языке C# в среде
разработки Microsoft Visual Studio.net.
Для доступа к серверу базы данных MySQL
используются сборки MySQL Connector версии 6.3 Работа с данными осуществляется по технологии
ADO.net. Концепция доступа к
данным в ADO.net основана на использовании двух компонентов:
ПРОВАЙДЕРА ДАННЫХ (представляется объектом класса DataProvider). Это посредник,
обеспечивающий взаимодействие приложения и базы данных со стороны базы данных
(в распределенных приложениях - со стороны сервера).
Рисунок 4.1 - Структура доступа к данным в приложении
Объектная модель ADO.net предполагает существование (при написании
приложения для работы с базой данных - использование) двух множеств классов,
выполняющих четко определенные задачи при работе с базой данных:
Рисунок 4.2 - Объектная модель доступа к данным
Классы подсоединенных объектов обеспечивают установление
соединения с базой данных и управление базой со стороны приложения; классы
отсоединенных объектов обеспечивают сохранение, использование и преобразование
полученной от базы данных информации на стороне приложения.
Заключение
База данных учета размещения и услуг гостиницы-отеля
"Баташев" разработана в соответствии с заданием на курсовой проект.
В процессе работы над проектом проанализирована предметная
область, выделены основные сущности, выбраны средства реализации базы данных и
пользовательской программы. Произведено проектирование и реализация базы
данных, а также реализация приложения для работы пользователей с базой данных.
Разработанная система позволяет собирать, хранить и
анализировать информацию о бронировании номеров, проживании постояльцев, вести
журнал счетов на проживание и на оказание дополнительных услуг. База данных
предусматривает получение отчетов за произвольный период по выручке за оказание
услуг, состоянию номерного фонда гостиницы и др.
Использование системы позволит упростить регистрацию
постояльцев в гостинице-отеле "Баташев" и автоматизировать
выставление счетов за проживание и услуги.
Список литературы
1. Брауде
Э. Дж. Технология разработки программного обеспечения. - СПб.: Питер, 2004. -
655с.
2. Вендеров
А.М. CASE-технологии. Современные методы и средства проектирования
информационных систем. - М.: Финансы и статистика, 1998. - 340с.
. Дж.
Грофф, П. Вайнберг. SQL: Полное руководство: Пер. с англ. - 2-е изд., перераб. и доп. -
К.: Издательская группа BHV, 2001. - 816 с., ил.
. MySQL
Руководство по изучению языка. Издательство ДМК Пресс; Питер; 2004 г. - 352 с.
. MySQL
Библиотека профессионала. Издательство Диалектика; 2002 г. - 624 с.
. Рихтер
Дж. CLR via C#. Программирование на платформе Microsoft.net Framework 2.0 на
языке C#. Мастер-класс. /Пер. с англ. - М.: Издательство "Русская
Редакция"; СПб.: Питер, 2007. - 656 стр.: ил.