Changes between Version 2 and Version 3 of ddlScript.sql
- Timestamp:
- 12/21/25 00:22:44 (10 days ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
ddlScript.sql
v2 v3 33 33 -- Create PRODUCT table 34 34 CREATE TABLE product ( 35 code SERIAL UNIQUE NOT NULLPRIMARY KEY,36 price NUM BER NOT NULL,35 code SERIAL PRIMARY KEY, 36 price NUMERIC NOT NULL CHECK (price >= 0), 37 37 availability INTEGER NOT NULL, 38 weight NUM BER NOT NULL,39 width_ X_length_X_depth VARCHAR(20) NOT NULL,38 weight NUMERIC NOT NULL CHECK (weight > 0), 39 width_x_length_x_depth VARCHAR(20) NOT NULL, 40 40 aprox_production_time INTEGER NOT NULL, 41 description VARCHAR NOT NULL 42 ); 43 41 description VARCHAR(1000) NOT NULL 42 ); 44 43 45 44 -- Table 2 46 45 -- Create IMAGE table 47 46 CREATE TABLE image( 48 product_code SERIAL UNIQUE NOT NULLREFERENCES product(code)49 ON DELETE CASCADE, 50 image VARCHAR NOT NULL DEFAULT 'Image NOT found!'47 product_code INTEGER PRIMARY KEY REFERENCES product(code) 48 ON DELETE CASCADE, 49 image VARCHAR(max) NOT NULL DEFAULT 'Image NOT found!' 51 50 ); 52 51 … … 55 54 -- Create COLOR table 56 55 CREATE TABLE color ( 57 product_code SERIAL UNIQUE NOTNULL REFERENCES product(code)58 ON DELETE CASCADE, 59 color VARCHAR( 10)56 product_code INTEGER PRIMARY KEY NULL REFERENCES product(code) 57 ON DELETE CASCADE, 58 color VARCHAR(20) 60 59 ); 61 60 … … 64 63 -- Create STORE table 65 64 CREATE TABLE store ( 66 store_ID SERIAL UNIQUE NOT NULLPRIMARY KEY65 store_ID SERIAL PRIMARY KEY 67 66 ON DELETE CASCADE, 68 67 name VARCHAR(50) UNIQUE NOT NULL, 69 68 date_of_founding DATE NOT NULL, 70 physical_address VARCHAR(100) NOT NULL, 69 physical_address VARCHAR(100) NOT NULL, -- ADDRESS FORMAT : st.(st-name) num.(unit-num), (city) (post-code), (country)????? 71 70 store_email VARCHAR(20) UNIQUE NOT NULL, 72 rating NUM BER NOT NULL DEFAULT '0'71 rating NUMERIC NOT NULL DEFAULT 0.0 CHECK (rating>=0.0) 73 72 ); 74 73 … … 77 76 -- Create PERSONAL table 78 77 CREATE TABLE personal ( 79 ssn NUMBERUNIQUE NOT NULL PRIMARY KEY,78 ssn VARCHAR(13) UNIQUE NOT NULL PRIMARY KEY, 80 79 first_name VARCHAR(20) NOT NULL, 81 80 last_name VARCHAR(20) NOT NULL, 82 email VARCHAR( 20) UNIQUE NOT NULL,81 email VARCHAR(50) UNIQUE NOT NULL, 83 82 password VARCAHR NOT NULL 84 83 ); … … 88 87 -- Create PERMISSIONS table 89 88 CREATE TABLE permissions ( 90 personal_SSN NUMBER UNIQUE NOT NULLPRIMARY KEY REFERENCES personal(ssn)89 personal_SSN VARCHAR(13) PRIMARY KEY REFERENCES personal(ssn) 91 90 ON DELETE CASCADE, 92 91 type VARCHAR(100) UNIQUE NOT NULL, 93 authorisation VARCHAR (50) NOT NULL92 authorisation VARCHAR(50) NOT NULL 94 93 ); 95 94 … … 98 97 -- Create BOSS table 99 98 CREATE TABLE boss ( 100 boss_SSN NUMBER UNIQUE NOT NULLPRIMARY KEY REFERENCES personal(ssn)99 boss_SSN VARCHAR(13) PRIMARY KEY REFERENCES personal(ssn) 101 100 ON DELETE CASCADE 102 101 ); … … 106 105 -- Create EMPLOYEES table 107 106 CREATE TABLE employees ( 108 employee_SSN NUMBER UNIQUE NOT NULLPRIMARY KEY REFERENCES personal(ssn)107 employee_SSN VARCHAR(13) PRIMARY KEY REFERENCES personal(ssn) 109 108 ON DELETE CASCADE, 110 109 date_of_hire DATE NOT NULL … … 115 114 -- Create CLIENT table 116 115 CREATE TABLE client ( 117 client_ID SERIAL UNIQUE NOT NULLPRIMARY KEY,116 client_ID SERIAL PRIMARY KEY, 118 117 first_name VARCHAR(50) NOT NULL, 119 118 last_name VARCHAR(50) NOT NULL, 120 email VARCHAR( 20) UNIQUE NOT NULL,119 email VARCHAR(50) UNIQUE NOT NULL, 121 120 password VARCHAR NOT NULL 122 121 ); … … 126 125 -- Create DELIVERY_ADDRESS table 127 126 CREATE TABLE delivery_address ( 128 client_ID SERIAL UNIQUE NOT NULLPRIMARY KEY REFERENCES client(client_ID)129 ON DELETE CASCADE, 130 address VARCHAR NOT NULL127 client_ID INTEGER PRIMARY KEY REFERENCES client(client_ID) 128 ON DELETE CASCADE, 129 address VARCHAR(100) NOT NULL -- ADDRESS FORMAT : st.(st-name) num.(unit-num), (city) (post-code), (country)????? 131 130 ); 132 131 … … 135 134 -- Create ORDER table 136 135 CREATE TABLE order ( 137 order_num SERIAL UNIQUE NOT NULLPRIMARY KEY,138 client_ID SERIAL UNIQUE NOT NULLREFERENCES client(client_ID),136 order_num SERIAL PRIMARY KEY, 137 client_ID INTEGER REFERENCES client(client_ID), 139 138 ON DELETE CASCADE, 140 139 quantity INTEGER NOT NULL, … … 142 141 last_date_mod TIMESTAMP NOT NULL, 143 142 payment_method VARHAR (250) NOT NULL, 144 discount NUM BERDEFAULT 0.0,143 discount NUMERIC DEFAULT 0.0, 145 144 ); 146 145 … … 150 149 CREATE TABLE report ( 151 150 date TIMESTAMP NOT NULL, 152 store_ID SERIALNOT NULL REFERENCES store(store_ID)153 ON DELETE CASCADE, 154 overall_profit NUM BER NOT NULL DEFAULT 0.0,151 store_ID INTEGER NOT NULL REFERENCES store(store_ID) 152 ON DELETE CASCADE, 153 overall_profit NUMERIC NOT NULL DEFAULT 0.0 CHECK(overall_profit>=0,0), 155 154 sales_trend VARCHAR(max) NOT NULL, 156 155 marketing_growth VARCHAR(max) NOT NULL, … … 163 162 -- Create MONTHLY_PROFIT table 164 163 CREATE TABLE monthly_profit ( 165 report_date TIMESTAMP NOT NULL REFERENCES report(date) 166 ON DELETE CASCADE, 167 store_ID SERIAL NOT NULL REFERENCES store(store_ID), 168 ON DELETE CASCADE, 164 report_date TIMESTAMP NOT NULL, 165 store_ID INTEGER NOT NULL, 169 166 month_and_year DATE NOT NULL, 170 167 profit NUMBER NOT NULL DEFAULT 0.0, 171 PRIMARY KEY(report_date, store_ID) 168 PRIMARY KEY(report_date, store_ID), 169 FOREIGN KEY (report_date, store_id) REFERENCES report(date, store_ID) 170 ON DELETE CASCADE 172 171 ); 173 172 … … 176 175 -- Create REQUEST table 177 176 CREATE TABLE request ( 178 request_num SERIAL UNIQUE NOT NULLPRIMARY KEY,177 request_num SERIAL PRIMARY KEY, 179 178 date_and_time TIMESTAMP NOT NULL, 180 179 problem VARCHAR(1000) NOT NULL, 181 180 notes_of_communication VARCHAR(300), 182 costumer_satisfaction NUM BERNOT NULL181 costumer_satisfaction NUMERIC NOT NULL 183 182 ); 184 183 … … 187 186 -- Create MAKES_REQUEST table 188 187 CREATE TABLE makes_request ( 189 client_ID SERIAL NOT NULL REFERENCES client(client_ID) 190 ON DELETE CASCADE, 191 order_num SERIAL UNIQUE NOT NULL REFERENCES order(order_num) 192 ON DELETE CASCADE, 188 client_ID INTEGER NOT NULL REFERENCES client(client_ID) 189 ON DELETE CASCADE, 190 order_num INTEGER UNIQUE NOT NULL REFERENCES order(order_num) 191 ON DELETE CASCADE, 192 PRIMARY KEY(client_ID, order_num) 193 193 ); 194 194 … … 197 197 -- Create ANSWERS table 198 198 CREATE TABLE answers ( 199 request_num SERIAL NOT NULL REFERENCES request(request_num) 200 ON DELETE CASCADE, 201 personal_SSN VARCHAR NOT NULL REFERENCES personal(ssn) 202 ON DELETE CASCADE, 199 request_num INTEGER REFERENCES request(request_num) 200 ON DELETE CASCADE, 201 personal_SSN VARCHAR(13) NOT NULL REFERENCES personal(ssn) 202 ON DELETE CASCADE, 203 PRIMARY KEY(request_num, personal_SSN) 203 204 ); 204 205 … … 207 208 -- Create FOR_STORE table 208 209 CREATE TABLE for_store ( 209 request_num SERIAL NOT NULL REFERENCES request(request_num) 210 ON DELETE CASCADE, 211 store_ID SERIAL NOT NULL REFERENCES store(store_ID) 212 ON DELETE CASCADE 210 request_num INTEGER REFERENCES request(request_num) 211 ON DELETE CASCADE, 212 store_ID SERIAL REFERENCES store(store_ID) 213 ON DELETE CASCADE, 214 PRIMARY KEY(request_num, store_ID) 213 215 ); 214 216 … … 217 219 -- Create REVIEW table 218 220 CREATE TABLE review ( 219 order_num SERIAL NOT NULL UNIQUEREFERENCES order(order_num)220 ON DELETE CASCADE, 221 order_num INTEGER REFERENCES order(order_num) 222 ON DELETE CASCADE, -- SHould the review be deleted when the order is deleted? 221 223 comment VARCHAR(300), 222 224 rating NUMBER NOT NULL, … … 229 231 CREATE TABLE change ( 230 232 date_and_time TIMESTAMP NOT NULL, 231 changes VARCHAR(max) NOT NULL 233 product_code INTEGER REFERENCES product(code) 234 ON DELETE CASCADE, 235 changes VARCHAR(max) NOT NULL, 236 PRIMARY KEY (date_and_time, product_code) 232 237 ); 233 238 … … 236 241 -- Create MAKES_CHANGE table 237 242 CREATE TABLE makes_change ( 238 personal_SSN NUMBER NOT NULL REFERENCES personal(ssn) 239 ON DELETE CASCADE, 240 change_date_time TIMESTAMP NOT NULL, 241 PRIMARY KEY(personal_SSN, change_date_time) 243 personal_SSN NUMERIC REFERENCES personal(ssn) 244 ON DELETE CASCADE, 245 change_date_time TIMESTAMP, 246 product_code INTEGER, 247 PRIMARY KEY(personal_SSN, change_date_time, product_code), 248 FOREIGN KEY (change_date_time, product_code) REFERENCES change(change_date_time, product) 249 ON DELETE CASCADE 242 250 ); 243 251 244 252 245 253 -- Table 21 246 -- Create MADE_ON table 247 CREATE TABLE made_on ( 248 product_code SERIAL NOT NULL REFERENCES product(code) 249 ON DELETE CASCADE, 250 change_date_time TIMESTAMP NOT NULL, 251 PRIMARY KEY(product_SSN, change_date_time) 252 ); 254 -- Create MADE_ON table -- Is it needed? 255 --CREATE TABLE made_on ( 256 -- product_code INTEGER, 257 -- change_date_time TIMESTAMP, 258 -- PRIMARY KEY(product_SSN, change_date_time) 259 -- FOREIGN KEY(product_SSN, change_date_time) REFERENCES change(product_SSN, change_date_time) 260 -- ON DELETE CASCADE 261 --); 253 262 254 263 … … 256 265 -- Create WORKS_IN_STORE table 257 266 CREATE TABLE works_in_store ( 258 personal_SSN NUMBER NOT NULLREFERENCES personal(ssn)259 ON DELETE CASCADE, 260 store_ID SERIAL NOT NULLREFERENCES store(store_ID)267 personal_SSN VARCHAR(13) REFERENCES personal(ssn) 268 ON DELETE CASCADE, 269 store_ID INTEGER REFERENCES store(store_ID) 261 270 ON DELETE CASCADE, 262 271 PRIMARY KEY(personak_SSN, store_ID) … … 267 276 -- Create WORKED table 268 277 CREATE TABLE worked ( 269 personal_SSN NUMBER NOT NULL REFERENCES personal(ssn) 270 ON DELETE CASCADE, 271 report_date TIMESTAMP NOT NULL REFERENCES report(date) 272 ON DELETE CASCADE, 273 store_ID SERIAL NOT NULL REFERENCES store(store_ID) 274 ON DELETE CASCADE, 275 wage NUMBER NOT NULL, 278 personal_SSN VARCHAR(13) REFERENCES personal(ssn) 279 ON DELETE CASCADE, 280 report_date TIMESTAMP, 281 store_ID SERIAL, 282 wage NUMERIC NOT NULL CHECK (wage>=62), -- Anyone should be paid a minimum of 63MKD/hour 276 283 pay_method VARCHAR(20) DEFAULT 'hourly', 277 total_hours NUMBER NOT NULL, 278 week VARCHAR(24) NOT NULL 284 total_hours NUMERIC NOT NULL, 285 week VARCHAR(24) NOT NULL, 286 PRIMARY KEY (personal_SSN, report_date, store_ID), 287 FOREIGN KEY (report_date, store_ID) REFERENCES report(report_Date, store_ID) 288 ON DELETE CASCADE 279 289 ); 280 290 … … 283 293 -- Create SELLS table 284 294 CREATE TABLE sells ( 285 product_code SERIAL NOT NULL REFERENCES product(code) 286 ON DELETE CASCADE, 287 store_ID SERIAL NOT NULL REFERENCES store(store_ID) 288 ON DELETE CASCADE, 289 discount NUMBER NOT NULL DEFAULT 0.0 295 product_code INTEGER REFERENCES product(code) 296 ON DELETE CASCADE, 297 store_ID SERIAL REFERENCES store(store_ID) 298 ON DELETE CASCADE, -- Should the data be kept if store is deleted? 299 discount NUMERIC NOT NULL DEFAULT 0.0, 300 PRIMARY KEY (product_code, store_ID) 290 301 ); 291 302 … … 294 305 -- Create INCLUDES table 295 306 CREATE TABLE includes ( 296 order_num SERIAL NOT NULL REFERENCES order(order_num) 297 ON DELETE CASCADE, 298 product_code SERIAL NOT NULL REFERENCES product(code) 299 ON DELETE CASCADE, 307 order_num INTEGER REFERENCES order(order_num) 308 ON DELETE CASCADE, 309 product_code INTEGER REFERENCES product(code) 310 ON DELETE CASCADE, 311 PRIMARY KEY (order_num, product_code) 300 312 ); 301 313 … … 304 316 -- Create APPROVES table 305 317 CREATE TABLE approves ( 306 boss_SSN NUMBER NOT NULL REFERENCES boss(boss_SSN) 307 ON DELETE CASCADE, 308 report_date TIMESTAMP NOT NULL REFERENCES report(date) 309 ON DELETE CASCADE, 310 store_ID SERIAL NOT NULL REFERENCES store(store_ID) 311 ON DELETE CASCADE, 312 owner_signature VARCHAR(30) NOT NULL 318 boss_SSN NUMERIC REFERENCES boss(boss_SSN) 319 ON DELETE CASCADE, 320 report_date TIMESTAMP, 321 store_ID INTEGER, 322 owner_signature VARCHAR(30) NOT NULL, -- Is it needed? 323 PRIMARY KEY (boss_SSN, report_date, store_ID), 324 FOREIGN KEY (report_date, store_ID) REFERENCES report(report_date, store_ID) 325 ON DELETE CASCADE 313 326 ); 314 327 … … 317 330 -- Create EXCHANGES_DATA table 318 331 CREATE TABLE exchanges_date ( 319 report_date TIMESTAMP NOT NULL references report(report_date) 320 ON DELETE CASCADE, 321 store_ID SERIAL NOT NULL REFERENCES store(store_ID) 322 ON DELETE CASCADE, 323 monthly_profit NUMBER NOT NULL DEFAULT 0.0, 332 report_date TIMESTAMP, -- Should the data be kept if the report is deleted? 333 store_ID INTEGER REFERENCES store(store_ID) 334 ON DELETE CASCADE, 335 monthly_profit NUMERIC NOT NULL DEFAULT 0.0, 324 336 date TIMESTAMP NOT NULL, 325 337 sales VARCHAR(max) NOT NULL, 326 damages VARCHAR(max) 327 ); 328 329 338 damages VARCHAR(max), 339 PRIMARY KEY (report_date, store_ID), 340 FOREIGN KEY (report_date, store_ID) REFERENCES report(report_date, store_ID) 341 ON DELETE CASCADE 342 ); 343
