
5сем / lab2_database
.docxГУАП
КАФЕДРА № 41
ОТЧЕТ ЗАЩИЩЕН С ОЦЕНКОЙ
ПРЕПОДАВАТЕЛЬ
доц., канд. техн. наук |
|
|
|
Б.К.Акопян |
должность, уч. степень, звание |
|
подпись, дата |
|
инициалы, фамилия |
ОТЧЕТ О ЛАБОРАТОРНОЙ РАБОТЕ №2 |
РЕАЛИЗАЦИЯ БАЗЫ ДАННЫХ НА СЕРВЕРЕ MYSQL |
по курсу: БАЗЫ ДАННЫХ |
|
РАБОТУ ВЫПОЛНИЛ
СТУДЕНТ ГР. № |
4016 |
|
|
|
М.О. Жовтяк |
|
|
|
подпись, дата |
|
инициалы, фамилия |
Санкт-Петербург 2022
Цель работы
Даталогическое проектирование реляционной БД в среде MySQL Workbench, физическая реализация БД на основе модели данных, заполнение БД данными.
Вариант работы
Вариант – 14
1) Виды услуг химчистки (Код вида услуг, Тип белья, Стоимость).
2) Клиенты (Код клиента, Фамилия, Имя, Телефон).
3) Заказы (Код заказа, Код вида услуги, Код клиента, Дата приема, Цена услуги).
Даталогическое проектирование БД
Запускается графический клиент MySQL Workbench, выполняется подключение к серверу, создается новая модель БД. Новая модель в WB приобретает новое название Dry_Cleaning. Это продемонстрировано на рисунке 1.
Рисунок 1 – Создание новой модели БД
Выбирается кодировка данных charset:utf8, а алгоритм сопоставления данных collation:utf8-general-ci. Это продемонстрировано на рисунке 2.
Рисунок 2 – Установка алгоритма сравнения символов
Выполняется создание ER-диаграммы с помощью кнопки Add Diagram. На поле построения ER-диаграммы добавляется таблица types, атрибуты которой заполняются в соответствие с заданием. Это продемонстрировано на рисунке 3.
Рисунок 3 – Создание таблицы types
Аналогично выполняется построение таблицы clients, заполнение атрибутов в соответствие с заданием. Это продемонстрировано на рисунке 4.
Рисунок 4 – Создание таблицы product
Аналогично выполняется построение таблицы Sales, заполнение атрибутов в соответствие с заданием. Это продемонстрировано на рисунке 5.
Рисунок 5 – Создание таблицы invoice
Выполняется построение соединений между таблицами во вкладке Foreign keys, где указывается название внешнего ключа, а потом, название таблицы, с которой необходимо связать данные. Результат представлен на рисунке 6.
Рисунок 6 – Установление связей таблиц Sales с types, clients
Итоговая ER-диаграмма представлена на рисунке 7.
Рисунок 7 – Итоговая ER-диаграмма БД Sales
Выполняется сохранение спроектированной модели через закладку File в формате .mwb, .png.
Реализация БД на сервере на основе модели данных
Запускается команда Forward Engineer SQL CREATE Script. В поле OutPut дается название скрипта по созданию БД и выбирается место сохранения на ПК. Результат представлен на рисунке 8.
Рисунок 8 – Определение полного имени файла для сохранения скрипта БД
В процессе проектирования разрабатываются 3 таблицы. Это представлено на рисунке 9.
Рисунок 9 – Определение объектов БД
В следующем окне проверятся код, который был автосгенерирован на основании модели данных. Результат представлен на рисунке 10.
Рисунок 10 – Просмотр сгенерированного программного кода
Далее выполняется запуск скрипта для физической реализации БД на сервере с помощью команды Open SQL script. Это представлено на рисунке 11. Листинг скрипта представлен в приложении.
Рисунок 11 – Открытие SQL скрипта
Далее выполняется выполнение программного кода экспортированного скрипта. Результат представлен на рисунке 12.
Рисунок 12 – Исполнение скрипта на создание БД
Выполняется просмотр созданных таблиц в Навигаторе. Также, например, можно увидеть, что все столбцы таблицы Sales присутствуют. Это видно на рисунке 13.
Рисунок 13 – Просмотр результата выполнение скрипта
Заполнение данными БД
Создается новый лист для написания SQL-кода в окне редактора кода. Вносятся данные в таблицу types_cloth (название было изменено, так как types – программная функция). Результат представлен на рисунке 14.
Рисунок 15 – Заполнение данными таблицы types_cloth
Аналогично заполняется таблица clients. Результат представлен на рисунке 15.
Рисунок 15 – Заполнение данными таблицы clients
Аналогично заполняется таблица clients (имя столбца Date заменено на Date_sale). Результат представлен на рисунке 16.
Рисунок 16 – Заполнение данными таблицы clients
Вывод
В ходе лабораторной работы я углубил знания работы с реляционной базой данных MySQL Workbench, а конкретно:
Даталогическое проектирование БД с помощью ER-диаграммы, в которой создаются таблицы со связями
Реализация БД на сервере с помощью скрипта импортированного из модели БД, после чего БД была заполнена данными.
В ходе работы проблем не возникло.
Приложение
-- MySQL Script generated by MySQL Workbench
-- Sun Oct 2 20:21:22 2022
-- Model: New Model Version: 1.0
-- MySQL Workbench Forward Engineering
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
-- -----------------------------------------------------
-- Schema Dry_cleaning
-- -----------------------------------------------------
-- -----------------------------------------------------
-- Schema Dry_cleaning
-- -----------------------------------------------------
CREATE SCHEMA IF NOT EXISTS `Dry_cleaning` DEFAULT CHARACTER SET utf8 ;
USE `Dry_cleaning` ;
-- -----------------------------------------------------
-- Table `Dry_cleaning`.`types`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `Dry_cleaning`.`types` (
`typeID` INT NOT NULL AUTO_INCREMENT,
`type_cloth` VARCHAR(45) NOT NULL,
`Price` DECIMAL(10,2) NOT NULL,
PRIMARY KEY (`typeID`))
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `Dry_cleaning`.`clients`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `Dry_cleaning`.`clients` (
`clientID` INT NOT NULL AUTO_INCREMENT,
`client_surname` VARCHAR(45) NOT NULL,
`client_name` VARCHAR(45) NOT NULL,
`client_telephone` VARCHAR(45) NOT NULL,
PRIMARY KEY (`clientID`))
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `Dry_cleaning`.`Sales`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `Dry_cleaning`.`Sales` (
`salesID` INT NOT NULL AUTO_INCREMENT,
`typeID` INT NOT NULL,
`clientID` INT NOT NULL,
`Date` DATE NOT NULL,
`Price` DECIMAL(10,2) NOT NULL,
PRIMARY KEY (`salesID`),
INDEX `clientID_idx` (`clientID` ASC) VISIBLE,
INDEX `typeID_idx` (`typeID` ASC) VISIBLE,
CONSTRAINT `typeID`
FOREIGN KEY (`typeID`)
REFERENCES `Dry_cleaning`.`types` (`typeID`)
ON DELETE CASCADE
ON UPDATE CASCADE,
CONSTRAINT `clientID`
FOREIGN KEY (`clientID`)
REFERENCES `Dry_cleaning`.`clients` (`clientID`)
ON DELETE CASCADE
ON UPDATE CASCADE)
ENGINE = InnoDB;
SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
Список использованных источников
Учебно-методическое пособие «Разработка и администрирование базы данных с открытым исходным кодом» - Аграновский А.В., В.В. Боженко, Е.Л. Турнецкая, 2022 г.