МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ "ЛЬВІВСЬКА ПОЛІТЕХНІКА"
ІНСТИТУТ КОМП’ЮТЕРНИХ ТЕХНОЛОГІЙ, АВТОМАТИКИ ТА МЕТРОЛОГІЇ
КАФЕДРА”ЗАХИСТ ІНФОРМАЦІЇ”
Звіт
до лабораторної роботи № 2
з курсу: "Бази даних та знань"
на тему:
“ Проектування реляційної бази даних”
Завдання
Спроектувати на концептуальному рівні реляційну базу даних відповідно до варіанту (додається), номер якого співпадає з номером у списку студентів в журналі викладача.
Число атрибутів відношення має відповідати потребам користувача бази даних, тт. забезпечувати функції довідкової системи для клієнтів організації, для якої дана БД створюється, системи побудови звітів для контролюючих осіб (спонсорів) чи органів влади.
Скласти універсальне відношення для даної бази даних. Перечислити атрибути, для яких спостерігається надлишковість.
Побудувати блок-схему функціональних залежностей (ФЗ) між атрибутами універсального відношення.
Визначити детермінанти і можливі ключі відношення. Перерахувати їх.
Усунути надлишкові (дублюючі) ФЗ.
Виконати декомпозицію універсального відношення до множини відношень з НФБК. Відобразити всі етапи декомпозиції таблично і графічно (у вигляді блок-схем ФЗ).
Варіант №15. Швейна фабрика
1. Номер замовлення
2. Вид тканини
3. Кількість тканини (в метрах)
4. Номер швейної машини
5. id_виконавця
6. Телефон виконавця
7. Оклад виконавця
8. Посада виконавця
9. ПІБ виконавця
10. id_замовника
11. ПІБ замовника
12. Телефон замовника
13. Ціна виробу
14. Ціна матеріалів
15. Термін виконання замовлення
3) Схема функціональних залежностей
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
14
Ключ 2
1
2
3
13
15
10
5
Ключ 1
10
11
12
Ключ 10
5
4
6
8
9
Ключ 5
8
7
Ключ 8
Детермінанти: 1,2,5,8,10
СКРІПТ ТЕКСТ ДЛЯ СТВОРЕННЯ БАЗИ ДАНИХ
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.1.36-community-log MySQL Community Server (GPL)
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> select now();
+---------------------+
| now() |
+---------------------+
| 2010-04-26 12:56:36 |
+---------------------+
1 row in set (0.02 sec)
mysql> show databases
-> ;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
+--------------------+
2 rows in set (0.00 sec)
mysql> create database fabrika;
Query OK, 1 row affected (0.06 sec)
mysql> use fabrika;
Database changed
mysql> create table spect(id_zam varchar(20) not null, tkanina varchar(20) not null, k-t_tkan int(6) primary key not null, id_ma-ki int (6) not null);
Query OK, 0 rows affected (0.05 sec)
mysql> describe spect;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id_zam | varchar(20) | NO | | NULL | |
| tkanina | varchar(20) | NO | | NULL | |
| k-t_tkan | int(6) | NO | PRI | NULL | |
| id_ma-ki | int (6) | NO | | NULL | |
+----------+-------------+------+-----+---------+-------+
4 rows in set (0.03 sec)
mysql> insert into spect (id_zam , tkanina, k-t_tkan, id_ma-ki) values
-> ('sorochka', shovk, 3, 10),
mysql> create table prazivnyk(id_prazivnyka int(6) primary key not null,prizvywe char(30) not null, posada char(30) not null,zarplata int(6) not null, telefone int(10) not null);
Query OK, 0 rows affected (0.38 sec)
mysql> describe prazivnyk;
+-----------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+-------------+------+-----+---------+-------+
| id_prazivnyka | int(6) | NO | PRI | NULL | |
| prizvywe | char(30) | NO | | NULL | |
| posada | char(30) | NO | | NULL | |
| zarplata | int(6) | NO | | NULL | |
| telephone | int(10) | NO | | NULL | |
+-----------------+-------------+------+-----+---------+-------+
5 rows in set (0.02 sec)
mysql> create table posada(posada char(30) primary key not null,zarplata int(6)
not null);
Query OK, 0 rows affected (0.02 sec)
mysql> describe posada;
+----------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+----------+------+-----+---------+-------+
| posada | char(30) | NO | PRI | NULL | |
| zarplata | int(6) | NO | | NULL | |
+----------+----------+------+-----+---------+-------+
2 rows in set (0.02 sec)
mysql> insert into posada(posada, zarplata) values
-> ('pryberalnyk', 1001),
-> ('sis_admin', 1500),
-> ('durektor', 1000),
-> ('robitnik', 2140);
Query OK, 4 rows affected (0.38 sec)
Records: 4 Duplicates: 0 Warnings: 0
mysql> select * from posada;
+-------------+----------+
| posada | zarplata |
+-------------+----------+
| pryberalnyk | 1001 |
| sis_admin | 1500 |
| durektor | 1000 |
| robitnik | 2140 |
+-------------+----------+
4 rows in set (0.00 sec)
mysql> create table zamovnyk(id_zamovnyka int(6) primary key not null,prizvywe char(30) not null, telefone int(10) not null);
Query OK, 0 rows affected (0.38 sec)
mysql> describe zamovnyk;
+-----------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+-------------+------+-----+---------+-------+
| id_zamovnyka | int(6) | NO | PRI | NULL | |
| prizvywe | char(30) | NO | | NULL | |
| telephone | int(10) | NO | | NULL | |
+-----------------+-------------+------+-----+---------+-------+
3 rows in set (0.02 sec)
mysql> create table cina(tkanina varchar(20) not null, k-t_tkan int(6) not null, cina_virobu int(6) not null, cina_mater int(6) not null, termin int(6) primary key(id_spect, ryad, misce));
Query OK, 0 rows affected (0.01 sec)
mysql> describe cina;
+-------------+------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+------------+------+-----+---------+-------+
| tkanina | varchar(20)| NO | PRI | NULL | |
| k-t_tkan | int(6) | NO | PRI | NULL | |
| cina_virobu | int(6) | NO | PRI | NULL | |
| cina_mater | int(6) | NO | | NULL | |
| termin | int(6) | NO | PRI | NULL | |
+-------------+------------+------+-----+---------+-------+
5 rows in set (0.02 sec)
mysql> load data local infile 'C:/wamp/bin/mysql/mysql5.1.36/data/cina.txt'into
table cina;
Query OK, 3 rows affected, 9 warnings (0.05 sec)
Records: 3 Deleted: 0 Skipped: 0 Warnings: 9
mysql> select * from cina;
+----------+---------+-------------+-------------+--------+
| tkanina | k-t_tkan| cina_virobu | cina_mater | termin |
+----------+---------+-------------+-------------+--------+
| shovk | 1 | 86 | 51 | 1 |
| bavovna| 1 | 50 | 35 | 1 |
| koton | 1 | 54 | 30 | 2 |
+----------+---------+-------------+-------------+--------+
3 rows in set (0.00 sec)
mysql> select * from prazivnyk where prizvywe='nechay_i';
+---------------+----------+-------------+------------+---------+---------------
--+
| id_prazivnyka | prizvywe | posada | telefone | adresa | data_narodjeny
a |
+---------------+----------+-------------+------------+---------+---------------
--+
| 987485 | nechay_i | pryberalnyk | 2147483647 | lukasha | 1989-09-10
|
+---------------+----------+-------------+------------+---------+---------------
--+
1 row in set (0.00 sec)
mysql> select * from prazivnyk where adresa='lukasha';
+---------------+----------+-------------+------------+---------+---------------
--+
| id_prazivnyka | prizvywe | posada | telefone | adresa | data_narodjeny
a |
+---------------+----------+-------------+------------+---------+---------------
--+
| 987485 | nechay_i | pryberalnyk | 2147483647 | lukasha | 1989-09-10
|
| 892376 | semen_v | sis_admin | 2147483647 | lukasha | 1988-10-05
|
| 987654 | nechay_m | durektor | 2147483647 | lukasha | 1989-09-10
|
+---------------+----------+-------------+------------+---------+---------------
--+
3 rows in set (0.00 sec)
mysql> update posada set posada='sys_admin' where zarplata=1500;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select * from posada;
+-------------+----------+
| posada | zarplata |
+-------------+----------+
| pryberalnyk | 1001 |
| sys_admin | 1500 |
| duryktor | 1000 |
| robitnik | 2140 |
+-------------+----------+
4 rows in set (0.00 sec) mysql> update posada set posada='sys_admin' where zarplata=1500;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select * from posada;
+-------------+----------+
| posada | zarplata |
+-------------+----------+
| pryberalnyk | 1001 |
| sys_admin | 1500 |
| duryktor | 1000 |
| robitnik | 2140 |
+-------------+----------+
4 rows in set (0.00 sec)
ВИСНОВОК: У даній лабораторній роботі я розробив базу даних відповідно до завдання з лабораторної роботи №1, використовуючи СУБД MySQL.