Проектування інформаційної системи «Адміністратор готелю»
1. Системний аналіз предметної області
База даних системи повинна містити:
· Дані про класах номерів
· Список номерів
· Дані про клієнтів
· Дані про заселення клієнтів
· Можливість виписувати рахунки на оплату
· Можливість пошуку клієнтів.
Базові сутності:
Готельні номери:
· Назва номера
· Клас номера
· Поверх
· Кількість місць
· Вартість проживання.
Список клієнтів:
· Прізвище І.О.
· Паспортні дані
Реєстрація проживання:
· заїжджав клієнт
· Номер
· Дата приїзду
· Дата від'їзду
. Нормалізація
Перша нормальна форма
Таблиця знаходиться в першій нормальній формі, якщо вона задовольняє наступним вимогам:
· Не містить полів з кількома значеннями
· Ключове поле не має порожнеч
У нашому випадку в таблиці клієнтів паспортні дані клієнтів можуть містити номер серію дату видачі і місце видачі тому необхідно розбити це поле на: p_nomer, p_serial, p_data, p_point.
Для виконання другої умови необхідно ввести ключові поля.
Проаналізуємо:
Друга нормальна форма:
Таблиця знаходиться в другій нормальній формі, якщо вона задовольняє наступним вимогам:
· Таблиця подана до 1НФ
· Поля, які залежать від частини первинного ключа повинні бити виведені до складу окремих таблиць
· Всі таблиці повинні бути пов'язані між собою
У розглянутому прикладі таблиці вже приведені до 1НФ, тобто одна з вимог виконано.
У таблиці Numbers поле CostDay залежить від поля Klass, тому треба створити окрему таблицю містить класи номерів.
Для виконання третьої умови необхідно призначити зовнішні ключі:
· Зв'язуємо таблиці Numbers і Klass по полю Klass
· Зв'язуємо таблиці Reestr і Numbers по полю Numer
· Зв'язуємо таблиці Reestr і Klients по полю Klient
Третя нормальна форма:
Таблиця знаходиться в третій нормальній формі, якщо вона задовольняє наступним вимогам:
· Таблиця подана до 2НФ
· Не повинно бути транзитивних залежностей між не ключова полями
У підсумку база даних приймає вигляд:
Таблиця 1 Фізичне проектування бази даних.
nametypeKeyextraТабліца класів номерів (Num_klass) Idinteger primary keyauto_incrementNamevarchar (20) CostDayfloatСпісок готельних номерів (Numbers) Idinteger primary keyauto_incrementNumervarchar (10) uniqueKlassintegerForeign keyREFERENCES Num_klass (id) stageintegerplacesintegerТабліца клієнтів (Klients) Idinteger primary keyauto_incrementFIOvarchar (50) p_pointvarchar (50) p_nomer Integerp_serial Integerp_data dateТабліца реєстраційних дій (Reestr) Idinteger primary keyauto_incrementklientintegerForeign keyREFERENCES klients (id) numerintegerForeign keyREFERENCES numbers (id) data_pdatedata_otdate
. Реалізація структури бази даних в СУБД MySQL
1. Запити на створення таблиць:
create table Num_klass (integer primary key auto_increment, varchar (20), float
); table Numbers (integer primary key auto_increment, varchar (10) unique, integer, integer, integer, FOREIGN KEY (klass) REFERENCES Num_klass (id)
); table klients (integer primary key auto_increment, varchar (50),
pasport varchar (50)
);
create table reestr (integer primary key auto_increment, integer, integer, _p date, _ot date, FOREIGN KEY (numer) REFERENCES numbers (id), FOREIGN KEY (klient) REFERENCES klients (id)
);
2. Запити на додавання даних
into num_klass (name,...