Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсова робота СУБД, Олехнович К-91.docx
Скачиваний:
11
Добавлен:
14.08.2019
Размер:
148.04 Кб
Скачать

4.2. Фізичне проектування

База даних спроектована для її збереження у СКБД Oracle, яка підтримує реляційну модель даних і є об’єкто-реляційною СКБД. Ця СКБД має дуже розвинені можливості по створенню та супроводу баз даних, оскільки володіє найбільш розвиненою системою типів даних, можливостями індексування полів, що дозволяє одержувати доступ до даних за мінімальний час, а також функціями по забезпеченню підтримки цілісності даних між реляційними таблицями, що

дозволяє розробнику мінімізувати тимчасові витрати на створення бази даних, а кінцевому користувачеві витрати на підтримку цілісності збережених даних і одержання даних з бази даних.

Робота з базою даних підтримується за допомогою реляційної мови запитів SQL.

Логічна модель бази даних легко відображається в реляційну фізичну модель, оскільки логічна модель була побудована з використанням реляційної структури даних. Крім того, логічна модель була приведена у третю нормальну форму, тому усі відношення представляються у

фізичній моделі окремими таблицями. Ніякі злиття відношень в одну таблицю для підвищення ефективності виконання окремих класів запитів не виконуються у зв’язку з тим, що такі класи запитів не були знайдені. У результаті отримано вісім таблиць реляційної бази даних, де кожне відношення прямо відповідає окремій таблиці, атрибути кожного відношення стають полями цієї таблиці, а первинні ключі відношень стають первинними ключами таблиць.

4.2.1. Скрипти створення бази даних

Наведемо скрипт мови SQL Oracle, який створює таблиці БД.

CREATE TABLE DIAGNOZY (

ID NUMBER(4) CONSTRAINT "Povtor koda diagnoza" PRIMARY KEY

, NAZVANIE VARCHAR2(50) NOT NULL UNIQUE

, OPISANIE VARCHAR2(1700) NOT NULL);

CREATE TABLE DOLGNOST (

ID NUMBER(2) CONSTRAINT "Povtor koda dolzhnosti" PRIMARY KEY

, NAZVANIE VARCHAR2(20) NOT NULL UNIQUE

, ZARPLATA NUMBER(6) NOT NULL CONSTRAINT "Nevernaja z/p" CHECK(ZARPLATA > 0));

CREATE TABLE LEKARSTVA (

ID NUMBER(5) CONSTRAINT "Povtor koda Lekarstva" PRIMARY KEY

, NAZVANIE VARCHAR2(20) NOT NULL UNIQUE

, OPISANIE VARCHAR2(1000) NOT NULL);

CREATE TABLE CHELOVEK (

ID NUMBER(8) CONSTRAINT "Povtor koda Cheloveka" PRIMARY KEY

, FAMILIJA VARCHAR2(30) NOT NULL

, IMJA VARCHAR2(30)

, OTCHESTVO VARCHAR2(30)

, PASPORT VARCHAR2(15) NOT NULL UNIQUE);

CREATE TABLE SOTRUDNIK (

ID NUMBER(4) CONSTRAINT "Povtor koda Sotrudnika" PRIMARY KEY

, CHELOVEK_ID NUMBER(8) REFERENCES CHELOVEK(ID) ON DELETE CASCADE

, DOLGNOST_ID NUMBER(2) REFERENCES DOLGNOST(ID)

, KOGDA_USTROILSJA DATE DEFAULT SYSDATE NOT NULL

, KOGDA_UVOLILSJA DATE

, KONTAKTNYJ_TELEFON VARCHAR2(15)

, CONSTRAINT "Nevernaja data uvol'nenija" CHECK(KOGDA_UVOLILSJA > KOGDA_USTROILSJA));

CREATE TABLE ISTORIJA_BOLEZNEJ (

ID NUMBER(9) CONSTRAINT "Povtor koda istorii boleznej" PRIMARY KEY

, DIAGNOZ_ID NUMBER(4) REFERENCES DIAGNOZY(ID) ON DELETE CASCADE

, BOLNOJ_ID NUMBER(8) REFERENCES CHELOVEK(ID) ON DELETE CASCADE

, DATA_POSTUPLENIJA DATE DEFAULT SYSDATE NOT NULL

, OSMOTREVSHIJ_ID NUMBER(4) REFERENCES SOTRUDNIK("ID") ON DELETE CASCADE

, DATA_SMERTI DATE

, CONSTRAINT "Nevernaja data smerti" CHECK(DATA_SMERTI IS NULL OR DATA_SMERTI > DATA_POSTUPLENIJA));

CREATE TABLE LECHENIE (

VRACH_ID NUMBER(4) REFERENCES SOTRUDNIK(ID) ON DELETE CASCADE

, LEKARSTVO_ID NUMBER(5) REFERENCES LEKARSTVA(ID) ON DELETE CASCADE

, ISTORIJA_ID NUMBER(9) REFERENCES ISTORIJA_BOLEZNEJ(ID) ON DELETE CASCADE

, KOGDA DATE NOT NULL

, KOLICHESTVO NUMBER NOT NULL CONSTRAINT "Nevernoe kol-vo preparata" CHECK(KOLICHESTVO BETWEEN 1 AND 99)

, CONSTRAINT "Povtor kodov lechenija" PRIMARY KEY(ISTORIJA_ID, KOGDA));

CREATE TABLE LEKARSTVA_DIAGNOZY (

LEKARSTVO_ID NUMBER(5) REFERENCES LEKARSTVA(ID) ON DELETE CASCADE

, DIAGNOZ_ID NUMBER(4) REFERENCES "DIAGNOZY"(ID) ON DELETE CASCADE

, CONSTRAINT "Povtor sootvetstvija l/d" PRIMARY KEY(LEKARSTVO_ID, DIAGNOZ_ID));