-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSchema.sql
More file actions
61 lines (54 loc) · 1.83 KB
/
Schema.sql
File metadata and controls
61 lines (54 loc) · 1.83 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
CREATE TABLE users (
user_id SERIAL PRIMARY KEY,
username varchar(50) NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL,
password_hash VARCHAR(100) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 2. Products (Simplified)
CREATE TABLE products (
product_id SERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL,
price DECIMAL(10,2) NOT NULL,
category VARCHAR(50)
);
-- 3. Addresses (Essential Fields Only)
CREATE TABLE addresses (
address_id SERIAL PRIMARY KEY,
user_id INT REFERENCES users(user_id),
full_name VARCHAR(100) NOT NULL,
street_address VARCHAR(255) NOT NULL,
city VARCHAR(50) NOT NULL,
zip_code VARCHAR(20) NOT NULL,
country VARCHAR(50) NOT NULL
);
CREATE TABLE orders (
order_id SERIAL PRIMARY KEY,
user_id INT REFERENCES users(user_id),
shipping_address_id INT REFERENCES addresses(address_id),
total_amount DECIMAL(10,2) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE order_items (
order_id INT REFERENCES orders(order_id),
product_id INT REFERENCES products(product_id),
quantity INT DEFAULT 1 NOT NULL,
price DECIMAL(10,2) NOT NULL,
PRIMARY KEY (order_id, product_id)
);
CREATE TABLE payments (
payment_id SERIAL PRIMARY KEY,
order_id INT UNIQUE REFERENCES orders(order_id),
amount DECIMAL(10,2) NOT NULL,
payment_method VARCHAR(50) NOT NULL
);
INSERT INTO products (name, price, category) VALUES
('Gaming Accessories', 49.99, 'Electronics'),
('PC Products', 29.99, 'Electronics'),
('Shoes', 19.99, 'Clothing'),
('Dresses', 24.99, 'Clothing'),
('Towels', 16.99, 'Home'),
('Stufftoys', 12.99, 'Toys'),
('Home Decor', 44.99, 'Home'),
('Beauty Products', 29.99, 'Beauty');
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO postgres;