Βάσεις Δεδομένων — Εξέταση 2021 (ωρομέτρηση HR)¶
Μεταγραφή από το κείμενο του PDF «-----2021-B-.pdf» (πλήρες text layer).
-----2021-B-.pdf¶
ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ¶
ΚΑΘΗΓΗΤΗΣ : Β. ΜΕΓΑΛΟΟΙΚΟΝΟΜΟΥ ΕΔΙΠ: Ε. ΒΟΓΙΑΤΖΑΚΗ
ΟΝΟΜΑΤΕΠΩΝΥΜΟ:.............................................................................................. ΑΜ:......................................................ΕΤΟΣ:.............................................................
Διάρκεια εξέτασης: 80 λεπτά
Θέμα 1 [30 μονάδες]
Αναλαμβάνουμε να υλοποιήσουμε μία εφαρμογή για το τμήμα ανθρώπινου δυναμικού (HR) μιας εταιρίας, η οποία θα εξυπηρετεί την καταγραφή του χρόνου εργασίας κάθε εργαζομένου με την χρήση μαγνητικών καρτών. Το συγκεκριμένο σύστημα ωρομέτρησης πρέπει να διατηρεί τις παρακάτω πληροφορίες:
-
Ο κάθε εργαζόμενος έχει ονοματεπώνυμο, διεύθυνση, τμήμα εργασίας, και μοναδικό ID.
-
Το κάθε τμήμα εργασίας έχει έναν εργαζόμενο ως μοναδικό υπεύθυνο
-
Για κάθε υπεύθυνο θέλουμε να γνωρίζουμε το εσωτερικό του τηλέφωνο
-
Για κάθε τμήμα θέλουμε να γνωρίζουμε το κτήριο που βρίσκεται
-
Σε κάθε εργαζόμενο διαθέτουμε μία κάρτα που την χρησιμοποιεί για την καταγραφή της έναρξης (ημερομηνία και ώρα) και της λήξης (ημερομηνία και ώρα) της εργασίας του.
-
Κάθε κάρτα έχει μοναδικό αναγνωριστικό ID, και θέλουμε να γνωρίζουμε εάν την χρησιμοποιεί κάποιος εργαζόμενος (ενεργή) ή βρίσκεται στο HR (ανενεργή).
-
Σε περίπτωση που ένας εργαζόμενος βρίσκεται σε άδεια, παραδίδει την κάρτα του, με ενδεχόμενο να την χρησιμοποιήσει κάποιος άλλος στην πορεία.
-
Σε ημερήσια βάση ένας υπεύθυνος από το HR ελέγχει τις καταγραφές της προηγούμενη ημέρας για περιπτώσεις που δεν υπάρχουν ορθές καταχωρήσεις (π.χ., έναρξη χωρίς λήξη)
-
Στο τέλος του μήνα τα συγκεντρωτικά στοιχεία των ωρών εργασίας μεταφέρονται στο τμήμα μισθοδοσία για τον υπολογισμό της μισθοδοσίας των εργαζομένων
Σχεδιάστε ένα διάγραμμα E-R για την παραπάνω εφαρμογή και διατυπώστε γραπτώς τις υποθέσεις που κάνατε (στο διάγραμμα θα πρέπει να φαίνονται ευδιάκριτοι όλοι οι συμβολισμοί που χρησιμοποιούμε σε ένα E-R).
Θέμα 2 [20 μονάδες]¶
Θεωρήστε το παρακάτω σχεσιακό σχήμα το οποίο αφορά πληροφορίες που διατηρεί μια εταιρία για τους τιμοκαταλόγους εξαρτημάτων από διάφορους προμηθευτές της:
Suppliers (sid: integer, sname: string, city: string, address: string) Parts (pid: integer, pname: string, color: string)
Catalog (sid: integer, pid: integer, cost: real)
-
2.1 Να γράψετε σε SQL τα παρακάτω ερωτήματα:
-
2.1a. Τα ονόματα των προμηθευτών που διαθέτουν εξαρτήματα με χρώμα ‘κόκκινο’. (5 μονάδες)
2.1b. Τα ονόματα και τις τιμές των εξαρτημάτων με χρώματα ‘κόκκινο’ ή ‘πράσινο’ τα οποία διαθέτουν προμηθευτές από την ‘Πάτρα’. (10 μονάδες)
- 2.2 Για την SQL έκφραση:
SELECT C1.pid FROM Catalog C1 WHERE EXISTS (SELECT *
FROM Catalog C2
WHERE C1.pid = C2.pid AND C1.sid C2.sid )
2.2a. Περιγράψτε με σαφήνεια το ερώτημα που εξυπηρετεί η παραπάνω SQL έκφραση. (5 μονάδες)
Θέμα 3 [20 μονάδες]¶
Θεωρήστε το σχήμα R(Α,Β, C, D, E) με τις ακόλουθες συναρτησιακές εξαρτήσεις
A → BC CD → E B → D
E → A
Έστω ότι διασπάμε το σχήμα R σε R1(A, B, C), R2 (A, D, E).
-
Είναι ο παραπάνω διαχωρισμός χωρίς απώλειες (lossless-join). Δικαιολογήστε την απάντησή σας. (10 μονάδες)
-
Διατηρεί ο παραπάνω διαχωρισμός τις συναρτησιακές εξαρτήσεις; Δικαιολογήστε την απάντησή σας. (10 μονάδες)
Θέμα 4 [30 μονάδες]¶
Ένα αρχείο έχει r=65536 εγγραφές του τύπου ΤΑΙΝΙΑ με σταθερό μήκος. Κάθε εγγραφή έχει τα ακόλουθα πεδία:
-
ΚΩΔΙΚΟΣ (2 bytes)
-
ΤΙΤΛΟΣ (27 bytes)
-
ΟΡΙΟ ΗΛΙΚΙΑΣ (3 bytes)
Το αρχείο είναι αποθηκευμένο σε δίσκο με μέγεθος μπλοκ B=512 bytes Οι εγγραφές είναι ταξινομημένες στον δίσκο με βάση το πρωτεύον κλειδί.
-
Υπολογίστε τον παράγοντα ομαδοποίησης bfr (blocking factor) για το συγκεκριμένο αρχείο. (5 μονάδες)
-
Ποιος είναι ο απαιτούμενος αριθμός block προκειμένου να αποθηκευθεί το σύνολο των εγγραφών του αρχείου, υποθέτοντας μη εκτεινόμενη οργάνωση; (10 μονάδες)
-
Ας υποθέσουμε ότι χρησιμοποιούμε δευτερεύον πυκνό ευρετήριο (ως προς τον ΤΙΤΛΟ) με μήκος δείκτη block P=5 bytes. Ποιος ο απαιτούμενος αριθμός προσπελάσεων μπλοκ στον δίσκο για να βρεθεί η ζητούμενη εγγραφή (στην μέση περίπτωση) του ερωτήματος: (15 μονάδες)
SELECT * FROM ΤΑΙΝΙΑ WHERE ΤΙΤΛΟΣ = 'The Shawshank Redemption'
Καλή επιτυχία!!