Дипломная (вкр): Информационная система гостиничного комплекса

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Различают два уровня физической модели:

• трансформационную модель;

• модель СУБД.

Трансформационная модель содержит информацию для реализации отдельного проекта, который может быть частью общей ИС и описывать подмножество предметной области. Данная модель позволяет проектировщикам и администраторам БД лучше представить, какие объекты БД хранятся в словаре данных, и проверить, насколько физическая модель удовлетворяет требованиям к ИС.

Модель СУБД автоматически генерируется из трансформационной модели и является точным отображением системного каталога СУБД.

Физический уровень представления модели зависит от выбранного сервера.win поддерживает более 20 реляционных и не реляционных баз данных. По умолчанию ER-win генерирует имена таблиц и индексов по шаблону на основе имен соответствующих сущностей и ключей логической модели, которые в дальнейшем могут быть откорректированы в ручную. Имена таблиц и колонок будут сгенерированы по умолчанию на основе имен сущностей и атрибутов логической модели.

Физическое проектирование базы данных - процесс создания конкретной реализации БД, размещаемой во вторичной памяти (например, накопители типа винчестер) вычислительной машины. В процессе физического проектирования выполняется отображение созданной глобальной логической модели на особенности конкретной СУБД.

Для наиболее распространенных сейчас реляционных СУБД этот процесс можно разбить на следующие этапы и подзадачи:

Этап 1. Перенос глобальной логической модели в среду целевой СУБД:

• проектирование базовых таблиц (с учетом наиболее полного соответствия выбранной логической модели (например, реализация ключей), добавление необходимых структур обслуживания - триггеры, первичные индексы);

• реализация бизнес-правил (зависит от СУБД, лучший вариант - полное использование возможностей СУБД, не переносить бизнес-правила в приложения).

Этап 2. Проектирование физического представления БД:

• анализ транзакций ( выполнение анализа на пропускную способность (число транзакций, выполненных за определенный интервал времени), анализ времени ответа на запрос, отнесение транзакции к важным);

• выбор файловой структуры (для оптимальной файловой организации);

• определение вторичных индексов (для ускорения выполнения транзакций по не ключевым атрибутам и ссылкам);

• анализ необходимости введения контролируемой избыточности данных (процесс обратный нормализации, применяется для повышения производительности системы, только если исчерпаны другие возможности, может привести к снижению гибкости и расширяемости БД, а также усложняет реализацию и обновление данных);

• определение требований к дисковой памяти (в том числе учет требований для обоснования приобретения нового оборудования).

Этап 3. Разработка механизмов защиты:

• разработка пользовательских представлений (видов);

• определение прав доступа.

Этап 4. Организация мониторинга и настройка функционирования системы (требуется для устранения ошибочных проектных решений и изменения требований к системе (например, отказ от более дорогого оборудования, улучшение психологического комфорта пользователей по работе с системой); настройка БД производится фактически постоянно, а не только при первом запуске системы, что позволяет оперативно реагировать на изменения в состоянии системы и требования пользователей; внесение любых изменений должно производиться обдуманно и осторожно, с учетом глобального влияния изменений, для оценки влияния изменений применяют дубликат системы).

Осуществляем проектирование основных объектов базы данных (сущностей) в среду СУБД MS ACCESS 2003 и проектируем схему данных.

ER - диаграмма физической структуры базы данных приведена в приложении 3. Вид и содержание сущностей приведена в приложении 3.

Схема данных приведена в приложении 4.

Вид и содержание сущности приведены в приложении 5.коды, программный модуль для создания сущности:

Сущность - «Броня»:

SQL-код:

create table Броня (

Номера_комнат VARCHAR(20) not null,

Код_корпуса CHAR(10),

Жал_ФИО_клиента VARCHAR(20),

Номер_корпуса VARCHAR(20),

Наименование_организации VARCHAR(20),

ФИО_клиента VARCHAR(20),

Дата_бронирования DATE,

Дата_заселения DATE,

Дата_выселения DATE,

Кол_людей VARCHAR(20),

Скидка VARCHAR(20),PK_БРОНЯ primary key (Номера_комнат));

Сущность - «Жалобы клиентов»:

SQL-код:table Жалобы_клиентов (

ФИО_клиента VARCHAR(20) not null,

Зат_Наименование_организации VARCHAR(20),

Наименование_организации VARCHAR(20),

Дата_жалобы DATE,

Жалоба VARCHAR(50),PK_ЖАЛОБЫ_КЛИЕНТОВ primary key (ФИО_клиента));

Сущность - «Затраты постояльцев» :

SQL-код:table Затраты_постояльцев (

Наименование_организации VARCHAR(20) not null,

ФИО_клиента VARCHAR(20),

Наименование_услуги VARCHAR(20),

Весь_долг_гостинице VARCHAR(20),PK_ЗАТРАТЫ_ПОСТОЯЛЬЦЕВ primary key (Наименование_организации));

Сущность - «Корпуса»:

SQL-код:table Корпуса (

Код_корпуса CHAR(10) not null,

Номер_корпуса VARCHAR(20) not null,

Класс_корпуса VARCHAR(20) not null,

Общее_кол_комнат VARCHAR(20),

Кол_одном_номеров VARCHAR(20),

Кол_двухм_номеров VARCHAR(20),

Кол_трёхм_номеров VARCHAR(20),

Кол_четырёхм_номеров VARCHAR(20),

constraint PK_КОРПУСА primary key (Код_корпуса));

Сущность - «Учёт номеров»:

SQL-код:

create table Учёт_номеров (

Код_номера CHAR(10) not null,

Бро_Номера_комнат VARCHAR(20),

Код_корпуса CHAR(10),

Номер_корпуса VARCHAR(20) not null,

Номера_комнат VARCHAR(20),

Местность_номера VARCHAR(20),

Бронирован VARCHAR(20),PK_УЧЁТ_НОМЕРОВ primary key (Код_номера),AK_IDENTIFIER_1_УЧЁТ_НОМ unique (Номер_корпуса));

SQL-коды, программный модуль для создания связей:

Связь - «Броня/Корпуса»:

SQL-код:

alter table Броняconstraint FK_БРОНЯ_RELATIONS_КОРПУСА foreign key (Код_корпуса)

references Корпуса (Код_корпуса);

Связь - «Броня/Жалобы клиентов»:

SQL-код:

alter table Броня

add constraint FK_БРОНЯ_RELATIONS_ЖАЛОБЫ_К foreign key (Жал_ФИО_клиента)Жалобы_клиентов (ФИО_клиента);

Связь - «Жалобы клиентов/Затраты постояльцев»:

SQL-код:table Жалобы_клиентовconstraint FK_ЖАЛОБЫ_К_RELATIONS_ЗАТРАТЫ_ foreign key (Зат_Наименование_организации)Затраты_постояльцев (Наименование_организации);

Связь - «Учёт номеров/Корпуса»:

SQL-код:

alter table Учёт_номеровconstraint FK_УЧЁТ_НОМ_RELATIONS_КОРПУСА foreign key (Код_корпуса)

references Корпуса (Код_корпуса);

Связь - «Учёт номеров/Броня»:

SQL-код:table Учёт_номеровconstraint FK_УЧЁТ_НОМ_RELATIONS_БРОНЯ foreign key (Бро_Номера_комнат)Броня (Номера_комнат);

2. РАЛИЗАЦИЯ БАЗЫ ДАННЫХ

Спроектированная база данных "Информационная система гостиничного комплекса" создана в СУБД MS ACCESS 2003.

.1 Организация ввода данных в базу данных

Для ввода данных базы данных "Информационная система гостиничного комплекса" разработана экранная форма ввода данных в среде визуального программирования Delphi7.0 с компонентами доступа к БД MS ACCESS - на основе сущности "Броня".

Вид экранной формы "Броня" приведён в приложении 6

.2 Реализация запросов

Реализуем запросы описанные в разделе "Постановка задачи":

Запрос 1:

Получить перечень и общее число фирм, забронировавших места в объеме, не менее указанного, за весь период сотрудничества, либо за некоторый период.

SQL код:Броня.Наименование_организации, Броня.Дата_бронированияБроня(((Броня.Дата_бронирования) Between [Введите первую дату периода] And [Введите вторую дату периода]));

Запрос 2:

Получить перечень и общее число постояльцев, заселявшихся в номера с указанными характеристиками за некоторый период.

SQL код:Броня.ФИО_клиента, Броня.Наименование_организации, Учёт_номеров.Код_номера, Учёт_номеров.Местность_номера, Броня.Дата_заселенияБроня INNER JOIN Учёт_номеров ON Броня.Номера_комнат=Учёт_номеров.Бро_Номера_комнат(((Броня.Дата_заселения) Between [Введите первую дату периода] And [Введите вторую дату периода]));

Запрос 3:

Получить количество свободных номеров на данный момент.

SQL код:Броня.Номера_комнат, Учёт_номеров.Бронирован, Date() AS Выражение1Броня INNER JOIN Учёт_номеров ON Броня.Номера_комнат=Учёт_номеров.Бро_Номера_комнат(((Учёт_номеров.Бронирован)="нет"));

Запрос 4:

Получить сведения о количестве свободных номеров с указанными характеристиками.

SQL код:Броня.Номера_комнат, Броня.Броня, Корпуса.Номер_корпуса, Корпуса.Класс_корпуса, Учёт_номеров.Местность_номера(Корпуса INNER JOIN Броня ON Корпуса.Код_корпуса=Броня.Код_корпуса) INNER JOIN Учёт_номеров ON (Корпуса.Код_корпуса=Учёт_номеров.Код_корпуса) AND (Броня.Номера_комнат=Учёт_номеров.Бро_Номера_комнат)(((Броня.Броня)="нет"));

Запрос 5:

Получить сведения о конкретном свободном номере: в течение какого времени он будет пустовать и о его характеристиках.

SQL код:Учёт_номеров.Бро_Номера_комнат, Учёт_номеров.Бронирован, Учёт_номеров.Местность_номера, Броня.Номер_корпуса, Корпуса.Класс_корпуса(Корпуса INNER JOIN Броня ON Корпуса.Код_корпуса = Броня.Код_корпуса) INNER JOIN Учёт_номеров ON (Корпуса.Код_корпуса = Учёт_номеров.Код_корпуса) AND (Броня.Номера_комнат = Учёт_номеров.Бро_Номера_комнат)BY Учёт_номеров.Бро_Номера_комнат, Учёт_номеров.Бронирован, Учёт_номеров.Местность_номера, Броня.Номер_корпуса, Корпуса.Класс_корпуса(((Учёт_номеров.Бро_Номера_комнат)=[Введите номер свободной коннаты]) AND ((Учёт_номеров.Бронирован)="Нет"));

Запрос 6:

Получить список занятых сейчас номеров, которые освобождаются к указанному сроку.

SQL код:Броня.Номера_комнат, Броня.Броня, Броня.Дата_выселения(Корпуса INNER JOIN Броня ON Корпуса.Код_корпуса=Броня.Код_корпуса) INNER JOIN Учёт_номеров ON (Корпуса.Код_корпуса=Учёт_номеров.Код_корпуса) AND (Броня.Номера_комнат=Учёт_номеров.Бро_Номера_комнат)(((Броня.Броня)="да") AND ((Броня.Дата_выселения)<=[Введите дату]));

Запрос 7:

Получить данные об объеме бронирования номеров данной фирмой за

SQL код:Броня.Наименование_организации, Броня.Дата_заселения, Броня.Номер_корпуса, Броня.Номера_комнатБроня INNER JOIN Учёт_номеров ON Броня.Номера_комнат=Учёт_номеров.Бро_Номера_комнат(((Броня.Наименование_организации)=[Введите фирму]) AND ((Броня.Дата_заселения) Between [Введите первую дату] And [Введите вторую дату]));

Запрос 8:

Получить список недовольных клиентов и их жалобы.

SQL код:Жалобы_клиентов.ФИО_клиента, Жалобы_клиентов.Зат_Наименование_организации, Жалобы_клиентов.Жалоба, Жалобы_клиентов.Дата_жалобыЖалобы_клиентов;

Запрос 10:

Получить сведения о постояльце из заданного номера: его счет гостинице за дополнительные услуги, поступавшие от него жалобы, виды дополнительных услуг, которыми он пользовался.

SQL код:Броня.ФИО_клиента, Броня.Наименование_организации, Броня.Номера_комнат, Затраты_постояльцев.Весь_долг_гостинице, Жалобы_клиентов.Жалоба, Затраты_постояльцев.Наименование_услуги((Броня INNER JOIN Учёт_номеров ON Броня.Номера_комнат = Учёт_номеров.Бро_Номера_комнат) INNER JOIN Жалобы_клиентов ON Броня.Номера_комнат = Жалобы_клиентов.Номера_комнат) INNER JOIN Затраты_постояльцев ON Жалобы_клиентов.Код_клиента = Затраты_постояльцев.Код_клиента(((Броня.Номера_комнат)=[Введите номер]));

Запрос 11:

Получить сведения о фирмах, с которыми заключены договора о брони на указанный период.

SQL код:Броня.Наименование_организации, Броня.Скидка, Броня.Дата_бронированияБроня INNER JOIN Учёт_номеров ON Броня.Номера_комнат=Учёт_номеров.Бро_Номера_комнат(((Броня.Дата_бронирования) Between [Введите первую дату] And [Введите вторую дату]));

Запрос 12:

Получить сведения о наиболее часто посещающих гостиницу постояльцах по всем корпусам гостиниц, по определенному зданию.

SQL код:Броня.ФИО_клиента, Броня.Наименование_организации, Броня.Номер_корпуса, Броня.Номера_комнатБроняBY Броня.ФИО_клиента, Броня.Наименование_организации, Броня.Номер_корпуса, Броня.Номера_комнат(((Броня.Номер_корпуса)=[Введите номер корпуса]))BY Броня.ФИО_клиента;

Запрос 13:

Получить сведения о новых клиентах за указанный период.

SQL код:Броня.ФИО_клиента, Броня.Наименование_организации, Броня.Дата_бронирования, Броня.СкидкаБроня(((Броня.Дата_бронирования) Between [Введите первую дату периода] And [Введите вторую дату периода]));

Запрос 14:

Получить сведения о конкретном человеке, сколько раз он посещал гостиницу, в каких номерах и в какой период останавливался, какие счета оплачивал.

SQL код:Броня.ФИО_клиента, Броня.Номера_комнат, Броня.Дата_бронирования, Броня.Дата_заселения, Броня.Дата_выселения, Затраты_постояльцев.Весь_долг_гостинице, Затраты_постояльцев.Наименование_услуги(Броня INNER JOIN Жалобы_клиентов ON Броня.Номера_комнат = Жалобы_клиентов.Номера_комнат) INNER JOIN Затраты_постояльцев ON Жалобы_клиентов.Код_клиента = Затраты_постояльцев.Код_клиента(((Броня.ФИО_клиента)=[Введите фамилию клиента]));

Запрос 14:

Получить сведения о конкретном номере: кем он был занят в определенный

SQL код:Броня.Номера_комнат, Броня.ФИО_клиента, Броня.Наименование_организации, Броня.Дата_заселенияБроня(((Броня.Номера_комнат)=[Введите номер комнаты]) AND ((Броня.Дата_заселения) Between [Введите первую дату периода] And [Введите вторую дату периода]));

Результаты выполнения запросов приведены в приложении 7.

.3 Получение отчёта

Отчёт создан в среде визуального программирования Delphi7.0.

Отчёт получен на основании информации из сущностей: «Броня», «Учёт номеров». Отражает " Броня-учет номеров".

Форма отчёта приведена в приложении 8.

ЗАКЛЮЧЕНИЕ

Можно с большой степенью достоверности утверждать, что большинство приложений, которые предназначены для выполнения хотя бы какой-нибудь полезной работы, тем или иным образом используют структурированную информацию или, другими словами, упорядоченные данные. Такими данными могут быть, например, списки заказов на тот или иной товар, списки предъявленных и оплаченных счетов или список телефонных номеров ваших знакомых. Обычное расписание движения автобусов в вашем городе - это тоже пример упорядоченных данных.

При компьютерной обработке информации упорядоченные каким либо образом данные принято хранить в базах данных - особых файлах, использование которых вместе со специальными программными средствами позволяет пользователю как просматривать необходимую информацию, так и, по мере необходимости, манипулировать ею, например, добавлять, изменять, копировать, удалять, сортировать и т.д.

Таким образом, дать простое определение базы данных можно следующим образом. База данных - это набор информации, организованной тем, или иным способом. Пожалуй, одним из самых банальных примеров баз данных может быть записная книжка с телефонами.

ЛИТЕРАТУРА

Попов В.Б Delphi для школьников: учебно-методическое пособие/В.Б Попов. - М.: Финансы и статистика; ИНФРА-М, 2014.

Гришин Ю.М. Delphi для программистов - М.: Финансы и статистика; ИНФРА-М, 2011.

ПРИЛОЖЕНИЯ

Приложение 1

ЕR - диаграмма инфологической модели базы банных ”Информационная система гостиничного комплекса”


Приложение 2

”Информационная система гостиничного комплекса”


Приложение 3

Вид и содержание сущностей базы данных

“Информационная система гостиничного комплекса”

Сущность «Броня»:


Сущность «Жалобы клиентов»:


Сущность «Затраты постояльцев»:


Сущность «Корпуса»:


Сущность «Учёт номеров»:


Источник: https://www.bibliofond.ru/detail.aspx?id=863341