RelationModel: kreiranje_v3.sql

File kreiranje_v3.sql, 2.6 KB (added by 202033, 4 days ago)
Line 
1CREATE TABLE users (
2 user_id SERIAL PRIMARY KEY,
3 username VARCHAR(50) UNIQUE NOT NULL,
4 first_name VARCHAR(50) NOT NULL,
5 last_name VARCHAR(50) NOT NULL,
6 email VARCHAR(100) UNIQUE NOT NULL,
7 birth_date DATE NOT NULL,
8 gender VARCHAR(10) NOT NULL,
9 phone VARCHAR(20),
10 password VARCHAR(255) NOT NULL,
11 address_street VARCHAR(100) NOT NULL,
12 address_number INT,
13 address_city VARCHAR(50) NOT NULL,
14 role VARCHAR(20) NOT NULL CHECK (role IN ('donor','volunteer','medical','institution','admin'))
15);
16
17
18CREATE TABLE donation_types (
19 type_id SERIAL PRIMARY KEY,
20 name VARCHAR(50) NOT NULL
21);
22
23
24CREATE TABLE donation_actions (
25 action_id SERIAL PRIMARY KEY,
26 title VARCHAR(100) NOT NULL,
27 description TEXT NOT NULL,
28 type VARCHAR(20) NOT NULL CHECK (type IN ('physical','online')),
29 start_date DATE NOT NULL,
30 end_date DATE NOT NULL,
31 created_by INT NOT NULL REFERENCES users(user_id) ON DELETE CASCADE
32
33);
34
35
36CREATE TABLE physical_actions (
37 action_id INT PRIMARY KEY REFERENCES donation_actions(action_id) ON DELETE CASCADE,
38 location VARCHAR(100) NOT NULL,
39 needed_people INT NOT NULL
40);
41
42-- Online Actions
43CREATE TABLE online_actions (
44 action_id INT PRIMARY KEY REFERENCES donation_actions(action_id) ON DELETE CASCADE,
45 bank_account VARCHAR(50) NOT NULL
46);
47
48
49CREATE TABLE participation (
50 participation_id SERIAL PRIMARY KEY,
51 user_id INT NOT NULL REFERENCES users(user_id) ON DELETE CASCADE,
52 action_id INT NOT NULL REFERENCES donation_actions(action_id) ON DELETE CASCADE,
53 role VARCHAR(20) NOT NULL,
54 UNIQUE(user_id, action_id)
55);
56
57
58CREATE TABLE donations (
59 donation_id SERIAL PRIMARY KEY,
60 user_id INT NOT NULL REFERENCES users(user_id),
61 action_id INT NOT NULL REFERENCES donation_actions(action_id),
62 type_id INT NOT NULL REFERENCES donation_types(type_id),
63 quantity INT,
64 amount DECIMAL(10,2),
65 donated_at TIMESTAMP DEFAULT NOW()
66);
67
68
69CREATE TABLE action_requests (
70 request_id SERIAL PRIMARY KEY,
71 user_id INT NOT NULL REFERENCES users(user_id),
72 title VARCHAR(100) NOT NULL,
73 description TEXT NOT NULL,
74 type VARCHAR(20) NOT NULL CHECK (type IN ('physical','online')),
75 created_at DATE NOT NULL DEFAULT CURRENT_DATE,
76 approved_at DATE,
77 status VARCHAR(20) DEFAULT 'pending' CHECK (status IN ('pending','approved','rejected'))
78);
79
80
81CREATE TABLE sponsors (
82 sponsor_id SERIAL PRIMARY KEY,
83 name VARCHAR(100) NOT NULL,
84 phone VARCHAR(20),
85 email VARCHAR(100),
86 address_street VARCHAR(100),
87 address_number INT,
88 address_city VARCHAR(50)
89);
90