From 7ddc9fef2b8e9bbd370d68d44f0986345973b449 Mon Sep 17 00:00:00 2001 From: Yuriy Mishchuk Date: Wed, 22 Apr 2026 20:46:40 +0300 Subject: [PATCH 1/6] Normalize ShopDB to 3NF --- task.sql | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/task.sql b/task.sql index cc65344..2de0e08 100644 --- a/task.sql +++ b/task.sql @@ -21,6 +21,34 @@ CREATE TABLE ProductInventory ( ); -- Populate test data +CREATE TABLE Countries ( +ID INT AUTO_INCREMENT PRIMARY KEY, + Name VARCHAR(255) +); + +CREATE TABLE Products( +ID INT AUTO_INCREMENT PRIMARY KEY, +NAME VARCHAR(255) +); + +CREATE TABLE Warehouses( +ID INT AUTO_INCREMENT PRIMARY KEY, +Name VARCHAR(255), +Address VARCHAR(255), +CountryID INT, +FOREIGN KEY (CountryID) REFERENCES Countries(ID) +); + + +CREATE TABLE ProductInventory ( + ProductID INT, + WarehouseID INT, + Amount INT, + PRIMARY KEY (ProductID, WarehouseID), + FOREIGN KEY (ProductID) REFERENCES Products(ID), + FOREIGN KEY (WarehouseID) REFERENCES Warehouses(ID) +); + INSERT INTO Countries (ID,Name) VALUES (1, 'Country1'); From 191cb96f5d4e9bf81ba5504f25ecbab49c92f2ab Mon Sep 17 00:00:00 2001 From: Yuriy Mishchuk Date: Wed, 22 Apr 2026 21:13:55 +0300 Subject: [PATCH 2/6] Normalize ShopDB to 3NF fixed --- task.sql | 36 ++++++++++++------------------------ 1 file changed, 12 insertions(+), 24 deletions(-) diff --git a/task.sql b/task.sql index 2de0e08..b890580 100644 --- a/task.sql +++ b/task.sql @@ -3,23 +3,6 @@ CREATE DATABASE ShopDB; USE ShopDB; -CREATE TABLE Countries ( - ID INT, - Name VARCHAR(50), - PRIMARY KEY (ID) -); - -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) -); - -- Populate test data CREATE TABLE Countries ( ID INT AUTO_INCREMENT PRIMARY KEY, @@ -51,11 +34,16 @@ CREATE TABLE ProductInventory ( INSERT INTO Countries (ID,Name) - VALUES (1, 'Country1'); -INSERT INTO Countries (ID,Name) - VALUES (2, 'Country2'); + VALUES ('Country1', 'Country2'); + + +INSERT INTO Products (ID,Name) + VALUES (1, 'AwersomeProduct'); -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,Name) + VALUES (1, 'AwersomeProduct'); + +INSERT INTO ProductInventory (ProductID, WarehouseID) + VALUES ( id, 'Warehouse-2'); + + From 98aed2c5757845bc641b4e0c8a1c9faaacbe1d71 Mon Sep 17 00:00:00 2001 From: Yuriy Mishchuk Date: Fri, 24 Apr 2026 13:04:41 +0300 Subject: [PATCH 3/6] Normalize ShopDB to 3NF fixed --- task.sql | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/task.sql b/task.sql index b890580..2f3a195 100644 --- a/task.sql +++ b/task.sql @@ -33,17 +33,16 @@ CREATE TABLE ProductInventory ( ); -INSERT INTO Countries (ID,Name) - VALUES ('Country1', 'Country2'); - - -INSERT INTO Products (ID,Name) - VALUES (1, 'AwersomeProduct'); - -INSERT INTO Products (ID,Name) - VALUES (1, 'AwersomeProduct'); - -INSERT INTO ProductInventory (ProductID, WarehouseID) - VALUES ( id, 'Warehouse-2'); - +INSERT INTO Countries (Name) VALUES ('Country1'), ('Country2'); + +INSERT INTO Products (Name) VALUES ('Product1'), ('Product2'); + +INSERT INTO Warehouses (Name, Address, CountryID) +VALUES ('Warehouse-1', 'Street-1 City-1', 1), + ('Warehouse-2', 'Street-2 City-2', 2); + +INSERT INTO ProductInventory (ProductID, WarehouseID, Amount) +VALUES (1, 1, 100), + (1, 2, 50); + From 9a4b58156f50d724873d0563aa977200e397e79b Mon Sep 17 00:00:00 2001 From: Yuriy Mishchuk Date: Fri, 24 Apr 2026 14:55:29 +0300 Subject: [PATCH 4/6] all is fixed --- task.sql | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/task.sql b/task.sql index 2f3a195..1bcc719 100644 --- a/task.sql +++ b/task.sql @@ -3,7 +3,7 @@ CREATE DATABASE ShopDB; USE ShopDB; --- Populate test data + CREATE TABLE Countries ( ID INT AUTO_INCREMENT PRIMARY KEY, Name VARCHAR(255) @@ -32,6 +32,7 @@ CREATE TABLE ProductInventory ( FOREIGN KEY (WarehouseID) REFERENCES Warehouses(ID) ); +-- Populate test data INSERT INTO Countries (Name) VALUES ('Country1'), ('Country2'); From 5ce3e8c9cca1cab33e1d2b5f78aa196bc9d7af91 Mon Sep 17 00:00:00 2001 From: Yuriy Mishchuk Date: Sun, 26 Apr 2026 15:41:26 +0300 Subject: [PATCH 5/6] 3NF after fixed --- task.sql | 1 + 1 file changed, 1 insertion(+) diff --git a/task.sql b/task.sql index 1bcc719..2ff52a9 100644 --- a/task.sql +++ b/task.sql @@ -1,5 +1,6 @@ -- Create database and tables +DROP DATABASE IF EXISTS ShopDB; CREATE DATABASE ShopDB; USE ShopDB; From 89714421a0604c981b10b14a2afeef5243cc54e9 Mon Sep 17 00:00:00 2001 From: Yuriy Mishchuk Date: Sun, 26 Apr 2026 15:50:58 +0300 Subject: [PATCH 6/6] 3NF after fixed --- task.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/task.sql b/task.sql index 2ff52a9..2396506 100644 --- a/task.sql +++ b/task.sql @@ -25,10 +25,10 @@ FOREIGN KEY (CountryID) REFERENCES Countries(ID) CREATE TABLE ProductInventory ( + ID INT AUTO_INCREMENT PRIMARY KEY, ProductID INT, WarehouseID INT, Amount INT, - PRIMARY KEY (ProductID, WarehouseID), FOREIGN KEY (ProductID) REFERENCES Products(ID), FOREIGN KEY (WarehouseID) REFERENCES Warehouses(ID) );