RelationalDesign: kreiranje.sql

File kreiranje.sql, 4.9 KB (added by 223075, 10 days ago)

Скрипта за креирање табели

Line 
1-- kreiranje.sql
2
3-----------------------------
4-- 1) USER Table
5-----------------------------
6CREATE TABLE IF NOT EXISTS "User" (
7 user_id BIGSERIAL PRIMARY KEY,
8 username VARCHAR(50) NOT NULL,
9 email VARCHAR(100) NOT NULL,
10 password_hash VARCHAR(150) NOT NULL,
11 first_name VARCHAR(50),
12 last_name VARCHAR(50)
13);
14
15-----------------------------
16-- 2) INSTRUCTOR Table
17-----------------------------
18CREATE TABLE IF NOT EXISTS "Instructor" (
19 instructor_id BIGSERIAL PRIMARY KEY,
20 first_name VARCHAR(50) NOT NULL,
21 last_name VARCHAR(50) NOT NULL,
22 biography TEXT
23);
24
25-----------------------------
26-- 3) TRAINING Table
27-----------------------------
28CREATE TABLE IF NOT EXISTS "Training" (
29 training_id BIGSERIAL PRIMARY KEY,
30 training_name VARCHAR(100) NOT NULL,
31 description TEXT,
32 duration INT,
33 intensity_level VARCHAR(50)
34);
35
36-----------------------------
37-- 4) CLASS Table
38-----------------------------
39CREATE TABLE IF NOT EXISTS "Class" (
40 class_id BIGSERIAL PRIMARY KEY,
41 date DATE NOT NULL,
42 start_time TIME NOT NULL,
43 end_time TIME NOT NULL,
44 location VARCHAR(100) NOT NULL,
45 capacity INT,
46 seats_available INT,
47 instructor_id BIGINT,
48 CONSTRAINT fk_instructor
49 FOREIGN KEY (instructor_id)
50 REFERENCES "Instructor"(instructor_id)
51 ON DELETE SET NULL
52);
53
54-----------------------------
55-- 5) EVENT Table
56-----------------------------
57CREATE TABLE IF NOT EXISTS "Event" (
58 event_id BIGSERIAL PRIMARY KEY,
59 event_name VARCHAR(100) NOT NULL,
60 description TEXT,
61 date DATE NOT NULL,
62 time TIME NOT NULL,
63 location VARCHAR(100) NOT NULL
64);
65
66-----------------------------
67-- 6) PACKAGE Table
68-----------------------------
69CREATE TABLE IF NOT EXISTS "Package" (
70 package_id BIGSERIAL PRIMARY KEY,
71 package_name VARCHAR(100) NOT NULL,
72 price DECIMAL(10,2) NOT NULL,
73 num_classes INT NOT NULL
74);
75
76-----------------------------
77-- 7) MERCH_ITEMS Table
78-----------------------------
79CREATE TABLE IF NOT EXISTS "Merch_Items" (
80 merch_id BIGSERIAL PRIMARY KEY,
81 item_name VARCHAR(100) NOT NULL,
82 description TEXT,
83 price DECIMAL(10,2) NOT NULL,
84 quantity_in_stock INT
85);
86
87----------------------------------------------------
88-- M:N Bridge Tables
89----------------------------------------------------
90
91-- 1) USER_CLASS (books)
92CREATE TABLE IF NOT EXISTS "User_Class" (
93 user_id BIGINT,
94 class_id BIGINT,
95 PRIMARY KEY(user_id, class_id),
96 FOREIGN KEY (user_id) REFERENCES "User"(user_id) ON DELETE CASCADE,
97 FOREIGN KEY (class_id) REFERENCES "Class"(class_id) ON DELETE CASCADE
98);
99
100-- 2) CLASS_TRAINING (is_scheduled_for)
101CREATE TABLE IF NOT EXISTS "Class_Training" (
102 class_id BIGINT,
103 training_id BIGINT,
104 PRIMARY KEY(class_id, training_id),
105 FOREIGN KEY (class_id) REFERENCES "Class"(class_id) ON DELETE CASCADE,
106 FOREIGN KEY (training_id) REFERENCES "Training"(training_id) ON DELETE CASCADE
107);
108
109-- 3) USER_EVENT (registers)
110CREATE TABLE IF NOT EXISTS "User_Event" (
111 user_id BIGINT,
112 event_id BIGINT,
113 PRIMARY KEY(user_id, event_id),
114 FOREIGN KEY (user_id) REFERENCES "User"(user_id) ON DELETE CASCADE,
115 FOREIGN KEY (event_id) REFERENCES "Event"(event_id) ON DELETE CASCADE
116);
117
118-- 4) USER_PACKAGE (buys)
119CREATE TABLE IF NOT EXISTS "User_Package" (
120 user_id BIGINT,
121 package_id BIGINT,
122 PRIMARY KEY(user_id, package_id),
123 FOREIGN KEY (user_id) REFERENCES "User"(user_id) ON DELETE CASCADE,
124 FOREIGN KEY (package_id) REFERENCES "Package"(package_id) ON DELETE CASCADE
125);
126
127-- 5) USER_MERCH (purchases)
128CREATE TABLE IF NOT EXISTS "User_Merch" (
129 user_id BIGINT,
130 merch_id BIGINT,
131 PRIMARY KEY(user_id, merch_id),
132 FOREIGN KEY (user_id) REFERENCES "User"(user_id) ON DELETE CASCADE,
133 FOREIGN KEY (merch_id) REFERENCES "Merch_Items"(merch_id) ON DELETE CASCADE
134);
135
136-- 6) PACKAGE_CLASS (is_for)
137CREATE TABLE IF NOT EXISTS "Package_Class" (
138 package_id BIGINT,
139 class_id BIGINT,
140 PRIMARY KEY(package_id, class_id),
141 FOREIGN KEY (package_id) REFERENCES "Package"(package_id) ON DELETE CASCADE,
142 FOREIGN KEY (class_id) REFERENCES "Class"(class_id) ON DELETE CASCADE
143);
144
145----------------------------------------------------
146-- Optional: Drop (comment out unless needed)
147----------------------------------------------------
148-- DROP TABLE IF EXISTS "Package_Class" CASCADE;
149-- DROP TABLE IF EXISTS "User_Merch" CASCADE;
150-- DROP TABLE IF EXISTS "User_Class" CASCADE;
151-- ...
152-- DROP TABLE IF EXISTS "User" CASCADE;
153
154-- End of kreiranje.sql