From 9810c12128a03bdb1805ca8ae4fe26ff108da100 Mon Sep 17 00:00:00 2001 From: Ivan Sotsenko Date: Thu, 14 May 2026 23:13:36 +0200 Subject: [PATCH 1/2] Solution --- task.sql | 41 ++++++++++++++++++++++++++++++++++------- 1 file changed, 34 insertions(+), 7 deletions(-) diff --git a/task.sql b/task.sql index cc65344..289653b 100644 --- a/task.sql +++ b/task.sql @@ -9,15 +9,34 @@ CREATE TABLE Countries ( PRIMARY KEY (ID) ); + +CREATE TABLE Product( + ID INT, + Name VARCHAR(50), + PRIMARY KEY (ID) +); + + +CREATE TABLE Warehouses( + ID INT, + Name VARCHAR(50), + City VARCHAR(50), + Address VARCHAR(50), + PRIMARY KEY (ID) +); + + CREATE TABLE ProductInventory ( ID INT, - ProductName VARCHAR(50), + ProductID INT, WarehouseAmount INT, - WarehouseName VARCHAR(50), - WarehouseAddress VARCHAR(50), + WarehouseID INT, CountryID INT, FOREIGN KEY (CountryID) REFERENCES Countries(ID) ON DELETE NO ACTION, + FOREIGN KEY (ProductID) REFERENCES Product(ID) ON DELETE NO ACTION, + FOREIGN KEY (WarehouseID) REFERENCES Warehouses(ID) ON DELETE NO ACTION, PRIMARY KEY (ID) + ); -- Populate test data @@ -26,8 +45,16 @@ INSERT INTO Countries (ID,Name) VALUES (1, 'Country1'); INSERT INTO Countries (ID,Name) VALUES (2, 'Country2'); + +INSERT INTO Product (ID,Name) + VALUES (1, 'AwersomeProduct'); + +INSERT INTO Warehouses(ID,Name,City,Address) + VALUES (1, 'Warehouse-1', 'City-1', 'Street-1'); +INSERT INTO Warehouses(ID,Name,City,Address) + VALUES (2, 'Warehouse-2', 'City-2', 'Street-2'); -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 ProductInventory (ID,ProductID,WarehouseAmount,WarehouseID,CountryID) + VALUES (1, 1, 2, 1,1); +INSERT INTO ProductInventory (ID,ProductID,WarehouseAmount,WarehouseID,CountryID) + VALUES (2, 1, 5, 2,2); From 21b9e0766d7d1bdec80418ac8d6a03d15034efde Mon Sep 17 00:00:00 2001 From: Ivan Sotsenko Date: Thu, 14 May 2026 23:26:23 +0200 Subject: [PATCH 2/2] Normalize database to 3NF --- task.sql | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/task.sql b/task.sql index 289653b..47bb5d8 100644 --- a/task.sql +++ b/task.sql @@ -22,6 +22,8 @@ CREATE TABLE Warehouses( Name VARCHAR(50), City VARCHAR(50), Address VARCHAR(50), + CountryID INT, + FOREIGN KEY (CountryID) REFERENCES Countries(ID) ON DELETE NO ACTION, PRIMARY KEY (ID) ); @@ -31,8 +33,6 @@ CREATE TABLE ProductInventory ( ProductID INT, WarehouseAmount INT, WarehouseID INT, - CountryID INT, - FOREIGN KEY (CountryID) REFERENCES Countries(ID) ON DELETE NO ACTION, FOREIGN KEY (ProductID) REFERENCES Product(ID) ON DELETE NO ACTION, FOREIGN KEY (WarehouseID) REFERENCES Warehouses(ID) ON DELETE NO ACTION, PRIMARY KEY (ID) @@ -49,12 +49,12 @@ INSERT INTO Countries (ID,Name) INSERT INTO Product (ID,Name) VALUES (1, 'AwersomeProduct'); -INSERT INTO Warehouses(ID,Name,City,Address) - VALUES (1, 'Warehouse-1', 'City-1', 'Street-1'); -INSERT INTO Warehouses(ID,Name,City,Address) - VALUES (2, 'Warehouse-2', 'City-2', 'Street-2'); +INSERT INTO Warehouses(ID,Name,City,Address,CountryID) + VALUES (1, 'Warehouse-1', 'City-1', 'Street-1', 1); +INSERT INTO Warehouses(ID,Name,City,Address,CountryID) + VALUES (2, 'Warehouse-2', 'City-2', 'Street-2', 2); -INSERT INTO ProductInventory (ID,ProductID,WarehouseAmount,WarehouseID,CountryID) - VALUES (1, 1, 2, 1,1); -INSERT INTO ProductInventory (ID,ProductID,WarehouseAmount,WarehouseID,CountryID) - VALUES (2, 1, 5, 2,2); +INSERT INTO ProductInventory (ID,ProductID,WarehouseAmount,WarehouseID) + VALUES (1, 1, 2, 1); +INSERT INTO ProductInventory (ID,ProductID,WarehouseAmount,WarehouseID) + VALUES (2, 1, 5, 2);