Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

1

.docx
Скачиваний:
7
Добавлен:
01.06.2021
Размер:
8.81 Mб
Скачать

ГУАП

КАФЕДРА № 41

ОТЧЕТ

ЗАЩИЩЕН С ОЦЕНКОЙ

ПРЕПОДАВАТЕЛЬ

ассистент

М. С. Иванова

должность, уч. степень, звание

подпись, дата

инициалы, фамилия

ОТЧЕТ О ЛАБОРАТОРНОЙ РАБОТЕ №1

Создание базы данных

по курсу: ПРОЕКТНЫЙ ПРАКТИКУМ

РАБОТУ ВЫПОЛНИЛА

СТУДЕНТКА ГР.

4716

Е.А. Шуб

С.А. Янышева

подпись, дата

инициалы, фамилия

Санкт-Петербург

2021

Лабораторная работа № 1

Создание базы данных

  1. Цель работы

Создать БД на сервере, разработать необходимые запросы и хранимые процедуры.

  1. Выполнение работы

На сервере SQL, посредством MySQL Workbench, создана база данных для курсов по подготовки к ЕГЭ, таблицы со связью между ними и выполнены 3 инструкции ALTER TABLE. На рисунке 1 приведена структура базы данных.

Листинг создания таблиц

use lr_2;

create table discipline (

DI_NO int NOT NULL primary key,

discipline char(20));

create table teachers (

TE_NO int NOT NULL primary key,

FIO char(40) NOT null,

DATEb date,

ADDR char(50),

PHONE char(11),

DI_NO int NOT NULL,

foreign key (DI_NO) references discipline (DI_NO)

on update cascade);

create table parents (

PA_NO int NOT NULL primary key,

FIO char(40) NOT null,

DATEb date,

ADDR char(50),

PHONE char(11));

create table students (

ST_NO int NOT NULL primary key,

FIO char(40) NOT null,

DATEb date,

ADDR char(50),

PHONE char(11),

PA_NO int NOT NULL,

foreign key (PA_NO) references parents (PA_NO)

on update cascade);

create table classes (

CL_NO int NOT NULL primary key,

TE_NO int NOT NULL,

class int NOT NULL,

foreign key (TE_NO) references teachers (TE_NO)

on update cascade);

create table listt (

CL_NO int NOT NULL,

ST_NO int NOT NULL,

foreign key (CL_NO) references classes (CL_NO)

on update cascade,

foreign key (ST_NO) references students (ST_NO)

on update cascade);

create table yslugi (

YS_NO int NOT NULL primary key,

CLASSES_AMOUNT tinyint,

SUMM smallint,

PA_NO int NOT NULL,

foreign key (PA_NO) references parents (PA_NO)

on update cascade,

DI_NO int NOT NULL,

foreign key (DI_NO) references discipline (DI_NO)

on update cascade);

Рисунок 1 – Структура базы данных

Созданные таблицы заполнены правдоподобными данными, что продемонстрировано на рисунке 2.

Листинг заполнения таблиц

USE lr_2;

insert into discipline values ('1', 'Algebra');

insert into discipline values ('2', 'Biology');

insert into discipline values ('3', 'Drawing');

insert into discipline values ('4', 'Chemistry');

insert into discipline values ('5', 'Geography');

insert into discipline values ('6', 'History');

insert into teachers values ('1', 'Shyb E.A.', '10.10.85', '8-ia Soveyskaia', '89113212233', '2');

insert into teachers values ('2', 'Ianysheva S.A.', '10.03.97', 'Polevaia', '89113212244', '5');

insert into teachers values ('3', 'Petrova U.D.', '15.06.77', 'Mira', '89113216243', '4');

insert into teachers values ('4', 'Kaz I.A.', '10.11.86', 'Lygovaia', '89113632786', '1');

insert into teachers values ('5', 'Vagna E.A.', '10.04.87', 'Planovaia', '89113287664', '2');

insert into teachers values ('6', 'Smirnova L.D.', '13.06.97', 'Marshala', '89113112348', '6');

insert into parents values ('1', 'Borisova', '1-ia Soveyskaia', '89113212233');

insert into parents values ('2', 'Stepanova', '2-ia Soveyskaia', '89123212244');

insert into parents values ('3', 'Petrova', '3-ia Soveyskaia', '89223216243');

insert into parents values ('4', 'Navalny', '4-ia Soveyskaia', '89123632786');

insert into parents values ('5', 'Varlamov', '5-ia Soveyskaia', '89113287664');

insert into parents values ('6', 'Pytina', '6-ia Soveyskaia', '89113112348');

insert into students values ('1', 'Borisova A.A.','10.03.10', '1-ia Soveyskaia', '89113212233', '1');

insert into students values ('2', 'Stepanova S.E.', '10.04.11','2-ia Soveyskaia', '89123212244', '2');

insert into students values ('3', 'Petrova M.S.', '10.05.11','3-ia Soveyskaia', '89223216243', '3');

insert into students values ('4', 'Navalny O.A', '10.07.11','4-ia Soveyskaia', '89123632786', '4');

insert into students values ('5', 'Navalny M.A.', '10.09.12','4-ia Soveyskaia', '89123632786', '4');

insert into students values ('6', 'Varlamov U.I.', '10.04.12','5-ia Soveyskaia', '89113287664', '5');

insert into students values ('7', 'Varlamov V.I.', '10.05.10','5-ia Soveyskaia', '89113287664', '5');

insert into students values ('8', 'Pytina O.V.', '10.10.12','6-ia Soveyskaia', '89113112348', '6');

insert into classes values ('1', '1', '4a');

insert into classes values ('2', '2', '3a');

insert into classes values ('3', '5', '2a');

insert into classes values ('4', '3', '1a');

insert into listt values ('2', '1');

insert into listt values ('2', '7');

insert into listt values ('3', '2');

insert into listt values ('3', '3');

insert into listt values ('3', '4');

insert into listt values ('4', '6');

insert into listt values ('4', '5');

insert into listt values ('4', '8');

Рисунок 2 – Заполненная таблица discipline в Workbench

Рисунок 3 – Заполненная таблица teachers в Workbench

Рисунок 4 – Заполненная таблица parents в Workbench

Рисунок 5 – Заполненная таблица students в Workbench

Рисунок 6 – Заполненная таблица classes в Workbench

Рисунок 7 – Заполненная таблица listt в Workbench

Рисунок 8 – Заполненная таблица yslugi в Workbench

Создан однотабличный запрос на выборку с условием фильтрации. На рисунках 9 представлен вывод программы.

Рисунок 9 – Запрос 1

Запросs на выборку к нескольким таблицам с условием фильтрации, сортировкой и группировкой (рисунок 10-11).

Рисунок 10 – Запрос 2

Рисунок 11 – Запрос 3

Запросы на добавление, обновление и удаление данных (рисунок 12-14).

Рисунок 12 – Запрос на добавление

Рисунок 13 – Запрос на обновление данных

Рисунок 14 – Запрос на удаление данных

Постоянные клиенты (купившие 2 и более раз курсы) получают скидку 15%. Разработана процедура проверки скидки клиента. На рисунке 15 и 16 приведён результат работы процедуры.

Листинг SQL-кода:

CREATE DEFINER=`root`@`localhost` PROCEDURE `discont`(in id int, out discont_value double)

begin

set @x = (select count(PA_NO) from yslugi Where PA_NO = id);

if (@x >= 2) then

set discont_value = 0.15;

else

set discont_value = 0;

end if;

end

Рисунок 15 – Вызов процедуры

Рисунок 16 – Вывод результата работы процедуры

  1. Вывод

Создана БД на сервере, разработаны необходимые запросы и хранимые процедуры.

Соседние файлы в предмете Проектный практикум