CREATE TABLE IF NOT EXISTS Users ( id INTEGER PRIMARY KEY, username TEXT NOT NULL UNIQUE, password TEXT NOT NULL, first_name TEXT NOT NULL, last_name TEXT NOT NULL, email TEXT NOT NULL UNIQUE, phone TEXT NOT NULL, role TEXT NOT NULL ); CREATE TABLE IF NOT EXISTS Categories ( id INTEGER PRIMARY KEY, name TEXT NOT NULL UNIQUE ); INSERT INTO Categories (name) VALUES ("Car Parts"); INSERT INTO Categories (name) VALUES ("Animals"); INSERT INTO Categories (name) VALUES ("Sports"); INSERT INTO Categories (name) VALUES ("Books"); INSERT INTO Categories (name) VALUES ("Phones"); INSERT INTO Categories (name) VALUES ("Music"); CREATE TABLE IF NOT EXISTS Products ( id INTEGER PRIMARY KEY, name TEXT NOT NULL, image TEXT NOT NULL, description TEXT NOT NULL, cost DECIMAL NOT NULL, sellerID INTEGER NOT NULL REFERENCES Users (id) ON DELETE CASCADE ON UPDATE NO ACTION, categoryID INTEGER NOT NULL REFERENCES Categories (id) ON DELETE CASCADE ON UPDATE NO ACTION, postedDate TIMESTAMP, quantityAvailable INTEGER DEFAULT 0 ); CREATE TABLE IF NOT EXISTS Orders ( id INTEGER PRIMARY KEY, sellerID TEXT NOT NULL REFERENCES Users (id) ON DELETE NO ACTION ON UPDATE NO ACTION, total DECIMAL NOT NULL, buyerID INTEGER NOT NULL REFERENCES Users (id) ON DELETE CASCADE ON UPDATE NO ACTION, orderDate DATE NOT NULL ); CREATE TABLE IF NOT EXISTS Views ( id INTEGER PRIMARY KEY, userID INTEGER REFERENCES Users (id) ON DELETE NO ACTION ON UPDATE NO ACTION, productID INTEGER NOT NULL REFERENCES Users (id) ON DELETE NO ACTION ON UPDATE NO ACTION, viewDate DATE NOT NULL )