-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathinitDB.sql
48 lines (43 loc) · 1.49 KB
/
initDB.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
-- DB NAME: outfitoracleDB
CREATE TABLE users (
email VARCHAR(255) PRIMARY KEY,
password VARCHAR(255) NOT NULL,
styles VARCHAR(255)[]
);
CREATE TABLE products (
id SERIAL PRIMARY KEY,
description VARCHAR(255),
title VARCHAR(255),
styles VARCHAR(255)[],
gender VARCHAR(255), --male/female/children/unisex
img_url VARCHAR(255),
color VARCHAR(255),
material VARCHAR(255),
size_clothing VARCHAR(255),
pattern VARCHAR(255),
email VARCHAR(255) REFERENCES users(email) ON DELETE CASCADE
);
CREATE TABLE cart (
email VARCHAR(255) REFERENCES users(email) ON DELETE CASCADE,
product_id INT REFERENCES products(id) ON DELETE CASCADE,
quantity INT NOT NULL CHECK (quantity > 0),
PRIMARY KEY (email, product_id)
);
CREATE TABLE explore (
id INT REFERENCES products(id) ON DELETE CASCADE
);
CREATE TABLE selling (
email VARCHAR(255) REFERENCES users(email) ON DELETE CASCADE,
product_id INT REFERENCES products(id) ON DELETE CASCADE,
quantity INT NOT NULL CHECK (quantity > 0),
price INT NOT NULL CHECK (price >= 1),
PRIMARY KEY(email, product_id, quantity)
);
CREATE TABLE sold (
buyer_email VARCHAR(255) REFERENCES users(email) ON DELETE CASCADE,
seller_email VARCHAR(255) REFERENCES users(email) ON DELETE CASCADE,
date_sold TIMESTAMP,
product_id INT REFERENCES products(id) ON DELETE CASCADE,
quantity INT NOT NULL CHECK (quantity > 0),
PRIMARY KEY(buyer_email, seller_email, date_sold, product_id, quantity)
);