| | 1 | {{{#!sql |
| | 2 | -- Delete tables if they exist |
| | 3 | DROP TABLE IF EXISTS product CASCADE; |
| | 4 | DROP TABLE IF EXISTS image CASCADE; |
| | 5 | DROP TABLE IF EXISTS colors CASCADE; |
| | 6 | DROP TABLE IF EXISTS store CASCADE; |
| | 7 | DROP TABLE IF EXISTS personal CASCADE; |
| | 8 | DROP TABLE IF EXISTS permissions CASCADE; |
| | 9 | DROP TABLE IF EXISTS boss CASCADE; |
| | 10 | DROP TABLE IF EXISTS employees CASCADE; |
| | 11 | DROP TABLE IF EXISTS client CASCADE; |
| | 12 | DROP TABLE IF EXISTS delivery_address CASCADE; |
| | 13 | DROP TABLE IF EXISTS order CASCADE; |
| | 14 | DROP TABLE IF EXISTS report CASCADE; |
| | 15 | DROP TABLE IF EXISTS monthly_profit CASCADE; |
| | 16 | DROP TABLE IF EXISTS request CASCADE; |
| | 17 | DROP TABLE IF EXISTS makes_request CASCADE; |
| | 18 | DROP TABLE IF EXISTS answers CASCADE; |
| | 19 | DROP TABLE IF EXISTS for_store CASCADE; |
| | 20 | DROP TABLE IF EXISTS review CASCADE; |
| | 21 | DROP TABLE IF EXISTS change CASCADE; |
| | 22 | DROP TABLE IF EXISTS makes_change CASCADE; |
| | 23 | DROP TABLE IF EXISTS made_od CASCADE; |
| | 24 | DROP TABLE IF EXISTS works_in_store CASCADE; |
| | 25 | DROP TABLE IF EXISTS worked CASCADE; |
| | 26 | DROP TABLE IF EXISTS sells CASCADE; |
| | 27 | DROP TABLE IF EXISTS includes CASCADE; |
| | 28 | DROP TABLE IF EXISTS approves CASCADE; |
| | 29 | DROP TABLE IF EXISTS exchange_data CASCADE; |
| | 30 | |
| | 31 | |
| | 32 | -- Table 1 |
| | 33 | -- Create PRODUCT table |
| | 34 | CREATE TABLE product ( |
| | 35 | code SERIAL UNIQUE NOT NULL PRIMARY KEY, |
| | 36 | price NUMBER NOT NULL, |
| | 37 | availability INTEGER NOT NULL, |
| | 38 | weight NUMBER NOT NULL, |
| | 39 | width_X_length_X_depth VARCHAR(20) NOT NULL, |
| | 40 | aprox_production_time INTEGER NOT NULL, |
| | 41 | description VARCHAR NOT NULL |
| | 42 | ); |
| | 43 | |
| | 44 | |
| | 45 | -- Table 2 |
| | 46 | -- Create IMAGE table |
| | 47 | CREATE TABLE image( |
| | 48 | product_code SERIAL UNIQUE NOT NULL REFERENCES product(code) |
| | 49 | ON DELETE CASCADE, |
| | 50 | image VARCHAR NOT NULL DEFAULT 'Image NOT found!' |
| | 51 | ); |
| | 52 | |
| | 53 | |
| | 54 | -- Table 3 |
| | 55 | -- Create COLOR table |
| | 56 | CREATE TABLE color ( |
| | 57 | product_code SERIAL UNIQUE NOT NULL REFERENCES product(code) |
| | 58 | ON DELETE CASCADE, |
| | 59 | color VARCHAR(10) |
| | 60 | ); |
| | 61 | |
| | 62 | |
| | 63 | -- Table 4 |
| | 64 | -- Create STORE table |
| | 65 | CREATE TABLE store ( |
| | 66 | store_ID SERIAL UNIQUE NOT NULL PRIMARY KEY |
| | 67 | ON DELETE CASCADE, |
| | 68 | name VARCHAR(50) UNIQUE NOT NULL, |
| | 69 | date_of_founding DATE NOT NULL, |
| | 70 | physical_address VARCHAR(100) NOT NULL, |
| | 71 | store_email VARCHAR(20) UNIQUE NOT NULL, |
| | 72 | rating NUMBER NOT NULL DEFAULT '0' |
| | 73 | ); |
| | 74 | |
| | 75 | |
| | 76 | -- Table 5 |
| | 77 | -- Create PERSONAL table |
| | 78 | CREATE TABLE personal ( |
| | 79 | ssn NUMBER UNIQUE NOT NULL PRIMARY KEY, |
| | 80 | first_name VARCHAR(20) NOT NULL, |
| | 81 | last_name VARCHAR(20) NOT NULL, |
| | 82 | email VARCHAR(20) UNIQUE NOT NULL, |
| | 83 | password VARCAHR NOT NULL |
| | 84 | ); |
| | 85 | |
| | 86 | |
| | 87 | -- Table 6 |
| | 88 | -- Create PERMISSIONS table |
| | 89 | CREATE TABLE permissions ( |
| | 90 | personal_SSN NUMBER UNIQUE NOT NULL PRIMARY KEY REFERENCES personal(ssn) |
| | 91 | ON DELETE CASCADE, |
| | 92 | type VARCHAR(100) UNIQUE NOT NULL, |
| | 93 | authorisation VARCHAR (50) NOT NULL |
| | 94 | ); |
| | 95 | |
| | 96 | |
| | 97 | -- Table 7 |
| | 98 | -- Create BOSS table |
| | 99 | CREATE TABLE boss ( |
| | 100 | boss_SSN NUMBER UNIQUE NOT NULL PRIMARY KEY REFERENCES personal(ssn) |
| | 101 | ON DELETE CASCADE |
| | 102 | ); |
| | 103 | |
| | 104 | |
| | 105 | -- Table 8 |
| | 106 | -- Create EMPLOYEES table |
| | 107 | CREATE TABLE employees ( |
| | 108 | employee_SSN NUMBER UNIQUE NOT NULL PRIMARY KEY REFERENCES personal(ssn) |
| | 109 | ON DELETE CASCADE, |
| | 110 | date_of_hire DATE NOT NULL |
| | 111 | ); |
| | 112 | |
| | 113 | |
| | 114 | -- Table 9 |
| | 115 | -- Create CLIENT table |
| | 116 | CREATE TABLE client ( |
| | 117 | client_ID SERIAL UNIQUE NOT NULL PRIMARY KEY, |
| | 118 | first_name VARCHAR(50) NOT NULL, |
| | 119 | last_name VARCHAR(50) NOT NULL, |
| | 120 | email VARCHAR(20) UNIQUE NOT NULL, |
| | 121 | password VARCHAR NOT NULL |
| | 122 | ); |
| | 123 | |
| | 124 | |
| | 125 | -- Table 10 |
| | 126 | -- Create DELIVERY_ADDRESS table |
| | 127 | CREATE TABLE delivery_address ( |
| | 128 | client_ID SERIAL UNIQUE NOT NULL PRIMARY KEY REFERENCES client(client_ID) |
| | 129 | ON DELETE CASCADE, |
| | 130 | address VARCHAR NOT NULL |
| | 131 | ); |
| | 132 | |
| | 133 | |
| | 134 | -- Table 11 |
| | 135 | -- Create ORDER table |
| | 136 | CREATE TABLE order ( |
| | 137 | order_num SERIAL UNIQUE NOT NULL PRIMARY KEY, |
| | 138 | client_ID SERIAL UNIQUE NOT NULL REFERENCES client(client_ID), |
| | 139 | ON DELETE CASCADE, |
| | 140 | quantity INTEGER NOT NULL, |
| | 141 | status VARCHAR(20) NOT NULL DEFAULT 'placed order', |
| | 142 | last_date_mod TIMESTAMP NOT NULL, |
| | 143 | payment_method VARHAR (250) NOT NULL, |
| | 144 | discount NUMBER DEFAULT 0.0, |
| | 145 | ); |
| | 146 | |
| | 147 | |
| | 148 | -- Table 12 |
| | 149 | -- Create REPORT table |
| | 150 | CREATE TABLE report ( |
| | 151 | date TIMESTAMP NOT NULL, |
| | 152 | store_ID SERIAL NOT NULL REFERENCES store(store_ID) |
| | 153 | ON DELETE CASCADE, |
| | 154 | overall_profit NUMBER NOT NULL DEFAULT 0.0, |
| | 155 | sales_trend VARCHAR(max) NOT NULL, |
| | 156 | marketing_growth VARCHAR(max) NOT NULL, |
| | 157 | owner_signature VARCHAR(30) NOT NULL, |
| | 158 | PRIMARY KEY (date, store_ID) |
| | 159 | ); |
| | 160 | |
| | 161 | |
| | 162 | -- Table 13 |
| | 163 | -- Create MONTHLY_PROFIT table |
| | 164 | 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, |
| | 169 | month_and_year DATE NOT NULL, |
| | 170 | profit NUMBER NOT NULL DEFAULT 0.0, |
| | 171 | PRIMARY KEY(report_date, store_ID) |
| | 172 | ); |
| | 173 | |
| | 174 | |
| | 175 | -- Table 14 |
| | 176 | -- Create REQUEST table |
| | 177 | CREATE TABLE request ( |
| | 178 | |
| | 179 | ); |
| | 180 | |
| | 181 | |
| | 182 | |
| | 183 | }}} |