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

Βάσεις Δεδομένων — Σεπτέμβριος 2026

Μεταγραφή δύο φωτογραφιών της ίδιας εξέτασης (Θέματα 1–5, στη σειρά των φωτογραφιών).

20260914_120243.jpg

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ
ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ
ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ & ΠΛΗΡΟΦΟΡΙΚΗΣ

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

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

Διάρκεια εξέτασης: 2.5 ώρες


Θέμα 1: Σχεδίαση Βάσεων Δεδομένων [25 μονάδες]

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

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

(ii) Μετατρέψτε το E-R διάγραμμα που σχεδιάσατε σε σχεσιακό όπου θα φαίνονται τα κλειδιά (ξένα, πρωτεύοντα, κτλ) της κάθε σχέσης


Θέμα 2: Συναρτησιακές Εξαρτήσεις [15 μονάδες]

Θεωρήστε τα ακόλουθα δυο σύνολα συναρτησιακών εξαρτήσεων
\(F = \{A \to B, B \to C, AC \to D\}\) και \(G = \{A \to B, B \to C, A \to D\}\)

Α. Βρείτε το υποψήφιο κλειδί για κάθε σύνολο συναρτησιακών εξαρτήσεων
Β. Πότε δυο σύνολα συναρτησιακών εξαρτήσεων είναι ισοδύναμα;
Γ. Αποδείξτε ότι τα δυο σύνολα είναι ισοδύναμα. (Υπόδειξη: Να χρησιμοποιήσετε τις κλειστότητες των γνωρισμάτων)


Θέμα 3: Δοσοληψίες [10 μονάδες]

Α. Περιγράψτε τις ιδιότητες των δοσοληψιών. Για ποιο λόγο είναι σημαντικό ένα ΣΔΒΔ να τις εξασφαλίζει; (3 μονάδες)

Β. Έστω το χρονοπρόγραμμα \(\text{S}: R_1(X); R_2(Y); R_4(X); W_1(X); W_3(X); W_2(Y); R_3(Y); W_4(Y)\)
Όπου: \(R_i(Z)\): η δοσοληψία \(T_i\) διαβάζει (READ) το στοιχείο \(Z\) και
\(W_i(Z)\): η δοσοληψία \(T_i\) γράφει (WRITE) το στοιχείο \(Z\).

20260914_120235.jpg

Είναι το χρονοπρόγραμμα σειριοποιήσιμο; Να δικαιολογήσετε την απ

[Λείπει από τη φωτογραφία: τέλος της πρότασης «…την απάντησή σας.»]

Θέμα 4: Γλώσσες Επερωτήσεων [25 μονάδες]
Θεωρήστε τους παρακάτω πίνακες:

R | A | B | C | | :---: | :---: | :---: | | 32 | 2 | 4 | | 65 | 88 | 2 | | 65 | 2 | 5 | | 7 | 3 | 4 | | 9 | 12 | 2 |

S | F | B | | :---: | :---: | | 16 | 88 | | 16 | 3 | | 23 | 9 | | 11 | 3 | | 5 | 88 | | 34 | 9 |

T | D | A | F | | :---: | :---: | :---: | | 'C' | 2 | 11 | | 'A' | 65 | 16 | | 'U' | 9 | NULL | | 'X' | 66 | 9 |

Δώστε το αποτέλεσμα για καθένα από τα παρακάτω ερωτήματα:

1) SELECT B FROM R WHERE C<4 ORDER BY A DESC; 2) SELECT DISTINCT B FROM R LEFT OUTER JOIN S ON R.B=S.B WHERE R.C>3; 3) SELECT SUM(A) AS ATHROISMA, COUNT(DISTINCT B) AS PLITHOS FROM R; 4) \(\pi_{D,A} (T)\) 5) \(\pi_C (\sigma_{B > 3 \text{ AND } B < 15} (R))\)


Θέμα 5: Οργάνωση Αρχείων [25 μονάδες]
Α. Ποια είναι η διαφορά μεταξύ ενός πρωτεύοντος και ενός δευτερεύοντος ευρετηρίου; (5 μον.)

Β. Έστω ένα αρχείο με \(r=32768\) εγγραφές του τύπου Μηχανικός με σταθερό μήκος, όπως παρουσιάζεται παρακάτω:

Μηχανικός | Κωδικός | Όνομα | Επώνυμο | Ειδικότητα | Ημ/νία Εγγραφής | | :---: | :---: | :---: | :---: | :---: | | 7 bytes | 15 bytes | 16 bytes | 15 bytes | 10 bytes |

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

Ερωτήσεις: 1) Υπολογίστε τον παράγοντα ομαδοποίησης bfr (blocking factor) για το συγκεκριμένο αρχείο. (2 μον.) 2) Ποιος είναι ο απαιτούμενος αριθμός block προκειμένου να αποθηκευθεί το σύνολο των εγγραφών του αρχείου, υποθέτοντας μη εκτεινόμενη οργάνωση; (4 μον.) 3) Έστω ότι επιθυμούμε να πραγματοποιήσουμε κάποια αναζήτηση. Ποιος είναι ο απαιτούμενος αριθμός προσπελάσεων μπλοκ στον δίσκο για να βρεθεί η ζητούμενη εγγραφή αν το αρχείο είναι διατεταγμένο (μέση περίπτωση); (6 μον.) 4) Ας υποθέσουμε ότι χρησιμοποιούμε δευτερεύον πυκνό ευρετήριο ως προς το πεδίο ΚΩΔΙΚΟΣ, [...] μήκος δείκτη block \(P=9\) bytes. Ποιος είναι ο απαιτούμενος αριθμός προσπελάσεων μπλοκ στον δίσκο για να βρεθεί η ζητούμενη εγγραφή στην μέση περίπτωση; (8 μον.)

[Λείπει από τη φωτογραφία: η λέξη μετά το «ΚΩΔΙΚΟΣ,» και το τέλος της λέξης «δίσκο» στη δεύτερη γραμμή]

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

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

Προσοχή

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

AI λύσεις — 2026-09

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

Θέμα 1

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

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

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

Σχεσιακό:

Εταιρία(ΑΦΜ, ονομασία, χώρα, πόλη_έδρας)
Πλοίο(αρ_νηολογίου, όνομα, σημαία, λιμάνι_νηολόγησης, ΑΦΜ_εταιρίας, καπετάνιος)
    FK ΑΦΜ_εταιρίας -> Εταιρία, FK καπετάνιος -> Πλήρωμα(κωδ_φυλλαδίου)
Επιβατηγό(αρ_νηολογίου, επιβάτες, οχήματα)     PK=FK -> Πλοίο
Φορτηγό(αρ_νηολογίου, τύπος_φορτίου)            PK=FK -> Πλοίο
Πλήρωμα(κωδ_φυλλαδίου, όνομα, επίθετο, ειδικότητα)
ΓλώσσεςΜέλους(κωδ_φυλλαδίου, γλώσσα)            PK(και τα δύο), FK -> Πλήρωμα
Απασχολείται(κωδ_φυλλαδίου, αρ_νηολογίου, [ταξίδι/ημερομηνία])  FK και στα δύο

Θέμα 2

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

Σχήμα \(R=(A,B,C,D)\) (από τα γνωρίσματα των ΣΕ).

Α. Σε κάθε σύνολο το A δεν εμφανίζεται σε δεξιό μέλος ⇒ ανήκει σε κάθε κλειδί. - F: \(A^+\): \(A\to B\), \(B\to C\), και τότε \(AC\to D\) ⇒ \(\{A,B,C,D\}\). - G: \(A^+\): \(A\to B\), \(B\to C\), \(A\to D\) ⇒ \(\{A,B,C,D\}\).

Και στα δύο το υποψήφιο κλειδί είναι το A (μοναδικό).

Β. Δύο σύνολα ΣΕ είναι ισοδύναμα όταν έχουν την ίδια κλειστότητα: \(F^+=G^+\), δηλαδή κάθε ΣΕ του F συνάγεται από το G και αντίστροφα (ισοδύναμα \(F\subseteq G^+\) και \(G\subseteq F^+\)).

Γ. - ΣΕ του G από το F: \(A\to B\), \(B\to C\) ∈ F. Για \(A\to D\): \(A^+_F=\{A,B,C,D\}\ni D\) ✓ (από \(A\to B\to C\) και \(AC\to D\)). - ΣΕ του F από το G: \(A\to B\), \(B\to C\) ∈ G. Για \(AC\to D\): \(\{A,C\}^+_G\supseteq A^+_G\ni D\) (λόγω \(A\to D\)) ✓.

Άρα \(F\equiv G\).

Θέμα 3

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

Α. Ιδιότητες ACID: - Ατομικότητα (Atomicity): η δοσοληψία εκτελείται ολόκληρη ή καθόλου. - Συνέπεια (Consistency): μετατρέπει τη βάση από συνεπή κατάσταση σε συνεπή. - Απομόνωση (Isolation): η ταυτόχρονη εκτέλεση δίνει αποτέλεσμα ισοδύναμο με σειριακή, χωρίς παρεμβολές. - Διάρκεια (Durability): μετά το commit τα αποτελέσματα παραμένουν παρά τις βλάβες.

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

Β. Γράφος προτεραιότητας: από X: \(T_1\to T_3\), \(T_4\to T_1\), \(T_4\to T_3\)· από Y: \(T_2\to T_4\), \(T_2\to T_3\), \(T_3\to T_4\). Κύκλος \(T_3\to T_4\to T_3\) ⇒ δεν είναι σειριοποιήσιμο (ούτε conflict, ούτε view· ελέγχθηκε με Python σε όλες τις σειριακές διατάξεις).

Θέμα 4

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

  1. Γραμμές με C<4: (65,88,2) και (9,12,2). Με A φθίνον: 88, 12.
  2. Στην εκφώνηση το B στο SELECT είναι διφορούμενο (υπάρχει και στο R και στο S): σε sqlite/MySQL δίνει σφάλμα «ambiguous». Αν διαβαστεί ως R.B: οι γραμμές του R με C>3 είναι (32,2,4), (65,2,5), (7,3,4) ⇒ {2, 3} (με DISTINCT)· το B=2 δεν ταιριάζει στο S αλλά διατηρείται λόγω LEFT JOIN.
  3. \(\sum A=32+65+65+7+9=178\), διακριτά B: 2, 88, 3, 12 ⇒ ATHROISMA = 178, PLITHOS = 4.
  4. Προβολή (σύνολο, χωρίς διπλότυπα): {('C',2), ('A',65), ('U',9), ('X',66)}.
  5. Επιλογή \(3<B<15\): μόνο (9,12,2) ⇒ {2}. (Το B=3 αποκλείεται.)

Θέμα 5

Αξιοπιστία: 2 από 3 ανεξάρτητες λύσεις συμφωνούν (η άλλη διαφωνούσε)

Α. Πρωτεύον ευρετήριο: ορίζεται πάνω στο πεδίο διάταξης του αρχείου (συνήθως κλειδί)· αραιό, μία εγγραφή ανά μπλοκ. Δευτερεύον: πάνω σε πεδίο που δεν καθορίζει τη φυσική διάταξη (κλειδί ή μη)· πρέπει να είναι πυκνό. Ένα αρχείο έχει το πολύ ένα πρωτεύον, αλλά πολλά δευτερεύοντα.

Β. Μέγεθος εγγραφής: \(R=7+15+16+15+10+1=64\). 1. \(bfr=\lfloor 2048/64\rfloor=\) 32. 2. \(b=\lceil 32768/32\rceil=\) 1024 μπλοκ. 3. Διατεταγμένο αρχείο, δυαδική αναζήτηση: \(\lceil\log_2 1024\rceil=\) 10 προσπελάσεις. 4. Δευτερεύον πυκνό ευρετήριο στον ΚΩΔΙΚΟ (7 bytes), δείκτης \(P=9\): εγγραφή ευρετηρίου \(7+9=16\) bytes (υποθέτω ότι η λέξη που λείπει αφορά το μήκος του κλειδιού, που δίνεται στον πίνακα). \(bfr_i=\lfloor 2048/16\rfloor=128\). Πυκνό ⇒ 32768 εγγραφές ⇒ \(b_i=32768/128=256\) μπλοκ. Δυαδική αναζήτηση στο ευρετήριο: \(\lceil\log_2 256\rceil=8\), συν 1 προσπέλαση στο μπλοκ δεδομένων ⇒ 9 προσπελάσεις.

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


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