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

Отчет по СУБД

.docx
Скачиваний:
5
Добавлен:
19.06.2019
Размер:
591.85 Кб
Скачать

Министерство науки и образования Российской Федерации

ФГБОУ ВО Ивановский государственный химико-технологический университет

Кафедра технической кибернетики и автоматики

ЛАБОРАТОРНАЯ РАБОТА

По дисциплине: «СУБД»

Выполнил: ст. гр. 2/61 АТП и П Хавари П.А.

Проверил: ст. препод.

Чешинский М.А.

Иваново 2017

Содержание

Содержание

2

Введение

3

  1. Постановка задачи

4

  1. Перечень таблиц, их структуры

5

  1. Примеры запросов к БД

  1. Формы ввода и их взаимодействие с БД

Заключение

Введение

Для выполнения отчета был выбран следующий набор технологий: Apache сервер с PHP для создания веб-форм для работы с таблицей и визуализации ее данных, сервер MySQL ver. 15.1 (MariaDB). Для того, чтобы было проще реализовать связку между данными 3 технологиями была выбрана система XAMPP, которая в своем составе включает все 3 необходимых элемента. XAMPP мы устанавливаем на виртуальную машину с Ubuntu 16.04 LTS и запускаем сервер для работы с ним.

Для работы с БД используем среду управления MySQL – phpMyAdmin. Это готовый продукт, который имеет весь необходимый функционал для создания, редактирования и работы с MySQL.

Для написания форм и внешнего вида сайта для БД используется стек следующих технологий: HTML, CSS, JavaScript и PHP.

Постановка задачи

Есть алгоритм, который анализирует видео, выделяет в нем пиццы, оценивает качество их приготовления и вносит полученные результаты и картинки в БД.

Требуется реализовать следующее:

  • вывод последней распознанной пиццы;

  • вывод времени последней распознанной пиццы;

  • вывод последних 5 пицц в виде таблицы;

  • вывод списка ресторанов с указанием города, партнера, менеджера, средней статистике по оценке пиццы за 2, 4 часа, 1 день, 1 неделю;

  • вывод отчета по последним 30 пиццам по ресторану.

Список таблиц:

  • города;

  • регионы;

  • менеджеры;

  • партнеры;

  • фото;

  • пиццы;

  • виды пицц;

  • рестораны;

Перечень таблиц, их структуры

Представим вид таблиц и примеры данных в них:

Города:

Структура

Пример

Регионы:

Структура

Пример

Менеджеры:

Структура

Пример

Партнеры:

Структура

Пример

Фото

Структура

Пример

Пиццы:

Структура

Пример

Виды пицц:

Структура

Пример

Рестораны:

Структура

Пример

Примеры запросов к БД

  1. Запрос на SQL для получения последних 10 пицц для определенного ресторана:

SELECT pizzas1.`id`, 

                `product_id`, 

                (`capture_dt` + INTERVAL 3 HOUR) as capture_dt, 

                (`razmer`+`bort`)AS testo, 

                (`cheezlok`+`cheezgot`+`cheezvnesh`+`cheezvnutr`) AS cheese, 

                (`kvadrvnesh`+`kvadrvnutr`) AS topping, 

                (`cvetverh`+`cvetnijn`) AS korzh, (`razmer`+`bort`+`cheezlok`+`cheezgot`+`cheezvnesh`+`cheezvnutr`+`kvadrvnesh`+`kvadrvnutr`+`cvetverh`+`cvetnijn`) AS itog , 

                products.name_ru 

                FROM pizzas1 

                    JOIN products ON products.id=pizzas1.PRODUCT_ID 

                WHERE pizzas1.RESTAURANT_ID =<ID ресторана> 

                ORDER BY pizzas1.CAPTURE_DT DESC LIMIT 10

Результат:

  1. Запрос на SQL для даты последней пиццы для определенного ресторана, с поправкой на временя по GMT+3:

SELECT (`capture_dt` + INTERVAL 3 HOUR) as CAPTURE_DT 

        FROM pizzas1 

        WHERE pizzas1.restaurant_id = <ID ресторана>

        ORDER BY pizzas1.capture_dt DESC LIMIT 1

Результат:

  1. Запрос на SQL для получения id последней пиццы для определенного ресторана:

SELECT id 

            FROM pizzas1 

            WHERE pizzas1.restaurant_id = <ID ресторана> 

            ORDER BY pizzas1.capture_dt DESC LIMIT 1

Результат:

  1. Запрос на SQL для получения списка всех ресторанов с нумерацией их по их id:

SELECT CONCAT(name,' ',id) as nm 

                FROM restaurants

Результат:

  1. Запрос на SQL для получения списка ресторанов с указанием города, партнера, менеджера, средней статистике по оценке пиццы за 2, 4 часа, 1 день, 1 неделю:

SELECT rs.id, CONCAT(rs.name,' ',rs.id) AS rsname, pr.part_name_ru, mg.mng_name_ru, ct.city_name_ru, lst_h2.2hours, lst_h4.4hours, lst_d1.1day, lst_d7.1week

            FROM restaurants rs

              JOIN partners pr ON pr.id = rs.part_id

              JOIN managers mg ON mg.id = rs.mng_id

              JOIN citys ct ON ct.id = rs.city_id

              LEFT OUTER JOIN (

                SELECT pz.restaurant_id, round(avg(razmer+bort+cheezlok+cheezgot+cheezvnesh+cheezvnutr+kvadrvnesh+kvadrvnutr+cvetverh+cvetnijn), 2) 2hours

                FROM pizzas1 pz WHERE addtime(pz.capture_dt, '3:0:0') between addtime(SYSDATE(), '-2:0:0') AND SYSDATE()

                GROUP BY pz.restaurant_id

              ) lst_h2 ON lst_h2.restaurant_id = rs.id

              LEFT OUTER JOIN (

                SELECT pz.restaurant_id, round(avg(razmer+bort+cheezlok+cheezgot+cheezvnesh+cheezvnutr+kvadrvnesh+kvadrvnutr+cvetverh+cvetnijn), 2) 4hours

                FROM pizzas1 pz WHERE addtime(pz.capture_dt, '3:0:0') between addtime(SYSDATE(), '-4:0:0') AND SYSDATE()

                GROUP BY pz.restaurant_id

              ) lst_h4 ON lst_h4.restaurant_id = rs.id

              LEFT OUTER JOIN (

                SELECT pz.restaurant_id, round(avg(razmer+bort+cheezlok+cheezgot+cheezvnesh+cheezvnutr+kvadrvnesh+kvadrvnutr+cvetverh+cvetnijn), 2) 1day

                FROM pizzas1 pz WHERE addtime(pz.capture_dt, '3:0:0') between adddate(SYSDATE(), -1) AND SYSDATE()

                GROUP BY pz.restaurant_id

              ) lst_d1 ON lst_d1.restaurant_id = rs.id

              LEFT OUTER JOIN (

                SELECT pz.restaurant_id, round(avg(razmer+bort+cheezlok+cheezgot+cheezvnesh+cheezvnutr+kvadrvnesh+kvadrvnutr+cvetverh+cvetnijn), 2) 1week

                FROM pizzas1 pz WHERE addtime(pz.capture_dt, '3:0:0') between adddate(SYSDATE(), -7) AND SYSDATE()

                GROUP BY pz.restaurant_id

              ) lst_d7 ON lst_d7.restaurant_id = rs.id

              order by rs.id

Результат:

  1. Запрос на SQL для получения картинки пиццы по id:

SELECT photo_src 

        FROM photos 

        WHERE photos.id = 55600

Результат:

  1. Запрос для добавления новых данных по оценке пицц в БД (данные берутся случайные):

INSERT INTO `pizzas1` (`id`, `product_id`, `restaurant_id`, `capture_dt`, `razmer`, `bort`, `cheezlok`, `cheezgot`, `cheezvnesh`, `cheezvnutr`, `kvadrvnesh`, `kvadrvnutr`, `cvetverh`, `cvetnijn`, `itogo`, `ver`, `params`, `upload_dt`, `filename`) 

VALUES ('99999', '1', '1', 'SYSDATE()', '35', '0.6', '0.6', '1', '1', '1', '0.6', '0.6', '0.6', '0.6','0', '', NULL, CURRENT_TIMESTAMP, '".$filename."')

  1. Запрос для создания новой таблицы городов в БД:

CREATE TABLE `citys` (

  `id` int(10) UNSIGNED NOT NULL,

  `loc_id` int(10) UNSIGNED NOT NULL,

  `city_name` varchar(64) NOT NULL COMMENT 'город/населенный пункт ресторана',

  `city_name_ru` varchar(64) DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

  1. Запрос для создания новой таблицы пицц в БД:

CREATE TABLE `pizzas1` (

  `id` int(10) UNSIGNED NOT NULL,

  `product_id` int(10) UNSIGNED NOT NULL,

  `restaurant_id` int(10) UNSIGNED NOT NULL,

  `capture_dt` datetime NOT NULL,

  `razmer` decimal(3,2) DEFAULT NULL,

  `bort` decimal(3,2) DEFAULT NULL,

  `cheezlok` decimal(3,2) DEFAULT NULL,

  `cheezgot` decimal(3,2) DEFAULT NULL,

  `cheezvnesh` decimal(3,2) DEFAULT NULL,

  `cheezvnutr` decimal(3,2) DEFAULT NULL,

  `kvadrvnesh` decimal(3,2) DEFAULT NULL,

  `kvadrvnutr` decimal(3,2) DEFAULT NULL,

  `cvetverh` decimal(3,2) DEFAULT NULL,

  `cvetnijn` decimal(3,2) DEFAULT NULL,

  `itogo` decimal(4,2) DEFAULT NULL,

  `ver` varchar(32) NOT NULL,

  `params` varchar(32) DEFAULT NULL,

  `upload_dt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,

  `filename` varchar(32) DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Запрос на добавления внешних ключей для таблицы restaurants:

ALTER TABLE `restaurants`

  ADD CONSTRAINT `restaurants_ibfk_1` FOREIGN KEY (`city_id`) REFERENCES `citys` (`id`) ON UPDATE CASCADE,

  ADD CONSTRAINT `restaurants_ibfk_2` FOREIGN KEY (`mng_id`) REFERENCES `managers` (`id`) ON UPDATE CASCADE,

  ADD CONSTRAINT `restaurants_ibfk_3` FOREIGN KEY (`part_id`) REFERENCES `partners` (`id`) ON UPDATE CASCADE,

  ADD CONSTRAINT `restaurants_ibfk_4` FOREIGN KEY (`restt_id`) REFERENCES `resttypes` (`id`) ON UPDATE CASCADE;

Соседние файлы в предмете Системы управления базами данных