Newer
Older
DROP DATABASE IF EXISTS inventory;
CREATE DATABASE IF NOT EXISTS inventory;
lname VARCHAR(64) NOT NULL,
fname VARCHAR(64) NOT NULL,
password VARCHAR(32) NOT NULL,
organization_id INT AUTO_INCREMENT,
name VARCHAR(256) NOT NULL,
email VARCHAR(128) NOT NULL,
description VARCHAR(1024),
owner VARCHAR(128),
category ENUM('ACADEMIC', 'RECREATION', 'TECHNOLOGY', 'POLITICS', 'GREEK LIFE'),
memberCount INT DEFAULT 1,
PRIMARY KEY (organization_id),
CONSTRAINT fk_user_organization FOREIGN KEY (owner) REFERENCES USER (email)
organization_id INT NOT NULL,
PRIMARY KEY (userEmail, organization_id),
CONSTRAINT fk_user_manager FOREIGN KEY (userEmail) REFERENCES USER (email),
CONSTRAINT fk_organization_manager FOREIGN KEY (organization_id) REFERENCES ORGANIZATION (organization_id)
organization_id INT NOT NULL,
status ENUM('PENDING', 'ACCEPTED', 'DECLINED') NOT NULL,
description VARCHAR(256),
type ENUM('JOIN', 'ITEM') NOT NULL,
PRIMARY KEY (requestId),
CONSTRAINT fk_user_request FOREIGN KEY (userEmail) REFERENCES USER (email),
CONSTRAINT fk_organization_request FOREIGN KEY (organization_id) REFERENCES ORGANIZATION (organization_id)
);
CREATE TABLE IF NOT EXISTS LOCATION (
locationId INT AUTO_INCREMENT,
location VARCHAR(256),
organization_id INT NOT NULL,
CONSTRAINT fk_organization_location FOREIGN KEY (organization_id) REFERENCES ORGANIZATION (organization_id)
);
CREATE TABLE IF NOT EXISTS ITEM (
itemId INT AUTO_INCREMENT,
name VARCHAR(128) NOT NULL,
description VARCHAR(256),
quantity INT NOT NULL,
category VARCHAR(128),
status ENUM('AVAILABLE', 'BORROWED', 'LISTED', 'SOLD') NOT NULL,
locationId INT NOT NULL,
organization_id INT NOT NULL,
PRIMARY KEY (itemId),
CONSTRAINT fk_location_item FOREIGN KEY (locationId) REFERENCES LOCATION (locationId),
CONSTRAINT fk_organiztion_item FOREIGN KEY (organization_id) REFERENCES ORGANIZATION (organization_id)
);
CREATE TABLE IF NOT EXISTS LISTING (
listingId INT AUTO_INCREMENT,
itemId INT NOT NULL,
price DECIMAL(6,2) NOT NULL,
status ENUM('AVAILABLE', 'SOLD') NOT NULL,
dateListed TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
PRIMARY KEY (listingId),
CONSTRAINT fk_item_listing FOREIGN KEY (itemId) REFERENCES ITEM (itemId)
);
CREATE TABLE IF NOT EXISTS FAVORITE (
PRIMARY KEY (userEmail, listingId),
CONSTRAINT fk_user_favorite FOREIGN KEY (userEmail) REFERENCES USER (email),
CONSTRAINT fk_listing_favorite FOREIGN KEY (listingId) REFERENCES LISTING (listingId)