Файл: Проектирование и реализация базы данных по учету клиентов и заказов типографии.docx

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 09.11.2023

Просмотров: 367

Скачиваний: 12

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Идентифицирующая связь используются для связи «многие ко многим», данная связь будет соединять сущности «Заказ» и «Товар» (в одном заказе может быть несколько изделий) через вспомогательную сущность «Корзина».

Не идентифицирующая связь «один ко многим» используется для соединения двух сильных сущностей, она передает ключ в область не ключевых атрибутов.

Данная связь соединяет сущности «Заказчик» и «Статус» с сущностью

«Заказ», «Тип изделия», «Изображение», «Размер», «Цвет» с сущностью «Товар».

База данных находится в первой нормальной форме, так как каждый кортеж содержит одно значение для каждого атрибута. Например, в сущности

«Заказчик» атрибуты «ID», «Фамилия», «Имя «Телефон», «Адрес» могут содержать единственное значение.

Таблицы находятся также во второй нормальной форме, поскольку они находятся в первой нормальной форме и каждый не ключевой атрибут любого отношения непосредственно зависит от всего первичного ключа своего отношения. Например, в сущности «Заказа», которая находится в первой нормальной форме, атрибуты «ID Даты», «ID Заказчика» и «ID статуса» зависят от атрибута «Номер заказа».

База данных находятся в третьей нормальной форме, так как она находится во второй нормальной форме и каждый не ключевой атрибут не зависит от другого не ключевого атрибута данного отношения. Например, в сущности «Товар» с первичным ключом «id товара», атрибуты «id типа изделия», «id изображения» «id цвета», «id размера», и «Количество» не зависят друг от друга.


Рисунок 2 Логическая схема базы данных.


    1. Физическая схема базы данных


Физическая модель базы данных строится на основе логической модели. Она содержит все детали, необходимые конкретной СУБД для создания базы: наименования таблиц и столбцов, типы данных, определения

первичных и внешних ключей. Перечислим типы данных, которые используются в базе данных:

  • SMALLINT - является основным типом целочисленных данных.

  • TINYINT используется в записях, которые содержат значения меньше 255.

  • BIGINT используется в больших числовых записях, в данной базе данных – при вводе номера телефона

  • DATE - Определяет дату. Формат строковых литералов: «ГГГГ-ММ- ДД».

  • CHAR (n) - строковые данные фиксированного размера, n определяет размер строки в байтах.



Для удобства построения физической базы данных было принято решение перейти с русского языка на английский. Приведем ассоциации:

«Заказчик» «customer», «Заказ» «order», «Статус» «Status», «Товар» «product», «Тип изображения» «image_type», «Тип изделия» «item», «Корзина» – «cart».

+
Рисунок 3 – Физическая схема базы данных.
  1. Реализация базы данных типографии


    1. Реализация базы данных

Для реализации физической

модели реляционной базы данных, был использован язык SQL и СУБД phpMyAdmin.

Физическая реализация базы данных начинается с создания таблиц.

Пример создания таблицы « product»:

CREATE TABLE `product` (
`product_id` smallint(6) NOT NULL,
`item_type_id` smallint(6) NOT NULL,
`image_type_id` smallint(6) NOT NULL,
`quantity` smallint(50) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Чтобы установить связи между таблицами, необходимо определить первичные и внешние ключи. Пример создания первичного ключа в таблице customer:
ALTER TABLE `customer`
ADD PRIMARY KEY (`id`);
Пример создания первичного ключа в таблице cart:


ALTER TABLE `cart`
ADD KEY `order_id` (`order_id`),
ADD KEY `product_id` (`product_id`);

Остальные скрипты приведены в приложении А.


    1. Реализация ограничений бизнес правил.


Триггер - это механизм, который вызывается, когда в указанной таблице происходит определенное действие. Каждый триггер имеет следующие основные составляющие: имя, действие и исполнение. Имя триггера может содержать максимум 128 символов. Действием триггера может быть или инструкция DML (INSERT, UPDATE или DELETE), или инструкция DDL. Таким образом, существует два типа триггеров: триггеры DML и триггеры DDL. Исполнительная составляющая триггера обычно состоит из хранимой процедуры или пакета.

Создадим триггер на проверку того, если клиент заказывает печать на футболке , свитшоте или толстовке, то он указаны размер и пол:

DELIMITER $$
CREATE TRIGGER `chek_item` BEFORE INSERT ON `item` FOR EACH ROW IF ((new.item_type = 'футболка') or (new.item_type = 'свитшот') or (new.item_type = 'толстовка')) and (new.item_size = NULL) and (new.gender = NULL)
THEN
signal sqlstate '45000' set message_text = 'Укажите размер и пол для предмета одежды';
END IF
$$
DELIMITER ;

Остальные триггеры приведены в приложении А.

    1. Наполнение базы данных


После того, как были созданы сущности, построены связи, установлены первичные и внешние ключи
и реализованы все бизнес-правила можно

переходить к заполнению базы данных соответствующей информацией. Пример заполнения таблицы «item »:

INSERT INTO `item` (`item_id`, `item_type`, `item_color`, `item_size`, `price`, `gender`) VALUES
(1, 'футболка', 'черный', 46, 1000, 'женский'),
(2, 'футболка', 'черный', 50, 1000, 'мужской'),
(3, 'футболка', 'белый', 46, 1000, 'женский'),
(4, 'футболка', 'белый', 50, 1000, 'мужской'),
(5, 'толстовка', 'черный', 48, 1600, 'унисекс'),
(6, 'толстовка', 'белый', 48, 1600, 'унисекс'),
(7, 'свитшот', 'черный', 48, 1200, 'унисекс'),
(8, 'свитшот', 'белый', 48, 1200, 'унисекс'),
(9, 'кружка', 'белый', NULL, 800, NULL),
(10, 'холст', 'белый', NULL, 1000, NULL);


Остальные скрипты заполнения таблиц приведены в приложении А.


    1. Разработка процедур


Как правило, в работе с БД используются одни и те же запросы, либо набор последовательных запросов. Хранимые процедуры позволяют объединить последовательность запросов и сохранить их на сервере. Это очень удобный инструмент.

Данная процедура была создана для облегчения ввода данных для заполнения таблицы «Заказчик»:



DELIMITER

CREATE PROCEDURE add_customer (i smallint, n char(12), s char(30), p char(30), ad char(50), pn bigint(11))

BEGIN

INSERT INTO customer((`id`, `name`, `surname`, `patronymic`, `adress`, `phone_number`) values (i, n, s, p, ad, pn)

END
    1. Написание запросов к базе данных



Для извлечения информации из базы данных будет использоваться оператор «SELECT». SELECT - оператор запроса (DML/DQL) в языке SQL, возвращающий набор данных (выборку) из базы данных.

Оператор возвращает ноль или более строк. Список возвращаемых столбцов задается в части оператора, называемой предложением SELECT. Поскольку SQL является декларативным языком, запрос SELECT определяет лишь требования к возвращаемому набору данных, но не является точной инструкцией по их вычислению.

Оператор SELECT состоит из нескольких предложений
(разделов):

SELECT определяет список возвращаемых столбцов (как существующих, так и вычисляемых), их имена, ограничения на уникальность строк в возвращаемом наборе, ограничения на количество строк в возвращаемом наборе;

FROM задаёт табличное выражение, которое определяет базовый набор данных для применения операций, определяемых в других предложениях оператора;

WHERE задает ограничение на строки табличного выражения из предложения FROM;

GROUP BY объединяет ряды, имеющие одинаковое свойство с применением агрегатных функций

HAVING выбирает среди групп, определённых параметром GROUP

BY

ORDER BY задает критерии сортировки строк; отсортированные

строки передаются в точку вызова.

Для примера работы оператора SELECT ниже приведен запрос, который выводит список всех выполненных заказов за сентябрь 2022 года.
select order_id as 'Номер заказа', finish_date as 'Дата оформления' from `order`

where finish _date >= '2022-09-01'

and finish _date <= '2022-09-31'
Остальные скрипты приведены а приложении А.

Заключение


При выполнении курсовой работы были укреплены знания, полученные на лекционных и практических занятиях. Получены навыки проектирования и создания реляционных баз данных.

В результате выполнения данной курсовой работы была создана база данных для обслуживания клиентов типографии. Были выполнены все задачи, поставленные перед созданием БД. База данных построена в соответствии с предметной областью.

Список используемой литературы