-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathscript.sql
389 lines (258 loc) · 8.37 KB
/
script.sql
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
/*
Created: 12/6/2021
Modified: 1/7/2022
Project: Computer Service
Model: Logical Model
Author: Piotr Kitłowski, Marcin Jankowski
Database: Oracle 11g Release 1
*/
-- Create tables section -------------------------------------------------
-- Table Computer_Services
CREATE TABLE Computer_Services(
id_Computer_Service Integer NOT NULL,
Name Varchar2(20 ) NOT NULL,
Founding_date Date NOT NULL,
Share_capital Number(10,2)
)
/
-- Add keys for table Computer_Services
ALTER TABLE Computer_Services ADD CONSTRAINT Computer_ServicePK PRIMARY KEY (id_Computer_Service)
/
-- Table Offices
CREATE TABLE Offices(
id_Offices Integer NOT NULL,
Name Varchar2(20 ) NOT NULL,
Computer_Service_id Integer NOT NULL,
id_Address Integer NOT NULL
)
/
-- Create indexes for table Offices
CREATE INDEX IX_runs ON Offices (Computer_Service_id)
/
CREATE INDEX IX_has_address ON Offices (id_Address)
/
-- Add keys for table Offices
ALTER TABLE Offices ADD CONSTRAINT OfficePK PRIMARY KEY (id_Offices)
/
-- Table Employees
CREATE TABLE Employees(
id_Employee Integer NOT NULL,
Name Varchar2(20 ) NOT NULL,
Surname Varchar2(30 ) NOT NULL,
Sex Char(1 ) NOT NULL
CONSTRAINT CheckConstraintA1a CHECK (Sex IN ('F', 'M'))
CHECK (Sex IN ('F', 'M')),
Email Varchar2(30 ) NOT NULL,
Password Varchar2(20 ) NOT NULL,
Phone_number Varchar2(12 ) NOT NULL,
Date_of_birth Date NOT NULL,
Date_of_employment Date NOT NULL,
Role Varchar2(9 ) NOT NULL
CHECK (Role IN ('Repairman', 'Manager')),
PESEL Char(11 ),
Account_no Char(26 ),
id_Address Integer NOT NULL,
id_Offices Integer NOT NULL
)
/
-- Create indexes for table Employees
CREATE INDEX IX_Employee_has_address ON Employees (id_Address)
/
CREATE INDEX IX_Employee_has_office ON Employees (id_Offices)
/
-- Add keys for table Employees
ALTER TABLE Employees ADD CONSTRAINT EmployeePK PRIMARY KEY (id_Employee)
/
-- Table Orders
CREATE TABLE Orders(
id_Order Integer NOT NULL,
Status Varchar2(11 ) NOT NULL
CHECK (Status IN ('Not started', 'In progress', 'Completed')),
Order_date Date NOT NULL,
Price Number(8,2) NOT NULL,
Hand_out_date Date,
Client_id Integer NOT NULL,
id_Employee Integer NOT NULL
)
/
-- Create indexes for table Orders
CREATE INDEX IX_makes_an_order ON Orders (Client_id)
/
CREATE INDEX IX_is_fulfilled_by ON Orders (id_Employee)
/
-- Add keys for table Orders
ALTER TABLE Orders ADD CONSTRAINT TicketPK PRIMARY KEY (id_Order)
/
-- Table Clients
CREATE TABLE Clients(
id_Client Integer NOT NULL,
Name Varchar2(20 ) NOT NULL,
Surname Varchar2(30 ) NOT NULL,
Sex Char(1 ) NOT NULL
CONSTRAINT CheckConstraintA1 CHECK (Sex IN ('F', 'M'))
CHECK (Sex IN ('F', 'M')),
Email Varchar2(30 ) NOT NULL,
Password Varchar2(20 ) NOT NULL,
Phone_number Varchar2(12 ) NOT NULL,
id_Address Integer,
id_Computer_Service Integer NOT NULL
)
/
-- Create indexes for table Clients
CREATE INDEX IX_Client_has_address ON Clients (id_Address)
/
CREATE INDEX IX_Client_orders_in_cs ON Clients (id_Computer_Service)
/
-- Add keys for table Clients
ALTER TABLE Clients ADD CONSTRAINT ClientPK PRIMARY KEY (id_Client)
/
-- Table Devices
CREATE TABLE Devices(
id_Device Integer NOT NULL,
Type Integer NOT NULL
CHECK (Type IN ('Mobile device', 'Computer')),
Order_id Integer NOT NULL,
id_Model Integer NOT NULL
)
/
-- Create indexes for table Devices
CREATE INDEX IX_consists_of ON Devices (Order_id)
/
CREATE INDEX IX_Device_has ON Devices (id_Model)
/
-- Add keys for table Devices
ALTER TABLE Devices ADD CONSTRAINT DevicePK PRIMARY KEY (id_Device)
/
-- Table Addresses
CREATE TABLE Addresses(
id_Address Integer NOT NULL,
City Varchar2(20 ) NOT NULL,
Street Varchar2(30 ) NOT NULL,
Flat_no Varchar2(5 ) NOT NULL,
Postal_code Char(6 ) NOT NULL
)
/
-- Add keys for table Addresses
ALTER TABLE Addresses ADD CONSTRAINT PK_Addresses PRIMARY KEY (id_Address)
/
-- Table and Columns comments section
COMMENT ON COLUMN Addresses.id_Address IS 'Address id number, primary key'
/
-- Table Owners
CREATE TABLE Owners(
id_Owner Integer NOT NULL,
Name Varchar2(20 ) NOT NULL,
Surname Varchar2(30 ) NOT NULL,
Email Varchar2(30 ) NOT NULL,
Password Varchar2(20 ) NOT NULL,
id_Computer_Service Integer NOT NULL
)
/
-- Create indexes for table Owners
CREATE INDEX IX_has_owner ON Owners (id_Computer_Service)
/
-- Add keys for table Owners
ALTER TABLE Owners ADD CONSTRAINT PK_Owners PRIMARY KEY (id_Owner)
/
-- Table Specializations
CREATE TABLE Specializations(
Id_Specialization Integer NOT NULL,
Specialization_name Integer NOT NULL
CHECK (Specialization_name IN ('Mobile device', 'Computer')),
Description Varchar2(100 )
)
/
-- Add keys for table Specializations
ALTER TABLE Specializations ADD CONSTRAINT PK_Specializations PRIMARY KEY (Id_Specialization)
/
ALTER TABLE Specializations ADD CONSTRAINT Name UNIQUE (Specialization_name)
/
-- Table Acquired_specializations
CREATE TABLE Acquired_specializations(
Id_Specialization Integer NOT NULL,
id_Employee Integer NOT NULL
)
/
-- Add keys for table Acquired_specializations
ALTER TABLE Acquired_specializations ADD CONSTRAINT PK_Acquired_specializations PRIMARY KEY (Id_Specialization,id_Employee)
/
-- Table Salaries
CREATE TABLE Salaries(
id_Salary Integer NOT NULL,
Salary_date Date NOT NULL,
Basic_salary Number(8,2) NOT NULL,
Extra_salary Number(8,2) NOT NULL,
id_Employee Integer NOT NULL
)
/
-- Create indexes for table Salaries
CREATE INDEX IX_gets_salaries ON Salaries (id_Employee)
/
-- Add keys for table Salaries
ALTER TABLE Salaries ADD CONSTRAINT PK_Salaries PRIMARY KEY (id_Salary)
/
-- Table and Columns comments section
COMMENT ON COLUMN Salaries.id_Salary IS 'Salary id number'
/
COMMENT ON COLUMN Salaries.Salary_date IS 'Date of payroll'
/
COMMENT ON COLUMN Salaries.Basic_salary IS 'Basic salary'
/
COMMENT ON COLUMN Salaries.Extra_salary IS 'Extra salary'
/
-- Table Manufacturers
CREATE TABLE Manufacturers(
id_Manufacturer Integer NOT NULL,
Name Varchar2(20 ) NOT NULL,
Description Varchar2(100 )
)
/
-- Add keys for table Manufacturers
ALTER TABLE Manufacturers ADD CONSTRAINT PK_Manufacturers PRIMARY KEY (id_Manufacturer)
/
ALTER TABLE Manufacturers ADD CONSTRAINT Manu_Name UNIQUE (Name)
/
-- Table Models
CREATE TABLE Models(
id_Model Integer NOT NULL,
Name Varchar2(20 ) NOT NULL,
Description Varchar2(100 )
)
/
-- Create indexes for table Models
CREATE INDEX IX_Models_have_manufacturers ON Models (Name)
/
-- Add keys for table Models
ALTER TABLE Models ADD CONSTRAINT PK_Models PRIMARY KEY (id_Model)
/
-- Create foreign keys (relationships) section -------------------------------------------------
ALTER TABLE Offices ADD CONSTRAINT runs FOREIGN KEY (Computer_Service_id) REFERENCES Computer_Services (id_Computer_Service)
/
ALTER TABLE Orders ADD CONSTRAINT makes_an_order FOREIGN KEY (Client_id) REFERENCES Clients (id_Client)
/
ALTER TABLE Devices ADD CONSTRAINT consists_of FOREIGN KEY (Order_id) REFERENCES Orders (id_Order)
/
ALTER TABLE Owners ADD CONSTRAINT has_owner FOREIGN KEY (id_Computer_Service) REFERENCES Computer_Services (id_Computer_Service)
/
ALTER TABLE Offices ADD CONSTRAINT Office_has_address FOREIGN KEY (id_Address) REFERENCES Addresses (id_Address)
/
ALTER TABLE Employees ADD CONSTRAINT Employee_has_address FOREIGN KEY (id_Address) REFERENCES Addresses (id_Address)
/
ALTER TABLE Clients ADD CONSTRAINT Client_has_address FOREIGN KEY (id_Address) REFERENCES Addresses (id_Address)
/
ALTER TABLE Acquired_specializations ADD CONSTRAINT has FOREIGN KEY (Id_Specialization) REFERENCES Specializations (Id_Specialization)
/
ALTER TABLE Acquired_specializations ADD CONSTRAINT specializes_in FOREIGN KEY (id_Employee) REFERENCES Employees (id_Employee)
/
ALTER TABLE Salaries ADD CONSTRAINT Employee_gets_salary FOREIGN KEY (id_Employee) REFERENCES Employees (id_Employee)
/
ALTER TABLE Models ADD CONSTRAINT Manufacturer_produces FOREIGN KEY (Name) REFERENCES Manufacturers (Name)
/
ALTER TABLE Devices ADD CONSTRAINT Device_has FOREIGN KEY (id_Model) REFERENCES Models (id_Model)
/
ALTER TABLE Employees ADD CONSTRAINT employs FOREIGN KEY (id_Offices) REFERENCES Offices (id_Offices)
/
ALTER TABLE Clients ADD CONSTRAINT has_client FOREIGN KEY (id_Computer_Service) REFERENCES Computer_Services (id_Computer_Service)
/
ALTER TABLE Orders ADD CONSTRAINT fulfills FOREIGN KEY (id_Employee) REFERENCES Employees (id_Employee)
/