This repository has been archived by the owner on Jan 28, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathREADME.txt
184 lines (89 loc) · 8.5 KB
/
README.txt
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
------------------------------------------------------------------------------------------------
Ομάδα 126
Τσιπουράκη Αλεξάνδρα - 2018030089
Πέτρου Δημήτριος - 2018030070
------------------------------------------------------------------------------------------------
Σε αυτό το αρχείο υπάρχουν διάφορες πληροφορίες σχετικά με την υλοποιήση της Α'φάσης του project
του μαθήματος ΠΛΗ303-Βάσεις Δεδομένων.
------------------------------------------ Παρατηρήσεις ----------------------------------------
1) Στη βάση επιλέχθηκε οι ζητούμενες συναρτήσεις να κατατμηθούν σε μικρότερες συναρτήσεις για
πιο οργανωμένη και ευανάγνωστη συγγραφή κώδικα. Οι βοηθητικές συναρτήσεις αυτές δεν αντιστοι-
χίζονται σε ερωτήματα και μια λίστα αυτών υπάρχει παρακάτω.
2) Οι συναρτήσεις που απαντούν στα ερωτήματα της εκφώνησης ονομάστηκαν σύμφωνα με το πρότυπο:
function_name_X_X(args) όπου Χ,Χ ο αριθμός του ερωτήματος.
3) Για την κλήση μιας συνάρτησης μπορεί να χρησιμοποιηθεί το query:
SELECT * FROM function_name_X_X(args);
4) Στο directory που παραδόθηκε εντός του φακέλου 'SQL Functions' υπάρχουν αρχεία .sql για κάθε
ερώτημα που απαντήθηκε το source code της εκάστοτε συνάρτησης, συνοδευόμενα από αντίστοιχα
queries.
5) Το backup αρχείο που περιέχει τη βάση, παράχθηκε με την έκδοση 5.2 τoυ pgAdmin4 και
έκδοση PostgreSQL Server 11.11
------------------------------------------------------------------------------------------------
--------------------------------------- Συνθήκες Υλοποιήσης ------------------------------------
Παρατηρήθηκαν ή έγιναν τα εξής:
1) Στη βάση που διατέθηκε υπήρχαν tuples του πίνακα "hotelbooking" τα οποία δεν είχαν κανένα
"roombooking" προς αντιστοίχιση (πχ 897)
2) Oρισμένοι εργαζόμενοι μπορούν να λάβουν και ρόλο client όχι απαραίτητα στο ίδιο ξενοδοχείο.
3) Εισήχθησαν μερικές εκατοντάδες tuples στον πίνακα "activity" που για το κάθε ένα υπάρχει
1 employee που το κάνει reserve και 1 responsible employee που κάνει participate σε αυτό.
Κάθε ξενοδόχειο έχει 3 activities, εκ των οποίων 1 δεν έχει participants, προκειμένου
να γίνουν οι απαραίτητες δοκιμές για τα ζητούμενα queries. Αξίζει να σημειωθεί πως επειδή
οι χρόνοι διεξαγωγής του κάθε activity παρήχθησαν τυχαία ενδεχόμενως να μην υπάρχει απόλυτη
ομοιομορφία και λογική στη διάρκεια.
4) Με σκοπό να δοκιμαστεί το trigger του 5.1 ερωτήματος επιλέχθηκαν τυχαία 2000 tuples του
"hotelbooking" να γίνουν payed=TRUE
------------------------------------------------------------------------------------------------
---------------------------------------- Λίστα Συναρτήσεων -------------------------------------
Α) Συναρτήσεις Ερωτημάτων
--- 2.1 ---
edit_client_2_1(actionArg varchar, docClient varchar, fnamee varchar, lnamee varchar, sexx character, dateofbirthh date, addresss varchar, cityy varchar, countryy varchar, cardtypee varchar, cardnumberr varchar, holderr varchar, expirationn date)
insert_client_2_1(docClient varchar, fname varchar, lname varchar, sex character, dateofbirth date, address varchar, city varchar, country varchar, cardtype varchar, cardnumber varchar, holder varchar, expiration date)
delete_client_2_1(docClient varchar, lastname varchar, cardnumber varchar)
update_client_2_1(docClient varchar, fnamee varchar, lnamee varchar, sexx character, dateofbirthh date, addresss varchar, cityy varchar, countryy varchar, cardtypee varchar, cardnumberr varchar, holderr varchar, expirationn date)
--- 3.1 ---
find_discounts_3_1()
--- 3.2 ---
find_hotel_amenities_3_2(hname varchar, hasstars varchar)
--- 3.3 ---
find_max_discount_rooms_of_hotels_3_3()
--- 3.4 ---
find_hotel_bookings_3_4(hotelIDarg integer)
--- 3.5 ---
find_hotel_empty_activities_3_5(idhot integer)
--- 4.1 ---
calculate_activities_ofclient_4_1(hotelid integer)
--- 4.2 ---
calculate_avg_age_4_2(roomtypearg varchar)
--- 4.3 ---
calculate_cheapest_rate_for_country_4_3(countryname varchar)
--- 4.4 ---
calculate_best_hotels_byincome_4_4()
--- 4.5 ---
calculate_completeness_4_5(hotelid integer,yearArg integer)
--- 5.0 ---
Τα headers των συναρτήσεων για τα triggers βρίσκονται εντός της βάσης σε περίπτωση που χρειαστούν
Β) Βοηθητικές συναρτήσεις
add_activity(args) : Εισαγωγή νέου activity με βάση τα arguments
checkifclient(args) : Έλεγχος αν ένα id ανήκει σε πελάτη του ξενοδοχείου
convertinttoday(args) : Μετατροπή ακεραίου σε ημέρα της εβδομάδας (πχ 1->Δευτέρα)
find_booking_whomanages(args) : Έυρεση του εργαζομένου που διαχειρίζεται μια κράτηση
find_cancel_date_of_booking(args) : Εύρεση της ημερομηνίας ακύρωσης μιας κράτηση
find_hotel_manager(args) : Εύρεση του διευθυντή ενός ξενοδοχείου
find_hotel_ofbookings(args) : Εύρεση του ξενοδοχείο στο οποίο ανήκει μια κράτηση
find_roombookings_of_hotel(args) : Eύρεση των κρατήσεων των δωματίων ενός ξενοδοχείου
find_roombooking_hotel_period(args) : Εύρεση των κρατήσεων ενός ξενοδοχείου σε ένα συγκερκιμένο διάστημα
find_bookings_of_client(args) : Εύρεση των κρατήσεων ενός συγκεκριμένου πελάτη
find_available_rooms_of_hotel(args) : Εύρεση των διαθεσιμων δωματιών ενός ξενοδοχείου για ενα συγκεκριμενο χρονικο διαστημα
find_hotel_clients_prefix(args) : Εύρεση πελατών ενός ξενοδοχείου σύμφωνα με πρόθεμα επωνύμου
find_next_week() : Εύρεση της πρώτης και της τελευταίας μέρας της επόμενης βδομάδας από την τρέχουσα
generate_manages() : Ανάθεση των κράτησεων κάθε ξενοδοχείου σε τυχαίο εργαζόμενο του
get_hotel_rooms(args) : Εύρεση των ids των δωματίων ενός ξενοδοχείου
get_name_by_id(args) : Εύρεση του ονόματος ενός person με βάση το id του.
gethotelclients(args) : Eύρεση των πελατών ενός ξενοδοχείο
gethotelemployees(args) : Εύρεση των εργαζομένων ενός ξενοδοχείου
selectrandomhotelclient(args) : Επιλογή ενός τυχαίου πελάτη ενός ξενοδοχείου
selectrandomhotelemployees(args) : Επιλογή ενός τυχαίου εργαζομένου ενός ξενοδοχείου
show_allclients() : Εμφάνιση όλων των πελατών της βάσης
show_allemployees() : Εμφάνιση όλων των εργαζομένων της βάσης.
update_roombooking(args) : Ενημέρωση ενός roombooking
------------------------------------------------------------------------------------------------