Загрузка данных


DROP DATABASE IF EXISTS ShoeStore;
CREATE DATABASE ShoeStore;
USE ShoeStore;

CREATE TABLE Roles (
    RoleID INT PRIMARY KEY AUTO_INCREMENT,
    RoleName VARCHAR(50) NOT NULL UNIQUE
);

CREATE TABLE Users (
    UserID INT PRIMARY KEY AUTO_INCREMENT,
    FullName VARCHAR(255) NOT NULL,
    Login VARCHAR(100) NOT NULL UNIQUE,
    Password VARCHAR(50) NOT NULL,
    RoleID INT NOT NULL,
    FOREIGN KEY (RoleID) REFERENCES Roles(RoleID)
);

CREATE TABLE Manufacturers (
    ManufacturerID INT PRIMARY KEY AUTO_INCREMENT,
    ManufacturerName VARCHAR(255) NOT NULL UNIQUE
);

CREATE TABLE Suppliers (
    SupplierID INT PRIMARY KEY AUTO_INCREMENT,
    SupplierName VARCHAR(255) NOT NULL UNIQUE
);

CREATE TABLE Categories (
    CategoryID INT PRIMARY KEY AUTO_INCREMENT,
    CategoryName VARCHAR(255) NOT NULL UNIQUE
);

CREATE TABLE Units (
    UnitID INT PRIMARY KEY AUTO_INCREMENT,
    UnitName VARCHAR(50) NOT NULL UNIQUE
);

CREATE TABLE Products (
    Article VARCHAR(20) PRIMARY KEY,
    ProductName VARCHAR(255) NOT NULL,
    UnitID INT NOT NULL,
    Price DECIMAL(10,2) NOT NULL,
    SupplierID INT NOT NULL,
    ManufacturerID INT NOT NULL,
    CategoryID INT NOT NULL,
    Discount DECIMAL(5,2) DEFAULT 0,
    StockQuantity INT NOT NULL DEFAULT 0,
    Description TEXT,
    Photo VARCHAR(255),
    FOREIGN KEY (UnitID) REFERENCES Units(UnitID),
    FOREIGN KEY (SupplierID) REFERENCES Suppliers(SupplierID),
    FOREIGN KEY (ManufacturerID) REFERENCES Manufacturers(ManufacturerID),
    FOREIGN KEY (CategoryID) REFERENCES Categories(CategoryID)
);

CREATE TABLE Cities (
    CityID INT PRIMARY KEY AUTO_INCREMENT,
    CityName VARCHAR(100) NOT NULL,
    PostalCode VARCHAR(20) NOT NULL,
    INDEX idx_city_postal (CityName, PostalCode)
);

CREATE TABLE Streets (
    StreetID INT PRIMARY KEY AUTO_INCREMENT,
    StreetName VARCHAR(255) NOT NULL,
    CityID INT NOT NULL,
    INDEX idx_street_city (StreetName, CityID),
    FOREIGN KEY (CityID) REFERENCES Cities(CityID)
);

CREATE TABLE PickupPoints (
    PickupPointID INT PRIMARY KEY AUTO_INCREMENT,
    StreetID INT NOT NULL,
    BuildingNumber VARCHAR(20) NOT NULL,
    FullAddress VARCHAR(255) NOT NULL UNIQUE,
    FOREIGN KEY (StreetID) REFERENCES Streets(StreetID),
    INDEX idx_pickup_street (StreetID)
);

CREATE TABLE OrderStatuses (
    StatusID INT PRIMARY KEY AUTO_INCREMENT,
    StatusName VARCHAR(50) NOT NULL UNIQUE
);

CREATE TABLE Orders (
    OrderNumber INT PRIMARY KEY,
    OrderDate DATETIME NOT NULL,
    DeliveryDate DATE,
    PickupPointID INT NOT NULL,
    UserID INT NOT NULL,
    PickupCode VARCHAR(20) NOT NULL,
    StatusID INT NOT NULL,
    FOREIGN KEY (PickupPointID) REFERENCES PickupPoints(PickupPointID),
    FOREIGN KEY (UserID) REFERENCES Users(UserID),
    FOREIGN KEY (StatusID) REFERENCES OrderStatuses(StatusID)
);

CREATE TABLE OrderItems (
    OrderItemID INT PRIMARY KEY AUTO_INCREMENT,
    OrderNumber INT NOT NULL,
    ProductArticle VARCHAR(20) NOT NULL,
    Quantity INT NOT NULL,
    FOREIGN KEY (OrderNumber) REFERENCES Orders(OrderNumber),
    FOREIGN KEY (ProductArticle) REFERENCES Products(Article)
);

INSERT INTO Roles (RoleName) VALUES
('Администратор'),
('Менеджер'),
('Авторизированный клиент');

INSERT INTO Users (FullName, Login, Password, RoleID) VALUES
('Никифорова Весения Николаевна', '94d5ous@gmail.com', 'uzWC67', 1),
('Сазонов Руслан Германович', 'uth4iz@mail.com', '2L6KZG', 1),
('Одинцов Серафим Артёмович', 'yzls62@outlook.com', 'JlFRCZ', 1),
('Степанов Михаил Артёмович', '1diph5e@tutanota.com', '8ntwUp', 2),
('Ворсин Петр Евгеньевич', 'tjde7c@yahoo.com', 'YOyhfR', 2),
('Старикова Елена Павловна', 'wpmrc3do@tutanota.com', 'RSbvHv', 2),
('Михайлюк Анна Вячеславовна', '5d4zbu@tutanota.com', 'rwVDh9', 3),
('Ситдикова Елена Анатольевна', 'ptec8ym@yahoo.com', 'LdNyos', 3),
('Ворсин Петр Евгеньевич', '1qz4kw@mail.com', 'gynQMT', 3),
('Старикова Елена Павловна', '4np6se@mail.com', 'AtnDjr', 3);

INSERT INTO Manufacturers (ManufacturerName) VALUES
('Kari'),
('Marco Tozzi'),
('Рос'),
('Rieker'),
('Alessio Nesca'),
('CROSBY');

INSERT INTO Suppliers (SupplierName) VALUES
('Kari'),
('Обувь для вас');

INSERT INTO Categories (CategoryName) VALUES
('Женская обувь'),
('Мужская обувь');

INSERT INTO Units (UnitName) VALUES
('шт.');

INSERT INTO Products (Article, ProductName, UnitID, Price, SupplierID, ManufacturerID, CategoryID, Discount, StockQuantity, Description, Photo) VALUES
('А112Т4', 'Ботинки', 1, 4990, 1, 1, 1, 3, 6, 'Женские Ботинки демисезонные kari', '1.jpg'),
('F635R4', 'Ботинки', 1, 3244, 2, 2, 1, 2, 13, 'Ботинки Marco Tozzi женские демисезонные, размер 39, цвет бежевый', '2.jpg'),
('H782T5', 'Туфли', 1, 4499, 1, 1, 2, 4, 5, 'Туфли kari мужские классика MYZ21AW-450A, размер 43, цвет: черный', '3.jpg'),
('G783F5', 'Ботинки', 1, 5900, 1, 3, 2, 2, 8, 'Мужские ботинки Рос-Обувь кожаные с натуральным мехом', '4.jpg'),
('J384T6', 'Ботинки', 1, 3800, 2, 4, 2, 2, 16, 'B3430/14 Полуботинки мужские Rieker', '5.jpg'),
('D572U8', 'Кроссовки', 1, 4100, 2, 3, 2, 3, 6, '129615-4 Кроссовки мужские', '6.jpg'),
('F572H7', 'Туфли', 1, 2700, 1, 2, 1, 2, 14, 'Туфли Marco Tozzi женские летние, размер 39, цвет черный', '7.jpg'),
('D329H3', 'Полуботинки', 1, 1890, 2, 5, 1, 4, 4, 'Полуботинки Alessio Nesca женские 3-30797-47, размер 37, цвет: бордовый', '8.jpg'),
('B320R5', 'Туфли', 1, 4300, 1, 4, 1, 2, 6, 'Туфли Rieker женские демисезонные, размер 41, цвет коричневый', '9.jpg'),
('G432E4', 'Туфли', 1, 2800, 1, 1, 1, 3, 15, 'Туфли kari женские TR-YR-413017, размер 37, цвет: черный', '10.jpg'),
('S213E3', 'Полуботинки', 1, 2156, 2, 6, 2, 3, 6, '407700/01-01 Полуботинки мужские CROSBY', NULL),
('E482R4', 'Полуботинки', 1, 1800, 1, 1, 1, 2, 14, 'Полуботинки kari женские MYZ20S-149, размер 41, цвет: черный', NULL),
('S634B5', 'Кеды', 1, 5500, 2, 6, 2, 3, 0, 'Кеды Caprice мужские демисезонные, размер 42, цвет черный', NULL),
('K345R4', 'Полуботинки', 1, 2100, 2, 6, 2, 2, 3, '407700/01-02 Полуботинки мужские CROSBY', NULL),
('O754F4', 'Туфли', 1, 5400, 2, 4, 1, 4, 18, 'Туфли женские демисезонные Rieker артикул 55073-68/37', NULL),
('G531F4', 'Ботинки', 1, 6600, 1, 1, 1, 12, 9, 'Ботинки женские зимние ROMER арт. 893167-01 Черный', NULL),
('J542F5', 'Тапочки', 1, 500, 1, 1, 2, 13, 0, 'Тапочки мужские Арт.70701-55-67син р.41', NULL),
('B431R5', 'Ботинки', 1, 2700, 2, 4, 2, 2, 5, 'Мужские кожаные ботинки/мужские ботинки', NULL),
('P764G4', 'Туфли', 1, 6800, 1, 6, 1, 15, 15, 'Туфли женские, ARGO, размер 38', NULL),
('C436G5', 'Ботинки', 1, 10200, 1, 5, 1, 15, 9, 'Ботинки женские, ARGO, размер 40', NULL),
('F427R5', 'Ботинки', 1, 11800, 2, 4, 1, 15, 11, 'Ботинки на молнии с декоративной пряжкой FRAU', NULL),
('N457T5', 'Полуботинки', 1, 4600, 1, 6, 1, 3, 13, 'Полуботинки Ботинки черные зимние, мех', NULL),
('D364R4', 'Туфли', 1, 12400, 1, 1, 1, 16, 5, 'Туфли Luiza Belly женские Kate-lazo черные из натуральной замши', NULL),
('S326R5', 'Тапочки', 1, 9900, 2, 6, 2, 17, 15, 'Мужские кожаные тапочки "Профиль С.Дали"', NULL),
('L754R4', 'Полуботинки', 1, 1700, 1, 1, 1, 2, 7, 'Полуботинки kari женские WB2020SS-26, размер 38, цвет: черный', NULL),
('M542T5', 'Кроссовки', 1, 2800, 2, 4, 2, 18, 3, 'Кроссовки мужские TOFA', NULL),
('D268G5', 'Туфли', 1, 4399, 2, 4, 1, 3, 12, 'Туфли Rieker женские демисезонные, размер 36, цвет коричневый', NULL),
('T324F5', 'Сапоги', 1, 4699, 1, 6, 1, 2, 5, 'Сапоги замша Цвет: синий', NULL),
('K358H6', 'Тапочки', 1, 599, 1, 4, 2, 20, 2, 'Тапочки мужские син р.41', NULL),
('H535R5', 'Ботинки', 1, 2300, 2, 4, 1, 2, 7, 'Женские Ботинки демисезонные', NULL);

INSERT INTO Cities (CityName, PostalCode) VALUES
('Лесной', '420151'),
('Лесной', '125061'),
('Лесной', '630370'),
('Лесной', '400562'),
('Лесной', '614510'),
('Лесной', '410542'),
('Лесной', '620839'),
('Лесной', '443890'),
('Лесной', '603379'),
('Лесной', '603721'),
('Лесной', '410172'),
('Лесной', '614611'),
('Лесной', '454311'),
('Лесной', '660007'),
('Лесной', '603036'),
('Лесной', '394060'),
('Лесной', '410661'),
('Лесной', '625590'),
('Лесной', '625683'),
('Лесной', '450983'),
('Лесной', '394782'),
('Лесной', '603002'),
('Лесной', '450558'),
('Лесной', '344288'),
('Лесной', '614164'),
('Лесной', '394242'),
('Лесной', '660540'),
('Лесной', '125837'),
('Лесной', '125703'),
('Лесной', '625283'),
('Лесной', '614753'),
('Лесной', '426030'),
('Лесной', '450375'),
('Лесной', '625560'),
('Лесной', '630201'),
('Лесной', '190949');

INSERT INTO Streets (StreetName, CityID) VALUES
('ул. Вишневая', 1),
('ул. Подгорная', 2),
('ул. Шоссейная', 3),
('ул. Зеленая', 4),
('ул. Маяковского', 5),
('ул. Светлая', 6),
('ул. Цветочная', 7),
('ул. Коммунистическая', 8),
('ул. Спортивная', 9),
('ул. Гоголя', 10),
('ул. Северная', 11),
('ул. Молодежная', 12),
('ул. Новая', 13),
('ул. Октябрьская', 14),
('ул. Садовая', 15),
('ул. Фрунзе', 16),
('ул. Школьная', 17),
('ул. Коммунистическая', 18),
('ул. 8 Марта', 19),
('ул. Комсомольская', 20),
('ул. Чехова', 21),
('ул. Дзержинского', 22),
('ул. Набережная', 23),
('ул. Чехова', 24),
('ул. Степная', 25),
('ул. Коммунистическая', 26),
('ул. Солнечная', 27),
('ул. Шоссейная', 28),
('ул. Партизанская', 29),
('ул. Победы', 30),
('ул. Полевая', 31),
('ул. Маяковского', 32),
('ул. Клубная', 33),
('ул. Некрасова', 34),
('ул. Комсомольская', 35),
('ул. Мичурина', 36);

INSERT INTO PickupPoints (StreetID, BuildingNumber, FullAddress) VALUES
(1, '32', '420151, г. Лесной, ул. Вишневая, 32'),
(2, '8', '125061, г. Лесной, ул. Подгорная, 8'),
(3, '24', '630370, г. Лесной, ул. Шоссейная, 24'),
(4, '32', '400562, г. Лесной, ул. Зеленая, 32'),
(5, '47', '614510, г. Лесной, ул. Маяковского, 47'),
(6, '46', '410542, г. Лесной, ул. Светлая, 46'),
(7, '8', '620839, г. Лесной, ул. Цветочная, 8'),
(8, '1', '443890, г. Лесной, ул. Коммунистическая, 1'),
(9, '46', '603379, г. Лесной, ул. Спортивная, 46'),
(10, '41', '603721, г. Лесной, ул. Гоголя, 41'),
(11, '13', '410172, г. Лесной, ул. Северная, 13'),
(12, '50', '614611, г. Лесной, ул. Молодежная, 50'),
(13, '19', '454311, г.Лесной, ул. Новая, 19'),
(14, '19', '660007, г.Лесной, ул. Октябрьская, 19'),
(15, '4', '603036, г. Лесной, ул. Садовая, 4'),
(16, '43', '394060, г.Лесной, ул. Фрунзе, 43'),
(17, '50', '410661, г. Лесной, ул. Школьная, 50'),
(18, '20', '625590, г. Лесной, ул. Коммунистическая, 20'),
(19, '0', '625683, г. Лесной, ул. 8 Марта'),
(20, '26', '450983, г.Лесной, ул. Комсомольская, 26'),
(21, '3', '394782, г. Лесной, ул. Чехова, 3'),
(22, '28', '603002, г. Лесной, ул. Дзержинского, 28'),
(23, '30', '450558, г. Лесной, ул. Набережная, 30'),
(24, '1', '344288, г. Лесной, ул. Чехова, 1'),
(25, '30', '614164, г.Лесной, ул. Степная, 30'),
(26, '43', '394242, г. Лесной, ул. Коммунистическая, 43'),
(27, '25', '660540, г. Лесной, ул. Солнечная, 25'),
(28, '40', '125837, г. Лесной, ул. Шоссейная, 40'),
(29, '49', '125703, г. Лесной, ул. Партизанская, 49'),
(30, '46', '625283, г. Лесной, ул. Победы, 46'),
(31, '35', '614753, г. Лесной, ул. Полевая, 35'),
(32, '44', '426030, г. Лесной, ул. Маяковского, 44'),
(33, '44', '450375, г. Лесной ул. Клубная, 44'),
(34, '12', '625560, г. Лесной, ул. Некрасова, 12'),
(35, '17', '630201, г. Лесной, ул. Комсомольская, 17'),
(36, '26', '190949, г. Лесной, ул. Мичурина, 26');

INSERT INTO OrderStatuses (StatusName) VALUES
('Завершен'),
('Новый');

INSERT INTO Orders (OrderNumber, OrderDate, DeliveryDate, PickupPointID, UserID, PickupCode, StatusID) VALUES
(1, '2025-02-27 00:00:00', '2025-04-20', 1, 4, '901', 1),
(2, '2022-09-28 00:00:00', '2025-04-21', 11, 1, '902', 1),
(3, '2025-03-21 00:00:00', '2025-04-22', 2, 2, '903', 1),
(4, '2025-02-20 00:00:00', '2025-04-23', 11, 3, '904', 1),
(5, '2025-03-17 00:00:00', '2025-04-24', 2, 4, '905', 1),
(6, '2025-03-01 00:00:00', '2025-04-25', 15, 1, '906', 1),
(7, '2025-02-28 00:00:00', '2025-04-26', 3, 2, '907', 1),
(8, '2025-03-31 00:00:00', '2025-04-27', 19, 3, '908', 2),
(9, '2025-04-02 00:00:00', '2025-04-28', 5, 4, '909', 2),
(10, '2025-04-03 00:00:00', '2025-04-29', 19, 4, '910', 2);

INSERT INTO OrderItems (OrderNumber, ProductArticle, Quantity) VALUES
(1, 'А112Т4', 2),
(1, 'F635R4', 2),
(2, 'H782T5', 1),
(2, 'G783F5', 1),
(3, 'J384T6', 10),
(3, 'D572U8', 10),
(4, 'F572H7', 5),
(4, 'D329H3', 4),
(5, 'А112Т4', 2),
(5, 'F635R4', 2),
(6, 'H782T5', 1),
(6, 'G783F5', 1),
(7, 'J384T6', 10),
(7, 'D572U8', 10),
(8, 'F572H7', 5),
(8, 'D329H3', 4),
(9, 'B320R5', 5),
(9, 'G432E4', 1),
(10, 'S213E3', 5),
(10, 'E482R4', 5);