From eb43455579b6cc39c19a96bbc1648f0c4b84fbdc Mon Sep 17 00:00:00 2001 From: Anton Gaievyi Date: Fri, 8 May 2026 16:03:18 +0200 Subject: [PATCH 1/3] Restructered DataBase to 2,3 NormalizationForm, Remade Inserts, Implemented a many-to-many relationship by adding a ProductWarehouse table, which is causing the tests to fail --- task.sql | 81 ++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 70 insertions(+), 11 deletions(-) diff --git a/task.sql b/task.sql index cc65344..2dc945c 100644 --- a/task.sql +++ b/task.sql @@ -9,25 +9,84 @@ CREATE TABLE Countries ( PRIMARY KEY (ID) ); -CREATE TABLE ProductInventory ( +CREATE TABLE Cities ( + ID INT, + Name VARCHAR (50), + CountryID INT, + FOREIGN KEY (CountryID) + REFERENCES Countries (ID) + ON DELETE NO ACTION, + PRIMARY KEY (ID) +); + +CREATE TABLE Streets ( + ID INT, + Name VARCHAR (50), + CityID INT, + FOREIGN KEY (CityID) + REFERENCES Cities (ID) + ON DELETE NO ACTION, + PRIMARY KEY (ID) +); + +CREATE TABLE Warehouses ( + ID INT, + WarehouseName VARCHAR(50), + StreetID INT, + FOREIGN KEY (StreetID) + REFERENCES Streets (ID) + ON DELETE NO ACTION, + PRIMARY KEY (ID) +); + +CREATE TABLE Products ( 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 ProductWarehouse ( + ProductID INT, + FOREIGN KEY (ProductID) + REFERENCES Products (ID) + ON DELETE NO ACTION, + WarehouseID INT, + FOREIGN KEY (WarehouseID) + REFERENCES Warehouses (ID) + ON DELETE NO ACTION, + Amount INT, + PRIMARY KEY (ProductID, WarehouseID) +); + -- 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 Products (ID, ProductName) + VALUES (1, 'AwersomeProduct'); +INSERT INTO Cities (ID, Name, CountryID) + VALUES (1, 'City-1', 1); +INSERT INTO Streets (ID, Name, CityID) + VALUES (1, 'Street-1', 1); +INSERT INTO Warehouses (ID, WarehouseName, StreetID) + VALUES (1, 'Warehouse-1', 1); +INSERT INTO ProductWarehouse (ProductID, WarehouseID, Amount) + VALUES (1, 1, 2); + + + +INSERT INTO Products (ID, ProductName) + VALUES (2, 'AwersomeProduct'); +INSERT INTO Cities (ID, Name, CountryID) + VALUES (2, 'City-2', 2); +INSERT INTO Streets (ID, Name, CityID) + VALUES (2, 'Street-2', 2); +INSERT INTO Warehouses (ID, WarehouseName, StreetID) + VALUES (2, 'Warehouse-2', 2); +INSERT INTO ProductWarehouse (ProductID, WarehouseID, Amount) + VALUES (2, 2, 5); From f4b781cbd13fb223fdbbb932c2b64e1358eb786e Mon Sep 17 00:00:00 2001 From: Anton Gaievyi Date: Fri, 8 May 2026 16:13:04 +0200 Subject: [PATCH 2/3] Renamed ProductWarehouse to ProductInventory --- task.sql | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/task.sql b/task.sql index 2dc945c..3b71f2b 100644 --- a/task.sql +++ b/task.sql @@ -45,7 +45,7 @@ CREATE TABLE Products ( PRIMARY KEY (ID) ); -CREATE TABLE ProductWarehouse ( +CREATE TABLE ProductInventory ( ProductID INT, FOREIGN KEY (ProductID) REFERENCES Products (ID) @@ -75,7 +75,7 @@ INSERT INTO Streets (ID, Name, CityID) VALUES (1, 'Street-1', 1); INSERT INTO Warehouses (ID, WarehouseName, StreetID) VALUES (1, 'Warehouse-1', 1); -INSERT INTO ProductWarehouse (ProductID, WarehouseID, Amount) +INSERT INTO ProductInventory (ProductID, WarehouseID, Amount) VALUES (1, 1, 2); @@ -88,5 +88,5 @@ INSERT INTO Streets (ID, Name, CityID) VALUES (2, 'Street-2', 2); INSERT INTO Warehouses (ID, WarehouseName, StreetID) VALUES (2, 'Warehouse-2', 2); -INSERT INTO ProductWarehouse (ProductID, WarehouseID, Amount) +INSERT INTO ProductInventory (ProductID, WarehouseID, Amount) VALUES (2, 2, 5); From 0978cb8e467c97703ae1dbcce283201415ad9d3d Mon Sep 17 00:00:00 2001 From: Anton Gaievyi Date: Fri, 8 May 2026 16:44:14 +0200 Subject: [PATCH 3/3] Renamed task according to tests --- task.sql | 86 ++++++++++++++++---------------------------------------- 1 file changed, 25 insertions(+), 61 deletions(-) diff --git a/task.sql b/task.sql index 3b71f2b..a403355 100644 --- a/task.sql +++ b/task.sql @@ -9,84 +9,48 @@ CREATE TABLE Countries ( PRIMARY KEY (ID) ); -CREATE TABLE Cities ( +CREATE TABLE Product ( ID INT, - Name VARCHAR (50), - CountryID INT, - FOREIGN KEY (CountryID) - REFERENCES Countries (ID) - ON DELETE NO ACTION, + Name VARCHAR(50), PRIMARY KEY (ID) ); -CREATE TABLE Streets ( - ID INT, - Name VARCHAR (50), - CityID INT, - FOREIGN KEY (CityID) - REFERENCES Cities (ID) - ON DELETE NO ACTION, - PRIMARY KEY (ID) -); - CREATE TABLE Warehouses ( ID INT, - WarehouseName VARCHAR(50), - StreetID INT, - FOREIGN KEY (StreetID) - REFERENCES Streets (ID) - ON DELETE NO ACTION, - PRIMARY KEY (ID) -); - -CREATE TABLE Products ( - ID INT, - ProductName VARCHAR(50), + Name VARCHAR(50), + CityName VARCHAR(50), + StreetName VARCHAR(50), + CountryID INT, + FOREIGN KEY (CountryID) REFERENCES Countries(ID) ON DELETE NO ACTION, PRIMARY KEY (ID) ); CREATE TABLE ProductInventory ( - ProductID INT, - FOREIGN KEY (ProductID) - REFERENCES Products (ID) - ON DELETE NO ACTION, - WarehouseID INT, - FOREIGN KEY (WarehouseID) - REFERENCES Warehouses (ID) - ON DELETE NO ACTION, + ID INT, Amount INT, - PRIMARY KEY (ProductID, WarehouseID) + WarehouseID INT, + FOREIGN KEY (WarehouseID) REFERENCES Warehouses(ID) ON DELETE NO ACTION, + ProductID INT, + FOREIGN KEY (ProductID) REFERENCES Product(ID) ON DELETE NO ACTION, + PRIMARY KEY (ID) ); -- Populate test data INSERT INTO Countries (ID,Name) VALUES (1, 'Country1'); -INSERT INTO Countries (ID,Name) - VALUES (2, 'Country2'); - - - -INSERT INTO Products (ID, ProductName) +INSERT INTO Product (ID, Name) VALUES (1, 'AwersomeProduct'); -INSERT INTO Cities (ID, Name, CountryID) - VALUES (1, 'City-1', 1); -INSERT INTO Streets (ID, Name, CityID) - VALUES (1, 'Street-1', 1); -INSERT INTO Warehouses (ID, WarehouseName, StreetID) - VALUES (1, 'Warehouse-1', 1); -INSERT INTO ProductInventory (ProductID, WarehouseID, Amount) - VALUES (1, 1, 2); +INSERT INTO Warehouses (ID, Name, CityName, StreetName, CountryID) + VALUES (1, 'Warehouse-1', 'City-1', 'Street-1', 1); +INSERT INTO ProductInventory (ID, Amount, WarehouseID, ProductID) + VALUES (1, 2, 1, 1); - - -INSERT INTO Products (ID, ProductName) +INSERT INTO Countries (ID, Name) + VALUES (2, 'Country2'); +INSERT INTO Product (ID, Name) VALUES (2, 'AwersomeProduct'); -INSERT INTO Cities (ID, Name, CountryID) - VALUES (2, 'City-2', 2); -INSERT INTO Streets (ID, Name, CityID) - VALUES (2, 'Street-2', 2); -INSERT INTO Warehouses (ID, WarehouseName, StreetID) - VALUES (2, 'Warehouse-2', 2); -INSERT INTO ProductInventory (ProductID, WarehouseID, Amount) - VALUES (2, 2, 5); +INSERT INTO Warehouses (ID, Name, CityName, StreetName, CountryID) + VALUES (2, 'Warehouse-2', 'City-2', 'Street-2', 2); +INSERT INTO ProductInventory (ID, Amount, WarehouseID, ProductID) + VALUES (2, 5, 2, 2);