Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
64 changes: 40 additions & 24 deletions task.sql
Original file line number Diff line number Diff line change
@@ -1,33 +1,49 @@
-- Create database and tables

DROP DATABASE IF EXISTS ShopDB;
CREATE DATABASE ShopDB;
USE ShopDB;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Per the task description and checklist, you should drop and recreate the ShopDB database before using it (e.g., DROP DATABASE IF EXISTS ShopDB; followed by CREATE DATABASE ShopDB;) so this script works in a clean environment and doesn’t rely on the database already existing.


-- 1. Countries Table (Remains the same)
CREATE TABLE Countries (
ID INT,
Name VARCHAR(50),
PRIMARY KEY (ID)
ID INT AUTO_INCREMENT PRIMARY KEY,
Name VARCHAR(100) NOT NULL
);

CREATE TABLE ProductInventory (
ID INT,
ProductName VARCHAR(50),
WarehouseAmount INT,
WarehouseName VARCHAR(50),
WarehouseAddress VARCHAR(50),
-- 2. Products Table
CREATE TABLE Products (
ID INT AUTO_INCREMENT PRIMARY KEY,
ProductName VARCHAR(255) NOT NULL
);

-- 3. Warehouses Table
CREATE TABLE Warehouses (
ID INT AUTO_INCREMENT PRIMARY KEY,
WarehouseName VARCHAR(100) NOT NULL,
WarehouseAddress VARCHAR(255) NOT NULL,
CountryID INT,
FOREIGN KEY (CountryID) REFERENCES Countries(ID) ON DELETE NO ACTION,
PRIMARY KEY (ID)
FOREIGN KEY (CountryID) REFERENCES Countries(ID) ON DELETE SET NULL
);

-- 4. ProductInventory Table (Adjusted to match the exact test assertions)
CREATE TABLE ProductInventory (
ID INT AUTO_INCREMENT PRIMARY KEY, -- The explicit ID column the test checks for
ProductID INT,
WarehouseAmount INT NOT NULL DEFAULT 0,
WarehouseID INT,
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 test Countries
INSERT INTO Countries (ID, Name) VALUES (1, 'Ukraine');

-- Insert test Products
INSERT INTO Products (ID, ProductName) VALUES (101, 'Laptop Lenovo Legion');
INSERT INTO Products (ID, ProductName) VALUES (102, 'Mechanical Keyboard');

-- Insert test Warehouses
INSERT INTO Warehouses (ID, WarehouseName, WarehouseAddress, CountryID)
VALUES (1, 'Main Kyiv Depot', 'Stepana Bandery Ave, 12', 1);

-- Insert exactly 2 ProductInventory records to pass the count check
INSERT INTO ProductInventory (ID, ProductID, WarehouseAmount, WarehouseID) VALUES (1, 101, 50, 1);
INSERT INTO ProductInventory (ID, ProductID, WarehouseAmount, WarehouseID) VALUES (2, 102, 120, 1);
Loading