ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ, ΤΜΗΜΑ ΕΠΙΚΟΙΝΩΝΙΑΣ & ΣΠΟΥΔΩΝ ΔΙΑΔΙΚΤΥΟΥ ΕΣΔ 232: ΟΡΓΑΝΩΣΗ ΔΕΔΟΜΕΝΩΝ ΣΤΗΝ ΚΟΙΝΩΝΙΑ ΤΗΣ ΠΛΗΡΟΦΟΡΙΑΣ Ακαδημαϊκό Έτος 2011 2012, Εαρινό Εξάμηνο Καθ.: Νίκος Τσαπατσούλης ΥΠΟΔΕΙΓΜΑ ΤΕΛΙΚΗΣ ΕΞΕΤΑΣΗΣ Η εξέταση αποτελείται από δύο μέρη: Το πρώτο περιλαμβάνει δέκα απλές ερωτήσεις, τις οποίες θα πρέπει να απαντήσετε υποχρεωτικά, και βαθμολογείται με 50 μονάδες. Το δεύτερο μέρος περιλαμβάνει δύο πιο σύνθετες ασκήσεις από τις οποίες πρέπει να απαντήσετε τη μια και βαθμολογείται με 50 μονάδες. ΠΡΟΣΟΧΗ: Σε περίπτωση απάντησης περισσότερων από μία ασκήσεις θα ληφθεί υπόψη αυτή με τη χειρότερη βαθμολογία. ΔΙΑΡΚΕΙΑ ΕΞΕΤΑΣΗΣ: 2 ΩΡΕΣ ΟΝΟΜΑΤΕΠΩΝΥΜΟ: ΑΡΙΘΜΟΣ ΦΟΙΤΗΤΙΚΗΣ ΤΑΥΤΟΤΗΤΑΣ:... ΕΞΑΜΗΝΟ: ΜΕΡΟΣ Α ΒΑΘΜΟΛΟΓΙΑ ΜΕΡΟΣ Β ΣΥΝΟΛΟ
2
Ερώτηση 1 (5 μονάδες) ΜΕΡΟΣ Α Να δώσετε τις εντολές SQL για τη δημιουργία των πινάκων στις πιο κάτω συσχετίσεις (να οριστούν πρωτεύοντα και ξένα κλειδιά καθώς και τα NOT NULL πεδία). Ερώτηση 2 (5 μονάδες) Σχήμα Α1: Συσχετίσεις ένα προς πολλά. Να δώσετε τις εντολές SQL για τη δημιουργία των πινάκων στην πιο κάτω συσχέτιση. Προσέξτε ώστε τα πεδία να έχουν τους σωστούς τύπους. Ερώτηση 3 (5 μονάδες) Σχήμα Α.2: Συσχέτιση πολλά προς πολλά. Να δώσετε τις εντολές SQL για την εισαγωγή 5 εγγραφών σε κάθε έναν από τους πίνακες της ερώτησης 2. Ερώτηση 4 (10 μονάδες) Να φτιάξετε μια φόρμα και το αντίστοιχο αρχείο php για αναζήτηση και παρουσίαση των μαθημάτων που διεξάγονται μια συγκεκριμένη μέρα και ξεκινάνε συγκεκριμένη ώρα (η μέρα και η ώρα έναρξης θα εισάγονται από τον χρήστη και τα αποτελέσματα θα εμφανίζουν όνομα μαθήματος, κωδικό αίθουσας και ώρα λήξης του μαθήματος) σε μορφή πίνακα). Course Name Room Code End time 3
Ερώτηση 5 (5 μονάδες) Με δεδομένο το στιγμιότυπο S3 του πίνακα Sailors να δώσετε το αποτέλεσμα του επόμενου ερωτήματος: SELECT S.rating, MIN(S.age) FROM Sailors S WHERE S.age > 18 GROUP BY S.rating HAVING 1 < (SELECT COUNT(*) FROM Sailors S2 WHERE S.rating=S2.rating) S3 sid sname rating age 21 dustin 7 45 29 brutus 1 33 44 58 lubber rusty 8 10 55 35 64 horatio 7 35 sid bid date balance 21 101 15/10/2009 70.68 21 102 11/12/2009 50.00 44 103 11/11/2009 145.16 44 104 3/12/2009 91.50 58 103 6/11/2009 125.00 58 103 3/12/2009 91.50 72 zorba 10 16 R1 72 106 4/11/2009 80.25 Ερώτηση 6 (5 μονάδες) Με δεδομένα τα στιγμιότυπα S3 του πίνακα Sailors και R1 του πίνακα Reserves να δώσετε το αποτέλεσμα του επόμενου ερωτήματος: SELECT S3.sname, S3.age FROM Sailors S3 WHERE S3.sid NOT IN (SELECT R1.sid Ερώτηση 7 (5 μονάδες) FROM Reserves R1 WHERE R1.bid=103) Σε ένα πρόγραμμα PHP έχουν οριστεί οι μεταβλητές $x, $y, $z με τις ακόλουθες τιμές: $x = 14, $y = 9, $z =4. (α) Να βρείτε την τιμή που ανατίθεται στη μεταβλητή $u μέσω της πιο κάτω έκφρασης: $u = $y%$z; (b) Να υπολογίσετε τι εκτυπώνεται στον Web browser με την πιο κάτω εντολή; If ($x>$y) xor ($x>$z) echo the median value is $x ; else if ($z>$y) xor ($z>$x) echo the median value is $z ; else echo the median value is $y ; 4
Άσκηση 1 (50 μονάδες): ΜΕΡΟΣ Β: ΑΣΚΗΣΕΙΣ Το τμήμα συντήρησης αεροσκαφών μιας αεροπορικής εταιρείας επιθυμεί να δημιουργήσει μια βάση δεδομένων στην οποία να καταγράφονται οι διαδικασίες συντήρησης. Οι πιο κάτω απαιτήσεις έχουν αναγνωριστεί: (1) Κάθε αεροσκάφος προσδιορίζεται από ένα κωδικό εγγραφής (reg_number), τον τύπο του (type), τη χωρητικότητα του όσον αφορά τους επιβάτες (capacity), και το βάρος του. (2) Τους ελέγχους των αεροσκαφών πραγματοποιούν τεχνικοί (technician) οι οποίοι προσδιορίζονται από τον αριθμό ταυτότητας τους (ID) ενώ απαιτείται να καταγράφεται το επίθετο (surname), το όνομα (name), η διεύθυνση τους (address), το τηλέφωνο τους (phone) και ο μισθός τους (salary). (3) Κάθε τεχνικός έχει εξειδίκευση (specialty) σε ένα ή περισσότερους τύπους αεροσκαφών. Την ίδια εξειδίκευση μπορεί να έχουν και άλλοι συνάδελφοι του (τεχνικοί) (4) Η πτητική ικανότητα των αεροσκαφών πιστοποιείται από ένα αριθμό ελέγχων. Κάθε έλεγχος πραγματοποιείται από ένα τεχνικό και σε αυτόν καταγράφεται ο αριθμός ελέγχου, ο κωδικός ελέγχου (code), η ημερομηνία (date) και η διάρκεια του ελέγχου (5) Το αποτέλεσμα ελέγχου κάθε αεροσκάφους αποτυπώνεται με μια βαθμολογία (score) (a) Να κατασκευάσετε το διάγραμμα οντοτήτων συσχετίσεων υποδεικνύοντας ξεκάθαρα την πολλαπλότητα των συσχετίσεων καθώς και πιθανά δεδομένα διασταύρωσης (10 μονάδες). (a) Να δώσετε εντολή SQL για τη δημιουργία μιας βάσης δεδομένων με το όνομα AirService στην οποία θα αποθηκεύσετε τους πίνακες που προκύπτουν από τις πιο πάνω συσχετίσεις (5 μονάδες). (b) Να δώσετε τις εντολές ορισμού των πινάκων που περιλαμβάνουν δεδομένα διασταύρωσης ή/και ξένα κλειδιά. Στις δηλώσεις πρέπει να πληρούνται όλοι οι περιορισμοί (α) τύπου δεδομένων, (β) πρωτεύοντος κλειδιού, (γ) ξένου κλειδιού (15 μονάδες). (c) Με βάση τα πιο πάνω να κατασκευάσετε μια φόρμα αναζήτησης και το αντίστοιχο php αρχείο ώστε να εμφανίζει τον κωδικό ελέγχου, την ημερομηνία πραγματοποίησης του ελέγχου, τη βαθμολογία του ελέγχου, το επίθετο και όνομα του τεχνικού που πραγματοποίησε τον έλεγχο για όλους τους ελέγχους που πραγματοποιήθηκαν σε συγκεκριμένο αεροσκάφος (ο κωδικός εγγραφής θα δίνεται από το χρήστη) την τελευταία εβδομάδα. Υποθέστε ότι η σημερινή ημερομηνία δηλώνεται μέσω της συνάρτησης CURRENT_DATE (25 μονάδες). 5
Άσκηση 2 (50 μονάδες): Ένα κατάστημα ενοικίασης DVD αποφάσισε να οργανώσει τις υπηρεσίες του με την υλοποίηση μια βάσης δεδομένων. Κατά τη διαδικασία καταγραφής απαιτήσεων εντοπίστηκαν τα πιο κάτω: (1) Κάθε πελάτης (customer) προσδιορίζεται από ένα αριθμό (ID) ο οποίος πρέπει να του αποδίδεται αυτόματα από το σύστημα DBMS. Τα στοιχεία του πελάτη που ενδιαφέρουν είναι: επίθετο (surname), αριθμός τηλεφώνου και υπόλοιπο λογαριασμού (balance). (2) Κάθε ταινία (movie) προσδιορίζεται από ένα αριθμό (ID) ο οποίος πρέπει να αποδίδεται αυτόματα από το σύστημα DBMS. Για κάθε ταινία καταγράφονται ο ημερομηνία παραλαβής (available_since), ο τίτλος (title), το είδος της (genre), η διαθεσιμότητα της (in_stock), και ο σκηνοθέτης της. (3) Κάθε σκηνοθέτης προσδιορίζεται από ένα αριθμό (ID) ο οποίος του αποδίδεται αυτόματα από το σύστημα DBMS. Τα μόνα στοιχεία που ενδιαφέρουν για το σκηνοθέτη είναι το επώνυμο (surname) και το όνομα (name) του. (4) Κάθε ηθοποιός προσδιορίζεται από ένα αριθμό (ID) ο οποίος του αποδίδεται αυτόματα από το σύστημα DBMS. Τα μόνα στοιχεία που ενδιαφέρουν για τον ηθοποιό είναι το επώνυμο (surname) και το όνομα (name) του. (5) Κάθε πελάτης μπορεί να ενοικιάσει περισσότερες από μια ταινίες αλλά υπάρχουν πελάτες που δεν έχουν ενοικιάσει καμία ταινία. Για κάθε ενοικίαση ταινίας καταχωρείται η ημερομηνία ενοικίασης και η ημερομηνία επιστροφής (η οποία συμπληρώνεται με την επιστροφή της ταινίας στο κατάστημα). (6) Κάθε ηθοποιός μπορεί να παίζει σε πολλές ταινίες και κάθε ταινία περιλαμβάνει πολλούς ηθοποιούς (7) Κάθε ταινία έχει ένα μόνο σκηνοθέτη αλλά κάθε σκηνοθέτης μπορεί να έχει σκηνοθετήσει περισσότερες από μια ταινίες. (b) Να κατασκευάσετε το διάγραμμα οντοτήτων συσχετίσεων υποδεικνύοντας ξεκάθαρα την πολλαπλότητα των συσχετίσεων καθώς και πιθανά δεδομένα διασταύρωσης (10 μονάδες). (c) Να δώσετε εντολή SQL για τη δημιουργία μιας βάσης δεδομένων με το όνομα DVDshop στην οποία θα αποθηκεύσετε τους πίνακες που προκύπτουν από τις πιο πάνω συσχετίσεις (5 μονάδες). (d) Να δώσετε τις εντολές ορισμού των πινάκων που περιλαμβάνουν δεδομένα διασταύρωσης ή/και ξένα κλειδιά. Στις δηλώσεις πρέπει να πληρούνται όλοι οι περιορισμοί (α) τύπου δεδομένων, (β) πρωτεύοντος κλειδιού, (γ) ξένου κλειδιού (15 μονάδες). (e) Με βάση τα πιο πάνω να κατασκευάσετε μια ένα php αρχείο το οποίο να εμφανίζει το επίθετο, την ημερομηνία ενοικίασης και τον αριθμό τηλεφώνου των πελατών οι οποίοι έχουν καθυστερήσει περισσότερο από μία εβδομάδα την επιστροφή ταινιών που έχουν ενοικιάσει. Υποθέστε ότι η σημερινή ημερομηνία είναι CURRENT_DATE. (20 μονάδες). 6