- •Тема: “Проектування бази даних інформаційної системи Автовокзал”
- •1. Визначення та опис предметної області
- •2. Концептуальна модель «сутність-зв’язок»
- •3. Логічна структура бази даних
- •3.1. Інфологічний етап проектування
- •3.1.1. Структура та вміст таблиць
- •3.1.2. Додаткові властивості та обмеження полів
- •3.1.3. Вигляд таблиць та структура зв’язків між ними
- •3.2. Даталогічний етап проектування
- •4. Нормалізація бази даних
- •Нормалізація відношень бази даних «Фотосалон»
- •5. Виконання операцій реляційної алгебри
- •5.1. Теоретико-множинні операції
- •Запити на включення, зміну та вилучення даних
- •Висновок
- •Список використаної літератури
4. Нормалізація бази даних
У рамках реляційної моделі даних Е. Ф. Коддом був розроблений апарат нормалізації відношень і запропонований механізм, який дозволяє привести відношення до третьої нормальної форми. Нормалізація схеми відношення виконується шляхом декомпозиції.
Нормалізація – це розбиття таблиці на дві або більше, що володіють кращими властивостями при додаванні, зміні і видалені даних. Остаточною метою нормалізації є зведення до отримання такого проекту бази даних, в якому кожен факт розташовується лише в одному місці, тобто виключена надмірність інформації. Кожна таблиця у реляційній БД задовольняє умові, відповідно до якої у позиції на перетині кожного рядка і стовпця таблиці завжди знаходиться єдине атомарне значення, і ніколи не може бути множин таких значень. Будь-яка таблиця що задовольняє цій умові називається нормалізованою.
Нормалізація відношень бази даних «Фотосалон»
Проведемо нормалізацію відношень бази даних «Автовокзал» до третьої нормальної форми. Після побудови логічної структури варто перевірити, чи не порушені у заданному проекті принципи нормалізації, тобто кожне неключове поле кожної таблиці:
функціонально залежить від повного первинного ключа, а не від його частини (якщо ключ складений);
не має функціональної залежності від іншого неключового поля.
Отже, база даних «Автовокзал» приведена до третьої нормальної форми. Тобто всі неключові поля кожної таблиці функціонально не залежать від інших не ключових полів таблиці. Залежать лише від ключових.
5. Виконання операцій реляційної алгебри
Відношення є самі по собі множинами, тому до них застосовані всі поняття й операції, характерні для множин, плюс специфічні поняття й операції. Операндами для операцій реляційної алгебри є відношення. Результатом виконання операції реляційної алгебри також є відношення.
Реляційна алгебра – це множина операцій над відношеннями реляційних БД, яка підтримується в усіх БД реляційного типу незалежно від їх змісту, галузі застосування та технології, на основі якої вони реалізовані. Реляційна алгебра визначає набір типових дій і є своєрідним стандартом для побудови засобів та процедур опрацювання БД.
5.1. Теоретико-множинні операції
Теоретико-множинні операції ґрунтуються на тому, що кожне відношення бази даних може розглядатись як множина однотипних кортежів, і, відповідно, до них можуть бути застосовані операції, запозичені з теорії множин.
Створення таблиці “Пасажири”:
Рис.6. Створення таблиці “ Пасажири”
Код таблиці Пасажири:
CREATE TABLE PASAZHYRY (
KOD_PASAZHYRA INTEGER NOT NULL,
PRIZVYSHE VARCHAR(20) NOT NULL,
IMJA VARCHAR(20) NOT NULL,
PO_BATKOVI VARCHAR(20) NOT NULL,
DATA_NARODZENNJA DATE NOT NULL,
SERIA_TA_NOMER_PASPORTU VARCHAR(20),
ADRESA VARCHAR(50),
TELEFON VARCHAR(20)
);
Рис.7. Таблиця “ Пасажири”
Рис.8. Створення таблиці “ Водій”
Код таблиці Водій:
CREATE TABLE VODIJ(
KOD_ VODIJA INTEGER NOT NULL,
PRIZVYSHE VARCHAR(20) NOT NULL,
IMJA VARCHAR(20) NOT NULL,
PO_BATKOVI VARCHAR(20) NOT NULL,
DATA_NARODZENNJA DATE NOT NULL,
SERIA_TA_NOMER_PASPORTU VARCHAR(20),
ADRESA VARCHAR(50),
TELEFON VARCHAR(20),
STAZH_ROBOTY INTEGER NOT NULL,
ZARPLATA FLOAT NOT NULL
);
Рис.9. Таблиця “ Водій”
Рис.10. Створення таблиці “ Касир”
Код таблиці Касир:
CREATE TABLE KASYR
(
KOD_ KASYRA INTEGER NOT NULL,
PRIZVYSHE VARCHAR(20) NOT NULL,
IMJA VARCHAR(20) NOT NULL,
PO_BATKOVI VARCHAR(20) NOT NULL,
DATA_NARODZENNJA DATE NOT NULL,
SERIA_TA_NOMER_PASPORTU VARCHAR(20),
ADRESA VARCHAR(50),
TELEFON VARCHAR(20),
STAZH_ROBOTY INTEGER NOT NULL,
ZARPLATA FLOAT NOT NULL
);
Рис.11. Таблиця “ Касир”
Рис.12. Створення таблиці “ Транспорт”
Код таблиці Транспорт:
CREATE TABLE TRANSPORT
(
KOD_TRANSPORTY INTEGER NOT NULL,
KOD_VODIJA INTEGER NOT NULL,
NAPRJAM VARCHAR(20) NOT NULL,
ZVIDKY VARCHAR(20) NOT NULL,
KYDY VARCHAR(20) NOT NULL,
CHAS_VIDPRAVLENNJA VARCHAR(4) NOT NULL,
CHAS_PRYBYTJA VARCHAR(4) NOT NULL,
KILKIST_MISC VARCHAR(4) NOT NULL
);
Рис.13. Таблиця “ Транспорт”
Рис.14. Створення таблиці“ Квиток”
Код таблиці Квиток:
CREATE TABLE KVYTOK
(
KOD_KVYTOK INTEGER NOT NULL,
KOD_TRANSPORTY INTEGER NOT NULL,
KOD_PASAZHYRA INTEGER NOT NULL,
KOD_PILGY INTEGER NOT NULL,
ZVIDKY VARCHAR(20) NOT NULL,
KYDY VARCHAR(20) NOT NULL,
CHAS_VIDPRAVLENNJA VARCHAR(4),
DATA_PRODAZHY DATE NOT NULL,
NO_MISCJA VARCHAR(4),
VARTIST FLOAT NOT NULL
);
Рис.15. Таблиця “ Квиток”
Рис.16. Створення таблиці“ Маршрут”
Код таблиці Маршрут:
CREATE TABLE MARSHRYT
(
NAPRJAM VARCHAR(20),
KOD_REJSY INTEGER NOT NULL,
KOD_TRANSPORTY INTEGER NOT NULL,
ZVIDKY VARCHAR(10) NOT NULL,
KYDY VARCHAR(10) NOT NULL,
CHAS_VIDPRAVLENNJA VARCHAR(4),
CHAS_PRYBYTTJA VARCHAR(4)
);
Рис.17. Таблиця“ Маршрут”
Рис.18. Створення таблиці“ Рейс”
Код таблиці Рейс:
CREATE TABLE REJS
(
KOD_REJSY INTEGER NOT NULL,
KOD_TRANSPORTY INTEGER NOT NULL,
KOD_VODIJA INTEGER NOT NULL,
DATA DATE NOT NULL,
NAPRJAM VARCHAR(20) NOT NULL,
ZVIDKY VARCHAR(20) NOT NULL,
KYDY VARCHAR(20) NOT NULL,
CHAS_VIDPRAVLENNJA VARCHAR(4),
CHAS_PRYBYTTJA VARCHAR(4),
VAR_POVNYJ FLOAT NOT NULL,
VAR_PILGOVYJ FLOAT NOT NULL
);
Рис.19. Таблиця“ Рейс”
Рис.20. Створення таблиці“ Бланк квитків(Накладна)”
Код таблиці Бланк квитків(Накладна):
CREATE TABLE BLANK_KVYTKIV
(
KOD_NAKLADNOJI INTEGER NOT NULL,
KOD_TRANSPORTY INTEGER NOT NULL,
KOD_VODIJA INTEGER NOT NULL,
KILKIST_PRODANYH INTEGER NOT NULL,
DATA_PRODAZHY DATE NOT NULL,
ZAG_VARTIST FLOAT NOT NULL
);
Рис.21. Таблиця“ Бланк квитків(Накладна)”
ALTER TABLE – команда модифікації структури таблиці
ALTER TABLE ім’я
ADD/DROP стовпчик тип/
ADD/DROP обмеження
Модифікація таблиці Пасажири:
ALTER TABLE PASAZHYRY ADD CONSTRAINT PK_PASAZHYRA PRIMARY KEY (KOD_PASAZHYRA);
Модифікація таблиці Водій:
ALTER TABLE VODIJ ADD CONSTRAINT PK_VODIJA PRIMARY KEY (KOD_VODIJA);
Модифікація таблиці касир:
ALTER TABLE KASYR ADD CONSTRAINT PK_KASYR PRIMARY KEY (KOD_KASYRA);
Модифікація таблиці транспорт:
ALTER TABLE TRANSPORT ADD CONSTRAINT PK_TRANSPORT PRIMARY KEY (KOD_TRANSPORTY);
Модифікація таблиці квиток:
ALTER TABLE KVYTOK ADD CONSTRAINT PK_KVYTOK PRIMARY KEY (KOD_KVYTOK);
ALTER TABLE MARSHRYT ADD CONSTRAINT FK_MARSHRYT FOREIGN KEY (KOD_TRANSPORTY) REFERENCES TRANSPORT (KOD_TRANSPORTY) ON DELETE CASCADE ON UPDATE CASCADE;
Модифікація таблиці маршрут:
ALTER TABLE MARSHRYT ADD CONSTRAINT FK_MARSHRYT FOREIGN KEY (KOD_TRANSPORTY) REFERENCES TRANSPORT (KOD_TRANSPORTY) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE VODIJ ADD CONSTRAINT FK_VODIJ5 FOREIGN KEY (KOD_VODIJА) REFERENCES REJS (KOD_VODIJA) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE VODIJ ADD CONSTRAINT FK_VODIJ8 FOREIGN KEY (KOD_VODIJА) REFERENCES REJS (KOD_VODIJA) ON DELETE CASCADE ON UPDATE CASCADE;
