Βάσεις Δεδομένων — Ιανουάριος 2021 (Θέματα 1–2)¶
Μεταγραφή των Θεμάτων 1–2 από unknown-2.png· η Screenshot_1.jpg είναι δεύτερο αντίγραφο της ίδιας σελίδας.
unknown-2.png¶
Θέμα 1: Σχεδίαση ΒΔ [30 μονάδες] Θεωρήστε μια βάση δεδομένων η οποία θα διατηρεί πληροφορία για μια βιβλιοθήκη. Οι πληροφορίες που πρέπει να διατηρούνται περιλαμβάνουν την πόλη και τη διεύθυνση στην οποία βρίσκεται η βιβλιοθήκη καθώς και τα τηλέφωνα επικοινωνίας. Στη βιβλιοθήκη εργάζεται ένας αριθμός υπαλλήλων για τους οποίους θέλουμε να γνωρίζουμε το ΑΦΜ τους, το ονοματεπώνυμο και τον μισθό που λαμβάνουν. Για τους υπαλλήλους που εργάζονται ως βιβλιοθηκονόμοι καταγράφουμε επίσης το πτυχίο που κατέχουν καθώς και τα χρόνια εμπειρίας τους. Κάθε βιβλιοθήκη διατηρεί έναν μεγάλο αριθμό βιβλίων διαθέσιμα προς δανεισμό. Για κάθε ένα από τα βιβλία θέλουμε να γνωρίζουμε το ISBN, τον τίτλο, τον συγγραφέα, τον εκδοτικό οίκο και τέλος τον συνολικό αριθμό των αντιτύπων. Τα βιβλία δανείζονται από τη βιβλιοθήκη τα μέλη της για τα οποία γνωρίζουμε το ονοματεπώνυμό τους, τη διεύθυνσή τους και ένα τηλέφωνο επικοινωνίας, ενώ για κάθε δανεισμό καταχωρείται και πληροφορία σχετικά με την ημερομηνία δανεισμού και την προβλεπόμενη ημερομηνία επιστροφής του βιβλίου. i. Σχεδιάστε ένα διάγραμμα E-R για την παραπάνω εφαρμογή και διατυπώστε γραπτώς τις υποθέσεις που κάνατε. (20 μονάδες) ii. Μετατρέψτε το E-R διάγραμμα που σχεδιάσατε σε σχεσιακό όπου θα φαίνονται τα κλειδιά (ξένα, πρωτεύοντα, κτλ) της κάθε σχέσης. (10 μονάδες)
Θέμα 2: Γλώσσες Επερωτήσεων [20 μονάδες] Έστω μια βάση δεδομένων με τις παρακάτω σχέσεις: - Προϊόν (ID, όνομα, τιμή, περιγραφή) - Πελάτης (ID, όνομα, τηλέφωνο) - Αγορά(Πελάτης_ID, Προϊόν_ID, ημερομηνία)
Να γράψετε σε SQL και σχεσιακή άλγεβρα τα παρακάτω ερωτήματα: 1. Τα ονόματα των προϊόντων που κοστίζουν πάνω από Χ Ευρώ. 2. Τα ονόματα των πελατών που έχουν αγοράσει κάποιο προϊόν που κοστίζει πάνω από Υ Ευρώ. 3. Τα ονόματα και τις τιμές των προϊόντων που δεν έχουν αγοραστεί. 4. Τα ονόματα των πελατών που έχουν αγοράσει προϊόντα συνολικής αξίας άνω των Ζ Ευρώ.
Επιπλέον πηγές χωρίς μεταγραφή εδώ (λύσεις →
2021-01.solutions.md, ή διπλότυπες φωτογραφίες της ίδιας σελίδας):Screenshot_1.jpg
Λύσεις (⚪ AI, μη επαληθευμένο)
Κατάσταση: ⚪ AI, μη επαληθευμένο Πηγή: λύσεις AI (gemini-3.7-flash, sonnet), ανεξάρτητη επανάληψη και αντιπαραβολή· καμία δεν έχει ελεγχθεί από άνθρωπο
Προσοχή
Λύση από AI — ελέγξτε την· δεν έχει επαληθευτεί από άνθρωπο. Η ένδειξη «δύο λύσεις συμφωνούν» δεν σημαίνει ότι η απάντηση είναι σωστή.
AI λύσεις — 2021-01¶
Οι λύσεις γράφτηκαν από μοντέλα AI και δεν έχουν ελεγχθεί από άνθρωπο. Η αρίθμηση ακολουθεί το αρχείο θεμάτων.
Θέμα 1¶
Αξιοπιστία: δύο ανεξάρτητες λύσεις συμφωνούν · εμπιστοσύνη λύτη: μέτρια
Το διάγραμμα E-R δεν σχεδιάζεται εδώ· δίνεται η περιγραφή του (οντότητες, γνωρίσματα, συσχετίσεις) και το σχεσιακό. Το σχήμα δεν είναι μοναδικό· οι υποθέσεις πρέπει να γράφονται ρητά.
Υποθέσεις. Μια βιβλιοθήκη έχει πολλά τηλέφωνα (γνώρισμα πολλαπλής τιμής). Ένας υπάλληλος εργάζεται σε μία βιβλιοθήκη. Ο βιβλιοθηκονόμος είναι εξειδίκευση (ISA, μερική) του υπαλλήλου. Κάθε βιβλίο ανήκει σε μία βιβλιοθήκη, με πλήθος αντιτύπων. Ένα μέλος μπορεί να δανείζεται πολλά βιβλία και ένα βιβλίο να δανείζεται από πολλά μέλη σε διαφορετικές χρονικές στιγμές· ο δανεισμός προσδιορίζεται από (μέλος, βιβλίο, ημερομηνία δανεισμού). Το μέλος αναγνωρίζεται με τεχνητό κωδικό.
Οντότητες: Βιβλιοθήκη(κωδ, πόλη, διεύθυνση, {τηλέφωνο}), Υπάλληλος(ΑΦΜ, ονοματεπώνυμο, μισθός), Βιβλιοθηκονόμος ISA Υπάλληλος (πτυχίο, έτη_εμπειρίας), Βιβλίο(ISBN, τίτλος, συγγραφέας, εκδοτικός_οίκος, αντίτυπα), Μέλος(κωδ_μέλους, ονοματεπώνυμο, διεύθυνση, τηλέφωνο). Συσχετίσεις: Εργάζεται (Βιβλιοθήκη 1 — Ν Υπάλληλος, ολική συμμετοχή υπαλλήλου)· Διαθέτει (Βιβλιοθήκη 1 — Ν Βιβλίο)· Δανείζεται (Μέλος Μ — Ν Βιβλίο) με γνωρίσματα ημερομηνία_δανεισμού, προβλεπόμενη_επιστροφή.
Σχεσιακό (υπογραμμισμένα = PK, FK σημειώνονται):
Βιβλιοθήκη(κωδ, πόλη, διεύθυνση)
ΤηλέφωναΒιβλ(κωδ_βιβλ, τηλέφωνο) PK(κωδ_βιβλ,τηλέφωνο), FK κωδ_βιβλ -> Βιβλιοθήκη
Υπάλληλος(ΑΦΜ, ονοματεπώνυμο, μισθός, κωδ_βιβλ) FK κωδ_βιβλ -> Βιβλιοθήκη
Βιβλιοθηκονόμος(ΑΦΜ, πτυχίο, έτη_εμπειρίας) PK=FK ΑΦΜ -> Υπάλληλος
Βιβλίο(ISBN, τίτλος, συγγραφέας, εκδοτικός_οίκος, αντίτυπα, κωδ_βιβλ) FK κωδ_βιβλ -> Βιβλιοθήκη
Μέλος(κωδ_μέλους, ονοματεπώνυμο, διεύθυνση, τηλέφωνο)
Δανεισμός(κωδ_μέλους, ISBN, ημ_δανεισμού, προβλ_επιστροφή) PK(κωδ_μέλους,ISBN,ημ_δανεισμού), FK κωδ_μέλους -> Μέλος, FK ISBN -> Βιβλίο
Θέμα 2¶
Αξιοπιστία: δύο ανεξάρτητες λύσεις συμφωνούν · εμπιστοσύνη λύτη: υψηλή
Τα ερωτήματα SQL ελέγχθηκαν με sqlite3 σε μικρά δεδομένα. Στο 4 κάθε εγγραφή της Αγορά μετράει ένα τεμάχιο (δεν υπάρχει ποσότητα). Συμβολισμός: Προϊόν.όν = όνομα προϊόντος κ.λπ.
1.
SELECT όνομα FROM Προϊόν WHERE τιμή > X;
π_όνομα(σ_τιμή>X(Προϊόν))
SELECT DISTINCT Π.όνομα FROM Πελάτης Π
JOIN Αγορά Α ON Α.Πελάτης_ID = Π.ID
JOIN Προϊόν Ρ ON Ρ.ID = Α.Προϊόν_ID
WHERE Ρ.τιμή > Y;
π_Πελάτης.όνομα( Πελάτης ⋈_{Πελάτης.ID=Πελάτης_ID} Αγορά ⋈_{Προϊόν_ID=Προϊόν.ID} σ_τιμή>Y(Προϊόν) )
SELECT όνομα, τιμή FROM Προϊόν
WHERE ID NOT IN (SELECT Προϊόν_ID FROM Αγορά);
π_όνομα,τιμή( Προϊόν ⋈ ( π_ID(Προϊόν) − ρ_ID(π_Προϊόν_ID(Αγορά)) ) )
SELECT Π.όνομα FROM Πελάτης Π
JOIN Αγορά Α ON Α.Πελάτης_ID = Π.ID
JOIN Προϊόν Ρ ON Ρ.ID = Α.Προϊόν_ID
GROUP BY Π.ID, Π.όνομα
HAVING SUM(Ρ.τιμή) > Z;
π_όνομα( σ_σύνολο>Z( Πελάτης.ID,όνομα 𝒢 SUM(τιμή)→σύνολο ( Πελάτης ⋈ Αγορά ⋈ Προϊόν ) ) )