Проектирование информационной системы «Администратор гостиницы»
Системный анализ предметной области База данных системы должна содержать: Для выполнения третьего условия необходимо назначить внешние ключи: Select * from (select k. fio, count (r.klient)as kol from reestr r left join klients k on k. id=r.klient group by k. fio) b. Привести примеры 2−3 запросов с использованием агрегатных функций. Res=mysql_query («select * from $tbl where $name_f in (select min… Читать ещё >
Проектирование информационной системы «Администратор гостиницы» (реферат, курсовая, диплом, контрольная)
Проектирование информационной системы «Администратор гостиницы»
1. Системный анализ предметной области База данных системы должна содержать:
· Данные о классах номеров
· Список номеров
· Данные о клиентах
· Данные о заселении клиентов
· Возможность выписывать счета на оплату
· Возможность поиска клиентов.
Базовые сущности:
Гостиничные номера:
· Название номера
· Класс номера
· Этаж
· Количество мест
· Стоимость проживания.
Список клиентов:
· Фамилия И.О.
· Паспортные данные Регистрация проживания:
· Заезжающий клиент
· Номер
· Дата приезда
· Дата отъезда
2. Нормализация Первая нормальная форма Таблица находится в первой нормальной форме, если она удовлетворяет следующим требованиям:
· Не содержит полей с несколькими значениями
· Ключевое поле не имеет пустот В нашем случае в таблице клиентов паспортные данные клиентов могут содержать номер серию дату выдачи и место выдачи поэтому необходимо разбить это поле на: p_nomer, p_serial, p_data, p_point.
Для выполнения второго условия необходимо ввести ключевые поля.
Проанализируем:
Вторая нормальная форма:
Таблица находится во второй нормальной форме, если она удовлетворяет следующим требованиям:
· Таблица приведена к 1НФ
· Поля, которые зависят от части первичного ключа должны бить выведены в состав отдельных таблиц
· Все таблицы должны быть связаны между собой В рассматриваемом примере таблицы уже приведены к 1НФ, то есть одно из требований выполнено.
В таблице Numbers поле CostDay зависит от поля Klass, поэтому надо создать отдельную таблицу содержащую классы номеров.
Для выполнения третьего условия необходимо назначить внешние ключи:
· Связываем таблицы Numbers и Klass по полю Klass
· Связываем таблицы Reestr и Numbers по полю Numer
· Связываем таблицы Reestr и Klients по полю Klient
Третья нормальная форма:
Таблица находится в третьей нормальной форме, если она удовлетворяет следующим требованиям:
· Таблица приведена к 2НФ
· Не должно быть транзитивных зависимостей между не ключевыми полями В итоге база данных принимает вид:
Таблица 1 Физическое проектирование базы данных.
name | type | Key | extra | |
Таблица классов номеров (Num_klass) | ||||
Id | integer | primary key | auto_increment | |
Name | varchar (20) | |||
CostDay | float | |||
Список гостиничных номеров (Numbers) | ||||
Id | integer | primary key | auto_increment | |
Numer | varchar (10) unique | |||
Klass | integer | Foreign key | REFERENCES Num_klass (id) | |
stage | integer | |||
places | integer | |||
Таблица клиентов (Klients) | ||||
Id | integer | primary key | auto_increment | |
FIO | varchar (50) | |||
p_point | varchar (50) | |||
p_nomer | Integer | |||
p_serial | Integer | |||
p_data | date | |||
Таблица регистрационных действий (Reestr) | ||||
Id | integer | primary key | auto_increment | |
klient | integer | Foreign key | REFERENCES klients (id) | |
numer | integer | Foreign key | REFERENCES numbers (id) | |
data_p | date | |||
data_ot | date | |||
3. Реализация структуры базы данных в СУБД MySQL
1. Запросы на создание таблиц:
create table Num_klass (
id integer primary key auto_increment,
Name varchar (20),
CostDay float
);
create table Numbers (
id integer primary key auto_increment,
Numer varchar (10) unique,
Klass integer,
stage integer,
places integer,
CONSTRAINT FOREIGN KEY (klass) REFERENCES Num_klass (id)
);
create table klients (
id integer primary key auto_increment,
FIO varchar (50),
pasport varchar (50)
);
create table reestr (
id integer primary key auto_increment,
klient integer,
numer integer,
data_p date,
data_ot date,
CONSTRAINT FOREIGN KEY (numer) REFERENCES numbers (id),
CONSTRAINT FOREIGN KEY (klient) REFERENCES klients (id)
);
2. Запросы на добавление данных
insert into num_klass (name, costday) values («Vip», 10 000);
insert into num_klass (name, costday) values («Luxe», 8000);
insert into num_klass (name, costday) values («Premium», 6000);
insert into num_klass (name, costday) values («Less», 4000);
insert into num_klass (name, costday) values («Budget», 2000);
insert into Numbers (numer, klass, stage, places) values («1408», 1,5,2);
insert into Numbers (numer, klass, stage, places) values («1407», 2,4,3);
insert into Numbers (numer, klass, stage, places) values («1406», 3,3,4);
insert into Numbers (numer, klass, stage, places) values («1405», 4,2,5);
insert into Numbers (numer, klass, stage, places) values («1404», 5,1,6);
insert into Klients (FIO, pasport) values («Ivanov V.V.» ," qw2467″);
insert into Klients (FIO, pasport) values («Petrov A.V.» ," evta89490″);
insert into Klients (FIO, pasport) values («Sidorov V.A.» ," khskj3546″);
insert into Klients (FIO, pasport) values («Putin V.V.» ," qlkj53050″);
insert into Klients (FIO, pasport) values («Geyts Bil» ," f*jio967″);
insert into Reestr (klient, numer, data_p, data_ot)values (1,1,130 101,130621);
insert into Reestr (klient, numer, data_p, data_ot)values (2,2,130 201,130321);
insert into Reestr (klient, numer, data_p, data_ot)values (2,2,130 401,130621);
insert into Reestr (klient, numer, data_p, data_ot)values (3,3,130 101,130621);
insert into Reestr (klient, numer, data_p, data_ot)values (4,4,130 301,130510);
insert into Reestr (klient, numer, data_p, data_ot)values (4,4,130 521,130621);
insert into Reestr (klient, numer, data_p, data_ot)values (5,5,130 101,130202);
insert into Reestr (klient, numer, data_p, data_ot)values (5,5,130 203,130303);
insert into Reestr (klient, numer, data_p, data_ot)values (5,5,130 310,130509);
insert into Reestr (klient, numer, data_p, data_ot)values (5,5,130 521,130621);
3. Запросы на выборку данных.
Выбрать из справочной таблицы наименования и отсортировать их по двум произвольным имеющемуся в таблице признакам
Select * from klients order by fio, pasport;
Select Numer, places from numbers order by stage;
Выбрать из указанной таблицы те записи, которые удовлетворяют условию отбора (where).
Select * from reestr where data_ot
Select * from reestr where klient in (1,2,3);
Вывести информацию подчиненной (дочерней) таблицы, заменяя коды (значения внешних ключей) соответствующими символьными значениями из родительских таблиц.
select k. fio, r. data_p from reestr r inner join klients k on k. id= r. numer;
select k.name, n. numer from numbers n inner join num_klass k on k. id= n. klass;
Привести примеры 2−3 запросов с использованием агрегатных функций.
select count (numer) from numbers;
select max (costday) from num_klass;
Выбрать из таблиц информацию об объектах, значение произвольного атрибута в которых входит в заданный диапазон значений (чисел или дат).
select k. fio, n. numer, r. data_p, r. data_ot from reestr r
left join klients k on k. id=r.klient
left join numbers n on n. id=r.numer
where (r.data_ot>Current_date) and (r.data_p<=Current_date);
Привести пример вложенных запросов
select * from Numbers n where places > (
select count (numer) from reestr r where (r.numer=n.id)and (r.data_ot>CURRENT_DATE));
Получить список признаков для которых есть более одной записи.
запрос триггер программный
select * from (select k. fio, count (r.klient)as kol from reestr r left join klients k on k. id=r.klient group by k. fio) b
where b. kol>2;
Реализовать процедуру
Delimiter //
Create procedure myproc (out t integer (11))
NOT DETERMINISTIC
SQL SECURITY INVOKER
COMMENT `'
Begin
Select count (name) t from klients;
End;
Реализовать триггер
Create trigger ins_user after insert on reestr for each row set
begin
set new. createdate = Current_date;
end;
Реализовать функцию
Create function getKlient (search_id int)
Returns tinytext
Begin
Declare n tinytext;
Select name into n from clients where id=search_id;
Return n;
End;
Внешний вид Рис 1. Главное окно.
Рис 2. Регистрация нового клиента.
Рис 3. Добавление нового номера.
Рис 4. Выписать счет на оплату.
Приложение Программный код WEB-страниц
Index.php (см. рис 1)
$r=ComandEnc («reestr» ,$_REQUEST);
if (isset ($_REQUEST[send_mod]))
{$curid = $_REQUEST[id];
echo «
"; }?>Информация по номеру | |
Номер : | |
Класс номера : | |
Этаж : | |
Число мест : | |
№ | Номер двери | Класс номера | Этаж | Колчество мест |
Klients.php (см. рис 2)
- Сессия? Спокойно!
- Цены
- Оставить заявку
- Мы
- Контакты