СТВОРЕННЯ СТРУКТУРИ БАЗИ ДАНИХ ІНФОРМАЦІЙНОЇ СИСТЕМИ КОМАНДАМИ МОВИ ВИЗНАЧЕННЯ ДАНИХ
Звіт до лабораторної роботи № 2 з дисципліни
“СИСТЕМИ УПРАВЛІННЯ БАЗАМИ ДАНИХ”
Лабораторна робота № 2
Мета роботи: познайомитися з командами мови визначення даних при проектуванні бази даних і придбати навички роботи з інструментальними засобами взаємодії із сервером бази даних Oracle
Порядок виконання роботи:
- Вивчити команди мови визначення даних
- Визначити основні компоненти опису даних в інформаційній системі
- Згідно умов завдання створити інформаційні об’єкти в базі даних
- Підготувати звіт з результатами проектування бази даних
Завдання
- Створити необхідні структури даних у базі даних, що описує службовців, що працюють у відділах підприємства за наведеними бланками таблиць:
Таблиця регіонів 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). Перевірити результати побудови структур даних в базі через запити до його словника даних і дати їм пояснення. Команди створення структур та їх перевірки представити у виді командного файлу.
- Створити таблицю 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’