Материал: Пример проектной курсовой работы

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Таблиця 15. Відношення сутності КЕРІВНИК

TUTOR

Імя

 

Тип

 

Дов-

 

Призначення

 

Обмеження цілісності стовпців

стовпця

 

 

жина

 

 

 

 

 

 

 

 

 

 

 

 

 

TUID

 

ціле число

 

10

 

Унікальний ID

 

Первинний ключ

 

 

 

 

 

 

 

 

 

 

 

 

Name

 

строка

 

30

 

ПІБ керівника

 

Обов’язковий

 

 

 

 

 

 

 

 

 

 

 

 

 

Post

 

строка

 

20

 

Посада

 

 

Факультативний

 

 

 

 

 

 

 

 

 

 

 

 

Address

 

строка

 

30

 

Адреса

 

 

Факультативний

 

 

 

 

 

 

 

 

 

 

 

 

Pas_ser

 

строка

 

2

 

Серія паспорту

 

Обов’язковий

 

 

 

 

 

 

 

 

 

 

 

 

 

Pas_ num

 

строка

 

6

 

Номер паспорту

 

Обов’язковий

 

 

 

 

 

 

 

 

 

 

 

 

 

Обмеження

 

цілісності

 

Сукупність стовпців (PasSer,

PasNum)

має

обмеження

таблиці

 

 

 

унікальності.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Таблиця 16. Відношення сутності ПРАКТИКА СТУДЕНТА

 

 

 

 

STUD_PRACTICE

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Імя

 

Тип

 

Дов-

 

Призначення

 

Обмеження цілісності стовпців

стовпця

 

 

жина

 

 

 

 

 

 

 

 

 

 

 

 

 

SPID

 

ціле число

10

 

Унікальний ID

 

Первинний ключ

 

 

 

 

 

 

 

 

 

 

 

Duration

 

ціле число

2

 

Термін

проходження

Обов’язковий

 

 

 

 

 

 

 

 

практики у днях

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

In_date

 

дата

 

 

 

Дата початку практики

 

Обов’язковий

 

 

 

 

 

 

 

 

 

 

 

 

 

Out_date

 

дата

 

 

 

Дата закінчен. практики

 

Обов’язковий

 

 

 

 

 

 

 

 

 

 

 

Mark

 

ціле число

1

 

Оцінка

 

 

Факультативний, Приймає значен-

 

 

 

 

 

 

 

 

 

ня у інтервалі 1 — 5

 

 

 

 

 

 

 

 

 

STID

 

ціле число

10

 

Зв’язок з студентом

 

Зовнішній ключ, що посилається

 

 

 

 

 

 

 

 

 

на

первинний

ключ

відношення

 

 

 

 

 

 

 

 

 

STUDENT. Обов’язковий

 

 

 

 

 

 

 

TUFID

 

ціле число

10

 

Зв’язок з керівником від

Зовнішній ключ, що посилається

 

 

 

 

 

 

факультету

 

 

на

первинний

ключ

відношення

 

 

 

 

 

 

 

 

 

TUTOR. Обов’язковий

 

 

 

 

 

 

 

 

TUCID

 

ціле число

10

 

Зв’язок з керівником від

Зовнішній ключ, що посилається

 

 

 

 

 

 

бази практики

 

на

первинний

ключ

відношення

 

 

 

 

 

 

 

 

 

TUTOR. Обов’язковий

 

 

 

 

 

 

 

 

 

AGID

 

ціле число

10

 

Зв’язок з договором,

 

Зовнішній ключ, що посилається

 

 

 

 

 

 

згідно з яким проходила

 

на

первинний

ключ

відношення

 

 

 

 

 

 

практика

 

 

AGREEMENT. Факультативний

 

 

 

 

 

 

 

 

PPID

 

ціле число

10

 

Зв’язок з запланованою

 

Зовнішній ключ, що посилається

 

 

 

 

 

 

практикою

 

 

на

первинний

ключ

відношення

 

 

 

 

 

 

 

 

 

PLAN_PRACTICE. Обов’язковий

 

 

 

 

 

 

Обмеження

 

цілісності

Сукупність стовпців (STID, PPID) має обмеження унікальності та

таблиці

 

 

 

обов’язковості.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

26

Таблиця 17. Відношення сутності ЗВІТ

REPORT

Імя

 

Тип

Дов-

 

Призначення

 

Обмеження цілісності стовпців

стовпця

 

жина

 

 

 

 

 

 

 

 

REID

 

ціле число

10

 

Унікальний ID

 

Первинний ключ

 

 

 

 

 

 

 

 

Text

 

строка

30КБ

 

Текст звіту

 

Обов’язковий

 

 

 

 

 

 

 

 

SPID

 

ціле число

10

 

Зв’язок з практикою

 

Зовнішній ключ, що посилається

 

 

 

 

 

студента

 

на первинний ключ відношення

 

 

 

 

 

 

 

STUD_PRACTICE. Обов’язковий

 

 

 

 

 

 

 

та унікальний

 

 

 

 

 

 

 

 

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

27

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,

28

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));

29

-- Створення таблиці 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);

4.2.2. Інформаційнопошукові запити

Наведемо приклади інформаційно пошукових запитів відносно тих задач, які були окреслені в підрозділі «2.4. Інформаційно-довідкові задачі». Приклади наведемо у мові SQL Oracle з використанням бази даних, визначеної у попередньому підрозділі.

4.2.2.1. Інформаційні запити, що повязані з проходженням практики

Запит 1. Вивести перелік назв видів практик, які повинні проходити студенти, на якому курсі, у відповідності до кваліфікаційних рівнів. Відсортувати перелік по кваліфікаційним рівням та курсам.

SELECT

q.Name, c.Num, t.Name,

 

FROM

PLAN_PRACTICE p, COURSE c,

QUALI_LEVEL q, PRAC_TYPE t

WHERE

p.CUID = c.CUID AND p.QLID

= q.QLID AND p.PTID = t.PTID

ORDER BY q.Name, c.Num;

Запит 2. Вивести назви баз практик, які є на факультеті комп’ютерних наук.

SELECT c.Name AS ”Бази практики факультету комп’ютерних наук”

FROM FACULTY f, COMPANY c, AGREEMENT a

WHERE f.FAID = a.FAID AND c.COID = a.COID AND UPPER(f.ShortName) = ’CS’;

Запит 3. Вивести роки проходження практик і оцінки студента Іванова

SELECT

TO_CHAR(p.In_date,’YYYY’) AS ”Рік проходження практики”,

 

p.Mark

 

AS ”Оцінка”

FROM

STUDENT s, STUD_PRACTICE

p

WHERE

p.STID

= s.STID AND UPPER(s.Last_name) = ’ІВАНОВ’;

 

TO_CHAR(p.In_date,’YYYY’

= ’2003’;

4.2.2.2. Інформація організаційного характеру

Запит 1. Скільки договорів було підписано на факультеті інформатики по рокам.

SELECT TO_CHAR(a.Ass_date,’YYYY’) AS ”Рік підписання договору”, COUNT(*) AS ”Кількість підписаних договорів”

FROM FACULTY f, COMPANY c, AGREEMENT a

WHERE f.FAID = a.FAID AND c.COID = a.COID AND UPPER(f.ShortName) = ’CS’ GROUP BY TO_CHAR(a.Ass_date,’YYYY’)

ORDER BY q.Name, c.Num;

30