Μετάβαση στο περιεχόμενο

Βάσεις Δεδομένων — Εξέταση 2021 (αεροδρόμιο)

Μεταγραφή από το κείμενο του PDF «2021-B-.pdf» (πλήρες text layer).

2021-B-.pdf

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ

ΚΑΘΗΓΗΤΗΣ : Β. ΜΕΓΑΛΟΟΙΚΟΝΟΜΟΥ ΕΔΙΠ: Ε. ΒΟΓΙΑΤΖΑΚΗ ΟΝΟΜΑΤΕΠΩΝΥΜΟ:.............................................................................................. ΑΜ:......................................................ΕΤΟΣ:.............................................................

Διάρκεια εξέτασης: 80 λεπτά

Θέμα 1 [30 μονάδες]

Θεωρήστε μία βάση δεδομένων η οποία θα διατηρεί πληροφορίες για ένα αεροδρόμιο. Στο αεροδρόμιο εργάζονται υπάλληλοι για τους οποίους διατηρείται πληροφορία σχετικά με το όνομά τους, το ΑΦΜ και την διεύθυνσή τους. Πιο συγκεκριμένα, για τους τεχνικούς θα πρέπει να αποθηκεύονται οι αριθμοί τηλεφώνων τους, το/τα μοντέλο/α αεροπλάνων στο/α οποίο/α εξειδικεύονται καθώς και ο μισθός τους. Οι ελεγκτές εναέριων πτήσεων πρέπει να υποβάλλονται σε ετήσιες ιατρικές εξετάσεις. Για κάθε έναν από αυτούς αποθηκεύουμε την ημερομηνία της τελευταίας εξέτασης. Για κάθε αεροπλάνο θα πρέπει να αποθηκεύονται ο κωδικός του, ο αριθμός θέσεων (χωρητικότητα) που διαθέτει και οι ώρες πτήσεων που έχουν καταγραφεί. Στο αεροδρόμιο απαιτούνται περιοδικά έλεγχοι ώστε να εξασφαλίσουν ότι τα αεροπλάνα είναι σε κατάσταση να πετάξουν. Κάθε έλεγχος χαρακτηρίζεται από το όνομα του, τον κωδικό του και μια κλίμακα βαθμολόγησης. Για έναν δεδομένο έλεγχο ο οποίος πραγματοποιείται από έναν ή περισσότερους τεχνικούς, θα πρέπει να διατηρείται η ημερομηνία διεξαγωγής του, οι ώρες που διήρκησε ο έλεγχος και ο βαθμός που έλαβε στο συγκεκριμένο τεστ το αεροπλάνο.

Σχεδιάστε ένα διάγραμμα E-R για την παραπάνω εφαρμογή και διατυπώστε γραπτώς τις υποθέσεις που κάνατε (στο διάγραμμα θα πρέπει να φαίνονται ευδιάκριτοι όλοι οι συμβολισμοί που χρησιμοποιούμε σε ένα E-R).

Θέμα 2 [20 μονάδες]

Έστω μια βάση δεδομένων με τις παρακάτω σχέσεις:

  • Προϊόν (ID, όνομα, τιμή, περιγραφή)

  • Πελάτης (ΙD, όνομα, πόλη, τηλέφωνο)

  • Πώληση (Πελάτης_ID, Προϊόν_ID, ημερομηνία, ποσότητα)

Να γράψετε σε SQL τα παρακάτω ερωτήματα:

  1. Τα ονόματα των προϊόντων που κοστίζουν από 10 ως και 30 Ευρώ. [5 μονάδες]

  2. Τα ονόματα των πελατών που έχουν αγοράσει κάποιο προϊόν με ποσότητα άνω των 20 τεμαχίων. [7 μονάδες]

  3. Τα ονόματα των πελατών που έχουν αγοράσει προϊόντα συνολικής αξίας άνω των 100 Ευρώ. [8 μονάδες]

Θέμα 3 [20 μονάδες]

Θεωρήστε το σχήμα S(Α,Β, C) με τις ακόλουθες συναρτησιακές εξαρτήσεις Α → Β ΑΒ → C AC → B B → C

  1. Να αποδειχθεί ότι ο διαχωρισμός σε R1 (A,B) και R2 (A,C) είναι ένας διαχωρισμός χωρίς απώλειες (lossless-join).

  2. Αποσυνθέστε το παραπάνω σχήμα ώστε οι σχέσεις που θα προκύψουν να βρίσκονται σε 3rd NF (3η κανονική μορφή).

Θέμα 4: Οργάνωση Αρχείων [30 μονάδες]

Έστω ένα αρχείο με r=32768 εγγραφές του τύπου Εργαζόμενος με σταθερό μήκος, όπως παρουσιάζεται παρακάτω:

Εργαζόμενος
ID 4 Bytes
ΟΝΟΜΑ 18 Bytes
ΕΠΩΝΥΜΟ 18 Bytes
ΘΕΣΗ 12 Bytes
ΤΜΗΜΑ 11 Bytes

Ένα επιπλέον byte χρησιμοποιείται ως σημάδι διαγραφής. Το μέγεθος μπλοκ του δίσκου είναι Β = 1024 bytes.

Ερωτήσεις:

  1. Υπολογίστε τον παράγοντα ομαδοποίησης bfr (blocking factor) για το συγκεκριμένο αρχείο. (5 μον.)

  2. Ποιος είναι ο απαιτούμενος αριθμός block προκειμένου να αποθηκευθεί το σύνολο των εγγραφών του αρχείου, υποθέτοντας μη εκτεινόμενη οργάνωση; (10 μον.)

  3. Έστω ότι επιθυμούμε να πραγματοποιήσουμε κάποια αναζήτηση. Ποιος είναι ο απαιτούμενος αριθμός προσπελάσεων μπλοκ στον δίσκο για να βρεθεί η ζητούμενη εγγραφή αν το αρχείο είναι διατεταγμένο (μέση περίπτωση); Ποιος είναι ο αντίστοιχος αριθμός προσπελάσεων αν το αρχείο δεν είναι διατεταγμένο; (15 μον.)

Καλή επιτυχία!!

Λύσεις (⚪ AI, μη επαληθευμένο)

Κατάσταση: ⚪ AI, μη επαληθευμένο Πηγή: λύσεις AI (gemini-3.7-flash, sonnet), ανεξάρτητη επανάληψη και αντιπαραβολή· καμία δεν έχει ελεγχθεί από άνθρωπο

Προσοχή

Λύση από AI — ελέγξτε την· δεν έχει επαληθευτεί από άνθρωπο. Η ένδειξη «δύο λύσεις συμφωνούν» δεν σημαίνει ότι η απάντηση είναι σωστή.

AI λύσεις — 2021-a

Οι λύσεις γράφτηκαν από μοντέλα AI και δεν έχουν ελεγχθεί από άνθρωπο. Η αρίθμηση ακολουθεί το αρχείο θεμάτων.

Θέμα 1

Αξιοπιστία: δύο ανεξάρτητες λύσεις συμφωνούν · εμπιστοσύνη λύτη: μέτρια

Το διάγραμμα δεν σχεδιάζεται εδώ· δίνεται η περιγραφή του. Το σχήμα δεν είναι μοναδικό.

Υποθέσεις. Υπάλληλος: ΑΦΜ (κλειδί), όνομα, διεύθυνση, με εξειδικεύσεις (ISA, επικαλυπτόμενες/μη ολικές) Τεχνικός και Ελεγκτής Εναέριας Κυκλοφορίας. Αεροπλάνο: κωδικός (κλειδί), χωρητικότητα, ώρες_πτήσης. Έλεγχος: κωδικός (κλειδί), όνομα, κλίμακα βαθμολόγησης. Ένας έλεγχος «διεξάγεται» σε ένα αεροπλάνο από έναν ή περισσότερους τεχνικούς σε μια ημερομηνία· το αεροπλάνο λαμβάνει βαθμό. Το ίδιο αεροπλάνο μπορεί να υποβληθεί στον ίδιο έλεγχο πολλές φορές (άρα η ημερομηνία ανήκει στο κλειδί της συσχέτισης).

Οντότητες: Υπάλληλος(ΑΦΜ, όνομα, διεύθυνση)· Τεχνικός ISA Υπάλληλος (μισθός, {τηλέφωνο})· Ελεγκτής ISA Υπάλληλος (ημ_τελευταίας_εξέτασης)· Αεροπλάνο(κωδ, χωρητικότητα, ώρες_πτήσης)· Μοντέλο (ή γνώρισμα {μοντέλο} του Τεχνικού, πολύτιμο)· Έλεγχος(κωδ_ελ, όνομα, κλίμακα). Συσχέτιση τριμελής/ισοδύναμη: Διεξάγεται(Έλεγχος, Αεροπλάνο, Τεχνικός) με γνωρίσματα ημερομηνία, ώρες_διάρκειας, βαθμός· Τεχνικός Μ:Ν (τουλάχιστον ένας ανά έλεγχο). Συσχέτιση Ειδικεύεται(Τεχνικός Ν:Μ Μοντέλο αεροπλάνου).

Θέμα 2

Αξιοπιστία: δύο ανεξάρτητες λύσεις συμφωνούν · εμπιστοσύνη λύτη: υψηλή

Ελέγχθηκαν με sqlite3 σε μικρά δεδομένα.

1.

SELECT όνομα FROM Προϊόν WHERE τιμή BETWEEN 10 AND 30;
2.
SELECT DISTINCT Π.όνομα FROM Πελάτης Π
JOIN Πώληση Σ ON Σ.Πελάτης_ID = Π.ID
WHERE Σ.ποσότητα > 20;
3. Η αξία κάθε πώλησης είναι \(τιμή \times ποσότητα\):
SELECT Π.όνομα FROM Πελάτης Π
JOIN Πώληση Σ ON Σ.Πελάτης_ID = Π.ID
JOIN Προϊόν Ρ ON Ρ.ID = Σ.Προϊόν_ID
GROUP BY Π.ID, Π.όνομα
HAVING SUM(Σ.ποσότητα * Ρ.τιμή) > 100;
(Ομαδοποιούμε και με Π.ID, γιατί δύο πελάτες μπορεί να έχουν το ίδιο όνομα.)

Θέμα 3

Αξιοπιστία: δύο ανεξάρτητες λύσεις συμφωνούν · εμπιστοσύνη λύτη: υψηλή

Ελέγχθηκε με Python (κλειστότητες). \(F=\{A\to B,\ AB\to C,\ AC\to B,\ B\to C\}\).

1. Lossless. \(R_1\cap R_2=\{A\}\). \(A^+\): \(A\to B\) δίνει B, \(B\to C\) δίνει C, άρα \(A^+=\{A,B,C\}\), το A είναι υπερκλειδί (και κλειδί) της S και της \(R_1\) (\(A\to AB\)). Επομένως \(R_1\cap R_2 \to R_1\), ο διαχωρισμός είναι lossless.

2. 3NF. Ελάχιστο κάλυμμα: το \(AB\to C\) περιττό (το B δίνει ήδη C με \(B\to C\))· στο \(AC\to B\) το C περιττό (ισχύει \(A\to B\)) άρα το \(AC\to B\) είναι περιττό. Ελάχιστο κάλυμμα: \(\{A\to B,\ B\to C\}\). Κλειδί της S: A (μοναδικό). Η S δεν είναι 3NF (η \(B\to C\) έχει ορίζουσα που δεν είναι υπερκλειδί και το C δεν είναι πρώτο γνώρισμα). Αλγόριθμος σύνθεσης 3NF: μία σχέση ανά ΣΕ του καλύμματος: R1(A,B) και R2(B,C). Η R1 περιέχει το κλειδί A της αρχικής, άρα η αποσύνθεση είναι lossless και διατηρεί τις ΣΕ· και οι δύο σχέσεις είναι 3NF (ακόμη και BCNF).

Θέμα 4

Αξιοπιστία: δύο ανεξάρτητες λύσεις συμφωνούν · εμπιστοσύνη λύτη: υψηλή

Μέγεθος εγγραφής: \(R=4+18+18+12+11+1=64\) bytes. 1. \(bfr=\lfloor 1024/64\rfloor=\) 16. 2. \(b=\lceil 32768/16\rceil=\) 2048 μπλοκ. 3. Αναζήτηση εγγραφής (μοναδική, πχ. με κλειδί): - Διατεταγμένο αρχείο (δυαδική αναζήτηση): \(\lceil\log_2 2048\rceil=\) 11 προσπελάσεις. - Μη διατεταγμένο (γραμμική αναζήτηση, μέση περίπτωση): \(b/2=\) 1024 προσπελάσεις (χειρότερη: 2048).

✔ Επιβεβαίωσε · ✖ Βρήκα λάθος


✖ Βρήκα λάθος στη μεταγραφή