Автор работы: Пользователь скрыл имя, 06 Сентября 2013 в 02:40, курсовая работа
У реляційних СКБД застосовується мова SQL, що дозволяє формулювати довільні, нерегламентовані запити. Це мова четвертого покоління, тому будь-який користувач може швидко навчитися становити запити. До того ж, існує безліч додатків, що дозволяють будувати логічні схеми запитів у графічному виді. Все це відбувається за рахунок жорсткості вимог до продуктивності комп'ютерів. На щастя, сучасні обчислювальні потужності більш ніж адекватні.
Реляційні бази даних страждають від розходжень у реалізації мови SQL, хоча це й не проблема реляційної моделі. Кожна реляційна СКБД реалізує якусь підмножину стандарту SQL плюс набір унікальних команд, що ускладнює завдання програмістам, які намагаються перейти від однієї СКБД до іншої.
Вступ 5
1. Основні теоретичні відомості 6
2. Побудова концептуальної (логічної) моделі даних 7
2.1 Визначення сутностей. 7
2.2 Дослідження зв’язків 7
2.3 Визначення атрибутів. 8
2.4 Побудова E-R діаграми. 9
2.5 Визначення ключів таблиці. 9
2.6 Нормалізація моделі даних. 10
3. Реалізація моделі даних засобами мови SQL. 12
3.1 Створення таблиць СКБД 14
4. Отримані таблиці 15
4.1. project 15
4.2. subdivision 15
4.3. work_project 16
4.4. work 16
4.5. staff_project 16
4.6. staff 16
5. Створення запитів 17
5.1. Оператор SELECT 17
5.2. Використання специфікатора WHERE 17
5.3. Контекстний пошук 18
5.4. Використання функцій 18
5.5. Використання підзапитів 18
5.6. Оператор видалення DELETE 18
5.7. Вставка рядків INSERT 18
5.8. Зміна рядка даних. Оператор UPDATE 19
5.9. Представлення ( VIEW ) 19
5.10. Використання складних під запитів 19
Висновок 20
Список використаної літератури 21
Третя нормальна форма
Таблиця знаходиться у третій нормальній формі, якщо вона знаходиться у другій нормальній формі і кожний не ключовий атрибут нетранзитивно залежить від первинного ключа.
Project:
contract PK
contract → proj_name , proj_name → contract
contract → begin_date, begin_date → contract
contract → end_date, end_date → contract
contract → price, price → contract
Subdivision :
sub_name PK,
sub_name → contract , contract → sub_name
sub_name → work_kind , work_kind → sub_name
sub_name → staff_number, staff_number → sub_name
Work:
work_name PK
work_name → contract, contract → work_name
work_name → beg_work, beg_work → work_name
work_name → end_work, end_work → work_name
work_name → price_work , price_work → work_name
work_name → percent, percent → work_name
Staff :
id PK
id → contract , contract → id
id → qualification, qualification → id
id → subdivis, subdivis → id
id → project_numb, project_numb → id
id → sub_name, sub_name → id
Отже, таблиця знаходиться у третій нормальній формі, бо вона знаходиться у другій нормальній формі і кожний неключовий атрибут нетранзитивно залежить від первинного ключа.
Для реалізації реляційної моделі даних необхідно визначити домен кожного стовпця таблиці. Домен стовпця описує обмеження цілісності і встановлює дійсні значення атрибутів. Це необхідно для гарантії семантичної цілісності даних моделі й забезпечення правильного відображення предметної області.
Побудуємо таблицю, яка буде містити такі стовпці:
Ім’я |
Тип |
Обмеження |
project |
||
proj_name |
CHAR |
|
contract |
INTEGER |
Primary key |
begin_date |
DATE |
|
end_date |
DATE |
|
price |
INTEGER |
|
subdivision |
||
sub_name |
CHAR |
Primary key |
contract |
INTEGER |
Foreign key |
work_kind |
CHAR |
|
staff_number |
INTEGER |
|
work_project |
||
contract |
INTEGER |
PK, FK |
id |
INTEGER |
|
work_name |
CHAR |
|
work |
||
work_name |
CHAR |
Primary key |
id |
INTEGER |
|
contract |
INTEGER |
Foreign key |
beg_work |
DATE |
|
end_work |
DATE |
|
price_work |
INTEGER |
|
percent |
INTEGER |
|
staff_project |
||
contract |
INTEGER |
Foreign key |
id |
INTEGER |
Primary key |
sub_name |
CHAR |
|
staff |
||
id |
INTEGER |
Foreign key |
sub_name |
CHAR |
Foreign key 1 |
contract |
INTEGER |
|
qualification |
CHAR |
|
subdivis |
CHAR |
|
project_numb |
INTEGER |
|
work_name |
CHAR |
Foreign key 2 |
Тип INTEGER 32-розрядний і може змінюватися в діапазоні від -231 до 231-1.
Тип даних CHAR (n) визначає послідовність символів формату ASCII. Довжина n змінюється від 1 до 32767.
Для зберігання календарних дат використовується тип DATE. Значення типу DATE – це ціле число зі знаком, яке інтерпретується як число повних діб з 31.12.1899 року. Формат значень типу DATE задається в ОС у змінній DBDATE.
create table project
(
Contract integer primary key,
proj_name char(20char),
begin_date date,
end_date date,
price integer
);
create table subdivision
(
sub_name char(20char) primary key,
contract integer,
work_kind char(20char),
staff_number integer,
foreign key (contract) references project (contract)
);
create table work_project
(
contract integer primary key,
work_name char(20char),
id integer,
foreign key (contract) references project (contract)
);
create table work
(
work_name char(20char) primary key,
contract integer,
id integer,
beg_work date,
end_work date,
price_work integer,
percent integer,
foreign key (contract) references work_project (contract)
);
create table staff_project
(
contract integer primary key,
id integer,
sub_name char(20char),
foreign key (contract) references work_project (contract)
);
create table staff
(
id integer,
f_name char(20char),
l_name char(20char),
qualification char(20char),
subdivis char(20char),
project_numb integer,
foreign key (id) references staff_project (id),
foreign key (sub_name) references subdivision (sub_name),
foreign key (work_name) references work (work_name)
);
Мова структурованих запитів SQL розроблена для виконання операцій з даними, поданими у вигляді логічно взаємопов'язаних таблиць (відношень).
У мові SQL визначені такі операції:
Крім того, в цих операціях можуть виконуватися:
SELECT contract, proj_name, price FROM project;
SELECT * FROM work WHERE price_work < 4600 AND price_work > 1500;
SELECT l_name, f_name FROM staff WHERE qualification LIKE 'С%';
SELECT COUNT(*) FROM staff WHERE qualification ='Низька';
SELECT MAX(percent) FROM work WHERE end_work BETWEEN TO_DATE('200212','dd/mm/yy') AND TO_DATE('200412','dd/mm/yy');
SELECT * FROM project WHERE price > (SELECT AVG (price) AVERAGE FROM project);
DELETE FROM staff WHERE id = 3;
INSERT INTO staff VALUES (3, 'f_name_3', 'l_name_3', 'Середня', 'SUBDIVIS_1', 3);
UPDATE subdivision SET sub_name = 's_b_2', work_kind = 'w_k_2' WHERE staff_number =2;
CREATE VIEW staff__ AS SELECT f_name, l_name, qualification FROM staff;
SELECT * FROM project WHERE contract = (SELECT contract FROM subdivision WHERE staff_number = 4);
Метою виконання
даної курсової було отримання
навиків при розробці
На основі отриманого завдання ми спроектували базу даних, побудували ODL модель, а також, використовуючи мову структурованих запитів (SQL), виконали команди, які дозволяють створювати таблиці, вносити дані в ці таблиці, робити запити щодо вибірки деяких значень, внесення змін, видалення як окремого кортежу, так і цілої таблиці.
Також використовувався оператор SELECT,а саме: виконано найпростіші види оператора, використання специфікатора WHERE, використано вирази та віртуальні поля, використання функцій, обробка груп рядків, створення з’єднань, використання під запитів.
Для роботи з даними БД застосовувалися оператори такі як INSERT, SELECT, VIEW, DELETE. Оператор видалення рядка, оператор вставлення рядків, оператор зміни рядка даних, було створено таблиці та індекси, а також розглянуто їх видалення, оператор заміни таблиць. Оновлювати дані в таблиці може лише один користувач, на відміну від того, що вибирати одні й тіж самі дані можуть декілька користувачів одночасно.