1.3 Нормалізація структури даних
Джерела терміну нормалізація варто шукати в реляційної теорії, де це поняття було вперше сформульоване й запропоноване батьком реляційної теорії Е. Ф. Коддом. Нормалізація - це процес організації таблиць і даних, що зберігаються в них, таким чином, щоб максимально зменшити число зайвих залежностей і неефективних структур. Нормалізація лінійна , тобто кожне наступне правило може бути застосовано лише після виконання всіх попередніх правил. Використається для визначення найбільш оптимальної структури бази даних, що можлива в заданих умовах. У процесі нормалізації визначаються шість нормальних форм, або етапів. Улюбленою нормальною формою більшості розроблювачів баз даних є 3НФ (3NF). Як правило, до цієї форми приводиться більша частина всіх існуючих баз даних. Третя нормальна форма являє собою оптимальний компроміс між двома протилежними тенденціями - прагненням до нормалізації як способу підвищення функціональних можливостей і наочністю реалізації. До того ж більшість розроблювачів затверджують, що 3НФ цілком достатньо для забезпечення належного рівня несуперечності даних.
Визначення моделі даних - суб'єктивний процес; з огляду на це, слід зазначити, що запропонована модель бази даних може сподобатися не всім. Найбільш імовірна критика, буде пов'язана з її обмеженнями. Обмеження домена дозволяють накласти певні правила на дані, що вводять у стовпець таблиці. Наприклад, якщо вводить значення, що, перебуває в проміжку від 1 до 10, воно буде прийнято базою даних, якщо ні, то - уведення такого значення буде заборонено. Обмеження домена являють собою один з найбільш потужних засобів, доступних розроблювачеві бази даних.
Нижче приводиться список обмежень, які має запропонована модель даних розроблювального проекту.
- У кожний окремо взятий момент часу співробітник готелю може обслуговувати єдиний клієнтський запит. Таким чином, виключається можливість виникнення ситуації, коли один службовець обслуговує одночасно замовлення двох або більше клієнтів готелю (що, до речі, цілком реально). Клієнт готелю не може одночасно запитувати кілька послуг.
- Будь – яка людина може мати кілька різних адрес, однак одна адреса може відповідати тільки одній людині. Для того щоб забезпечити відповідність однієї адреси декільком різним людям, треба або ввести нову таблицю.
- Можливо також, що одна людина одночасно буде й співробітником готелю, і його клієнтом. Щоб уникнути цього, необхідно ввести обмеження домена, які допоможуть впоратися із проблемою уведення некоректної інформації в ту або іншу таблицю бази даних.
Так, як співробітники готелю й клієнти готелю - це люди, які до того ж мають досить багато загальних характеристик (ім'я, прізвище, адресу) то простіше об'єднати ці сутності в одну загальну таблицю, Person.
Таблиця 1.4 - Стовпці таблиці Person
№ Атрибута |
Назва атрибута |
Тип даних |
Призначення атрибута |
1 |
FirstName |
Рядковий тип даних зі зміною довжиною |
Призначений для виведення ім’я людини |
2 |
SurName |
Рядковий тип даних зі зміною довжиною |
Призначений для виведення прізвища людини |
3 |
Address |
Рядковий тип даних зі зміною довжиною |
Призначений для виведення адреси людини |
Кожен працівник готелю займає, деяку посаду, тому на даному етапі розробки курсового проекту доречно представити назви посад готельного комплексу в окрему таблицю, яка матиме наступну структуру:
Таблиця 1.5 - Стовпці таблиці Post
№ Атрибута |
Назва атрибута |
Тип даних |
Призначення атрибута |
1 |
Post ID |
Int - збереження цілих чисел |
Індифікаційний стовпець таблиці |
2 |
Description |
Рядковий тип даних зі зміною довжиною |
Призначений для виведення назв посад |
Співробітники готелю й клієнти готелю - люди, які мають декілька видів адрес (домашню адресу, робочу, поштову та інші), то можна представити перелік адрес в окрему таблицю. Ця таблиця матиме таку структуру:
Таблиця 1.6 - Стовпці таблиці AddressType
№ Атрибута |
Назва атрибута |
Тип даних |
Призначення атрибута |
1 |
AddressTypeID |
Int - збереження цілих чисел |
Індифікаційний стовпець таблиці |
2 |
Description |
Рядковий тип даних зі зміною довжиною |
Призначений для виведення типів адрес. |
Доречно, також виділити назви міст, в яки можуть проживати, як працівники готелю так і клієнти в окрему таблицю City Вона матиме наступну структуру:
Таблиця 1.7 - Стовпці таблиці City
№ Атрибута |
Назва атрибута |
Тип даних |
Призначення атрибута |
1 |
City ID |
Int - збереження цілих чисел |
Індифікаційний стовпець таблиці |
Продовження таблиці 1.7
2 |
Description |
Рядковий тип даних зі зміною довжиною |
Призначений для виведення назв міст |
Таблиця Country призначена для переліку країн в яких можуть проживати співробітники та клієнти готелю.
Таблиця 1.8 - Стовпці таблиці Country
№ Атрибута |
Назва атрибута |
Тип даних |
Призначення атрибута |
1 |
CountryID |
Int - для введення та збереження цілих чисел |
Індифікаційний стовпець таблиці |
2 |
Description |
Рядковий тип даних зі зміною довжиною |
Призначений для виведення виведення назв країн |
Доречно об’єднати таблиці Country, City, AddressType в одну загальну таблицю Address, в якій буде вказано адресу проживання ( роботи, поштову адресу) клієнта об співробітника. Дана таблиця представлена наступним чином.
Таблиця 1.9 - Стовпці таблиці Address
№ Атрибута |
Назва атрибута |
Тип даних |
Призначення атрибута |
1 |
PersonID |
Int - збереження цілих чисел |
Індифікаційний стовпець таблиці |
2 |
AddressTypeID |
Int - збереження цілих чисел |
Індифікаційний стовпець таблиці |
Продовження таблиці 1.9
3 |
City ID |
Int - збереження цілих чисел |
Індифікаційний стовпець таблиці |
4 |
CountryID |
Int - для введення та збереження цілих чисел |
Індифікаційний стовпець таблиці |
5 |
Address |
Рядковий тип даних зі зміною довжиною |
Призначений для виведення виведення адрес |
Доречно, також виділити види комфортності кімнат в готелі в окрему таблицю Comfort Вона складатиметься з атрибутів ComfortID, та Description матиме наступну структуру:
Таблиця 1.10 - Стовпці таблиці Comfort
№ Атрибута |
Назва атрибута |
Тип даних |
Призначення атрибута |
1 |
ComfortID |
Int - для введення та збереження цілих чисел |
Індифікаційний стовпець таблиці |
2 |
Description |
Рядковий тип даних зі зміною довжиною |
Призначений для виведення видів комфортності готельних номерів |
Кожен клієнт має вибір, як заплатити за проживання в готелі та за надані йому деякі послуги, тому на даному етапі розробки курсового проекту доречно представити види оплати в окрему таблицю, яка матиме наступну структуру:
Таблиця 1.11 - Стовпці таблиці Paymant
№ Атрибута |
Назва атрибута |
Тип даних |
Призначення атрибута |
1 |
Paymant ID |
Int - для введення та збереження цілих чисел |
Індифікаційний стовпець таблиці |
2 |
Description |
Рядковий тип даних зі зміною довжиною |
Призначений для виведення видів оплати послуг |
Також в кожному готелю представлені різні типи кімнат (для однієї особи, для двох осіб та інші), а так, як
Таблиця 1.12 - Стовпці таблиці TypeHotelRoom
№ Атрибута |
Назва атрибута |
Тип даних |
Призначення атрибута |
1 |
TypeHotelRoom ID |
Int - збереження цілих чисел |
Індифікаційний стовпець таблиці |
2 |
Description ID |
Int - збереження цілих чисел |
Індифікаційний стовпець таблиці |
3 |
Post ID |
Int - збереження цілих чисел |
Індифікаційний стовпець таблиці |
4 |
EmployeeID |
Int - для введення та збереження цілих чисел |
Індифікаційний стовпець таблиці |
РОЗДІЛ 2. Створення бази даних і базових таблиць