Звіт до лабораторної роботи № 2 з дисципліни

“СИСТЕМИ УПРАВЛІННЯ БАЗАМИ ДАНИХ”

Лабораторна робота № 2

Мета роботи: познайомитися з командами мови визначення даних при проектуванні бази даних і придбати навички роботи з інструментальними засобами взаємодії із сервером бази даних Oracle

Порядок виконання роботи:

  1. Вивчити команди мови визначення даних
  2. Визначити основні компоненти опису даних в інформаційній системі
  3. Згідно умов завдання створити інформаційні об’єкти в базі даних
  4. Підготувати звіт з результатами проектування бази даних

Завдання

  1. Створити необхідні структури даних у базі даних, що описує службовців, що працюють у відділах підприємства за наведеними бланками таблиць:

Таблиця регіонів REGION

Найменування стовпця Тип ключа NOT NULL Таблиця FK Стовпець FK Тип даних Довжина
ID PK NUMBER 7
NAME NOT NULL установити значення стовпця за замовчуванням ‘Уведіть новий регіон’ VARCHAR2 25

Таблиця відділів DEPARTMENT

Найменування стовпця Тип ключа NOT NULL Таблиця FK Стовпець FK Тип даних Довжина
ID PK NUMBER 7
NAME NOT NULL VARCHAR2 25
REGION_ID FK, UK REGION ID NUMBER 7

Таблиця служащих EMPLOYEE

Найменування стовпця Тип ключа NOT NULL Таблиця FK Стовпець FK Тип даних Довжина
ID PK NUMBER 7
LAST_NAME NOT NULL VARCHAR2 25
FIRST_NAME VARCHAR2 25
USER_ID UK NOT NULL CHAR 12
DEPT_ID FK NOT NULL DEPARTMENT ID NUMBER 7
START_DATE установити системну дату как значення стовпця за замовчуванням DATE
COMISSION Дозволяються тільки значення від 10 до 50 NUMBER 7

Визначити обмеження цілісності для DEPARTMENT на рівні таблиці, для EMPLOYEE на рівні стовпця, а для REGION окремо від визначення структури таблиці. Привласнити імена первинних, зовнішніх і унікальних ключів згідно рекомендованих правил. Побудувати індекси для зовнішніх ключів і додаткові пошукові індекси по строкових стовпців (NAME, LAST_NAME). Перевірити результати побудови структур даних в базі через запити до його словника даних і дати їм пояснення. Команди створення структур та їх перевірки представити у виді командного файлу.

  1. Створити таблицю WORKER як копію таблиці EMPLOYEE. Порівняти опис структури таблиці й обмежень WORKER з EMPLOYEE. Додати первинний ключ для таблиці WORKER, використовую стовпець ID. Обмеження повинне вступити в дію негайно. Додати зовнішній ключ на таблицю DEPARTMENT для стовпця DEPT_ID таблиці WORKER. Додати в таблицю WORKER стовпець TITLE з типом VARCHAR2 і розміром 30. Видалити таблицю EMPLOYEE, а потім DEPARTMENT, зберігши WORKER. Пояснити отриманий результат. Усі дії представити у виді командного файлу.

 Теоретичні відомості:

CREATE TABLE – створення таблиці

ALTER TABLE – модифікація структури таблиці

ADD CONSTRAINT – додати обмеження на рівні стовпця (таблиці)

MODIFY – можна змінювати такі параметри стовпця, як тип данных, розмір, значення за замовчуванням і обмеження NOT NULL

FOREIGN KEY – задає стовпець у дочірній таблиці як обмеження на рівні таблиці.

REFERENCES – указує таблицю і стовпець у батьківській таблиці.

CHECK – (price>=1000 AND price<=2000)

CREATE INDEX індекс ON таблиця

create table worker AS

SELECT * FROM Employee; створити таблицю воркер як копію таблиці емплойее

Виконання:

create table REGION(

id number(7),

name varchar2(25)

);

alter table REGION modify (name default ‘Уведіть новий регіон’ not null);

alter table REGION add constraint reg_id_pk primary key (id);

 

create table DEPARTMENT(

id number(7),

name varchar2(25) not null,

region_id number(7),

constraint dep_id_pk primary key (id),

constraint dep_rid_uk unique (region_id),

constraint dep_rid_fk foreign key (region_id) references REGION (id)

);

 

create table EMPLOYEE(

id number(7) constraint emp_id_pk primary key,

last_name varchar2(25) not null,

first_name varchar2(25),

user_id char(12) unique not null,

dept_id number(7) constraint emp_did_fk references DEPARTMENT (id) constraint emp_did_nn not null,

start_date date default SYSDATE,

comission number(7) constraint emp_com_ch check (comission >= 10 and comission <= 50)

);

 

create index fk_ind_emp on EMPLOYEE (dept_id);

 

create index fk_s_ind_emp on EMPLOYEE (last_name);

 

create index fk_s_ind_reg on REGION (name);

 

create index fk_s_ind_dep on DEPARTMENT (name);

 

create index fk_ind_dep on DEPARTMENT (region_id); – унікальний індекс для унікального ключа на рівні стовпця був створений автоматично, тому команда не спрацює.

 

create table WORKER as select * from EMPLOYEE;

 

alter table WORKER add constraint wor_id_pk primary key (id);

 

alter table WORKER add constraint dep_id_fk foreign key (dept_id) references DEPARTMENT (id);

 

alter table WORKER add (title varchar2(30));

 

drop table EMPLOYEE;

 

drop table DEPARTMENT; ;  -обмеження цілісності зовнішнього ключа, тобто не можемо видалити доки існує зовнішній ключ в таблиці worker, що посилається на первинний ключ таблиці department

DROP TABLE Department CASCADE CONSTRAINTS;

 

Синтаксис командного файлу:

 

SELECT * FROM User_tables

SELECT * FROM User_tab_columns WHERE table_name = ‘DEPARTMENT’

SELECT * FROM user_constraints WHERE table_name = ‘DEPARTMENT’

SELECT * FROM USER_cons_columns WHERE table_name = ‘DEPARTMENT’

SELECT * FROM user_indexes WHERE table_name = ‘EMPLOYEE’

SELECT * FROM user_ind_columns WHERE table_name = ‘EMPLOYEE’