-
Notifications
You must be signed in to change notification settings - Fork 3
/
DWH Creation.SQL
242 lines (225 loc) · 5.96 KB
/
DWH Creation.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
CREATE TABLE Aircraft
(
Aircraft_Id INT NOT NULL,
Model VARCHAR(100) NOT NULL,
Type VARCHAR(75) NOT NULL,
Capacity INT NOT NULL,
Manufacturer VARCHAR(100) NOT NULL,
PRIMARY KEY (Aircraft_Id)
);
CREATE TABLE Route
(
Route_ID INT NOT NULL,
SourceCity VARCHAR(50) NOT NULL,
DestCity VARCHAR(50) NOT NULL,
EstDistance INT,
SrcCountry VARCHAR(75) NOT NULL,
DestCountry VARCHAR(75) NOT NULL,
PRIMARY KEY (Route_ID)
);
CREATE TABLE Date
(
Date_ID INT NOT NULL,
minute INT NOT NULL,
hour INT NOT NULL,
week INT NOT NULL,
month INT NOT NULL,
quarter INT NOT NULL,
year INT NOT NULL,
Day INT NOT NULL,
PRIMARY KEY (Date_ID)
);
CREATE TABLE Crew_Member
(
Member_ID INT NOT NULL,
FName VARCHAR(50) NOT NULL,
LNname VARCHAR(50) NOT NULL,
DOB DATE,
Gender_ CHAR(1) NOT NULL,
City VARCHAR(50),
Country VARCHAR(75),
Email VARCHAR(100),
Position VARCHAR(50) NOT NULL,
HireDate DATE NOT NULL,
Phone VARCHAR(15) NOT NULL,
PRIMARY KEY (Member_ID)
);
CREATE TABLE Airport
(
Airport_ID INT NOT NULL,
Country VARCHAR(75) NOT NULL,
City VARCHAR(50) NOT NULL,
Name VARCHAR(49) NOT NULL,
PRIMARY KEY (Airport_ID)
);
CREATE TABLE Bridge_Flight_
(
Flight_ID INT NOT NULL,
Aircraft_Id INT NOT NULL,
Route_ID INT NOT NULL,
SRCAirport_ID INT NOT NULL,
DestAirport_ID INT NOT NULL,
PRIMARY KEY (Flight_ID),
FOREIGN KEY (Aircraft_Id) REFERENCES Aircraft(Aircraft_Id),
FOREIGN KEY (Route_ID) REFERENCES Route(Route_ID),
FOREIGN KEY (SRCAirport_ID) REFERENCES Airport(Airport_ID),
FOREIGN KEY (DestAirport_ID) REFERENCES Airport(Airport_ID)
);
CREATE TABLE Customer
(
Customer_ID INT NOT NULL,
FName VARCHAR(50) NOT NULL,
LName VARCHAR(50) NOT NULL,
Gender CHAR(1) NOT NULL,
City VARCHAR(50),
Country VARCHAR(75),
DOB DATE,
Email VARCHAR(100),
Phone VARCHAR(15),
status VARCHAR(15),
PRIMARY KEY (Customer_ID)
);
CREATE TABLE Upgrade
(
Upgrade_ID INT NOT NULL,
Name VARCHAR(50) NOT NULL,
Description VARCHAR(256) NOT NULL,
StartDate DATE NOT NULL,
EndDate DATE NOT NULL,
Conditions VARCHAR(256) NOT NULL,
PRIMARY KEY (Upgrade_ID)
);
CREATE TABLE Promotion
(
Promotion_ID INT NOT NULL,
Name VARCHAR(50) NOT NULL,
Descrition VARCHAR(256) NOT NULL,
StartDate DATE NOT NULL,
EndDate DATE NOT NULL,
Conditions VARCHAR(256) NOT NULL,
PRIMARY KEY (Promotion_ID)
);
CREATE TABLE Flyer_Miles
(
FM_ID INT NOT NULL,
miles INT NOT NULL,
Description VARCHAR(512) NOT NULL,
PRIMARY KEY (FM_ID)
);
CREATE TABLE Fare_Basis_Class
(
FBC_ID INT NOT NULL,
Name VARCHAR(50) NOT NULL,
Description VARCHAR(256) NOT NULL,
Privileges VARCHAR(256),
PRIMARY KEY (FBC_ID)
);
CREATE TABLE Payment_Method
(
PM_ID INT NOT NULL,
Name VARCHAR(50) NOT NULL,
Description VARCHAR(256) NOT NULL,
PRIMARY KEY (PM_ID)
);
CREATE TABLE Channel_
(
Channel_ID INT NOT NULL,
Name VARCHAR(50) NOT NULL,
Description VARCHAR(256) NOT NULL,
Users INT NOT NULL,
Status INT NOT NULL,
PRIMARY KEY (Channel_ID)
);
CREATE TABLE Action
(
Action_ID INT NOT NULL,
Type VARCHAR(50) NOT NULL,
Name VARCHAR(50) NOT NULL,
Description VARCHAR(256) NOT NULL,
Body VARCHAR(1024) NOT NULL,
PRIMARY KEY (Action_ID)
);
CREATE TABLE Flight
(
NoPassengers INT NOT NULL,
EmptySeats INT NOT NULL,
CrewCounter INT NOT NULL,
Tickets INT NOT NULL,
ID INT NOT NULL,
Flight_ID INT NOT NULL,
Captain_ID INT NOT NULL,
Co_Captain_ID INT NOT NULL,
Flight__attendant_ID INT NOT NULL,
Dep_Date_ID INT NOT NULL,
Arr_Date_ID INT NOT NULL,
PRIMARY KEY (ID),
FOREIGN KEY (Flight_ID) REFERENCES Bridge_Flight_(Flight_ID),
FOREIGN KEY (Captain_ID) REFERENCES Crew_Member(Member_ID),
FOREIGN KEY (Co_Captain_ID) REFERENCES Crew_Member(Member_ID),
FOREIGN KEY (Flight__attendant_ID) REFERENCES Crew_Member(Member_ID),
FOREIGN KEY (Dep_Date_ID) REFERENCES Date(Date_ID),
FOREIGN KEY (Arr_Date_ID) REFERENCES Date(Date_ID),
UNIQUE (Flight_ID)
);
CREATE TABLE Marketing_Analysis
(
MA_ID INT NOT NULL,
Customer_ID INT NOT NULL,
Date_ID INT NOT NULL,
Flight_ID INT NOT NULL,
Upgrade_ID INT NOT NULL,
Promotion_ID INT NOT NULL,
FM_Obtained_ID INT NOT NULL,
FM_Redeemed_ID INT NOT NULL,
PRIMARY KEY (MA_ID),
FOREIGN KEY (Customer_ID) REFERENCES Customer(Customer_ID),
FOREIGN KEY (Date_ID) REFERENCES Date(Date_ID),
FOREIGN KEY (Flight_ID) REFERENCES Bridge_Flight_(Flight_ID),
FOREIGN KEY (Upgrade_ID) REFERENCES Upgrade(Upgrade_ID),
FOREIGN KEY (Promotion_ID) REFERENCES Promotion(Promotion_ID),
FOREIGN KEY (FM_Obtained_ID) REFERENCES Flyer_Miles(FM_ID),
FOREIGN KEY (FM_Redeemed_ID) REFERENCES Flyer_Miles(FM_ID)
);
CREATE TABLE Reservations_
(
Reservation_ID INT NOT NULL,
BasePrice INT NOT NULL,
OvernightStand INT,
Discount_ NUMERIC NOT NULL,
Price_ INT NOT NULL,
Distance INT,
SeatNumber int NOT NULL,
Customer_ID INT NOT NULL,
Flight_ID INT NOT NULL,
Date_ID INT NOT NULL,
Channel_ID INT NOT NULL,
FBC_ID INT NOT NULL,
PM_ID INT NOT NULL,
PRIMARY KEY (Reservation_ID),
FOREIGN KEY (Customer_ID) REFERENCES Customer(Customer_ID),
FOREIGN KEY (Flight_ID) REFERENCES Bridge_Flight_(Flight_ID),
FOREIGN KEY (Date_ID) REFERENCES Date(Date_ID),
FOREIGN KEY (Channel_ID) REFERENCES Channel_(Channel_ID),
FOREIGN KEY (FBC_ID) REFERENCES Fare_Basis_Class(FBC_ID),
FOREIGN KEY (PM_ID) REFERENCES Payment_Method(PM_ID)
);
CREATE TABLE Customer_Services
(
CS_ID INT NOT NULL,
Severity_ INT NOT NULL,
Customer_ID INT NOT NULL,
Flight_ID INT NOT NULL,
PM_ID INT NOT NULL,
Channel_ID INT NOT NULL,
Member_ID INT NOT NULL,
Date_ID INT NOT NULL,
Action_ID INT NOT NULL,
PRIMARY KEY (CS_ID),
FOREIGN KEY (Customer_ID) REFERENCES Customer(Customer_ID),
FOREIGN KEY (Flight_ID) REFERENCES Bridge_Flight_(Flight_ID),
FOREIGN KEY (PM_ID) REFERENCES Payment_Method(PM_ID),
FOREIGN KEY (Channel_ID) REFERENCES Channel_(Channel_ID),
FOREIGN KEY (Member_ID) REFERENCES Crew_Member(Member_ID),
FOREIGN KEY (Date_ID) REFERENCES Date(Date_ID),
FOREIGN KEY (Action_ID) REFERENCES Action(Action_ID)
);