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

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

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

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

Добавлен: 09.11.2023

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

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

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

  1. Астахова И., Толстобров А. СУБД. Язык SQL в примерах и задачах / И. Астахова, А. Толстобров М.: Издательская фирма

Физикоматематическая литература, 2016. 104 с

  1. Баженова И.Ю. SQL и процедурно-ориентированные языки / И.Ю. Баженова. М.: НОУ "Интуит", 2016. 93 с.

  2. Кумскова И.А. Базы данных (2-е изд.) / И.А. Кумскова. – М.: КноРус, 2016. – 208 с.



Приложение А (обязательное) Скрипты создания таблиц базы данных


  • SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
    START TRANSACTION;
    SET time_zone = "+00:00";

    /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
    /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
    /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
    /*!40101 SET NAMES utf8mb4 */;

    --
    — База данных: `kursachdb`
    --

    — —------------------------------------------------------

    --
    — Структура таблицы `cart`
    --

    CREATE TABLE `cart` (
    `order_id` smallint(6) NOT NULL,
    `product_id` smallint(6) NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    --
    — Дамп данных таблицы `cart`
    --

    INSERT INTO `cart` (`order_id`, `product_id`) VALUES
    (1, 3),
    (1, 2),
    (2, 1),
    (3, 6),
    (4, 5),
    (5, 4),
    (5, 2);

    — —------------------------------------------------------

    --
    — Структура таблицы `customer`
    --

    CREATE TABLE `customer` (
    `id` smallint(11) NOT NULL,
    `name` char(12) NOT NULL,
    `surname` char(30) NOT NULL,
    `patronymic` char(30) NOT NULL,
    `adress` char(50) DEFAULT NULL,
    `phone_number` bigint(11) NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    --
    — Дамп данных таблицы `customer`
    --

    INSERT INTO `customer` (`id`, `name`, `surname`, `patronymic`, `adress`, `phone_number`) VALUES
    (1, 'Иван', 'Витальевич', 'Князев', 'Ул. Фомина 15', 89201112343),
    (2, 'Анастасия', 'Петровна', 'Иванова', NULL, 89102737890),
    (3, 'Виталий', 'Евгеньевич', 'Ромашин', 'Ул. Фомина 78', 8920111237),
    (4, 'Максим', 'Максимович', 'Чернов', NULL, 89201378443),
    (5, 'Лидия', 'Дмитревна', 'Кузнецова', NULL, 8978643790);

    --
    — Триггеры `customer`
    --
    DELIMITER $$
    CREATE TRIGGER `chek_number` BEFORE INSERT ON `customer` FOR EACH ROW IF (SUBSTR(new.phone_number,1,2)!= 89)
    THEN
    signal sqlstate '45000' set message_text = 'Неверно введен номер телефона';
    END IF
    $$
    DELIMITER ;

    — —------------------------------------------------------

    --
    — Структура таблицы `image_type`
    --

    CREATE TABLE `image_type` (
    `image_type_id` smallint(6) NOT NULL,
    `image_type` char(15) NOT NULL,
    `image_color` char(15) NOT NULL,
    `image_size` tinyint(2) NOT NULL,
    `price` mediumint(9) NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    --
    — Дамп данных таблицы `image_type`
    --

    INSERT INTO `image_type` (`image_type_id`, `image_type`, `image_color`, `image_size`, `price`) VALUES
    (1, 'логотип', 'черно-белый', 20, 1000),
    (2, 'надпись', 'черно-белый', 30, 800),
    (3, 'логотип', 'цветной', 20, 1600),
    (4, 'надпись', 'цветной', 30, 1200),
    (5, 'логотип', 'черно-белый', 30, 1600),
    (6, 'иллюстрация', 'черно-белый', 30, 1200),
    (7, 'логотип', 'цветной', 30, 2000),
    (8, 'иллюстрация', 'цветной', 30, 1800);

    — —------------------------------------------------------

    --
    — Структура таблицы `item`
    --

    CREATE TABLE `item` (
    `item_id` smallint(11) NOT NULL,
    `item_type` char(15) NOT NULL,
    `item_color` char(15) NOT NULL,
    `item_size` tinyint(2) DEFAULT NULL,
    `price` smallint(6) NOT NULL,
    `gender` char(7) DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    --
    — Дамп данных таблицы `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);

    --
    — Триггеры `item`
    --
    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 ;

    — —------------------------------------------------------

    --
    — Структура таблицы `order`
    --

    CREATE TABLE `order` (
    `order_id` smallint(6) NOT NULL,
    `start_date` date NOT

  • NULL,
    `finish_date` date NOT NULL,
    `customer_id` smallint(6) NOT NULL,
    `status_id` smallint(6) NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    --
    — Дамп данных таблицы `order`
    --

    INSERT INTO `order` (`order_id`, `start_date`, `finish_date`, `customer_id`, `status_id`) VALUES
    (1, '2022-09-06', '2022-09-30', 1, 2),
    (2, '2022-09-24', '2022-09-29', 3, 1),
    (3, '2022-09-05', '2022-09-07', 2, 2),
    (4, '2022-09-27', '2022-09-30', 3, 1),
    (5, '2022-09-04', '2022-09-09', 5, 2);

    --
    — Триггеры `order`
    --
    DELIMITER $$
    CREATE TRIGGER `chek_status` BEFORE UPDATE ON `order` FOR EACH ROW if exists (SELECT * FROM `заказ` i WHERE
    (i.start_dateTHEN
    signal sqlstate '45000' set message_text = 'Дата приема заказа не\r\nможет быть раньше даты выполнения заказа.';
    END IF
    $$
    DELIMITER ;

    — —------------------------------------------------------

    --
    — Структура таблицы `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;

    --
    — Дамп данных таблицы `product`
    --

    INSERT INTO `product` (`product_id`, `item_type_id`, `image_type_id`, `quantity`) VALUES
    (1, 4, 2, 1),
    (2, 9, 8, 2),
    (3, 6, 6, 1),
    (4, 1, 7, 3),
    (5, 7, 4, 1),
    (6, 10, 5, 1);

    — —------------------------------------------------------

    --
    — Структура таблицы `status`
    --

    CREATE TABLE `status` (
    `staus_id` smallint(6) NOT NULL,
    `name` char(11) NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    --
    — Дамп данных таблицы `status`
    --

    INSERT INTO `status` (`staus_id`, `name`) VALUES
    (1, 'в процессе'),
    (2, 'готов');

    --
    — Индексы сохранённых таблиц
    --

    --
    — Индексы таблицы `cart`
    --
    ALTER TABLE `cart`
    ADD KEY `order_id` (`order_id`),
    ADD KEY `product_id` (`product_id`);

    --
    — Индексы таблицы `customer`
    --
    ALTER TABLE `customer`
    ADD PRIMARY KEY (`id`);

    --
    — Индексы таблицы `image_type`
    --
    ALTER TABLE `image_type`
    ADD PRIMARY KEY (`image_type_id`);

    --
    — Индексы таблицы `item`
    --
    ALTER TABLE `item`
    ADD PRIMARY KEY (`item_id`);

    --
    — Индексы таблицы `order`
    --
    ALTER TABLE `order`
    ADD PRIMARY KEY (`order_id`),
    ADD KEY `customer_id` (`customer_id`),
    ADD KEY `status_id` (`status_id`);

    --
    — Индексы таблицы `product`
    --
    ALTER TABLE `product`
    ADD PRIMARY KEY (`product_id`),
    ADD KEY `image_type_id` (`image_type_id`),
    ADD KEY `item_type_id` (`item_type_id`);

    --
    — Индексы таблицы `status`
    --
    ALTER TABLE `status`
    ADD PRIMARY KEY (`staus_id`);

    --

    --
    — Ограничения внешнего ключа таблицы `cart`
    --
    ALTER TABLE `cart`
    ADD CONSTRAINT `cart_ibfk_1` FOREIGN KEY (`order_id`) REFERENCES `order` (`order_id`),
    ADD CONSTRAINT `cart_ibfk_2` FOREIGN KEY (`product_id`) REFERENCES `product` (`product_id`);

    --
    — Ограничения внешнего ключа таблицы `order`
    --
    ALTER TABLE `order`
    ADD CONSTRAINT `order_ibfk_1` FOREIGN KEY (`customer_id`) REFERENCES `customer` (`id`),
    ADD CONSTRAINT `order_ibfk_2` FOREIGN KEY (`status_id`) REFERENCES `status` (`staus_id`);

    --
    ALTER TABLE `product`
    ADD CONSTRAINT `product_ibfk_1` FOREIGN KEY (`image_type_id`) REFERENCES `image_type` (`image_type_id`),
    ADD CONSTRAINT `product_ibfk_2` FOREIGN KEY (`item_type_id`) REFERENCES `item` (`item_id`);
    COMMIT;

    /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
    /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
    /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;