initial db

This commit is contained in:
30205245
2025-03-11 22:28:41 -06:00
parent 9ca92d31ca
commit 864a386ba2

89
SQL_code/schemas.sql Normal file
View File

@@ -0,0 +1,89 @@
-- User Entity
CREATE TABLE User (
UserID_PK INT PRIMARY KEY,
Password VARCHAR(255),
IP VARCHAR(15),
Name VARCHAR(100),
Email VARCHAR(255),
UCID VARCHAR(20),
Phone VARCHAR(20),
Role VARCHAR(50),
Address VARCHAR(255)
);
-- Buyer, Seller, Admin are roles within User (handled by Role attribute)
-- Product Entity
CREATE TABLE Product (
ProductID_PK INT PRIMARY KEY,
ProductID VARCHAR(50),
Price DECIMAL(10, 2),
Description TEXT,
StockQuantity INT
);
-- Category Entity
CREATE TABLE Category (
CategoryID_PK INT PRIMARY KEY,
Name VARCHAR(100)
);
-- Review Entity (Many-to-One with User, Many-to-One with Product)
CREATE TABLE Review (
ReviewID INT PRIMARY KEY,
UserID_FK INT,
ProductID_FK INT,
Comment TEXT,
Rating INT CHECK (Rating >= 1 AND Rating <= 5),
Date DATE,
FOREIGN KEY (UserID_FK) REFERENCES User(UserID_PK),
FOREIGN KEY (ProductID_FK) REFERENCES Product(ProductID_PK)
);
-- Transaction Entity (Many-to-One with User, Many-to-One with Product)
CREATE TABLE Transaction (
TransactionID_PK INT PRIMARY KEY,
UserID_FK INT,
ProductID_FK INT,
Date DATE,
PaymentStatus VARCHAR(50),
FOREIGN KEY (UserID_FK) REFERENCES User(UserID_PK),
FOREIGN KEY (ProductID_FK) REFERENCES Product(ProductID_PK)
);
-- Recommendation Entity (Many-to-One with User, Many-to-One with Product)
CREATE TABLE Recommendation (
RecommendationID_PK INT PRIMARY KEY,
UserID_FK INT,
RecommendedProductID_FK INT,
FOREIGN KEY (UserID_FK) REFERENCES User(UserID_PK),
FOREIGN KEY (RecommendedProductID_FK) REFERENCES Product(ProductID_PK)
);
-- History Entity (Many-to-One with User, Many-to-One with Product)
CREATE TABLE History (
HistoryID INT PRIMARY KEY,
UserID_FK INT,
ProductID_FK INT,
TimeStamp DATETIME,
FOREIGN KEY (UserID_FK) REFERENCES User(UserID_PK),
FOREIGN KEY (ProductID_FK) REFERENCES Product(ProductID_PK)
);
-- Favorites Entity (Many-to-One with User, Many-to-One with Product)
CREATE TABLE Favorites (
FavoriteID INT PRIMARY KEY,
UserID_FK INT,
ProductID_FK INT,
FOREIGN KEY (UserID_FK) REFERENCES User(UserID_PK),
FOREIGN KEY (ProductID_FK) REFERENCES Product(ProductID_PK)
);
-- Product-Category Junction Table (Many-to-Many)
CREATE TABLE Product_Category (
ProductID_FK INT,
CategoryID_FK INT,
PRIMARY KEY (ProductID_FK, CategoryID_FK),
FOREIGN KEY (ProductID_FK) REFERENCES Product(ProductID_PK),
FOREIGN KEY (CategoryID_FK) REFERENCES Category(CategoryID_PK)
);