Описання таблиць бази даних
Після того як спроектована ER-модель, можна приступати до створення реляційної моделі даних.
Вся інформація в реляційній моделі даних організовується у вигляді таблиць, які зв'язані між собою за допомогою зв'язків.
Кожен стовпець називається полем, а кожен рядок - кортежем. Для того щоб відрізнити один рядок від іншого в реляційній моделі даних використовується поняття ключа.
Ключ - поле, значення якого унікальним способом ідентифікує запис. Ключі можуть бути первинними та зовнішніми. Значення первинного ключа має бути унікальним для кожного запису в таблиці.
Зовнішній ключ - поле або група полів, які не є первинним ключем в даній таблиці, але є первинним в іншій.
Для предметної області «Розробка програмного забезпечення менеджера по роботі з клієнтами таксопарку» була побудована реляційна модель даних, яка зображена на рисунку 2.2:
Рисунок 2.2 - Структурна схема реляційної БД для предметної області «Розробити програмне забезпечення для автоматизації роботи менеджера по роботі з клієнтами таксопарку»
В результаті була створена база даних, яка складається з 5 таблиць. Кожна таблиця містить в собі унікальну інформацію.
У структурній схемі реляційної бази даних визначені відношення «один до багатьох» - в цьому випадку запис однієї таблиці може мати декілька погоджених з нею записів в іншій таблиці. При цьому кожен запис в другій таблиці узгоджується лише з одним записом в першій таблиці. Поле, що містить первинний ключ нової таблиці, зв'язується із зовнішнім ключем старої. Значення в полі із зовнішнім ключем можуть повторюватися.
Відповідно до предметної області, яка розглядається в курсовій роботі, це означає, що:
1. один клієнт може замовити декілька поїздок на таксі;
2. один водій може здійснити декілька поїздок;
3. один оператор може прийняти декілька замовлень на поїздку.
Окрім зв’язка «один до багатьох» в реляційній моделі даних підтримуються ще зв’язки «один до одного» та «багато до багатьох».
Зв’язок «один до одного» - при такому типові зв'язку одному запису в першій таблиці відповідає лише один запис в іншій таблиці. В цьому випадку слід перевірити можливість розміщення всіх записів в одній таблиці. Проте у ряді випадків можна використовувати декілька простіших таблиць. Відповідність записів встановлюється по полю, яке є первинним ключем в першій таблиці, і полю, званим зовнішнім ключем іншої таблиці.
Зв’язок «багато до багатьох» - кожному запису з однієї таблиці може відповідати будь-яка кількість записів в іншій таблиці і навпаки. Наприклад, кожна людина може дзвонити з декількох телефонів. З іншого боку деякими телефонами можуть користуватися декілька чоловік. В цьому випадку поля, по яких встановлюється зв'язок, є зовнішніми ключами. Вони можуть містити значення, що повторюються.
Будь-яка база даних повинна бути нормалізована до однієї з нормальних форм.
Нормальна форма - властивість відношення в реляційнiй моделі даних, що характеризує його з точки зору надмірності, яка потенційно може привести до логічно помилкових результатів вибірки або зміни даних.
Нормальна форма визначається як сукупність вимог, яким має задовольняти відношення.
Існують такі нормальні форми як:
§ перша нормальна форма;
§ друга нормальна форма;
§ третя нормальна форма;
§ нормальна форма Бойса-Кодда;
§ четверта нормальна форма;
§ п’ята нормальна форма;
§ шоста нормальна форма.
Перша нормальна форма (1НФ, 1NF) утворює ґрунт для структурованої схеми баз даних:
· кожна таблиця повинна мати основний ключ: мінімальний набір колонок, які ідентифікують запис;
· уникнення повторень груп (категорії даних, що можуть зустрічатись різну кількість разів в різних записах) правильно визначаючи неключові атрибути;
· атомарність: кожен атрибут повинен мати лише одне значення, а не множину значень.
Друга нормальна форма (2НФ, 2NF) вимагає, аби дані, що зберігаються в таблицях із композитним ключем не залежали лише від частини ключа:
· схема бази даних повинна відповідати вимогам першої нормальної форми;
· дані, що повторно з'являються в декількох колонках виносяться в окремі таблиці.
Третя нормальна форма (3НФ, 3NF) вимагає, аби дані в таблиці залежали винятково від основного ключа:
· схема бази даних повинна відповідати всім вимогам другої нормальної форми;
· будь-яке поле, що залежить від основного ключа та від будь-якого іншого поля, має виноситись в окрему таблицю.
Нормальна форма Бойса - Кодда (BCNF) - відношення знаходиться в BCNF тоді і тільки тоді, коли кожна її нетривіальна й неприводима зліва функціональна залежність має в якості свого детермінанта деякий потенційний ключ. Це більш сувора версія третьої нормальної форми, яка набуває актуальності при наявності щодо кількох потенційних ключів, хоча б один з яких є складеним. Якщо відносно тільки один потенційний ключ або всі потенційні ключі є простими (нескладовими), то BCNF еквівалентна 3NF.
Четверта нормальна форма (4NF) - таблиця знаходиться в 4NF, якщо вона знаходиться в BCNF і не містить нетривіальних багатозначних залежностей.
П'ята нормальна форма (5NF) - відношення знаходиться в п'ятій нормальній формі тоді і тільки тоді, коли кожна нетривіальна залежність з'єднання в ньому визначається потенційним ключем цього відношення.
База даних створена в курсовій роботі нормалізована до 3 нормальної форми.
Кожна таблиця призначена для зберігання окремої інформації. Опишемо кожну з таблиць створеної бази даних.
1. «Водители» -таблиця містить всю інформацію про водіїв, які працюють в таксопарку, а саме: номер водія; ПІБ водія, серія та номер паспорту; стаж його роботи водієм; телефон, за яким з ним можна буде зв’язатися; адреса; статус водія, коли він знаходиться на зміні та кількість поїздок, яку він здійснив, працюючи водієм в таксопарку. Структура таблиці «Водители» зображена на рисунку 2.3:
Рисунок 2.3 - Структура таблиці «Водители» в режимі конструктору
Таблиця 2.1 – Опис полів таблиці «Водители»
Назва поля | Опис |
Номер водителя | Первинний ключ |
ФИО | Прізвище, Ім’я, по-батькові водія, який працює в таксопарку |
Серия и номер паспорта | Паспортні данні водія, який працює в таксопарку |
Стаж | Стаж керування транспортним засобом водія |
Телефон | Телефон водія, за яким з ним можна зв’язатися |
Адрес | Адреса, за якою мешкає водій |
Статус | Статус водія, тобто «вільний» або «зайнятий» |
Кол-во поездок | Кількість поїздок, яка була здійснена водієм таксопарку |
2. «Клиенты» - таблиця містить всю інформацію про клієнтів, які будуть здійснювати замовлення машин в таксопарку, а саме: їх ідентифікаційні номери, ПІБ клієнта, паспортні дані, адреса та телефон, за яким можна зв’язатися з клієнтом. Структура таблиці «Клиенты» зображена на рисунку 2.4:
Рисунок 2.4 - Структура таблиці «Клиенты» в режимі конструктору
Таблиця 2.2 – Опис полів таблиці «Клиенты»
Назва поля | Опис |
Номер клиента | Первинний ключ |
Адрес | Адреса, за якою здійснює виклик таксі клієнт |
Телефон | Телефон, за яким можна зв’язатися з клієнтом |
3. «Поездки»-таблиця містить всю інформацію про поїздки, які замовлялися клієнтами, та які виконувалися службою таксі, а саме такі пункти входять до таблиці: номер поїздки; оператор, який прийняв замовлення; водій, який здійснив замовлення; машина, на якій було здійснене замовлення, клієнт, замовлення якого й здійснював водій таксопарку; дата та час відправлення таксі за замовленням; звідки було зроблене замовлення та пункт призначення поїздки.
Таблиця має 4 зовнішніх ключа: «Номер оператора», «Номер водителя», «Номер машины» «Номер клиента». За цими полями таблиця «Поездки» пов’язується з іншими таблицями та бере інформацію саме з них. Наприклад, за полем «Номер оператора» відбувається зв'язок з таблицею «Операторы» та вилучає інформацію про операторів, які здійснюють прийом замовлень від клієнтів.
Структура таблиці «Поездки» в режимі конструктора зображена на рисунку 2.5:
Рисунок 2.5 - Структура таблиці «Поездки» в режимі конструктору
Таблиця 2.3 – Опис полів таблиці «Поездки»
Назва поля | Опис |
Номер поездки | Первинний ключ |
Номер оператора | Зовнішній ключ для зв'язку з таблицею «Операторы» |
Номер водителя | Зовнішній ключ для зв'язку з таблицею «Водители» |
Номер машины | Зовнішній ключ для зв'язку з таблицею «Машины» |
Номер клиента | Зовнішній ключ для зв'язку з таблицею «Клиенты» |
Дата отправления | Дата відправлення таксі |
Время отправления | Час відправлення таксі |
Пункт отправления | Пункт відправлення таксі |
Пункт назначения | Пункт призначення таксі |
Сумма | Сума, яку повинен сплатити клієнт, за здійснену поїздку |
4. «Операторы»- таблиця містить всю інформацію про операторів, які працюють в службі таксі та оформляють замовлення на послуги клієнтів. В таблиці зберігається така інформація: номер оператора; його ПІБ; адреса та телефон, за яким можна зв’язатися с оператором; всі паспорті дані оператора та пароль, за яким оператор має можливість працювати з базою.
Структура таблиці «Операторы» зображена на рисунку 2.6:
Рисунок 2.6 - Структура таблиці «Операторы» в режимі конструктору
Таблиця 2.4 – Опис полів таблиці «Операторы»
Назва поля | Опис |
Номер оператора | Первинний ключ |
ФИО | Прізвище, Ім’я, по-батькові оператора, який працює в таксопарку |
Адрес | Адреса, за якою мешкає оператор |
Телефон | Телефон оператора, за яким з ним можна зв’язатися |
Паспортные данные | Паспортні данні оператора, який працює в таксопарку |
Дата принятия на работу | Дата, коли оператор був прийнятий на роботу |
Прохождение стажировки | Відомості про те, проходив або ні оператор стажування при прийнятті на роботу |
Дата увольнения | Дата, коли був звільнений оператор |
Пароль | Пароль оператора для санкціонованого доступу до даних |
5. «Машины» -таблиця містить всю інформацію про автомобілі, на яких виконуються замовлення та послуги таксопарку, а саме такі пункти як: код машини; її марка; колір; державний номер та статус (тобто вільною є на час замовлення саме ця машина або ж зайнятою).
Структура таблиці «Машины» зображена на рисунку 2.7:
Рисунок 2.7 - Структура таблиці «Машины» в режимі конструктору
Таблиця 2.5 – Опис полів таблиці «Машины»