Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
BD / Course work / Russian / Пример проектной курсовой работы / Пример проектной курсовой работы.doc
Скачиваний:
26
Добавлен:
20.02.2016
Размер:
519.68 Кб
Скачать

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

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

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

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

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

-- Створення таблиці SPECIALITY

CREATE TABLE SPECIALITY (

SPID integer CONSTRAINT spe_prk PRIMARY KEY,

Num char(20) CONSTRAINT spe_num_unq UNIQUE NOT NULL,

Name varchar(100) NOT NULL);

-- Створення таблиці EDU_PLAN

CREATE TABLE EDU_PLAN (

EPID integer CONSTRAINT edp_prk PRIMARY KEY,

Num char(8) CONSTRAINT edp_num_unq UNIQUE NOT NULL,

Ass_date date NOT NULL,

Prs varchar(40) NOT NULL,

SPID integer CONSTRAINT edp_spc_frk REFERENCES SPECIALITY(SPID) NOT NULL);

-- Створення таблиці COURSE

CREATE TABLE COURSE (

CUID integer CONSTRAINT crs_prk PRIMARY KEY,

Num number(1) CONSTRAINT crs_num_unq UNIQUE NOT NULL

CONSTRAINT crs_num_chk CHECK (Num IN (1,2,3,4,5,6)),

Descr varchar(255));

-- Створення таблиці QUALI_LEVEL

CREATE TABLE QUALI_LEVEL (

QLID integer CONSTRAINT qlv_prk PRIMARY KEY,

Name varchar(15) CONSTRAINT qvl_nam_unq UNIQUE NOT NULL

CONSTRAINT qvl_nam_chk CHECK

(Name IN (’бакалавр’, ’спеціаліст’, ’магістр’)),

Descr varchar(255),

CUID integer CONSTRAINT qvl_crs_frk REFERENCES COURSE(CUID) NOT NULL);

-- Створення таблиці PRAC_TYPE

CREATE TABLE PRAC_TYPE (

PTID integer CONSTRAINT prt_prk PRIMARY KEY,

Name varchar(15) CONSTRAINT prt_nam_unq UNIQUE NOT NULL

CONSTRAINT prt_nam_chk CHECK

(Name IN (’схемотехнічна’, ’ком­п’’ютерна’,

’тех­но­ло­гічна’, ’експ­лу­ата­ційна’, ’науково-дослідна’)),

Descr varchar(255));

-- Створення таблиці PLAN_PRACTICE

CREATE TABLE PLAN_PRACTICE (

PPID integer CONSTRAINT ppr_prk PRIMARY KEY,

Dur_type char(1) CONSTRAINT ppr_dtp_chk CHECK (Dur_type IN (’Д’,’Т’))

NOT NULL,

Duration NUMBER(3) NOT NULL,

QLID integer CONSTRAINT ppr_qvl_frk REFERENCES QUALI_LEVEL(QLID) NOT NULL,

CUID integer CONSTRAINT ppr_crs_frk REFERENCES COURSE(CUID) NOT NULL,

PTID integer CONSTRAINT ppr_prt_frk REFERENCES PRAC_TYPE(PTID) NOT NULL,

EPID integer CONSTRAINT ppr_edp_frk REFERENCES EDU_PLAN (EPID) NOT NULL,

CONSTRAINT ppr_crs_edp_unq UNIQUE (CUID, EPID);

-- Створення таблиці UNIVERSITY

CREATE TABLE UNIVERSITY (

UNID integer CONSTRAINT uni_prk PRIMARY KEY,

Short_name varchar(10),

Long_name varchar(50) CONSTRAINT uni_nam_unq UNIQUE NOT NULL,

Address varchar(50),

Rector varchar(30) CONSTRAINT uni_rec_unq UNIQUE NOT NULL);

-- Створення таблиці INSTITUTE

CREATE TABLE INSTITUTE (

INID integer CONSTRAINT ins_prk PRIMARY KEY,

Short_name varchar(10),

Long_name varchar(50) CONSTRAINT ins_nam_unq UNIQUE NOT NULL,

Director varchar(30) CONSTRAINT ins_rec_unq UNIQUE NOT NULL,

UNID integer CONSTRAINT ins_uni_frk REFERENCES UNIVERSITY(UNID));

-- Створення таблиці FACULTY

CREATE TABLE FACULTY (

FAID integer CONSTRAINT fac_prk PRIMARY KEY,

Short_name varchar(10),

Long_name varchar(50) CONSTRAINT fac_nam_unq UNIQUE NOT NULL,

Dean varchar(30) CONSTRAINT fac_rec_unq UNIQUE NOT NULL,

UNID integer CONSTRAINT fac_uni_frk REFERENCES UNIVERSITY(UNID),

INID integer CONSTRAINT fac_ins_frk REFERENCES INSTITUTE(INID),

FKType char(1) CONSTRAINT fac_fkt_chk CHECK (FKType IN (’У’, ’І’)));

-- Створення таблиці DEPARTMENT

CREATE TABLE DEPARTMENT (

DEID integer CONSTRAINT dep_prk PRIMARY KEY,

Short_name varchar(10),

Long_name varchar(50) CONSTRAINT dep_nam_unq UNIQUE NOT NULL,

Head varchar(30) CONSTRAINT dep_hed_unq UNIQUE NOT NULL,

FAID integer CONSTRAINT dep_fac_frk REFERENCES FACULTY(FAID) NOT NULL);

-- Створення таблиці STGROUP

CREATE TABLE STGROUP (

GRID integer CONSTRAINT grp_prk PRIMARY KEY,

Num char(5) NOT NULL,

Descr varchar(255),

DEID integer CONSTRAINT grp_dep_frk REFERENCES DEPARTMENT(DEID) NOT NULL,

CUID integer CONSTRAINT grp_crs_frk REFERENCES COURSE(CUID) NOT NULL);

-- Створення таблиці STUDENT

CREATE TABLE STUDENT (

STID integer CONSTRAINT std_prk PRIMARY KEY,

Last_name varchar(30) NOT NULL,

Name varchar(20) NOT NULL,

Patro_name varchar(20) NOT NULL,

Num char(10) CONSTRAINT std_num_unq UNIQUE NOT NULL,

Birthday date NOT NULL,

Year number(4) NOT NULL,

Country varchar(20) NOT NULL,

Contract char(1) CONSTRAINT prs_con_chk CHECK (Contract IN ( ’Т’, ’Н’)),

External char(1) CONSTRAINT prs_ext_chk CHECK (External IN ( ’Т’, ’Н’)),

GRID integer CONSTRAINT prs_grp_frk

REFERENCES STGROUP(GRID) NOT NULL);

-- Створення таблиці COMPANY

CREATE TABLE COMPANY (

COID integer CONSTRAINT com_prk PRIMARY KEY,

Num char(10) CONSTRAINT com_num_unq UNIQUE NOT NULL,

Name varchar(40) NOT NULL,

Head varchar(20) NOT NULL,

Post varchar(20) NOT NULL,

Address varchar(50));

-- Створення таблиці AGREEMENT

CREATE TABLE AGREEMENT (

AGID integer CONSTRAINT agr_prk PRIMARY KEY,

Num char(10) CONSTRAINT agr_num_unq UNIQUE NOT NULL,

Ass_date date NOT NULL,

St_num NUMBER(2) NOT NULL,

From_date date NOT NULL,

To_date date NOT NULL,

COID integer CONSTRAINT agr_crs_frk REFERENCES COMPANY(COID) NOT NULL,

FAID integer CONSTRAINT agr_fac_frk REFERENCES FACULTY(FAID) NOT NULL);

-- Створення таблиці TUTOR

CREATE TABLE TUTOR (

TUID integer CONSTRAINT tut_prk PRIMARY KEY,

Name varchar(30) NOT NULL,

Post varchar(20),

Address varchar(30),

Pas_ser char(2) NOT NULL,

Pas_num char(6) NOT NULL,

CONSTRAINT tut_ser_nmm_unk UNIQUE (Pas_ser, Pas_num));

-- Створення таблиці STUD_PRACTICE

CREATE TABLE STUD_PRACTICE (

SPID integer CONSTRAINT stp_prk PRIMARY KEY,

Duration number(2) NOT NULL,

In_date date NOT NULL,

Out_date date NOT NULL,

Mark number(1) CONSTRAINT stp_mrk_chk CHECK (Mark BETWEEN 1 AND 5),

STID integer CONSTRAINT stp_std_frk REFERENCES STUDENT(STID) NOT NULL,

TUFID integer CONSTRAINT stp_tuf_frk REFERENCES TUTOR(TUID) NOT NULL,

TUCID integer CONSTRAINT stp_tuc_frk REFERENCES TUTOR(TUID) NOT NULL,

AGID integer CONSTRAINT stp_agr_frk REFERENCES AGREEMENT(AGID),

PPID integer CONSTRAINT stp_prp_frk REFERENCES PLAN_PRACTICE(PPID) NOT NULL,

CONSTRAINT stp_std_prp_unk UNIQUE (STID, PPID));

-- Створення таблиці REPORT

CREATE TABLE REPORT (

REID integer CONSTRAINT rep_prk PRIMARY KEY,

Text CLOB (30K) NOT NULL,

SPID integer CONSTRAINT rep_stp_frk REFERENCES STUD_PRACTICE(SPID)

CONSTRAINT rep_stp_unq UNIQUE NOT NULL);