You are on page 1of 3

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ – ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΜΑΘΗΜΑ: ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ (εαρινό εξάμηνο 2014-15)


ΔΙΔΑΣΚΩΝ: Γιάννης Θεοδωρίδης
ΒΟΗΘΟΙ: Μάριος Βόντας, Παναγιώτης Ταμπάκης

ΕΡΓΑΣΙΑ ΕΞΑΜΗΝΟΥ (σε ομάδες των 2 ατόμων)

Έστω η ΒΔ ενός Ξενοδοχείου. Το εν λόγω ξενοδοχειακό συγκρότημα προσφέρει διάφορες


κατηγορίες προϊόντων και υπηρεσιών, όπως για παράδειγμα, υπηρεσίες Σίτισης, μέσα από
μια πλειάδα εστιατορίων και μπαρ, υπηρεσίες Spa κτλ. Κάθε προϊόν και υπηρεσία που
προσφέρει το Ξενοδοχείο έχει ένα μοναδικό κωδικό και ανήκει σε μία από αυτές τις
κατηγορίες. Kάθε Χρέωση αφορά έναν Πελάτη και αναλαμβάνεται από έναν Υπάλληλο.
Κάθε Πελάτης λαμβάνει μία σειρά από υπηρεσίες / προϊόντα. Επιπλέον, μια Διαμονή
αφορά ένα δωμάτιο και έναν ή περισσότερους Πελάτες καθ’ όλη τη διάρκεια της Διαμονής.
Επίσης, η Αξία Διαμονής αφορά την αγορά προϊόντων και υπηρεσιών (αλλά όχι το κόστος
του δωματίου) και ενημερώνεται αυτόματα έτσι ώστε να αντικατοπτρίζει την τρέχουσα
αξία (λόγω των υπηρεσιών / προϊόντων που περιλαμβάνει).
Τέλος, διατηρείται ξεχωριστά ο πίνακας ΔΙΑΘΕΣΙΜΟΤΗΤΑ ο οποίος ενημερώνεται
αυτόματα έτσι ώστε ανά πάσα χρονική στιγμή να ανταποκρίνεται στην πραγματική
κατάσταση του Ξενοδοχείου.
Σχεσιακό Σχήμα
 ΠΕΛΑΤΕΣ (ΚΩΔΙΚΟΣ_ΠΕΛΑΤΗ, ΑΦΜ_ΠΕΛΑΤΗ, ΟΝΟΜΑ, ΕΠΩΝΥΜΟ, ΦΥΛΟ,
ΗΜ_ΝΙΑ_ΓΕΝΝΗΣΗΣ, ΔΙΕΥΘΥΝΣΗ, ΤΗΛΕΦΩΝΟ)
 ΥΠΑΛΛΗΛΟΙ (ΚΩΔΙΚΟΣ_ΥΠΑΛΛΗΛΟΥ, ΟΝΟΜΑ, ΕΠΩΝΥΜΟ, ΕΙΔΙΚΟΤΗΤΑ,
ΔΙΕΥΘΥΝΣΗ, ΤΗΛΕΦΩΝΟ)
 ΔΩΜΑΤΙΑ (ΑΡΙΘΜΟΣ_ΔΩΜΑΤΙΟΥ, ΧΩΡΗΤΙΚΟΤΗΤΑ_ΔΩΜΑΤΙΟΥ,
ΚΑΤΗΓΟΡΙΑ_ΔΩΜΑΤΙΟΥ)
 ΔΙΑΜΟΝΗ (ΚΩΔΙΚΟΣ_ΔΙΑΜΟΝΗΣ, ΑΡΙΘΜΟΣ_ΔΩΜΑΤΙΟΥ (FK),
ΗΜ_ΝΙΑ_ΕΝΑΡΞΗΣ, ΗΜ_ΝΙΑ_ΛΗΞΗΣ, ΑΞΙΑ_ΔΙΑΜΟΝΗΣ)
 ΠΕΛΑΤΕΣ ΔΙΑΜΟΝΗΣ (ΚΩΔΙΚΟΣ_ΔΙΑΜΟΝΗΣ (FK), ΚΩΔΙΚΟΣ_ΠΕΛΑΤΗ
(FK))
 ΧΡΕΩΣΕΙΣ_ΠΕΛΑΤΩΝ (ΚΩΔΙΚΟΣ_ΠΕΛΑΤΗ (FK), ΚΩΔΙΚΟΣ_ΠΡΟΪΟΝΤΟΣ
(FK), ΗΜ/ΝΙΑ_ΧΡΕΩΣΗΣ, ΚΩΔΙΚΟΣ_ΥΠΑΛΛΗΛΟΥ (FK), ΠΟΣΟΤΗΤΑ)
 ΠΡΟΪΟΝΤΑ (ΚΩΔΙΚΟΣ_ΠΡΟΪΟΝΤΟΣ, ΟΝΟΜΑΣΙΑ_ΠΡΟΪΟΝΤΟΣ,
ΑΞΙΑ_ΜΟΝΑΔΑΣ_ΠΡΟΪΟΝΤΟΣ)
 ΔΙΑΘΕΣΙΜΟΤΗΤΑ (ΚΩΔΙΚΟΣ_ΕΓΓΡΑΦΗΣ,
ΣΥΝΟΛΙΚΟΣ_ΑΡΙΘΜΟΣ_ΔΩΜΑΤΙΩΝ, ΔΙΑΘΕΣΙΜΟΣ_ΑΡΙΘΜΟΣ_ΔΩΜΑΤΙΩΝ,
ΠΛΗΡΟΤΗΤΑ)

Σημειώσεις:
 Οι τιμές που λαμβάνει το χαρακτηριστικό «ΚΩΔΙΚΟΣ_ΕΓΓΡΑΦΗΣ» της σχέσης
ΔΙΑΘΕΣΙΜΟΤΗΤΑ προσαυξάνονται αυτόματα (auto incremental).
 Το χαρακτηριστικό ΗΜ/ΝΙΑ_ΧΡΕΩΣΗΣ της σχέσης ΧΡΕΩΣΕΙΣ_ΠΕΛΑΤΩΝ είναι
χρονόσημο (περιέχει ημερομηνία και ώρα)

Ερωτήματα:

(α – 20%) Υλοποιήστε τη ΒΔ στο σύστημα MySQL (υποχρεωτικά) με κατάλληλες εντολές


δημιουργίας των πινάκων. Θα πρέπει να επιβάλλετε και να αναφέρετε
αναλυτικά τους περιορισμούς ακεραιότητας που θέσατε κατά στην υλοποίηση
των πινάκων και να προβείτε σε εισαγωγή ρεαλιστικών (πλήθους 10-20)
εγγραφών σε κάθε πίνακα.
(β – 20%) Εκτελέστε τα ακόλουθα SQL ερωτήματα.
(i) Ποιες είναι οι συνολικές εισπράξεις του Ξενοδοχείου για κάθε μήνα του 2014
(μήνας , συνολική είσπραξη), ταξινομημένες ως προς το μήνα.
(ii) Ποιος είναι ο Πελάτης με τις περισσότερες ημέρες διαμονής (θα πρέπει να
λάβετε υπόψη σας ότι ένας πελάτης μπορεί να έχει επισκεφθεί πολλές φορές
το εν λόγω ξενοδοχείο).
(iii) Ποια είναι τα 2 προϊόντα µε τον μέγιστο και ελάχιστο, αντίστοιχα, αριθμό
πωλήσεων το έτος 2014.
(iv) Ποιός είναι ο Υπάλληλος με τη μεγαλύτερη αξία πωλήσεων.
(v) Ποια είναι η μέση «Κάλυψη» των δωματίων του ξενοδοχείου ανά μήνα.
(Κάλυψη ενός δωματίου για μία Διαμονή= Αριθμός Ατόμων που Διαμένουν
στο Δωμάτιο/Χωρητικότητα Δωματίου)
Η απάντηση όλων των παραπάνω ερωτημάτων να περιλαμβάνει τα σχετικά
screenshots των SQL εντολών και των αποτελεσμάτων τους.
(γ – 20%) Υλοποιήστε, κάνοντας χρήση trigger:
 την αυτόματη ενημέρωση του πεδίου ΔΙΑΜΟΝΗ.ΑΞΙΑ_ΔΙΑΜΟΝΗΣ
 την αυτόματη ενημέρωση του πίνακα ΔΙΑΘΕΣΙΜΟΤΗΤΑ (ο πίνακας αυτός θα
περιέχει μια εγγραφή η οποία θα ενημερώνεται κάθε φορά που μεταβάλλεται
η πληρότητα του ξενοδοχείου)
 τον περιορισμό έτσι ώστε να μην μπορούν να καταχωρηθούν σε ένα δωμάτιο
παραπάνω άτομα απ’ ότι προβλέπεται από την χωρητικότητα του εκάστοτε
δωματίου
Η απάντησή σας θα πρέπει να περιλαμβάνει τον κώδικα των triggers, καθώς και
screenshots με παράδειγμα εκτέλεσης εντολής που να τα ενεργοποιεί.
(δ – 20%) Μετατρέψτε τη σχεδίαση λογικού επιπέδου (σχεσιακό σχήμα) που σας έχει
δοθεί, σε σχεδίαση εννοιολογικού επιπέδου (διάγραμμα E-R)1, ακολουθώντας
δηλαδή μια διαδικασία αντίστροφη της κλασικής σχεδίασης ΒΔ.
Επιχειρηματολογήστε για τις αποφάσεις που πήρατε για να θεωρήσετε κάτι
ως οντότητα, συσχέτιση, χαρακτηριστικό, κοκ.
(ε – 20%) Υλοποιήστε προγραμματιστικά έναν client σε οποιαδήποτε γλώσσα
προγραμματισμού γνωρίζετε (π.χ. Java) χρησιμοποιώντας την κατάλληλη

1Για τη σχεδίαση του ER διαγράμματος μπορείτε να χρησιμοποιήσετε εργαλείο της επιλογής σας. Ως μια
εύχρηστη λύση προτείνεται το εργαλείο dia που διατίθεται στο: http://dia-installer.de/index_en.html
βιβλιοθήκη σύνδεσης με την MySQL (π.χ. JDBC). Ο client θα συνδέεται στο
ΣΔΒΔ της MySQL, θα εκτελεί ένα ερώτημα από το ερώτημα (β), και θα
εμφανίζει το αποτέλεσμα στον χρήστη (είτε σε terminal είτε με γραφικά).

Τόπος και ημερομηνία παράδοσης


Κάθε ομάδα θα παραδώσει την εργασία της (εκτύπωση αναφοράς με απαντήσεις στα
επιμέρους ερωτήματα + CD με τα σχετικά scripts δημιουργίας της ΒΔ, πλήρωσης της ΒΔ με
δεδομένα, υποβολής ερωτημάτων SQL, triggers κτλ.) στη θυρίδα του κ. Θεοδωρίδη (γρ.
501) μέχρι την ημερομηνία εξέτασης του μαθήματος που θα ανακοινωθεί για την
εξεταστική του Ιουνίου 2015. Μετά τη συγκεκριμένη ημερομηνία καμία εργασία δεν θα
γίνεται δεκτή. Υπενθυμίζεται επίσης ότι δεν γίνονται εκπρόθεσμα δεκτές εργασίες για την
εξεταστική Σεπτεμβρίου. Σε κάθε εργασία πρέπει οπωσδήποτε να αναγράφονται τα
ονόματα και οι ΑΜ των μελών της ομάδας καθώς και η ημερομηνία παράδοσης.
Για τη βαθμολόγηση της εργασίας θα ληφθεί υπόψη η προφορική εξέταση που θα γίνει στο
εργαστήριο, σε ημερομηνία η οποία θα ανακοινωθεί στο e-class. Η προσέλευση στην
προφορική εξέταση είναι υποχρεωτική για όλα τα μέλη της ομάδας.

Απορίες σχετικά με την εργασία


Για απορίες που αφορούν την εργασία μπορείτε να απευθύνεστε στους κκ. Μάριο Βόντα
(mvodas[at]unipi[dot]gr) και Παναγιώτη Ταμπάκη (ptampak[at]unipi[dot]gr), κατά
προτίμηση μέσω της περιοχής συζητήσεων στη σελίδα του μαθήματος στο e-class
(http://gunet2.cs.unipi.gr/eclass/courses/TMB102/), αλλιώς με email.

Ζητήματα δεοντολογίας
Είναι προφανές ότι η βαθμολογία πρέπει να αντικατοπτρίζει το επίπεδο της γνώσης που
αποκόμισε ο φοιτητής μέσα από το μάθημα και κατάφερε να μεταφέρει αυτή τη γνώση
στην άσκηση. Για να εξασφαλιστεί όσο είναι δυνατό η παραπάνω αρχή, σε περίπτωση
αντιγραφής οι εμπλεκόμενες εργασίες μηδενίζονται.

You might also like