From 2ac81052cab1d62302e992a818df37031b49de7a Mon Sep 17 00:00:00 2001 From: Denys Sheremeta Date: Sun, 13 Jul 2025 15:49:03 +0300 Subject: [PATCH] Solution --- task.sql | 60 ++++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 39 insertions(+), 21 deletions(-) diff --git a/task.sql b/task.sql index cc65344..e861b74 100644 --- a/task.sql +++ b/task.sql @@ -4,30 +4,48 @@ CREATE DATABASE ShopDB; USE ShopDB; CREATE TABLE Countries ( - ID INT, - Name VARCHAR(50), - PRIMARY KEY (ID) + ID INT AUTO_INCREMENT PRIMARY KEY, + Name VARCHAR(50) NOT NULL ); -CREATE TABLE ProductInventory ( - ID INT, - ProductName VARCHAR(50), - WarehouseAmount INT, - WarehouseName VARCHAR(50), - WarehouseAddress VARCHAR(50), - CountryID INT, - FOREIGN KEY (CountryID) REFERENCES Countries(ID) ON DELETE NO ACTION, - PRIMARY KEY (ID) +CREATE TABLE Products ( + ID INT AUTO_INCREMENT PRIMARY KEY, + Name VARCHAR(50) NOT NULL +); + +CREATE TABLE Warehouses ( + ID INT AUTO_INCREMENT PRIMARY KEY, + Name VARCHAR(50) NOT NULL, + Address VARCHAR(100) NOT NULL, + CountryID INT NOT NULL, + FOREIGN KEY (CountryID) REFERENCES Countries(ID) + ON DELETE RESTRICT +); + +CREATE TABLE Inventory ( + ProductID INT NOT NULL, + WarehouseID INT NOT NULL, + Amount INT NOT NULL, + PRIMARY KEY (ProductID, WarehouseID), + FOREIGN KEY (ProductID) REFERENCES Products(ID) + ON DELETE CASCADE, + FOREIGN KEY (WarehouseID) REFERENCES Warehouses(ID) + ON DELETE CASCADE ); -- Populate test data -INSERT INTO Countries (ID,Name) - VALUES (1, 'Country1'); -INSERT INTO Countries (ID,Name) - VALUES (2, 'Country2'); - -INSERT INTO ProductInventory (ID,ProductName,WarehouseAmount,WarehouseName,WarehouseAddress,CountryID) - VALUES (1, 'AwersomeProduct', 2, 'Warehouse-1', 'City-1, Street-1',1); -INSERT INTO ProductInventory (ID,ProductName,WarehouseAmount,WarehouseName,WarehouseAddress,CountryID) - VALUES (2, 'AwersomeProduct', 5, 'Warehouse-2', 'City-2, Street-2',2); +INSERT INTO Countries (Name) VALUES + ('Country1'), + ('Country2'); + +INSERT INTO Products (Name) VALUES + ('AwesomeProduct'); + +INSERT INTO Warehouses (Name, Address, CountryID) VALUES + ('Warehouse-1', 'City-1, Street-1', 1), + ('Warehouse-2', 'City-2, Street-2', 2); + +INSERT INTO Inventory (ProductID, WarehouseID, Amount) VALUES + (1, 1, 2), + (1, 2, 5);