МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ "ЛЬВІВСЬКА ПОЛІТЕХНІКА"
ІНСТИТУТ КОМП’ЮТЕРНИХ ТЕХНОЛОГІЙ, АВТОМАТИКИ ТА МЕТРОЛОГІЇ
КАФЕДРА”ЗАХИСТ ІНФОРМАЦІЇ”
Звіт
до лабораторної роботи № 2
з курсу: "Бази даних та знань"
Виконав:
ст.гр. ЗІ-31
Перевірив
Львів – 2010р.
Завдання
1. На мові SQL написати скріпт (послідовність команд) для створення бази даних відповідно до структури, розробленої в результаті виконання лабораторної роботи №1.
2. Створити відповідну базу даних, шляхом застосування скріпта з п.1. Рекомендується використання СУБД MySQL. Допускається використання інших СУБД, при умові підтримання нею мови SQL.
3. Написати скріпт на мові SQL для внесення до розробленої та реалізованої БД тестових даних. Забезпечити не меньше 5 кортежів у кожному з відношень бази даних, якщо це допускає доменна структура відношення.
4. Написати скріпти на мові SQL для вибору з БД даних із кожної з її таблиць.
5. Оформити звіт про виконання лабораторної роботи, до якого включити усі розроблені скріпти, дпопвнюючи їх усіма необхідними коментарями.
Варіант №4. Оперний театр
1) Атрибути
1. Вистава
2. Дата проведення
3. id спектаклю
4. Жанр
5. id працівника
6. П.І.Б.
7. Посада
8.Зарплата
9. Номер телефону
10.Адреса працівника
11.Гонорар
12.Дата народженння
13. Назва майна
14.id майна
15.Тип майна
16.Місце
17.Ціна місця
18.Ряд
2) Визначення можливих ключів
7
8
Ключ 7
14
15
13
5
Ключ 14,5
3
4
1
2
Ключ 3
3
5
11
Ключ 5,3
3
18
16
17
Ключ 3,18,16
5
12
6
10
9
7
Ключ 5,7
3
5
18
16
Детермінанти: 7,14,3,5,18,16
СКРІПТ ТЕКСТ ДЛЯ СТВОРЕННЯ БАЗИ ДАНИХ
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 teatr;
Query OK, 1 row affected (0.06 sec)
mysql> use teatr;
Database changed
mysql> create table spect(seans varchar(20) not null, data date not null, id_spe
ct int(6) primary key not null, janr char(20) not null);
Query OK, 0 rows affected (0.05 sec)
mysql> describe spect;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| seans | varchar(20) | NO | | NULL | |
| data | date | NO | | NULL | |
| id_spect | int(6) | NO | PRI | NULL | |
| janr | char(20) | NO | | NULL | |
+----------+-------------+------+-----+---------+-------+
4 rows in set (0.03 sec)
mysql> insert into spect (seans, data, id_spect, janr) values
-> ('romeo', 2010-05-07, 482934, tragediya),
-> ('otelo', 2010-06-07, 273645, drama),
-> ('natalka-poltavka', 2010-07-07, 384756, komediya);
mysql> create table prazivnyk(id_prazivnyka int(6) primary key not null,prizvywe
char(30) not null, posada char(30) not null, telefone int(10) not null, adresa
varchar(30) not null, data_narodjenya date 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 | |
| telefone | int(10) | NO | | NULL | |
| adresa | varchar(30) | NO | | NULL | |
| data_narodjenya | date | NO | | NULL | |
+-----------------+-------------+------+-----+---------+-------+
6 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),
-> ('aktor', 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 |
| aktor | 2140 |
+-------------+----------+
4 rows in set (0.00 sec)
mysql> create table gonorar(id_spect int(6) not null,id_prazivnyka int(6) not nu
ll, gonorar int(6) not null, primary key(id_spect, id_prazivnyka));
Query OK, 0 rows affected (0.01 sec)
mysql> describe gonorar;
+---------------+--------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------------+--------+------+-----+---------+-------+
| id_spect | int(6) | NO | PRI | NULL | |
| id_prazivnyka | int(6) | NO | PRI | NULL | |
| gonorar | int(6) | NO | | NULL | |
+---------------+--------+------+-----+---------+-------+
3 rows in set (0.02 sec)
mysql> create table cina(id_spect int(6) not null, ryad int(6) not null, misce i
nt(40) not null, cina int(6) not null, primary key(id_spect, ryad, misce));
Query OK, 0 rows affected (0.01 sec)
mysql> describe cina;
+----------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+---------+------+-----+---------+-------+
| id_spect | int(6) | NO | PRI | NULL | |
| ryad | int(6) | NO | PRI | NULL | |
| misce | int(40) | NO | PRI | NULL | |
| cina | int(6) | NO | | NULL | |
+----------+---------+------+-----+---------+-------+
4 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;
+----------+------+-------+------+
| id_spect | ryad | misce | cina |
+----------+------+-------+------+
| 482934 | 1 | 1 | 10 |
| 273645 | 1 | 1 | 10 |
| 384756 | 1 | 1 | 10 |
+----------+------+-------+------+
3 rows in set (0.00 sec)
mysql> create table id_mayna(nazva varchar(20) not null, id_mayna int(6) not nul
l, type_mayna varchar(30) not null, id_prazivnyka int(6) not null, primary key(i
d_mayna, id_prazivnyka));
Query OK, 0 rows affected (0.02 sec)
mysql> describe id_mayna;
+---------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------------+-------------+------+-----+---------+-------+
| nazva | varchar(20) | NO | | NULL | |
| id_mayna | int(6) | NO | PRI | NULL | |
| type_mayna | varchar(30) | NO | | NULL | |
| id_prazivnyka | int(6) | NO | PRI | NULL | |
+---------------+-------------+------+-----+---------+-------+
4 rows in set (0.01 sec)
mysql> load data local infile 'C:/wamp/bin/mysql/mysql5.1.36/data/mayno.txt'into
table id_mayna;
Query OK, 4 rows affected (0.00 sec)
Records: 4 Deleted: 0 Skipped: 0 Warnings: 0
mysql> select * from id_mayna;
+---------+----------+------------+---------------+
| nazva | id_mayna | type_mayna | id_prazivnyka |
+---------+----------+------------+---------------+
| kostum | 234111 | odayg | 987485 |
| vzutya | 346224 | odyag | 892376 |
| makiazh | 237132 | kosmetyka | 987654 |
| sokyra | 237263 | roboche | 574839 |
+---------+----------+------------+---------------+
4 rows in set (0.00 sec)
mysql> create table zagalni_ymomu(id_spect int(6) not null, id_prazivnyka int(6)
not null, ryad int(6) not null, misce int(40) not null, primary key(id_spect,
id_prazivnyka, ryad, misce));
Query OK, 0 rows affected (0.03 sec)
mysql> describe zagalni_ymomu;
+---------------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------------+---------+------+-----+---------+-------+
| id_spect | int(6) | NO | PRI | NULL | |
| id_prazivnyka | int(6) | NO | PRI | NULL | |
| ryad | int(6) | NO | PRI | NULL | |
| misce | int(40) | NO | PRI | NULL | |
+---------------+---------+------+-----+---------+-------+
4 rows in set (0.02 sec)
mysql> show tables;
+-----------------+
| Tables_in_teatr |
+-----------------+
| cina |
| gonorar |
| id_mayna |
| posada |
| prazivnyk |
| spect |
| zagalni_ymomu |
+-----------------+
7 rows in set (0.23 sec)
mysql> select cina.id_spect, spect.seans from cina,spect where cina.id_spect=spe
ct.id_spect;
+----------+------------------+
| id_spect | seans |
+----------+------------------+
| 273645 | otelo |
| 384756 | natalka-poltavka |
| 482934 | romeo |
+----------+------------------+
3 rows in set (0.27 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 |
| aktor | 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 |
| aktor | 2140 |
+-------------+----------+
4 rows in set (0.00 sec)
ВИСНОВОК: У даній лабораторній роботі я розробив базу даних відповідно до завдання з лабораторної роботи №1, використовуючи СУБД MySQL.