Лабораторна робота № 2 (2 год.).
Звіт
Про виконання лабораторної роботи №2
з дисципліни “Бази даних”
Перевірив: Шемшур О. С. | Виконав: Студент 3-го курсу Групи ПЗС-1644 Гребенюк І. А. |
Черкаси 2016
Лабораторна робота № 2 (2 год.).
Тема роботи: Створення таблиць та їх об’єднань. Наповнення таблиць.
Мета роботи: Вивчення засобів sql. Створення бази даних за допомогою HeidiSQL. Об’єднання таблиць. Додавання записів. Оновлення даних. Видалення даних.
Завдання:
1. Створити БД з трьох таблиць (варіанти і початок проектування у першій лабораторній роботі), побудувати між ними зв’язки.
2. Заповнити кожну з таблиць 10-20 записами (якщо для генерації первинного ключа визначена послідовність, то при вставці даних необхідно її використовувати).
3. Перевірити правильність роботи створених обмежень.
4. Навести приклади вставки, зміни та видалення інформації, що демонструють роботу заданих обмежень.
Варіант 7: Студенти, Лабораторії, Розклад.
Результат виконання:
Рис. 1 – Схема бази даних(Датологічна модель)
Скрипти створення таблиць:
1). CREATE TABLE `groups` ( `id_group` INT(10) NOT NULL AUTO_INCREMENT,
`title` VARCHAR(9), PRIMARY KEY (`id_group`) ) COLLATE='utf8_general_ci';
2). CREATE TABLE `laboratories` ( `number_room` INT(3) NOT NULL, `title` VARCHAR(100), `responsible` VARCHAR(25), `provision` INT(3), PRIMARY KEY (`number_room`)) COLLATE='utf8_general_ci';
3). CREATE TABLE `predmets` (`id_predmet` INT(10) NOT NULL AUTO_INCREMENT,
`title` VARCHAR(100), `count_hour` INT(3), `start_date` DATE, `stop_date` DATE, PRIMARY KEY (`id_predmet`) ) COLLATE='utf8_general_ci';
4). create table student(id_student int(10) not null auto_increment primary key, name varchar(15), surname varchar(20), sex varchar(1), group_id int(10)) COLLATE='utf8_general_ci';
5). create table rozklad(group_id int(10), id_predmet int(10), room_number int(3)) COLLATE='utf8_general_ci' ;
Скрипти створення зв’язків:
1). Alter table student add foreign key (group_id) references groups(id_groups) on update cascade;
1). Alter table rozklad add foreign key (group_id) references groups(id_groups) on update cascade;
1). Alter table rozklad add foreign key (id_predmet) references predmets(id_predmet) on update cascade;
1). Alter table rozklad add foreign key (room_number) references laboratories(number_room) on update cascade;
Скрипти додавання записів в таблиці:
1). Insert into groups values(null, ‘ПЗС-1644’);
2). Insert into student values(null, ‘Иван’, ‘Гребенюк’, ‘м’, 1);
3). Insert into laboratories values(605, ‘Лаборатория кафедры програмного обеспечения’, ‘Вечеренков С. А.’, 100);
4). Insert into predmets values(null, ‘Математический анализ’, 40, cast('2016.10.20' as datetime), cast('2016.12.01' as datetime));
5). Insert into rozklad values(1, 1, 605);
Рис. 2 – Записи таблиці groups
Рис. 3 – Записи таблиці student
Рис. 4 – Записи таблиці Laboratories
Рис. 5 – Записи таблиці rozklad
Рис. 6 – Записи таблиці predmets
Виконую запит вставки в таблицю rozklad тих даних, яких немає в її зв’язних таблицях:
insert into rozklad values(22, 32, 631);
Виводить наступне:
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`lab_db_1`.`rozklad`, CONSTRAINT `rozklad_ibfk_1` FOREIGN KEY (`
group_id`) REFERENCES `groups` (`id_group`) ON UPDATE CASCADE)
Виконую запит на оновлення в таблиці laboratories номер кабінету з 605 на 636 та перевіряю, як змінились дані в її дочірній таблиці rozklad:
update laboratories set number_room=636 where number_room=605;
Рис. 7 – Результат каскадного оновлення таблиці rozklаd поля room_number
Висновок
На даній лабораторній роботі я набув навичок роботи з HeidiSQL, виконувати додавання даних за допомогою insert into, видаляти дані, виконувати оновлення даних, створювати зв’язки між первинним і ключовим полем.