-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDDL.sql
More file actions
66 lines (61 loc) · 2.51 KB
/
DDL.sql
File metadata and controls
66 lines (61 loc) · 2.51 KB
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
CREATE TABLE users(
user_id VARCHAR(15) PRIMARY KEY,
pw VARCHAR(15) NOT NULL,
nickname VARCHAR(10) NOT NULL,
isAdmin BOOLEAN DEFAULT FALSE
);
CREATE TABLE coupon(
coupon_id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
percent INT NOT NULL,
owner_id VARCHAR(15) NOT NULL,
available VARCHAR(10) CHECK (available IN ('USABLE', 'USED', 'EXPIRED')) NOT NULL,
issue_date DATE NOT NULL,
expire_date DATE NOT NULL,
FOREIGN KEY (owner_id) REFERENCES users(user_id) ON DELETE CASCADE
);
CREATE TABLE item(
item_id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
item_name VARCHAR(20) NOT NULL,
category VARCHAR(15) CHECK (category IN ('ELECTRONICS', 'BOOKS', 'HOME', 'CLOTHING', 'SPORTINGGOODS', 'OTHERS')) NOT NULL,
condition VARCHAR(10) CHECK (condition IN ('NEW', 'LIKE_NEW', 'GOOD', 'ACCEPTABLE')) NOT NULL,
details VARCHAR(200),
start_price NUMERIC(10, 2),
buy_now_price NUMERIC(10, 2) NOT NULL,
posted_date TIMESTAMP NOT NULL,
closing_date TIMESTAMP NOT NULL,
bidding_status VARCHAR(10) CHECK (bidding_status IN ('OPENED', 'TENDERED', 'CLOSED')) NOT NULL,
seller_id VARCHAR(15) NOT NULL,
seller_coupon_id INT,
FOREIGN KEY (seller_id) REFERENCES users(user_id) ON DELETE CASCADE,
FOREIGN KEY (seller_coupon_id) REFERENCES coupon(coupon_id) ON DELETE SET NULL
);
CREATE TABLE bid(
bid_id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
item_id INT NOT NULL,
bidder_id VARCHAR(15) NOT NULL,
bid_price NUMERIC(10, 2) NOT NULL,
bid_date TIMESTAMP NOT NULL,
prior_bidder_id VARCHAR(15) NOT NULL,
prior_price NUMERIC(10, 2) DEFAULT 0,
selected BOOLEAN DEFAULT FALSE,
selected_date TIMESTAMP,
FOREIGN KEY (item_id) REFERENCES item(item_id) ON DELETE CASCADE,
FOREIGN KEY (bidder_id) REFERENCES users(user_id) ON DELETE CASCADE
);
CREATE TABLE account(
account_id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
user_id VARCHAR(15) NOT NULL,
amount NUMERIC(10,2) NOT NULL,
source VARCHAR(20) NOT NULL,
changed_time TIMESTAMP NOT NULL,
FOREIGN KEY (user_id) REFERENCES users(user_id) ON DELETE CASCADE
);
CREATE TABLE commission(
commission_id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
bid_id INT NOT NULL,
tendered_date TIMESTAMP NOT NULL,
coupon_id INT,
commission_amount INT,
FOREIGN KEY (bid_id) REFERENCES bid(bid_id),
FOREIGN KEY (coupon_id) REFERENCES coupon(coupon_id) ON DELETE SET NULL
);