МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
ІКТА
кафедра ЗІ
З В І Т
до лабораторної роботи №2
з курсу: « Бази даних та знань »
на тему: « Реалізація функцій СУБД на прикладі MySQL »
ВАРІАНТ - 15
Мета роботи – ознайомитися з СУБД MySQL, написати скріпт для створення бази даних відповідно до структури, розробленої в результаті виконання лабораторної роботи №1.
ЗАВДАННЯ
1. На мові SQL написати скріпт (послідовність команд) для створення бази даних відповідно до структури, розробленої в результаті виконання лабораторної роботи №1.
2. Створити відповідну базу даних, шляхом застосування скріпта з п.1. Рекомендується використання СУБД MySQL. Допускається використання інших СУБД, при умові підтримання нею мови SQL.
3. Написати скріпт на мові SQL для внесення до розробленої та реалізованої БД тестових даних. Забезпечити не менше 5 кортежів у кожному з відношень бази даних, якщо це допускає доменна структура відношення.
4. Написати скріпти на мові SQL для вибору з БД даних із кожної з її таблиць.
5. Оформити звіт про виконання лабораторної роботи, до якого включити усі розроблені скріпти, доповнюючи їх усіма необхідними коментарями.
ШВЕЙНА ФАБРИКА
Атрибути
1. Номер замовлення.
2. Вид тканини.
3. Розміри тканини.
4. Робоче місце(№ швейної машини).
5. іd_працівника.
6. Заробітня плата працівника.
7. Контакти працівника.
8. Посада працівника.
9. ПІБ працівника.
10. id_замовника.
11. Контакти замовника.
12. ПІБ замовника.
13. Вартість виробу.
14. Ціна матеріалів.
15. Термін виконання замовлення.
Схема функціональних залежностей
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Схема залежностей без надлишкових зв’язків
Визначення можливих ключів
1
2
3
13
15
10
5
Ключ 1
2
14
Ключ 2
10
11
12
Ключ 10
5
4
7
8
9
Ключ 5
8
6
Ключ 8
Детермінанти: 1,2,5,8,10
ЗАБЕЗПЕЧЕННЯ КОРТЕЖАМИ ВІДНОШЕНЬ БД
robota1
n_zam
ID_zamovn
ID_prast
vud_tkan
rozmir
vartist
term_dniv
4
00097
023
shkira
11
200
14
13
00100
014
coton
4
21
7
19
00110
017
shovk
2
27
10
21
00117
030
bavovna
9
57
14
25
00128
027
shovk
7
93
14
tkanuna zamovnuk
ID_zam
PIB_zamovnuka
telefon
00097
rebets_ai
0964064328
00100
chavs_ri
0962755576
00110
luch_sv
0636584524
00117
kuriy_eo
0986605899
00128
sulach_zi
0979797979
vud_tkanunu
tsina_za_metr
bavovna
6
cotton
5
shkira
20
shovk
13
velvet
12
vunagoroda pratsinvuk
posada
zarplatnia
durector
3500
pryberalnyk
1200
shvets
2500
sis_admin
2000
vantajnuk
1500
vodii
1700
ID_prats
n_mist
PIB_prats
telefon
posada
017
011
ivanov_rz
0931388174
shvets
023
021
baran_tp
0671328748
shvets
027
003
lutvun_vv
0662518153
shvets
030
009
biluk_av
0976678545
shvets
088
-
maker_oi
0633697638
vodii
091
-
azarov_mm
0501147318
vantajnuk
СКРІПТ ТЕКСТ СТВОРЕННЯ БАЗИ ДАНИХ І РЕЗУЛЬТАТ ВИКОНАННЯ
Enter password: **************
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.5.30 MySQL Community Server (GPL)
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
[Інформація про поточну дату і час]
mysql> select now();
+---------------------+
| now() |
+---------------------+
| 2013-04-16 19:30:38 |
+---------------------+
1 row in set (0.00 sec)
[Створення бази даних]
mysql> create database factory;
Query OK, 1 row affected (0.03 sec)
[Вибір раніше створеної бази даних]
mysql> use factory;
Database changed
[Визначення структур таблиць]
mysql> create table robota1 (n_zam int(6) primary key not null, ID_zamovn int(6) not null, ID_prat int(6) not null, vud_tkan varchar(20) not null, rozmir int(6) not null, vartist int(6) not null, term_dniv int(6) not null);
Query OK, 0 rows affected (0.13 sec)
mysql> create table vunagoroda (posada char(30) primary key not null, zarplatnia int(6) not null);
Query OK, 0 rows affected (0.08 sec)
mysql> create table tkanuna (vud_tkanunu varchar(20) primary key not null, tsina_za_metr int(6) not null);
Query OK, 0 rows affected (0.08 sec)
mysql> create table pratsinvuk (ID_prats int(6) primary key not null, n_mist int(6) not null, PIB_prats varchar(20) not null, telefon int(11), posada varchar(20) not null);
Query OK, 0 rows affected (0.11 sec)
mysql> create table zamovnuk (ID_zam int(6) primary key not null, PIB_zamovnuka varchar(20) not null, telefon int(10) not null);
Query OK, 0 rows affected (0.11 sec)
[Таблиці, які містяться в базі даних]
mysql> show tables;
+-------------------+
| Tables_in_factory |
+-------------------+
| pratsinvuk |
| robota1 |
| tkanuna |
| vunagoroda |
| zamovnuk |
+-------------------+
6 rows in set (0.00 sec)
[Вивід структури таблиці]
mysql> describe robota1;
+-----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| n_zam | int(6) | NO | PRI | NULL | |
| ID_zamovn | int(6) | NO | | NULL | |
| ID_prats | int(6) | NO | | NULL | |
| vud_tkan | varchar(20) | NO | | NULL | |
| rozmir | int(6) | NO | | NULL | |
| vartist | int(6) | NO | | NULL | |
| term_dniv | int(6) | NO | | NULL | |
+-----------+-------------+------+-----+---------+-------+
7 rows in set (0.00 sec)
[Завантаження даних в таблицю]
mysql> load data local infile 'C:/robota.txt' into table robota1;
Query OK, 7 rows affected (0.02 sec)
Records: 7 Deleted: 0 Skipped: 0 Warnings: 0
[Вибір інформації з таблиці]
mysql> select * from robota1;
+-------+-----------+----------+----------+--------+---------+-----------+
| n_zam | ID_zamovn | ID_prats | vud_tkan | rozmir | vartist | term_dniv |
+-------+-----------+----------+----------+--------+---------+-----------+
| 4 | 97 | 23 | shkira | 11 | 200 | 14 |
| 13 | 100 | 14 | coton | 4 | 21 | 7 |
| 19 | 110 | 17 | shovk | 2 | 27 | 10 |
| 21 | 117 | 30 | bavovna | 9 | 57 | 14 |
| 25 | 128 | 27 | shovk | 7 | 93 | 14 |
+-------+-----------+----------+----------+--------+---------+-----------+
5 rows in set (0.00 sec)
mysql> describe vunagoroda;
+------------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+----------+------+-----+---------+-------+
| posada | char(30) | NO | PRI | NULL | |
| zarplatnia | int(6) | NO | | NULL | |
+------------+----------+------+-----+---------+-------+
2 rows in set (0.03 sec)
mysql> load data local infile 'C:/vunagoroda.txt' into table vunagoroda;
Query OK, 6 rows affected (0.02 sec)
Records: 6 Deleted: 0 Skipped: 0 Warnings: 0
mysql> select * from vunagoroda;
+-------------+------------+
| posada | zarplatnia |
+-------------+------------+
| durector | 3500 |
| pryberalnyk | 1200 |
| shvets | 2500 |
| sis_admin | 2000 |
| vantajnuk | 1500 |
| vodii | 1700 |
+-------------+------------+
6 rows in set (0.00 sec)
mysql> describe tkanuna;
+---------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------------+-------------+------+-----+---------+-------+
| vud_tkanunu | varchar(20) | NO | PRI | NULL | |
| tsina_za_metr | int(6) | NO | | NULL | |
+---------------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)
mysql> load data local infile 'C:/tkanuna.txt' into table tkanuna;
Query OK, 5 rows affected (0.02 sec)
Records: 5 Deleted: 0 Skipped: 0 Warnings: 0
mysql> select * from tkanuna;
+-------------+---------------+
| vud_tkanunu | tsina_za_metr |
+-------------+---------------+
| bavovna | 6 |
| coton | 5 |
| shkira | 20 |
| shovk | 13 |
| velvet | 12 |
+-------------+---------------+
5 rows in set (0.00 sec)
mysql> describe zamovnuk;
+---------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------------+-------------+------+-----+---------+-------+
| ID_zam | int(6) | NO | PRI | NULL | |
| PIB_zamovnuka | varchar(20) | NO | | NULL | |
| telefon | int(10) | NO | | NULL | |
+---------------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
mysql> load data local infile 'C:/zamovnuk.txt' into table zamovnuk;
Query OK, 5 rows affected (0.02 sec)
Records: 5 Deleted: 0 Skipped: 0 Warnings: 0
mysql> select * from zamovnuk;
+--------+---------------+-----------+
| ID_zam | PIB_zamovnuka | telefon |
+--------+---------------+-----------+
| 97 | rebets_ai | 964064328 |
| 100 | chavs_ri | 962755576 |
| 110 | luch_sv | 636584524 |
| 117 | kuriy_eo | 986605899 |
| 128 | sulach_zi | 979797979 |
+--------+---------------+-----------+
5 rows in set (0.00 sec)
mysql> describe pratsinvuk;
+-----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| ID_prats | int(6) | NO | PRI | NULL | |
| n_mist | varchar(20) | NO | | NULL | |
| PIB_prats | varchar(20) | NO | | NULL | |
| telefon | int(11) | YES | | NULL | |
| posada | varchar(20) | NO | | NULL | |
+-----------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)
mysql> load data local infile 'C:/pratsinvuk.txt' into table pratsinvuk;
Query OK, 6 rows affected (0.02 sec)
Records: 6 Deleted: 0 Skipped: 0 Warnings: 0
mysql> select * from pratsinvuk;
+----------+--------+-----------+-----------+-----------+
| ID_prats | n_mist | PIB_prats | telefon | posada |
+----------+--------+-----------+-----------+-----------+
| 17 | 011| ivanov_rz | 931388174 | shvets |
| 23 | 021| baran_tp | 671328748 | shvets |
| 27 | 003| lutvun_vv | 662518153 | shvets |
| 30 | 009| biluk_av | 976678545 | shvets |
| 88 | 0 | makar_oi | 633697638 | vodii |
| 91 | 0 | azarov_mm | 501147318 | vantajnuk |
+----------+--------+-----------+-----------+-----------+
6 rows in set (0.00 sec)
[Вибір заданого кортежу з відповідної таблиці]
mysql> select * from pratsinvuk where posada='vodii';
+----------+--------+-----------+-----------+-----------+
| ID_prats | n_mist | PIB_prats | telefon | posada |
+----------+--------+-----------+-----------+-----------+
| 88 | 0 | makar_oi | 633697638 | vodii |
+----------+--------+-----------+-----------+-----------+
1 rows in set (0.00 sec)
mysql> select * from tkanuna where tsina_za_metr=5;
+-------------+---------------+
| vud_tkanunu | tsina_za_metr |
+-------------+---------------+
| coton | 5 |
+-------------+---------------+
[Зміна значення атрибуту]
mysql> update vunagoroda set zarplatnia= 1800 where posada='vantajnuk';
Query OK, 1 row affected (0.03 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select * from vunagoroda;
+-------------+------------+
| posada | zarplatnia |
+-------------+------------+
| durector | 3500 |
| pryberalnyk | 1200 |
| shvets | 2500 |
| sis_admin | 2000 |
| vantajnuk | 1800 |
| vodii | 1700 |
+-------------+------------+
6 rows in set (0.00 sec)
ВИСНОВОК
В даній лабораторній роботі на прикладі СУБД MySQL я написав скріпт для створення БД відповідно до структури БД з лабораторної роботи №1. Вивчив синтаксис середовища MySQL, створив базу даних і таблиці в ній. Завантажив дані в таблиці за допомогою створених раніше txt-файлів. За допомогою відповідних команд вивів/змінив значення атрибутів у таблицях.