Σύστημα διαχείρισης αρχείων (file system) Χρήστης Εφαρμογή Αρχείο
Μειονεκτήματα συστήματος διαχείρισης αρχείων Πλεονασμός δεδομένων (data redundancy) Ασυνέπεια δεδομένων (inconsistency) Δύσκολη αναζήτηση (search) Δυσκολία διαμοιρασμού (data sharing) Αδυναμία ταυτόχρονης πρόσβασης (concurrent access) Ανομοιομορφία (heterogeneity) Δυσκολία στην εφαρμογή κανόνων ακεραιότητας (integrity rules) Δυσκολία στην τήρηση αντιγράφων ασφαλείας (backup) Εξάρτηση προγράμματος - δεδομένων (program – data dependence)
Βάση δεδομένων Χρήστης Εφαρμογή ΒΔ
Λεξικό δεδομένων (μετα-δεδομένα) Εφαρμογή τελικού χρήστη (client application) Εφαρμογή τελικού χρήστη (client application) Σύστημα Διαχείρισης Βάσεων Δεδομένων (DBMS) Μια κοινή, ενιαία, διαμοιρασμένη συλλογή από λογικά συσχετιζόμενα δεδομένα και μία περιγραφή των δεδομένων αυτών σχεδιασμένη ώστε να πληρεί τις ανάγκες ενός οργανισμού για πληροφορίες. . . . Λεξικό δεδομένων (μετα-δεδομένα) Βάσεις δεδομένων
Επίπεδα ανεξαρτησίας δεδομένων Εφαρμογές τελικού χρήστη (Εξωτερικό Επίπεδο) (Επίπεδο Αντίληψης) (Φυσικό Επίπεδο) Ανεξαρτησία δεδομένων από τα προγράμματα που τα χειρίζονται – Αφαίρεση δεδομένων (data abstraction) Ανεξαρτησία δεδομένων: Η δυνατότητα να αλλάζει το σχήμα ενός επιπέδου χωρίς να απαιτείται η αλλαγή του σχήματος του υψηλότερου επιπέδου
Τα ΣΔΒΔ εξασφαλίζουν Μειονεκτήματα ΣΔΒΔ Ταυτόχρονη πρόσβαση (concurrent access) Ατομικότητα δοσοληψιών (atomic transactions) Έλεγχο ασφάλειας και δικαιωμάτων (security – privileges) Ανεξαρτησία δεδομένων Μειονεκτήματα ΣΔΒΔ ΣΔΒΔ: Λογισμικό που επιτρέπει στους χρήστες να: α. ορίζουν τύπους και δομές δεδομένων (σχέσεις, όψεις περιορισμούς σε δεδομένα κλπ.) – DDL β. διαχειριστούν τα δεδομένα – DML γ. κάνουν συντήρηση στη Βάση Δεδομένων Δαπανηρή προμήθεια και συντήρηση Απαιτήσεις σε υλικό και προσωπικό Καθυστέρηση στη διαχείριση δεδομένων
Σχήμα βάσης δεδομένων (database schema) Τηλέφωνο Διεύθυνση Ονοματεπώνυμο Στιγμιότυπα βάσεων δεδομένων (database instances) 33554 Βενέζη 2 Δημητρέλλη Κ. 43431 Κορίνθου 211 Δημόπουλος Χ. 45677 Ναυαρίνου 18 Παπαδόπουλος Κ. Τηλέφωνο Διεύθυνση Ονοματεπώνυμο Ονοματεπώνυμο Διεύθυνση Τηλέφωνο 33554 Βενέζη 2 Δημητρέλλη Κ. 43431 Κορίνθου 211 Δημόπουλος Χ. 22234 Ναυαρίνου 18 Παπαδόπουλος Κ. Τηλέφωνο Διεύθυνση Ονοματεπώνυμο Μιχαιλίδης Ι. Καραντώνη 6 32278 Δημητρέλλη Κ. Βενέζη 2 43635 Κάθε αλλαγή στα δεδομένα προκαλεί ένα νέο στιγμιότυπο της ΒΔ
Κάτι από τα παλιά … Μελέτη Προβλήματος Ανάλυση Απαιτήσεων Προδιαγραφή Μοντέλα Παράστασης Λογισμικού Ταυτότητα και περιγραφή των απαιτήσεων Απαιτήσεις από το σύστημα, Ανάγκες του πελάτη Στον τόμο ΤΛ είδαμε τη «δομημένη ανάλυση», ως μια μεθοδολογία προδιαγραφής απαιτήσεων, και τα αντίστοιχα μέσα καταγραφής απαιτήσεων από το λογισμικό, δηλαδή το «έγγραφο προδιαγραφής απαιτήσεων» και τα διαγράμματα «ροής δεδομένων», «οντοτήτων-συσχετίσεων», «μετάβασης καταστάσεων», καθώς και το «λεξικό δεδομένων». Έγγραφο Προδιαγραφής Απαιτήσεων
ΚΥΚΛΟΣ ΖΩΗΣ ΜΙΑΣ ΒΑΣΗΣ ΔΕΔΟΜΕΝΩΝ Ανάλυση απαιτήσεων Ανεξαρτήτου DBMS Σημασιολογικός σχεδιασμός Λογικός σχεδιασμός Εξάρτηση από DBMS Υλοποίηση Συντήρηση
Βάσεις Δεδομένων… Επίπεδα σύλληψης και δημιουργίας μιας ΒΔ: Εννοιολογικό, λογικό, φυσικό επίπεδο αφαίρεση Ιδέες ΔΟΣ (εννοιολογικό) Σχέσεις (λογικό) Σχεσιακό ΣΔΒΔ (φυσικό - πίνακες)
Μοντέλα Παράστασης Λογισμικού ΔΡΔ Λογική αναπαράσταση του συστήματος που δείχνει ΠΩΣ τα δεδομένα μετασχηματίζονται από το λογισμικό, αναπαριστώντας τους μετασχηματισμούς/διαδικασίες, τις εισόδους και εξόδους τους. ΔΟΣ Παράσταση των δεδομένων (ΤΙ δεδομένα επεξεργάζεται το σύστημα) και των συσχετίσεων μεταξύ τους, σύμφωνα με το σχεσιακό μοντέλο δεδομένων (γνωστική περιοχή Βάσεων Δεδομένων) ΔΜΚ Περιγράφουμε τη δυναμική συμπεριφορά του λογισμικού, τη χρονική σειρά εκτέλεσης (το ΠΟΤΕ) των μετασχηματισμών Λεξικό Δεδομένων Αναλυτική περιγραφή όλων των σχετιζόμενων με δεδομένα στοιχείων των μοντέλων παράστασης λογισμικού
Μοντέλο ΟΣ Το μοντέλο oντοτήτων-συσχετισμών (ΟΣ) βασίζεται στην προσέγγιση ότι ο πραγματικός κόσμος αποτελείται από οντότητες, χαρακτηριστικά και συσχετισμούς μεταξύ των οντοτήτων. Αναπτύχθηκε για να διευκολύνει το σχεδιασμό μίας βάσης δεδομένων, επιτρέποντας τον ορισμό ενός σχήματος (schema) που αναπαριστά τη συνολική λογική δομή της βάσης. Το μοντέλο ΟΣ ορίστηκε αρχικά από τον Chen 1976 ως ένας τρόπος επικοινωνίας μεταξύ χρηστών και σχεδιαστών.
Μοντέλο Οντοτήτων - Συσχετίσεων Αφορά την εννοιολογική σχεδίαση μιας ΒΔ Αναπαριστά το φυσικό κόσμο ως ΟΝΤΟΤΗΤΕΣ και ΣΥΣΧΕΤΙΣΕΙΣ μεταξύ αυτών Το Διάγραμμα Οντοτήτων Συσχετίσεων (ΔΟΣ) είναι το βασικό συστατικό του Υποστηρίζει τον σχεδιαστή ΒΔ ως προς: την εύκολη μετάβαση στο σχεσιακό μοντέλο, από το ΔΟΣ που έχει κατασκευαστεί μπορούν να προκύψουν συστηματικά οι σχέσεις / πίνακες της ΒΔ (λογική σχεδίαση) την επικοινωνία του με τον τελικό χρήστη για την επαλήθευση/επέκταση του σχεδίου δεδομένων την επικοινωνία του με τον developer για την υλοποίηση του σχεδίου της ΒΔ σ’ ένα σχεσιακό ΣΔΒΔ
Μοντέλο ΟΣ Ο πιο συνηθισμένος τρόπος περιγραφής του μοντέλου ΟΣ είναι η χρήση διαγραμμάτων οντοτήτων-συσχετισμών (ΔΟΣ - ER diagrams). Τα διαγράμματα ΟΣ παρέχουν έναν απλό και κατανοητό τρόπο περιγραφής της δομής των δεδομένων της ΒΔ, των οντοτήτων, των συσχετισμών, και των χαρακτηριστικών αυτών.
Μοντέλο Οντοτήτων - Συσχετίσεων (Entity-Relationship Model - ER model) Επαυξημένο Μοντέλο Οντοτήτων - Συσχετίσεων (Extended Entity-Relationship Model - EER model)
Οντότητα - Τύπος οντοτήτων - Σύνολο οντοτήτων (Entity - Entity type - Entity set) Οντότητα: Μια ανεξάρτητη φυσική ύπαρξη ή αφηρημένη έννοια του πραγματικού κόσμου. Τύπος οντοτήτων: Το κοινό σύνολο χαρακτηριστικών (ή ιδιοτήτων) ομοειδών οντοτήτων. Σύνολο οντοτήτων: Το σύνολο των οντοτήτων που ανήκουν στον (ή έχουν τον) ίδιο τύπο. [οντότητα] [τύπος οντοτήτων] [σύνολο οντοτήτων] Κατηγορήματα (Attributes)
Οντότητες & Σύνολα Οντοτήτων Μια οντότητα (entity) είναι ένα υπαρκτό και αναγνωρίσιμο αντικείμενο (μεταξύ άλλων ομοειδών αντικειμένων), και υπάρχει είτε ως φυσική ύπαρξη, είτε ως έννοια, λογικά συνδεόμενη με τη ΒΔ που σχεδιάζουμε Παράδειγμα: συγκεκριμένος εργαζόμενος, πελάτης, συγκεκριμένο κατάστημα, συμβόλαιο, λογαριασμός Οι οντότητες χαρακτηρίζονται από κατηγορήματα (attributes) (ιδιότητες, χαρακτηριστικά, γνωρίσματα), π.χ. οι πελάτες έχουν μεταξύ άλλων: όνομα, διεύθυνση και ΑΦΜ Ένα σύνολο οντοτήτων περιλαμβάνει οντότητες του ίδιου τύπου που έχουν κοινά κατηγορήματα (χρησιμοπ. επίσης ο όρος τύπος οντοτήτων) Παράδειγμα: σύνολα οντοτήτων ΕΡΓΑΖΟΜΕΝΟΣ, ΠΕΛΑΤΗΣ, ΛΟΓΑΡΙΑΣΜΟΣ, στα πλαίσια μιας ΒΔ (π.χ. ΒΔ για μια τράπεζα) Σε πολλά κείμενα ο όρος στιγμιότυπο μιας οντότητας χρησιμοποιείται για να υποδηλώσει μια συγκεκριμένη οντότητα (π.χ. καθηγητής Γεωργίου) και τότε ο όρος οντότητα ισοδυναμεί με την έννοια του συνόλου οντοτήτων
Διάγραμμα ΟΣ Τα βασικά γεωμετρικά σχήματα που συνθέτουν ένα διάγραμμα ΟΣ είναι: το ορθογώνιο, ο ρόμβος, η έλλειψη, το ευθύγραμμο τμήμα. Στο διάγραμμα, κάθε σύνολο οντοτήτων (ή πιο απλά κάθε οντότητα) παριστάνεται από ένα ορθογώνιο, κάθε χαρακτηριστικό με μία έλλειψη, και κάθε σύνολο συσχετισμών (ή πιο απλά συσχετισμός) με ένα ρόμβο. Τα ευθύγραμμα τμήματα χρησιμοποιούνται για να δηλώσουν τα χαρακτηριστικά ενός συνόλου οντοτήτων και για να δηλώσουν τη συμμετοχή ενός συνόλου οντοτήτων σε ένα σύνολο συσχετισμών.
Τύπος οντότητας - Κατηγορήματα - Κλειδί Απλό - Μονής τιμής Επώνυμο Όνομα Κλειδί Ημ/νία γέννησης Α.Φ.Μ. Εργαζόμενος Ειδικότητα Διεύθυνση Σύνθετο - Μονής τιμής Τηλέφωνο Τ.Κ. Οδός Απλό - Πολλαπλών τιμών Πόλη Αριθμός Κλειδί (Key): Το υποσύνολο των κατηγορημάτων ενός τύπου οντοτήτων που ο συνδυασμός των τιμών τους είναι μοναδικός για κάθε οντότητα του συνόλου οντοτήτων
Παραδείγματα Συνόλων Οντοτήτων – Συνόλων Συσχετισμών Σύνολα Οντοτήτων: Συγγραφέας, Άρθρο, Συνδρομητής, Περιοδικό, Πρακτικά_Συνεδρίου, Γνωστική_Περιοχή, Εκδοτικός Οίκος. Σύνολα Συσχετισμών: Συγγραφή-Άρθρου, Δημοσίευση Περιοδικού, Δημοσίευση Πρακτικών, Έκδοση Περιοδικού, Έκδοση Πρακτικών, Συνδρομή, Ανήκει.
Σύνολα Οντοτήτων “customer” και “loan” σε Μορφή Πινάκων Στο σχεσιακό μοντέλο ένα σύνολο οντοτήτων αντιστοιχεί σ’ έναν πίνακα, ενώ μια οντότητα περιγράφεται με τα στοιχεία μιας γραμμής στο σχεσιακό πίνακα οντότητα
Κατηγορήματα Κάθε απλό κατηγόρημα (ή ισοδύναμα χαρακτηριστικό ή γνώρισμα) παίρνει τιμές από ένα πεδίο ορισμού (domain) (ή αλλιώς ένα σύνολο τιμών – value set) Π.χ. Όνομα : string(20), Ημ/νία γέννησης : date >= 1/1/1900 Η τιμή null δηλώνει ότι η τιμή για ένα κατηγόρημα: δεν ορίζεται (π.χ. Αριθμός Μητρώου Αρρένων), ή δεν γνωρίζουμε αν υπάρχει (π.χ. αριθμός κινητού τηλ.), ή γνωρίζουμε ότι υπάρχει, αλλά δεν την ξέρουμε (π.χ. έτος γενν.) Τα κατηγορήματα διακρίνονται σε προαιρετικά (null-able) και σε υποχρεωτικά (not-null-able)
Κατηγορήματα Δυνατά πεδία τιμών (value domain), π.χ. ακέραιοι, αλφαριθμητικοί, δεκαδικοί, ημερομηνίες Μια οντότητα έχει μια τιμή για κάθε ένα από τα κατηγορήματά της Παραδείγματα ειδών κατηγορημάτων: Απλό (π.χ. αριθμός λογαριασμού) ή σύνθετο (π.χ. διεύθυνση) Κενό (NULL) Μονότιμο (π.χ. επώνυμο) ή πλειότιμο (π.χ. τηλέφωνα) Αποθηκευόμενο (π.χ. ημερομηνία γέννησης) ή παραγόμενο από την τιμή ενός αλλου κατήγορήματος το άλλο κατηγόρημα ανήκει στην ίδια (π.χ. έτος γέννησης και ηλικία) ή σε άλλη οντότητα (η τιμή του κατηγορήματος κατάθεση στην οντότητα συμβόλαιο_εκμίσθωσης παράγεται από την τιμή του κατηγορήματος ενοίκιο της οντότητας ακίνητο_προς_ενοικίαση; ) Παραγόμενο από άλλα κατηγορήματα στο ίδιο ή σε άλλο σύνολο οντοτήτων.
Κλειδιά Κλειδί: Το κατηγόρημα (ή το σύνολο των κατηγορημάτων) που προσδιορίζει μοναδικά μία οντότητα. Είδη κλειδιών: Απλό Σύνθετο Υποψήφιο (ιδιότητες: «μοναδικότητα», το «αμείωτο») Πρωτεύον ή Δευτερεύων (Εναλλακτικό) Ξένο
Συσχέτιση - Τύπος συσχετίσεων - Σύνολο συσχετίσεων Συσχετίσεις & Σύνολα Συσχετίσεων (ή συσχετισμοί ή σύνολα συσχετισμών) (Relationship - Relationship type - Relationship set) Συσχέτιση (μεταξύ n οντοτήτων): Μια ιδιότητα που συνδέει τις n οντότητες - εκφράζει έναν συσχετισμό μεταξύ ενός αριθμού οντοτήτων Γεωργίου Έχει-Λογαριασμό Α-300 ΠΕΛΑΤΗΣ Σύνολο Συσχετίσεων ΛΟΓΑΡΙΑΣΜΟΣ Τύπος συσχέτισης (μεταξύ n τύπων οντοτήτων): Μια κοινή ιδιότητα που συνδέει n-άδες οντοτήτων εκ των συγκεκριμένων τύπων οντοτήτων (E1, E2, …, En) Σύνολο συσχετίσεων R : Το σύνολο των συσχετίσεων ενός συγκεκριμένου τύπου συσχετίσεων - Ένα σύνολο συσχετίσεων R είναι μια μαθηματική σχέση μεταξύ Ν (Ν>=2) συνόλων οντοτήτων : R = {(e1, e2, …, eΝ) | e1E1, e2E2, … eΝEΝ}, όπου, (e1, e2, …, eΝ) είναι μια συσχέτιση π.χ. (Γεωργίου, Α-300) Έχει-Λογαριασμό συσχέτιση σύνολο συσχετίσεων Ισχύει: R E1 E2 … En
Παράδειγμα συνόλου συσχετίσεων (ε11, ε21) (ε12, ε22) (ε13, ε24) (ε14, ε21) (ε15, ε22) (ε16, ε24) ε11 ε12 ε13 ε14 ε15 ε16 ε17 ε21 ε22 ε23 ε24 Σύνολο συσχετίσεων R Σύνολο οντοτήτων Ε1 Σύνολο οντοτήτων Ε2
Παράδειγμα συνόλου συσχετίσεων σ1 σ2 σ3 σ4 σ5 σ6 ε11 ε12 ε13 ε14 ε15 ε16 ε17 ε21 ε22 ε23 ε24 Σύνολο συσχετίσεων R E1 E2 Σύνολο οντοτήτων Ε1 Σύνολο οντοτήτων Ε2
Συσχετίσεις (συν.) Οι συσχετίσεις μπορεί, όπως και οι οντότητες, να χαρακτηρίζονται από κατηγορήματα Για παράδειγμα, η ημερομηνία-κίνησης (access-date) μπορεί να είναι μια ιδιότητα του συνόλου συσχετίσεων Έχει-Λογαριασμό (depositor) μεταξύ των συνόλων οντοτήτων ΠΕΛΑΤΗΣ (customer) και ΛΟΓΑΡΙΑΜΟΣ (account)
Τύπος συσχέτισης Όνομα Επώνυμο Κωδικός Α.Φ.Μ. Τοποθεσία Όνομα Επώνυμο Ημ/νία έναρξης Εργαζόμενος Ν 1 Εργάζεται Τμήμα Α.Φ.Μ. Μερική συμμετοχή Ολική συμμετοχή Τοποθεσία Επιβλέπει_τον 1 Όνομα Εργαζόμενος Επιβλέπει Επώνυμο Ν Α.Φ.Μ. Επιτηρείται_από Ρόλος
Τι είναι μια Aναδρομική Συσχέτιση; Ένα σύνολο οντοτήτων μπορεί να συσχετίζεται με τον εαυτό του (αναδρομική συσχέτιση) Σ’ αυτή την περίπτωση αποδίδουμε ρόλους (roles) που περιγράφουν την λειτουργία της οντότητας στα πλαίσια της αναδρομικής συσχέτισης Η χρήση των ρόλων, αν και προαιρετική, συμβάλει στην αποσαφήνιση της σημασιολογίας της συσχέτισης.
Τι είναι η Ολική/Μερική συμμετοχή μιας οντότητας σε μια συσχέτιση; Ολική συμμετοχή (σημειώνεται με μια διπλή ή μια πυκνή γραμμή): όταν κάθε οντότητα ενός συνόλου οντοτήτων συμμετέχει σε μια τουλάχιστο συσχέτιση στο σύνολο συσχετίσεων Π.χ. η συμμετοχή του δανείου (loan) στη δανειοληψία (borrower) είναι ολική (κάθε δάνειο πρέπει να έχει έναν πελάτη) Μερική συμμετοχή: όταν μερικές οντότητες μπορεί να μην συμμετέχουν σε καμία συσχέτιση στο σύνολο συσχετίσεων Π.χ. η συμμετοχή του πελάτη (customer) στη δανειοληψία (borrower) είναι μερική
Quiz σχεδίασης Πότε η ημερομηνία-κίνησης (access-date) μπορεί να γίνει κατηγόρημα του συνόλου οντοτήτων ACCOUNT αντί για κατηγόρημα του συνόλου συσχετίσεων DEPOSITOR; Εάν κάθε λογαριασμός μπορεί να ανήκει σ’ έναν μόνο πελάτη
Βαθμός Συσχέτισης Ο αριθμός οντοτήτων σε μια συσχέτιση ορίζει το βαθμό της Όταν ο βαθμός είναι 2 τότε έχουμε τις δυαδικές (binary) συσχετίσεις (πλειοψηφία σε μια ΒΔ) Όταν ο βαθμός είναι 3 τότε έχουμε τις τριαδικές (ternary) (σπάνιες) Μια τριαδική συσχέτιση, τις περισσότερες φορές, μπορεί να αντικατασταθεί με κατάλληλο αριθμό δυαδικών συσχετίσεων Πιο σπάνιες οι τετραδικές (quartenary) συσχετίσεις. Παραδείγματα: Οι ΕΡΓΑΖΟΜΕΝΟΙ σε μια τράπεζα μπορεί να έχουν διαφορετικές ΑΡΜΟΔΙΟΤΗΤΕΣ σε διαφορετικά ΥΠΟΚΑΤΑΣΤΗΜΑΤΑ. Ένας ΑΣΦΑΛΙΣΤΗΣ μπορεί να συνδέεται, κατά καιρούς, με περισσότερα του ενός ΥΠΟΚΑΤΑΣΤΗΜΑΤΑ, και να χρεώνεται διάφορα ΣΥΜΒΟΛΑΙΑ. Κάθε ΣΥΜΒΟΛΑΙΟ πρέπει να διατηρεί σύνδεση και με το ΥΠΟΚΑΤΑΣΤΗΜΑ που υπογράφηκε
Λόγος πληθικότητας Μ Ν 1 1 Ν 1 Εργάζεται Εργαζόμενος Τμήμα Εργάζεται Κάθε εργαζόμενος μπορεί να εργάζεται σε Ν τμήματα Κάθε τμήμα μπορεί να έχει Μ εργαζόμενους Εργάζεται 1 Εργαζόμενος 1 Τμήμα Κάθε εργαζόμενος μπορεί να εργάζεται σε 1 τμήμα Κάθε τμήμα μπορεί να έχει 1 εργαζόμενο Εργάζεται Ν Εργαζόμενος 1 Τμήμα ΠληΘικότητα: αριθμός πλειάδων μιας σχέσης Κάθε εργαζόμενος μπορεί να εργάζεται σε 1 τμήμα Κάθε τμήμα μπορεί να έχει Ν εργαζόμενους
Τι εκφράζει λοιπόν ο λόγος πληθικότητας; Ο λόγος πληθικότητας (cardinality) εκφράζει τον αριθμό συσχετίσεων σ’ ένα σύνολο συσχετίσεων στις οποίες μπορεί να συμμετέχει μια οντότητα. Με άλλα λόγια, είναι το πλήθος των οντοτήτων που μια οντότητα μπορεί να συσχετιστεί μέσω ενός συνόλου συσχετίσεων Για τις δυαδικές συσχετίσεις ο λόγος πληθικότητας μπορεί να είναι: One to one One to many Many to one Many to many
Παραδείγματα
Περιορισμοί Πληθικότητας (ερμηνεύστε τη συσχέτιση) Συσχέτιση one-to-one Ένας πελάτης (customer) συσχετίζεται μ’ ένα το πολύ δάνειο (loan) μέσω του συνόλου συσχετίσεων δανειοληψία (borrower) Ένα δάνειο (loan) συσχετίζεται μ’ έναν το πολύ πελάτη (customer) μέσω του συνόλου συσχετίσεων δανειοληψία (borrower)
Περιορισμοί Πληθικότητας (ερμηνεύστε τη συσχέτιση) Συσχέτιση one-to-many Ένας πελάτης συσχετίζεται με πολλά (μπορεί και 0) δάνεια μέσω του συνόλου συσχετίσεων δανειοληψία (borrower) Ένα δάνειο συσχετίζεται μ’ έναν το πολύ πελάτη μέσω του συνόλου συσχετίσεων δανειοληψία (borrower)
Περιορισμοί Πληθικότητας (ερμηνεύστε τη συσχέτιση) Συσχέτιση many-to-one Ένας πελάτης συσχετίζεται μ’ ένα το πολύ δάνειο μέσω του συνόλου συσχετίσεων δανειοληψία (borrower) Ένα δάνειο συσχετίζεται με πολλούς (μπορεί και 0) πελάτες μέσω του συνόλου συσχετίσεων δανειοληψία (borrower)
Περιορισμοί Πληθικότητας (ερμηνεύστε τη συσχέτιση) Συσχέτιση many-to-many Ένας πελάτης συσχετίζεται με πολλά (μπορεί και 0) δάνεια μέσω του συνόλου συσχετίσεων δανειοληψία (borrower) Ένα δάνειο συσχετίζεται με πολλούς (μπορεί και 0) πελάτες μέσω του συνόλου συσχετίσεων δανειοληψία (borrower)
Οντότητα ή Κατηγόρημα; ΥΠΑΛΛΗΛΟΣ ΥΠΑΛΛΗΛΟΣ ΕΧΕΙ ΤΗΛ ΤΗΛΕΦΩΝΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΝΗΚΕΙ ΧΩΡΑ ΧΩΡΑ
Οντότητα ή Κατηγόρημα; οι οντότητες είναι συνήθως αυτοτελή αντικείμενα/έννοιες: ουσιαστικά όπως πρόσωπα (μαθητές, πελάτες, κλπ), περιοχές-τόποι (πόλεις, υποκαταστήματα, κλπ), πράγματα (προϊόντα, οχήματα, κλπ), οργανισμοί (τμήματα, ομάδες, κλπ) έννοιες-μη απτά αντικείμενα (λογαριασμός, έργο, κλπ) τα κατηγορήματα είναι μη αυτοτελή χαρακτηριστικά που παίρνουν υπόσταση σε σχέση με μια οντότητα
Οντότητα ή Συσχέτιση; ΠΕΛΑΤΗΣ ΠΕΛΑΤΗΣ ΔΑΝΕΙΟ ΤΡΑΠΕΖΑ ΤΡΑΠΕΖΑ ΣΥΝΑΠΤΕΙ ΧΟΡΗΓΕΙ Είναι σημαντικές οι έννοιες «συνάπτει» και «χορηγεί»; Χρειάζεται να μοντελοποιηθούν; Ερώτηση: Ο «γάμος» είναι σύνολο οντοτήτων – σύνολο συσχετισμών ή κατηγόρημα; ΤΡΑΠΕΖΑ ΤΡΑΠΕΖΑ
Οντότητα ή Συσχέτιση; οι συσχετίσεις είναι αλληλεπιδράσεις μεταξύ οντοτήτων που χρειάζεται να καταγραφούν στο σύστημα: τι γίνεται με γεγονότα ενδιαφέροντος? ένα γεγονός μπορεί να είναι οντότητα (π.χ. προαγωγή) ή συσχέτιση (π.χ. μήνυση) όταν είναι ευδιάκριτες οι συμμετέχουσες οντότητες
Ισχυροί και Ασθενείς τύποι οντοτήτων (Strong and Weak entity types) Ισχυρός τύπος οντοτήτων: Υπάρχει τουλάχιστον ένα υποσύνολο των κατηγορημάτων του που μπορεί να οριστεί ως κλειδί. Ασθενής τύπος οντοτήτων: Δεν διαθέτει υποσύνολο των κατηγορημάτων του που να μπορεί να οριστεί ως κλειδί. Διαθέτει όμως ένα υποσύνολο των κατηγορημάτων του (μερικό κλειδί – (partial key) – διευκρινιστής (discriminator)), που συνδυαζόμενο με το κλειδί άλλου τύπου οντοτήτων, είναι ικανό να αποτελέσει κλειδί. H υπόσταση ενός ασθενούς τύπου εξαρτάται από ένα άλλο τύπο οντοτήτων. Όνομα Ημ/νία γέννησης Ανήλικο τέκνο Μερικό κλειδί Ασθενής τύπος οντοτήτων
Προσδιορίζουσες συσχετίσεις (identifying relationships) Α.Φ.Μ. Ημ/νία γέννησης Εργαζόμενος Ειδικότητα Προσδιορίζων τύπος οντοτήτων Κυρίαρχος Τύπος προσδιορίζουσας συσχέτισης Προστατεύει Ο συνδυασμός των κατηγορημάτων ΑΦΜ και Όνομα προσδιορίζουν μοναδικά κάθε ανήλικο τέκνο Όνομα Ημ/νία γέννησης Ανήλικο τέκνο Μερικό κλειδί (διευκρινιστής) Ασθενής τύπος οντοτήτων Υποτελής
Περιορισμοί Εξάρτησης (πιο αναλυτικά …) Εάν η ύπαρξη μιας οντότητας x εξαρτάται από την ύπαρξη μιας οντότητας y, τότε η x (υποτελής - ασθενής οντότητα) είναι υπαρξιακά εξαρτώμενη ως προς την y (κυρίαρχη - ισχυρή οντότητα) Εάν διαγράψουμε την y θα πρέπει να διαγράψουμε και την x Π.χ. Οι τύποι οντοτήτων ΛΟΓΑΡΙΑΣΜΟΣ και ΚΙΝΗΣΗ παρουσιάζουν μια τέτοια εξάρτηση. Εάν θεωρήσουμε τη συσχέτιση Κίνηση-Λογαριασμού, τότε κάθε οντότητα τύπου ΚΙΝΗΣΗ πρέπει να συσχετίζεται με μια οντότητα τύπου ΛΟΓΑΡΙΑΣΜΟΣ (ολική συσχέτιση;) Τι θα πρέπει να συμβεί εάν διαγράψω μια οντότητα τύπου ΛΟΓΑΡΙΑΣΜΟΣ;
Ασθενής Τύπος Οντότητας (πιο αναλυτικά) Ασθενής Τύπος Οντότητας (πιο αναλυτικά) Ένας τύπος οντότητας που δεν έχει πρωτεύον κλειδί αναφέρεται ως ασθενής τύπος οντότητας Η ύπαρξη μιας ασθενούς οντότητας εξαρτάται από την ύπαρξη μιας ισχυρής οντότητας (υπαρξιακή εξάρτηση) ορίζεται μια συσχέτιση ολικής συμμετοχής του ασθενούς τύπου οντότητας σ’ αυτή και πληθικότητας one-to-many (από τον ισχυρό τύπο προς τον ασθενή) Η συσχέτιση καλείται προσδιορίζουσα (identifying) Ο διευκρινιστής (discriminator) ενός ασθενούς τύπου οντότητας είναι το σύνολο των κατηγορημάτων που διακρίνουν κάθε ασθενή οντότητα αναφορικά με την αντίστοιχη ισχυρή οντότητα (για δύο διαφορετικές οντότητες ενός ισχυρού τύπου ο διευκρινιστής μπορεί να έχει την ίδια τιμή) Το πρωτεύον κλειδί για τον ασθενή τύπο οντότητας σχηματίζεται από το πρωτεύον κλειδί του ισχυρού τύπου και τον διευκρινιστή του ασθενούς τύπου
Χρήση Συσχετίσεων… ΠΕΛΑΤΗΣ ΒΙΒΛΙΟ ΒΙΒΛΙΟΠΩΛΕΙΟ Μ ΑΓΟΡΑΖΕΙ Ν Ν ΠΟΥΛΑΕΙ πώς συνδέουμε πελάτη, βιβλιοπωλείο?
Χρήση Συσχετίσεων… ΠΕΛΑΤΗΣ ΒΙΒΛΙΟ ΒΙΒΛΙΟΠΩΛΕΙΟ Μ ΑΓΟΡΑΖΕΙ Ν Κ τριαδική σχέση – αναγκαιότητα για Ν-Μ-Κ συσχετίσεις
Συσχετίσεις με βαθμό = 3 Ν 1 1 Διδάσκων Προσφέρει Μάθημα Ένα μάθημα ενός εξαμήνου προσφέρεται από έναν διδάσκοντα Ένας διδάσκων σε ένα εξάμηνο μπορεί να προσφέρει Ν μαθήματα Εξάμηνο Ένας διδάσκων προσφέρει κάθε μάθημα σε ένα εξάμηνο Για τον καθορισμό των λόγων πληθικότητας σε τύπους συσχέτισης βαθμού 3, εξετάζουμε το πλήθος των οντοτήτων κάθε τύπου που μπορεί να συνδυαστεί με κάθε ζευγάρι οντοτήτων των άλλων δύο τύπων.
Συσχετίσεις με βαθμό = 3 Ν 1 1 Ν Ν Ν Ν 1 Ν Διδάσκων Προσφέρει Μάθημα (Δημητρίου, Μαθηματικά, B’ εξάμηνο) 1 Οι τρεις συσχετίσεις του κάτω σχήματος, δεν υποδηλώνουν κατ΄ ανάγκη τη συσχέτιση του άνω σχήματος Εξάμηνο (Δημητρίου, Μαθηματικά) Ν Ν Διδάσκων Προσφέρει Μάθημα Ν Ν Εργάζεται Εξάμηνο Εντάσσεται 1 Ν (Μαθηματικά, Β’ εξάμηνο) (Δημητρίου, Β’ εξάμηνο) Οι συσχετίσεις βαθμού 3 εκφράζουν «περισσότερη πληροφορία» σε σύγκριση με τις δυαδικές συσχετίσεις μεταξύ των τριών τύπων οντοτήτων
Αναγκαιότητα τριαδικής συσχέτισης ΜΑΘΗΤΗΣ ΔΙΔΑΣΚΕΤΑΙ ΜΑΘΗΜΑ ΑΙΘΟΥΣΑ ΦΙΛΟΞΕΝΕΙ ΠΑΡΑΚΟΛΟΥΘΕΙ Μ Ν Α Κ Β
Τριαδικές συσχετίσεις Έστω η τριαδική συσχέτιση ΣΕΡΒΙΣ μεταξύ των συνόλων οντοτήτων ΕΡΓΑΖΟΜΕΝΟΙ, ΣΥΝΕΡΓΕΙΑ, ΑΥΤΟΚΙΝΗΤΑ (εργασία E2, 2001-2002) Πως ερμηνεύεται η επιλογή της πληθικότητας L:M:N;
Ερμηνεία πληθικότητας ισχύει ότι : ένας Εργαζόμενος σε ένα Συνεργείο μπορεί να κάνει ΣΕΡΒΙΣ σε πολλά Αυτοκίνητα, ένας Εργαζόμενος μπορεί να κάνει ΣΕΡΒΙΣ σε ένα συγκεκριμένο Αυτοκίνητο σε πολλά Συνεργεία και σε ένα Συνεργείο σε ένα συγκεκριμένο Αυτοκίνητο μπορούν να κάνουν ΣΕΡΒΙΣ πολλοί Εργαζόμενοι.
Η συσχέτιση ΣΕΡΒΙΣ (2) Πως ερμηνεύεται η επιλογή της πληθικότητας L:1:N;
Ερμηνεία πληθικότητας ισχύει ότι : ένας Εργαζόμενος σε ένα Συνεργείο μπορεί να κάνει ΣΕΡΒΙΣ σε πολλά Αυτοκίνητα, ένας Εργαζόμενος μπορεί να κάνει ΣΕΡΒΙΣ σε ένα συγκεκριμένο Αυτοκίνητο σε ένα Συνεργείο και σε ένα Συνεργείο σε ένα συγκεκριμένο Αυτοκίνητο μπορούν να κάνουν ΣΕΡΒΙΣ πολλοί Εργαζόμενοι. Γενικά εάν το «1» δείχνει στο σύνολο οντοτήτων Ε, αυτό σημαίνει πως αν επιλέξουμε μια οντότητα από κάθε ένα από τα άλλα σύνολα οντοτήτων, αυτές συσχετίζονται με μια μοναδική οντότητα του Ε
Η συσχέτιση ΣΕΡΒΙΣ (3) Πως ερμηνεύεται η επιλογή της πληθικότητας 1:1:L;
Ερμηνεία πληθικότητας ισχύει ότι : ένας Εργαζόμενος σε ένα Συνεργείο μπορεί να κάνει ΣΕΡΒΙΣ σε ένα Αυτοκίνητο, ένας Εργαζόμενος μπορεί να κάνει ΣΕΡΒΙΣ σε ένα συγκεκριμένο Αυτοκίνητο σε ένα Συνεργείο και σε ένα Συνεργείο σε ένα συγκεκριμένο Αυτοκίνητο μπορούν να κάνουν ΣΕΡΒΙΣ πολλοί Εργαζόμενοι. Γενικά μια τριαδική συσχέτιση R μεταξύ των Ε1, Ε2, Ε3 με «1» στα Ε2 και Ε3 μπορεί να σημαίνει: Κάθε e1E1 συσχετίζεται με μια μοναδική e2E2 και e3E3 ή Κάθε ζευγάρι (e1, e2) συσχετίζεται με ένα μοναδικό e3 και κάθε ζευγάρι (e1, e3) με ένα μοναδικό e2.
Μετατροπή τριαδικής συσχέτισης σε δυαδική μορφή Ακολουθούνται τα παρακάτω βήματα : Αντικαθιστούμε την R μεταξύ των συνόλων οντοτήτων Α, Β και C με ένα νέο σύνολο οντοτήτων E και τρία νέα σύνολα συσχετίσεων: RA, μεταξύ των Ε και Α RB, μεταξύ των Ε και B RC, μεταξύ των Ε και C Δημιουργούμε ένα κατηγόρημα κλειδί για το Ε Προσθέτουμε όποιο κατηγόρημα έχει η R στο Ε Για κάθε συσχέτιση (ai, bi, ci) της R : δημιουργούμε μια νέα οντότητα ei για το Ε προσθέτουμε το (ei, ai) στο RA προσθέτουμε το (ei, bi) στο RB προσθέτουμε το (ei, ci) στο RC
Μετατροπή της συσχέτισης ΣΕΡΒΙΣ τα δύο κατηγορήματα ‘Ωρες Εργαζομένου’ και ‘Χιλιόμετρα Αυτοκινήτου’ τα οποία δεν μπορούν να αποτελέσουν κατηγορήματα κάποιας αντίστοιχης οντότητας (ΕΡΓΑΖΟΜΕΝΟΙ και ΑΥΤΟΚΙΝΗΤΑ αντίστοιχα) καθώς μπορούν να πάρουν παραπάνω από μία τιμές για τον ίδιο Εργαζόμενο ή Αυτοκίνητο αντίστοιχα, ανάλογα με το σε ποιο ΣΕΡΒΙΣ αναφέρονται. Για το λόγο αυτό πρέπει να τα εκχωρήσουμε ως κατηγορήματα των αντίστοιχων συσχετίσεων (ΣΥΜΜΕΤΕΧΕΙ και ΣΥΝΤΗΡΕΙΤΑΙ αντίστοιχα).
Εναλλακτική επιλογή Μπορούμε να αποφύγουμε την δημιουργία κλειδιού, ορίζοντας το Ε ως ασθενή τύπο οντοτήτων που προσδιορίζεται από τα σύνολα συσχετίσεων RA, RB και RC
To ΣΕΡΒΙΣ ως ασθενής οντότητα
Επαυξημένο μοντέλο Συσχετίσεων-Οντοτήτων Α.Φ.Μ. Όνομα Επώνυμο Εργαζόμενος IS-A Εξειδίκευση (Specialization) Ο εξειδικευμένος τύπος οντοτήτων «κληρονομεί» όλα τα κατηγορήματα του γενικού τύπου (άρα και το κλειδί). Το σύνολο οντοτήτων του εξειδικευμένου τύπου είναι υποσύνολο του συνόλου οντοτήτων του γενικού τύπου Τεχνικός Ειδικότητα
Συσχετίσεις ISA Μπορούμε να ορίσουμε υποκατηγορίες σ’ ένα σύνολο οντοτήτων που περιέχουν οντότητες με ξεχωριστά χαρακτηριστικά από τις υπόλοιπες Αυτές οι υποκατηγορίες γίνονται σύνολα οντοτήτων «παιδιά» του αρχικού συνόλου με δικά τους κατηγορήματα και συσχετίσεις που δεν αφορούν το σύνολο οντοτήτων «πατέρα» Κληρονομιά κατηγορημάτων (Attribute Inheritance): Τα σύνολα οντοτήτων «παιδιά» κληρονομούν όλα τα κατηγορήματα του «πατέρα»
Παράδειγμα συσχέτισης ISA
Συσχέτιση d
Συσχετίσεις d και ο d d ο ο Εργαζόμενος Εργαζόμενος Μη-επικαλυπτόμενη ιεραρχία εξειδίκευσης (Disjoint specialization hierarchy) Μερική (partial) Ολική (total) d d Τεχνικός Διοικητικός Τεχνικός Διοικητικός Εργαζόμενος Εργαζόμενος Επικαλυπτόμενη ιεραρχία εξειδίκευσης (Overlapping specialization hierarchy) Μερική (partial) Ολική (total) ο ο Τεχνικός Α Τεχνικός Β Τεχνικός Α Τεχνικός Β
Περιορισμοί (ανακεφ.) Κλειδιού ή μοναδικότητας δεν μπορεί να υπάρχουν δυο οντότητες µε τις ίδιες τιμές στα γνωρίσματα κλειδιά Συναρτησιακή εξάρτηση (λόγος πληθικότητας) σε πόσες συσχετίσεις (στιγμιότυπα συσχετίσεων ενός συνόλου) μια οντότητα μπορεί να συμμετέχει Ολική/Μερική συμμετοχή ενός συνόλου οντοτήτων σ’ ένα σύνολο συσχετίσεων Εξάρτησης (Ασθενείς οντότητες) η ύπαρξη μιας οντότητας εξαρτάται από την ύπαρξη μιας άλλης
Ευριστικοί Κανόνες για κατασκευή ΔΟΣ Ευριστικοί Κανόνες για κατασκευή ΔΟΣ
Ευριστικός κανόνας 1 Ένα σύνολο οντοτήτων (π.χ. ‘ΦΟΙΤΗΤΕΣ’) περιγράφεται βάσει των χαρακτηριστικών, (ή ιδιοτήτων ή κατηγορημάτων) που έχει κάθε οντότητα που ανήκει στο σύνολο (π.χ. ‘ΟνομαΦοιτητή’). Τα χαρακτηριστικά αυτά πρέπει να παίζουν ρόλο στο σχεδιαζόμενο σύστημα λογισμικού (και όχι μόνο τον πραγματικό κόσμο). Κάθε σύνολο οντοτήτων έχει τα δικά του κατηγορήματα Κάθε οντότητα μέσα στο σύνολο έχει τις δικές της τιμές των κατηγορημάτων. Παράδειγμα: Το σύνολο οντοτήτων ΠΕΛΑΤΕΣ περιγράφεται από τα κατηγορήματα ‘Κωδικός_Αριθμός_Πελάτη’, ‘Ονομα_Πελάτη’, ‘Επώνυμο_Πελάτη’.
Ευριστικός κανόνας 2 Κάτι που είναι φυσική οντότητα (Μαθητές, Αυτοκίνητα, Πελάτες, Θέσεις, Εμπορεύματα) γίνεται σύνολο οντοτήτων κατά το σχεδιασμό ενός διαγράμματος οντοτήτων - συσχετίσεων (εννοιολογική σχεδίαση ΒΔ) εάν (1) η εφαρμογή επεξεργάζεται (και επομένως στη ΒΔ αποθηκεύονται) κάποια από τα χαρακτηριστικά της οντότητας και (2) μπορούμε να ξεχωρίσουμε κάθε μία οντότητα του συνόλου από τις άλλες Παράδειγμα Αν σε μία εφαρμογή, για τα αυτοκίνητα αρκεί μόνο ο αριθμός κυκλοφορίας, τότε μάλλον δεν πρέπει να κάνουμε σύνολο οντοτήτων ΑΥΤΟΚΙΝΗΤΑ
Ευριστικός κανόνας 3 Αν κάτι δεν μπορεί να εκφραστεί στον πληθυντικό αριθμό, τότε μάλλον δεν είναι σύνολο οντοτήτων για τη συγκεκριμένη εφαρμογή. Παράδειγμα Το ‘Λογιστήριο’ δεν είναι σύνολο οντοτήτων
Ευριστικός κανόνας 4 Έννοιες που εκφράζονται με ρήματα σε φράσεις όπου υποκείμενο και αντικείμενο είναι οντότητες, τείνουν να είναι συσχετισμοί κατά τον εννοιολογικό σχεδιασμό. Παράδειγμα Διδάσκει: Ο καθηγητής Χ διδάσκει το μάθημα Ψ (Σύνολα οντοτήτων: ΚΑΘΗΓΗΤΕΣ, ΜΑΘΗΜΑΤΑ Συσχέτιση: ΔΙΔΑΣΚΕΙ) Εδώ, μπορεί να έχουμε και ουσιαστικά που εκφράζουν την ενέργεια του ρήματος. Π.χ.: Κράτηση -> Κάνω κράτηση: Ο Πελάτης Χ έχει δεσμεύσει τη Θέση Ψ
Ευριστικός κανόνας 5 Αν, για να περιγράψω ένα υποψήφιο σύνολο οντοτήτων μου χρειάζονται κατηγορήματα από άλλες οντότητες, τότε μάλλον πρόκειται για συσχέτιση. Παράδειγμα Αν οι ΠΕΛΑΤΕΣ και οι ΘΕΣΕΙΣ είναι σύνολα οντοτήτων, τότε οι ΚΡΑΤΗΣΕΙΣ είναι συσχέτιση.
Συμβολισμοί ΔΟΣ (ανακεφ.)
Συμβολισμοί ΔΟΣ (ανακεφ. - συν.) Συμβολισμοί ΔΟΣ (ανακεφ. - συν.)
Θέμα: Υδάτινο δυναμικό της Ελλάδας Δραστηριότητα ΟΣΣ Θέμα: Υδάτινο δυναμικό της Ελλάδας Στα πλαίσια ενός προγράμματος για την καταγραφή του υδάτινου δυναμικού της Ελλάδας, απαιτείται η κατασκευή μιας βάσης δεδομένων για τα ποτάμια και τις λίμνες. Μετά από την ανάλυση απαιτήσεων του προβλήματος, εξήχθησαν τα εξής συμπεράσματα: Κάθε ποταμός και λίμνη έχει ένα επίσημο όνομα, αλλά μπορεί να έχει και ένα δεύτερο όνομα (τοπικό ή ιδιωματικό). Για κάθε ποταμό και λίμνη αποδίδουμε έναν μοναδικό κωδικό αριθμό. Κάθε ποταμός έχει: μήκος (σε χιλιόμετρα), μέγιστο πλάτος και ελάχιστο πλάτος (σε μέτρα). Επίσης διασχίζει έναν ή περισσότερους Νομούς. Σε κάθε Νομό ανήκει ένα ποσοστό του συνολικού μήκους του. Κάθε ποταμός μπορεί να έχει οποιονδήποτε αριθμό από παραπόταμους. Κάθε παραπόταμος είναι κι αυτός ποταμός, που συνδέεται με τον (κύριο) ποταμό. Ένας ποταμός μπορεί να αποτελεί παραπόταμο το πολύ ενός άλλου ποταμού. Κάθε λίμνη έχει: συνολική έκταση (σε τ.μ.), μέγιστο βάθος και ένα ελάχιστο βάθος (σε μέτρα). Επίσης ανήκει σε έναν ή περισσότερους Νομούς. Σε κάθε Νομό ανήκει ένα ποσοστό της συνολικής έκτασης. Μια λίμνη μπορεί να είναι είτε φυσική είτε τεχνητή. Αν είναι τεχνητή, έχει ένα έτος ολοκλήρωσης της κατασκευής της και είναι πιθανό να σχετίζεται με ένα ή περισσότερα φράγματα. Κάθε λίμνη συνδέεται με ένα ή περισσότερα ποτάμια. Κάθε σύνδεση λίμνης-ποταμού γίνεται στα όρια ενός Νομού. Σχεδιάστε το ΔΟΣ
Υδάτινο Δυναμικό [Επαυξημένο διάγραμμα Οντοτήτων-Συσχετίσεων] Υδ. πόρος Όνομα Κωδικός Min Πλάτος Max Πλάτος Τοπικό Όνομα d Μήκος Έκταση Ποταμός Λίμνη Min Βάθος Συνδέεται N N Ν Max Βάθος Ν Ν παραπόταμος του ποταμού 1 Ποσοστό IS-A Διασχίζει Είναι παραπόταμος Ανήκει Τεχνητή λίμνη Ποσοστό Μήκους 1 Ν Ν Έτος Ολοκλήρ. Φράγμα Νομός Όνομα Κωδικός
Παράδειγμα (πιο απλό …) Έχετε τις έννοιες δισκοπωλείο, πελάτης, μουσικό συγκρότημα, αγαπημένο συγκρότημα, cd, είδος μουσικής, μουσικός δώστε ένα ΔΟΣ
ΠΕΛΑΤΗΣ ΔΙΣΚΟΠΩΛΕΙΟ ΣΥΓΚΡΟΤΗΜΑ CD ΜΟΥΣΙΚΟΣ ΕΙΔΟΣ ΜΟΥΣ. Μ AΓΑΠΗΜΕΝΟ ΣΥΓΚ. Μ ΠΕΛΑΤΗΣ ΔΙΣΚΟΠΩΛΕΙΟ Ν Μ ΣΥΓΚΡΟΤΗΜΑ Μ Κ ΔΙΑΘΕΤΕΙ ΑΓΟΡΑ Ν Μ 1 Μ ΑΝΗΚΕΙ ΑΦΟΡΑ ΠΑΙΖΕΙ Ν Ν 1 Ν CD ΜΟΥΣΙΚΟΣ ΕΙΔΟΣ ΜΟΥΣ.
Σχεσιακό Μοντέλο Δεδομένων (Relational Data Model) Codd [1970]
Ορισμοί για το Σχεσιακό Μοντέλο Δεδομένων Πεδίο ορισμού (domain) D : σύνολο από ατομικές τιμές Κατηγόρημα (attribute) A : ένα γνώρισμα ή ιδιότητα. Λαμβάνει μία τιμή από ένα πεδίο ορισμού. Συμβολισμός: dom(Ai) = Di (Το κατηγόρημα με όνομα Ai παίρνει τιμές από το πεδίο Di) Σχήμα σχέσης (relation schema) R : μια λίστα από συσχετιζόμενα γνωρίσματα. Συμβολισμός: Ri(A1, A2, …, An) (Το σχήμα σχέσης με όνομα Ri περιλαμβάνει τα κατηγορήματα Α1, Α2, …, Αn ) Βαθμός σχέσης (degree) n : το πλήθος n των κατηγορημάτων του σχήματός της Πλειάδα (tuple) (ενός σχήματος σχέσης R) t : μια διατεταγμένη λίστα από τιμές Συμβολισμός: t1 = <v1, …, vn> (Η πλειάδα t1 του σχήματος σχέσης Ri(A1, …, An) αποτελείται από τις τιμές v1, …, vn). vi ισχύει: vi dom(Ai) ή vi = null Διαφορά μεταξύ Set και Multi-set
Σχέση (relation) (ενός σχήματος σχέσης R) r : ένα σύνολο από πλειάδες Συμβολισμός: r1(R1), r1 = { t1, t2, …, tk } (Η σχέση r1 αντιστοιχεί στο σχήμα σχέσης R1, και περιέχει τις πλειάδες t1, .., tk) Σχέση: στιγμιότυπο σχήματος σχέσης (relation instance) Κάθε σχέση r είναι ένα υποσύνολο του καρτεσιανού γινομένου των πεδίων ορισμού των κατηγορημάτων τoυ σχήματος σχέσης R Συμβολισμός: Αν R(A1, …, An) τότε: r(R) dom(A1) … dom(An) Φοιτητής (Επώνυμο, Όνομα, ΑΔΤ, Τηλέφωνο) dom(Επώνυμο) : varchar(30) dom(Όνομα) : varchar(25) dom(ΑΔΤ) : “[A-Ω] [0-9][0-9][0-9][0-9][0-9]” dom(Τηλέφωνο) : “[2|3|4][0-9][0-9][0-9][0-9]” Σχήμα σχέσης Στιγμιότυπο σχέσης
Πίνακες (Σχέσεις) Παράδειγμα πίνακα
Σχήμα και Στιγμιότυπο Συνδρομητής (κωδικός, όνομα, τηλέφωνο, διεύθυνση, ΑΠΚ)
Ιδιότητες Σχέσεων Η κάθε σχέση έχει ένα μοναδικό όνομα μεταξύ των υπολοίπων σχέσεων της ΒΔ. Η τιμή που έχει ένα χαρακτηριστικό ( = γνώρισμα, κατηγόρημα) είναι ατομική. Το κάθε χαρακτηριστικό έχει μοναδικό όνομα μέσα στη σχέση. Δύο χαρακτηριστικά που ανήκουν σε διαφορετικές σχέσεις επιτρέπεται να έχουν ίδιο όνομα. Όλες οι τιμές ενός χαρακτηριστικού πρέπει να ανήκουν στο ίδιο πεδίο ορισμού του χαρακτηριστικού. Η σειρά δήλωσης των χαρακτηριστικών μίας σχέσης δεν παίζει κανένα ρόλο. Δύο πλειάδες μίας σχέσης δεν επιτρέπεται να ταυτίζονται σε όλα τα χαρακτηριστικά. Αναφορικά με το σχεσιακό μοντέλο, η σειρά των πλειάδων στη σχέση δεν μας ενδιαφέρει. Ωστόσο, η σειρά αποθήκευσης των δεδομένων συνήθως επηρεάζει το χρόνο επεξεργασίας και επομένως λαμβάνεται υπ’όψη.
Ιδιότητες Σχέσεων
Σχήμα σχέσης πίνακας (table) Αφού οι σχέσεις ορίζονται ως σύνολα από πλειάδες, δεν έχουν διάταξη (ταξινόμηση). Επίσης, δεν μπορεί να περιέχουν την ίδια πλειάδα δύο ή περισσότερες φορές. Κατά την υλοποίηση: Σχήμα σχέσης πίνακας (table) Κατηγόρημα πεδίο (field) [ή στήλη (column)] Τα περιεχόμενα κάθε πίνακα αποθηκεύονται ως ένα σύνολο εγγραφών (records). Κάθε εγγραφή αποτελεί μια γραμμή (row) του πίνακα και αντιστοιχεί σε μια πλειάδα (tuple) της σχέσης.
Κλειδιά (keys) Υπερ-κλειδί (super key): Ένα υποσύνολο των κατηγορημάτων ενός σχεσιακού σχήματος R, για το οποίο ισχύει ότι σε κανένα στιγμιότυπο r δεν υπάρχουν δύο πλειάδες με τον ίδιο συνδυασμό τιμών για τα κατηγορήματα αυτά. Κάθε σχέση έχει τουλάχιστον ένα υπερ-κλειδί: το σύνολο των κατηγορημάτων της. Κλειδί (key): Ένα ελάχιστο υπερ-κλειδί, δηλαδή ένα υπερ-κλειδί που αν αφαιρεθεί ένα κατηγόρημά του, παύει να είναι υπερ-κλειδί. Μια σχέση μπορεί να έχει περισσότερα από ένα κλειδιά, τα οποία καλούνται υποψήφια κλειδιά (candidate keys). Ένα από τα υποψήφια κλειδιά ορίζεται ως το πρωτεύων κλειδί (primary key) της σχέσης.
Ξένο κλειδί (foreign key) Ένα σύνολο κατηγορημάτων FK ενός σχήματος σχέσης R1 καλείται ξένο κλειδί αν ικανοποιούνται και οι δύο επόμενες συνθήκες: Τα κατηγορήματα στο FK έχουν το ίδιο πεδίο ορισμού με τα κατηγορήματα του κλειδιού ενός άλλου σχήματος σχέσης R2 Κάθε τιμή του FK : είτε είναι ίση με μια υπαρκτή τιμή του κλειδιού του R2, είτε είναι null
Παράδειγμα ξένου κλειδιού Εργαζόμενος (Επώνυμο, Όνομα, ΑΦΜ, Μισθός, Τμήμα) Τμήμα (Κωδικός, Ονομασία, Τοποθεσία) Πρωτεύων κλειδί Ξένο κλειδί Συσχετισμός «1 – Ν» Εργαζόμενος Τμήμα
Συμβολισμός: S = { R1, R2, …, Rn } Σχήμα (σχεσιακής) βάσης δεδομένων (database schema) S : σύνολο από σχήματα σχέσεων Συμβολισμός: S = { R1, R2, …, Rn } Στιγμιότυπο (σχεσιακής) βάσης δεδομένων : σύνολο από σχέσεις Συμβολισμός: db = { r1, r2, …, rn } Παράδειγμα Εργαζόμενος (Επώνυμο, Όνομα, ΑΦΜ, Μισθός) Τμήμα (Κωδικός, Ονομασία, Τοποθεσία) Απασχόληση (ΑΦΜ-Εργαζ, Κωδικός-Τμημ, ΗμερΕναρξ) ΒΔ-Εταιρείας = {Εργαζόμενος, Τμήμα, Απασχόληση}
Περιορισμοί Ακεραιότητας στο Σχεσιακό Μοντέλο Δεδομένων Περιορισμοί πεδίου ορισμού Κάθε κατηγόρημα πρέπει να παίρνει μία ατομική τιμή του πεδίου ορισμού του, ή την τιμή null Περιορισμοί κλειδιού Κάθε πλειάδα πρέπει να έχει διαφορετικές τιμές στα κατηγορήματα που αποτελούν το κλειδί της σχέσης Ακεραιότητα οντότητας Το πρωτεύον κλειδί κάθε πλειάδας δεν μπορεί να έχει την τιμή null Αναφορική ακεραιότητα Κάθε ξένο κλειδί μιας πλειάδας πρέπει να παίρνει υπαρκτές τιμές του κλειδιού της αναφερόμενης σχέσης, ή την τιμή null
Περιορισμοί Ακεραιότητας (στην πράξη προσέχουμε …) Κενές τιμές Ακεραιότητα οντοτήτων Ακεραιότητα αναφορών Άλλους περιορισμούς
Περιορισμοί Ακεραιότητας Κενές τιμές
Ιδιότητες Σχέσεων Ακεραιότητα οντοτήτων και αναφορών Συνδρομή.Κωδικός Α = 1ο Ξένο κλειδί της σχέσης Συνδρομή (κλειδί αναφερόμενης σχέσης το Συνδρομητής.κωδικός) Συνδρομή.Κωδικός Β = 2ο Ξένο κλειδί της σχέσης Συνδρομή (κλειδί αναφερόμενης σχέσης το Γνωστική Περιοχή.κωδικός)
Περιορισμοί Ακεραιότητας Άλλοι περιορισμοί: Οποιαδήποτε συνθήκη θέλουμε να ικανοποιείται από τα αποθηκευμένα δεδομένα. (π.χ. ηλικία > 18, προϋπηρεσία > 5 έτη )
Οι περιορισμοί ακεραιότητας ελέγχονται: Πριν από την εισαγωγή δεδομένων, Πριν από τη διαγραφή δεδομένων, Πριν από την ενημέρωση δεδομένων. Εάν παραβιάζεται κάποιος περιορισμός η λειτουργία δε γίνεται αποδεκτή.
Κανόνες μετατροπής Διαγράμματος Οντοτήτων-Συσχετίσεων σε Σχεσιακό Σχήμα
Μοντέλο Οντοτήτων-Συσχετίσεων Σχεσιακό μοντέλο δεδομένων Ισχυρή οντότητα Σχέση (Πίνακας) Απλό κατηγόρημα μονής τιμής Κατηγόρημα (Πεδίο) Σύνθετο κατηγόρημα Σύνολο απλών κατηγορημάτων Κατηγόρημα πολλαπλών τιμών Νέα σχέση Κλειδί: συνδυασμός του κλειδιού της οντότητας και του πολλαπλού κατηγορήματος
Μετατροπή ΟΣ σε Σχεσιακό Για κάθε σύνολο οντοτήτων του μοντέλου ΟΣ δημιουργείται ένας πίνακας (συνήθως με το ίδιο όνομα) που περιέχει τα χαρακτηριστικά του συνόλου οντοτήτων. Κλειδί του πίνακα είναι συνήθως το κλειδί του συνόλου οντοτήτων.
Μοντέλο Οντοτήτων-Συσχετίσεων Σχεσιακό μοντέλο δεδομένων Δυαδική συσχέτιση 1-Ν Ξένο κλειδί στη σχέση (πίνακα) που αντιστοιχεί στον τύπο οντότητας στην πλευρά του Ν 1 N Δυαδική συσχέτιση 1-1 Ξένο κλειδί σε οποιαδήποτε από τις δύο σχέσεις (πίνακες) που προκύπτουν από τους δύο τύπους οντοτήτων 1 Δυαδική συσχέτιση Ν-Μ Νέα σχέση Κλειδί: ο συνδυασμός των κλειδιών των δύο σχέσεων (που προκύπτουν από τους δύο τύπους οντοτήτων) Προσθέτουμε στη σχέση και τα κατηγορήματα της συσχέτισης (αν έχει) N Μ
Μετατροπή ΟΣ σε Σχεσιακό Για κάθε συσχέτιση υπάρχει ένας πίνακας με πεδία τα πρωτεύοντα κλειδιά των οντοτήτων που συσχετίζονται μέσω της συσχέτισης και ότι άλλα κατηγορήματα ενδεχομένως έχει η ίδια η συσχέτιση. Σε περίπτωση που το σύνολο συσχετισμών συνδέει δύο σύνολα οντοτήτων και είναι τύπου ένα-προς-ένα ή ένα-προς-πολλά ή πολλά-προς-ένα, δεν απαιτείται η δημιουργία ξεχωριστού πίνακα για το συσχετισμό.
Μετατροπή ΟΣ σε Σχεσιακό Αν το σύνολο συσχετισμού συνδέει περισσότερα από δύο σύνολα οντοτήτων (ή δύο σύνολα οντοτήτων με πληθικότητα πολλά-προς-πολλά), τότε δημιουργείται ξεχωριστός πίνακας που περιέχει ως χαρακτηριστικά τα κλειδιά των συνόλων οντοτήτων και τα χαρακτηριστικά που ενδέχεται να έχει το σύνολο συσχετισμών. Στην περίπτωση αυτή το κλειδί του παραγόμενου πίνακα είναι σύνθετο και αποτελείται από τα κλειδιά των αντίστοιχων συνόλων οντοτήτων που συμμετέχουν.
Μοντέλο Οντοτήτων-Συσχετίσεων Σχεσιακό μοντέλο δεδομένων 3-αδική συσχέτιση Νέα σχέση R(KeyA, KeyB, KeyC) N N R Α B N C N N R Α B Νέα σχέση R(KeyA, KeyB, KeyC) 1 C N 1 Νέα σχέση R(KeyA, KeyB, KeyC)ή R(KeyA, KeyB, KeyC) R Α B 1 C Νέα σχέση R(KeyA, KeyB, KeyC)ή R(KeyA, KeyB, KeyC)ή R(KeyA, KeyB, KeyC) 1 1 R Α B 1 C
Μοντέλο Οντοτήτων-Συσχετίσεων Σχεσιακό μοντέλο δεδομένων Ασθενείς οντότητες Key Α Σχέση A (Key, …) Σχέση B (Key, PartialKey, …) PartialKey B Συσχέτιση IS-A key Σχέση A (key, …) A IS-A Σχέση B (key, A1) B A1
Ασθενείς Ονότητες – Συσχετίσεις ISA Για κάθε ασθενή οντότητα του ΔΟΣ υπάρχει ένας πίνακας με πεδία τα κατηγορήματα της ασθενούς οντότητας, καθώς και τα κατηγορήματα του κλειδιού της ισχυρής οντότητας με την οποία συσχετίζεται (π.χ., μέσω σχέσης ISA ή d).
κάθε ισχυρή οντότητα γίνεται 1 πίνακας με τα ίδια γνωρίσματα Από ΔΟΣ σε Πίνακες (τι πρέπει να θυμάμαι - 1) κάθε ισχυρή οντότητα γίνεται 1 πίνακας με τα ίδια γνωρίσματα κάθε ασθενής οντότητα Α γίνεται 1 πίνακας με γνωρίσματα τα γνωρίσματα του Α συν το κλειδί του κατόχου του Α κάθε συσχέτιση γίνεται 1 πίνακας (περιέχει το κλειδί της συσχέτισης και τυχόν κατηγορήματα) κάθε συσχέτιση ασθενούς οντότητας δε μεταφέρεται (ενέχεται στον πίνακα της ασθενούς οντότητας μέσω του κλειδιού του κατόχου)
Από ΔΟΣ σε Πίνακες (τι πρέπει να θυμάμαι - 2) Απορροφήσεις 1 : Ν Ν 1 : 1 οπουδήποτε οι πίνακες που αντιστοιχούν σε 1-Ν, 1-1 συσχετίσεις απορροφούνται από τους πίνακες που αντιστοιχούν στις οντότητες σύμφωνα με τον πιο πάνω κανόνα Μ : Ν διατηρείται ο ενδιάμεσος πίνακας οι πίνακες που αντιστοιχούν σε Μ-Ν συσχετίσεις δεν απορροφούνται
Από ΔΟΣ σε Πίνακες (τι πρέπει να θυμάμαι - 3) ΙSA A ISA B Γ 1 πίνακας για Α, 1 πίνακας για Β με επιπλέον κατηγόρημα το κλειδί του Α, όμοια και για Γ Αν η ISA είναι total και disjoint, μπορούν να δημιουργηθούν 2 πίνακες, με κλειδί το κλειδί του Α και κατηγορήματα Α+Β, Α+Γ, αντίστοιχα (προσοχή στην κληρονομικότητα των συσχετίσεων της Α στις Β και Γ, νέοι πίνακες πρέπει να δημιουργηθούν και γι’ αυτές και να εφαρμοστεί η λογική της απορρόφησης)
Επομένως απορροφήσεις γίνονται τελικά : Αν έχουμε 2 Οντότητες Ο1 και Ο2, οι οποίες συνδέονται μέσω μίας συσχέτισης Σ τότε: Εάν η συσχέτιση Σ(Ο1-Ο2) είναι Ν:Μ ο πίνακας της συσχέτισης δεν αλλάζει (είναι ίδιος με αυτόν που προκύπτει από την απλή σχεδίαση). Εάν η συσχέτιση Σ(Ο1-Ο2) είναι 1:Ν, Ν:1 ή 1:1 μπορούμε να διαγράψουμε τον πίνακα της συσχέτισης Σ, αφού πρώτα ενσωματώσουμε τα κατηγορήματά της ως κατηγορήματα της οντότητας που έχει το ίδιο κλειδί με τη συσχέτιση Σ. Ο πίνακας που αντιστοιχεί στην προσδιορίζουσα συσχέτιση μεταξύ μιας ασθενούς και μιας ισχυρής οντότητας διαγράφεται.
Υδάτινο Δυναμικό [Σχεσιακό σχήμα – Σχέσεις] Πίνακες που προκύπτουν από ισχυρούς τύπους οντοτήτων Ydat_poros(Kodikos, Onoma, Top_onoma) Nomos(Kodikos, Onoma) Πίνακες που προκύπτουν από εξειδικευμένους τύπους οντοτήτων Potamos(Kodikos, Mikos, Max_platos, Min_platos, KyriosPotamos) Limni (Kodikos, Ektasi, Min_vathos, Max_vathos) Texn_limni (Kodikos, Etos_olokl) Πίνακες που προκύπτουν από κατηγορήματα πολλαπλών τιμών Fragma (Kodikos, Onoma_fragmatos) Πίνακες που προκύπτουν από τύπους συσχετίσεων πολλά-προς-πολλά Diasxizei (KodikosP, KodikosN, Pososto) Anikei (KodikosL, KodikosN, Pososto) Πίνακες που προκύπτουν από τύπους συσχετίσεων βαθμού 3 Sindeetai (KodikosP, KodikosL, KodikosN)
Υδάτινο Δυναμικό [Σχεσιακό σχήμα – Πεδία ορισμού] Σχέση Texn_limni dom(Kodikos) = integer * dom(Etos_olokl) = integer Σχέση Fragma dom(Onoma_fragmatos) = varchar(30) * Σχέση Diasxizei dom(KodikosP) = integer * dom(KodikosN) = integer * dom(Pososto) = single Σχέση Anikei dom(KodikosL) = integer * dom(Pososto)) = single Σχέση Sindeetai dom(KodikosN) = integer Σχέση Ydat_poros Dom(Kodikos) = integer * Dom(Onoma) = varchar(25) * Dom(Top_onoma) = varchar(30) Σχέση Nomos Dom(Onoma) = varchar(30) * Σχέση Potamos dom(Kodikos) = integer * dom(Mikos) = single dom(Max_platos) = single dom(Min_platos) = single dom(KyriosPotamos) = integer Σχέση Limni dom(Ektasi) = single dom(Min_vathos) = single dom(Max_vathos) = single * Συμβολίζει τα κατηγορήματα που δεν δέχονται την τιμή null
Υδάτινο Δυναμικό [Σχεσιακό σχήμα – Ξένα κλειδιά] Πίνακας Ξένο κλειδί Πίνακας που αντιστοιχεί Κλειδί Potamos Kodikos Ydat_poros Kodikos Potamos Kyrios_potamos Potamos Kodikos Limni Kodikos Ydat_poros Kodikos Texn_limni Kodikos Limni Kodikos Fragma Kodikos Texn_limni Kodikos Diasxizei KodikosP Potamos Kodikos Diasxizei KodikosN Nomos Kodikos Anikei KodikosL Limni Kodikos Anikei KodikosN Nomos Kodikos Sindeetai KodikosP Potamos Kodikos Sindeetai KodikosL Limni Kodikos Sindeetai KodikosN Nomos Kodikos
Είναι τώρα ξεκάθαρη η Ορολογία; Μοντέλο Οντοτήτων Συσχετίσεων Σχεσιακό Μοντέλο Τυπικοί Όροι Όροι υλοποίησης (ΣΔΒΔ) σύνολο ή τύπος οντοτήτων / συσχετίσεων σχεσιακός πίνακας (relational table) σχέση (relation) πίνακας (table) κατηγόρημα (attribute) στήλη πίνακα (column) πεδίο (field) οντότητα / συσχέτιση (στιγμιότυπο) γραμμή πίνακα (row) πλειάδα (tuple) εγγραφή (record) * Οι όροι που εμφανίζονται στην ίδια γραμμή του πίνακα παριστάνουν την ίδια έννοια ανάλογα με το πεδίο χρήσης
Πράξεις Διαχείρισης Δεδομένων στο Σχεσιακό Μοντέλο Δεδομένων
Ταξινόμηση Πράξεων Πράξεις ενημέρωσης δεδομένων: Εισαγωγή (insert) Διαγραφή (delete) Τροποποίηση (update) Πράξεις ενημέρωσης δεδομένων: Πράξεις θεωρίας συνόλων Ένωση (union) Τομή (intersection) Διαφορά (difference) Καρτεσιανό γινόμενο (Cartesian product) Σχεσιακή άλγεβρα: Ειδικές πράξεις σχεσιακού μοντέλου Επιλογή (select) Προβολή (project) Συνένωση (ή σύνδεση) (join)
Εισαγωγή (insert) Σύνταξη: insert (<λίστα τιμών>) into R Ιδιότητες: Μοναδιαίος τελεστής Η λίστα τιμών έχει την ίδια διάταξη με το σχήμα της σχέσης Για να ολοκληρωθεί η πράξη με επιτυχία δεν πρέπει να παραβιάζεται κανένας από τους περιορισμούς ακεραιότητας του σχεσιακού μοντέλου
Διαγραφή (delete) Σύνταξη: delete from R [where <συνθήκη-επιλογής>] Ιδιότητες: Μοναδιαίος τελεστής Διαγράφει πλήρεις πλειάδες για τις οποίες ικανοποιείται η συνθήκη επιλογής (αν υπάρχει, αλλιώς διαγράφονται όλες οι πλειάδες) Για να ολοκληρωθεί η πράξη με επιτυχία δεν πρέπει να παραβιάζεται κανένας από τους περιορισμούς ακεραιότητας του σχεσιακού μοντέλου (ΠΡΟΣΟΧΗ στη διατήρηση της αναφορικής ακεραιότητας)
Τροποποίηση (update) Σύνταξη: update R set <attribute> = <value> [where <συνθήκη-επιλογής>] Ιδιότητες: Μοναδιαίος τελεστής Θέτει τιμή στα κατηγορήματα των πλειάδων (tuples) για τις οποίες ικανοποιείται η συνθήκη επιλογής (αν υπάρχει, αλλιώς τροποποιούνται όλες οι πλειάδες) Για να ολοκληρωθεί η πράξη με επιτυχία δεν πρέπει να παραβιάζεται κανένας από τους περιορισμούς ακεραιότητας του σχεσιακού μοντέλου
Σχεσιακή Άλγεβρα Σχεσιακή άλγεβρα: έναν απλό τρόπο δημιουργίας νέων σχέσεων από παλιές. Ένα σύνολο από πράξεις (α) θεωρίας συνόλων και β) ειδικές πράξεις του σχεσιακού μοντέλου) που όταν εφαρμοστούν σε σχέσεις μας δίνουν νέες σχέσεις
Πράξεις θεωρίας συνόλων Ένωση (union) Συμβολισμός: R1 R2 Δυαδική πράξη – αντιμεταθετική - προσεταιριστική Δημιουργεί νέα σχέση που περιέχει τις πλειάδες και των δύο σχέσεων εισόδου (μία φορά την καθεμία) Τομή (intersection) Συμβολισμός: R1 R2 Δυαδική πράξη - αντιμεταθετική - προσεταιριστική Δημιουργεί νέα σχέση που περιέχει μόνο τις κοινές πλειάδες των δύο σχέσεων εισόδου
Διαφορά (difference) Συμβολισμός: R1 R2 Να είναι του ίδιου βαθμού Δυαδική πράξη – μη-αντιμεταθετική – μη-προσεταιριστική Δημιουργεί νέα σχέση που περιέχει τις πλειάδες της πρώτης σχέσης εισόδου που δεν περιέχονται στη δεύτερη Για να είναι δυνατή η εφαρμογή των πράξεων της ένωσης, της τομής και της διαφοράς σε δύο σχέσεις, αυτές πρέπει να είναι συμβατές ως προς την ένωση δηλαδή: Να είναι του ίδιου βαθμού Να υπάρχει 1-προς-1 ισοδυναμία στα πεδία ορισμού των κατηγορημάτων τους
Ένωση, Τομή, Διαφορά Α Α È B Α Ç B Β Β - Α Α - B α β γ 1 2 3 4 5 6 Συμβατές στήλες α β γ 1 2 3 4 5 6 7 8 9 α β γ 4 5 6 Β Β - Α α β γ 4 5 6 1 2 7 8 9 Α - B α β γ 1 2 7 8 9 α β γ 1 2 3
Ένωση Σχέσεις r, s: Σχέσεις συμβατές για ένωση r s: A B A B 1 2 3 s r Σχέσεις συμβατές για ένωση οι r, s πρέπει να έχουν το ίδιο arity (ίδιο αριθμό κατηγορημάτων) Τα πεδία των κατηγορημάτων πρέπει να είναι συμβατά ως προς το πεδία τιμών A B r s: 1 2 3
Τομή Σχέσεις r, s: Απαιτεί σχέσεις συμβατές για ένωση A B A B Σχέσεις r, s: 1 2 2 3 s r Απαιτεί σχέσεις συμβατές για ένωση r s:= r - (r - s) A B 2
Διαφορά Σχέσεις r, s: Απαιτεί σχέσεις συμβατές για ένωση r - s: A B A 1 2 2 3 s r Απαιτεί σχέσεις συμβατές για ένωση r - s: A B 1
Καρτεσιανό γινόμενο (Cartesian product) Συμβολισμός: R1 R2 Δυαδική πράξη – αντιμεταθετική – προσεταιριστική Δημιουργεί νέα σχέση με: Κατηγορήματα: το σύνολο των κατηγορημάτων των δύο σχέσεων εισόδου. Βαθμός_output = βαθμός_input1 + βαθμός_input2 Πλειάδες: όλους τους συνδυασμούς των πλειάδων των σχέσεων εισόδου Πλήθος_πλειάδων_output = Πλήθος_πλειάδων_input1 * Πλήθος_πλειάδων_input2 Δεν απαιτείται συμβατότητα ως προς την ένωση
Καρτεσιανό Γινόμενο Α Α x B B x A Β A x B = B x A α β γ u v w x y z α δ ε u v w 1 2 x y z 3 4 5 6 δ ε α β γ 1 2 u v w 3 4 5 6 x y z Β δ ε 1 2 3 4 5 6 A x B = B x A
Καρτεσιανό γινόμενο Σχέσεις r, s: A B C D E Σχέσεις r, s: 1 2 10 20 a b r s Τι γίνεται εάν οι σχέσεις r, s έχουν πεδία με το ίδιο όνομα; A B C D E r x s: 1 2 10 19 20 a b
Καρτεσιανό Γινόμενο R x S A R.B S.B C D 1 2 2 5 6 1 2 4 7 8 1 2 2 5 6 1 2 4 7 8 1 2 9 10 11 3 4 2 5 6 3 4 4 7 8 3 4 9 10 11 R S Α Β 1 2 3 4 B C D 2 5 6 4 7 8 9 10 11
Επιλογή (select) Συμβολισμός - Σύνταξη: σ συνθήκη-επιλογής (R) Ιδιότητες: Μοναδιαίος τελεστής Δημιουργεί νέα σχέση μόνο με τις πλειάδες που ικανοποιούν τη συνθήκη επιλογής Αντιμεταθετική πράξη σ συνθ-1 ( σ συνθ-2 (R) ) = σ συνθ-2 ( σ συνθ-1 (R) ) = = σ συνθ-1 AND συνθ-2 (R) βαθμός output = βαθμός input
σ<συνθήκη επιλογής> (<όνομα σχέσης>) Η Πράξη της Επιλογής Επιλογή ενός υποσυνόλου των πλειάδων μιας σχέσης που ικανοποιεί μια συνθήκη επιλογής σ<συνθήκη επιλογής> (<όνομα σχέσης>) <όνομα γνωρίσματος> <τελεστής σύγκρισης> <όνομα γνωρίσματος> ή <σταθερή τιμή από το πεδίο ορισμού του γνωρίσματος> προτάσεις της μορφής συνθήκη =, >, <, , , συνδυασμένες με AND, OR, NOT
Η Πράξη της Επιλογής Η συνθήκη επιλογής εφαρμόζεται ανεξάρτητα σε κάθε πλειάδα Ο τελεστής είναι μοναδιαίος Ο βαθμός της σχέσης που προκύπτει ίδιος με τον βαθμό της αρχικής R Πλήθος πλειάδων μικρότερο ή ίσο με την αρχική σχέση: ποσοστό που επιλέγονται - επιλεκτικότητα (selectivity)
Ιδιότητες Η Πράξη της Επιλογής αντιμεταθετική σ <συνθ1> (σ<συνθ2> (R)) = σ<συνθ2> (σ<συνθ1> (R)) σ <συνθ1> (σ<συνθ2> ( … σ<συνθn> (R) ..)) = σ <συνθ1> AND <συνθ2> AND <συνθn> (R)
Επιλογή A=B ^ D > 5 (r) Σχέση r: A B C D 1 5 12 23 7 3 10
Παράδειγμα Ταινία Τίτλος Έτος Διάρκεια Είδος Παίζει Τίτλος Έτος Διάρκεια Είδος Παίζει Όνομα-Ηθοποιού Τίτλος Έτος Ηθοποιός Όνομα Διεύθυνση Έτος-Γέννησης Σύζυγος-Ηθοποιού
σ διάρκεια > 100 (Ταινία) Η Πράξη της Επιλογής Παραδείγματα τίτλος χρόνος διάρκεια είδος Star Wars 1997 124 έγχρωμη Mighty Ducks 1991 104 έγχρωμη Wayne’s World 1992 95 έγχρωμη 1. Ταινίες με διάρκεια μεγαλύτερη των 100 λεπτών) σ διάρκεια > 100 (Ταινία) τίτλος χρόνος διάρκεια είδος Star Wars 1997 124 έγχρωμη Mighty Ducks 1991 104 έγχρωμη
σ διάρκεια > 100 AND χρόνος > 1995 (Ταινία) Η Πράξη της Επιλογής τίτλος χρόνος διάρκεια είδος Star Wars 1997 124 έγχρωμη Mighty Ducks 1991 104 έγχρωμη Wayne’s World 1992 95 έγχρωμη 2. Ταινίες με διάρκεια μεγαλύτερη των 100 λεπτών που γυρίστηκαν μετά το 1995 σ διάρκεια > 100 AND χρόνος > 1995 (Ταινία) τίτλος χρόνος διάρκεια είδος Star Wars 1997 124 έγχρωμη
Η πράξη της προβολής (project) Η Πράξη της Προβολής Η πράξη της προβολής (project) Επιλογή συγκεκριμένων στηλών (γνωρισμάτων) π<λίστα γνωρισμάτων> (<όνομα σχέσης>)
Προβολή (project) Συμβολισμός - Σύνταξη: π λίστα-κατηγορημάτων (R) Ιδιότητες: Μοναδιαίος τελεστής Δημιουργεί νέα σχέση, οι πλειάδες της οποίας αποτελούνται μόνο από τα κατηγορήματα της λίστας. Απομακρύνονται οι διπλές πλειάδες (που είναι πιθανό να προκύψουν) Μη αντιμεταθετική πράξη π λίστα-1 ( π λίστα-2 (R) ) π λίστα-2 ( π λίστα-1 (R) ) [εν γένει] Βαθμός_output βαθμός_input
Προβολή Σχέση r: A,C (r) A B C 10 20 30 40 1 2 Όμοιες εγγραφές εξαλείφονται εφόσον οι σχέσεις είναι σύνολα A,C (r) A C A C 1 2 1 2 =
Η Πράξη της Προβολής Παραδείγματα τίτλος χρόνος διάρκεια είδος τίτλος χρόνος διάρκεια είδος Star Wars 1997 124 έγχρωμη Mighty Ducks 1991 104 έγχρωμη Wayne’s World 1992 95 έγχρωμη
π τίτλος, χρόνος, διάρκεια (Ταινία) Η Πράξη της Προβολής 1. Τίτλος, χρόνος, διάρκεια των ταινιών π τίτλος, χρόνος, διάρκεια (Ταινία) τίτλος χρόνος διάρκεια Star Wars 1997 124 Mighty Ducks 1991 104 Wayne’s World 1992 95
Προσοχή: απαλοιφή διπλότιμων Η Πράξη της Προβολής 2. Είδος ταινιών π είδος (Ταινία) είδος έγχρωμη Προσοχή: απαλοιφή διπλότιμων
π διάρκεια (σ διάρκεια > 100 (Ταινία)) Σχεσιακή Άλγεβρα Παράδειγμα Διάρκειες μεγαλύτερες των 100 λεπτών π διάρκεια (σ διάρκεια > 100 (Ταινία)) διάρκεια 124 104
Η Πράξη της Προβολής Τα γνωρίσματα έχουν την ίδια διάταξη Ο τελεστής είναι μοναδιαίος Ο βαθμός της σχέσης είναι ίσος με τον αριθμό γνωρισμάτων στη <λίστα γνωρισμάτων> Πλήθος πλειάδων μικρότερο ή ίσο (πότε;) με την αρχική σχέση
Ιδιότητες Η Πράξη της Προβολής αντιμεταθετική; π <λίστα1> (π <λίστα2> (R)) = ?
Μετονομασία Μετονομασία όνομα στην ενδιάμεση σχέση R Παράδειγμα ΜΕΓΑΛΗΣ_ΔΙΑΡΚΕΙΑΣ σ διάρκεια > 100 (Ταινία)
R(λίστα με νέα ονόματα) Μετονομασία μετονομασία γνωρισμάτων R(λίστα με νέα ονόματα) Παράδειγμα ΜΕΓΑΛΗΣ_ΔΙΑΡΚΕΙΑΣ (όνομα ταινίας, έτος παραγωγής, διάρκεια, είδος) σ διάρκεια > 100 (Ταινία) όνομα ταινίας έτος παραγωγής διάρκεια είδος Star Wars 1997 124 έγχρωμη Mighty Ducks 1991 104 έγχρωμη
Παράδειγμα Ταινία Τίτλος Έτος Διάρκεια Είδος Παίζει Τίτλος Έτος Διάρκεια Είδος Παίζει Όνομα-Ηθοποιού Τίτλος Έτος Ηθοποιός Όνομα Διεύθυνση Έτος-Γέννησης Σύζυγος-Ηθοποιού
Καρτεσιανό Γινόμενο Παράδειγμα Για κάθε ηθοποιό το όνομα και τον τίτλο-έτος για όλες τις έγχρωμες ταινίες στις οποίες παίζει π όνομα, τίτλος, έτος (σ είδος = “έγχρωμη” AND Παίζει.τίτλος = Ταινία.τίτλος AND Παίζει.έτος = Ταινία.έτος (Παίζει x Ταινία)) ή π όνομα, τίτλος, έτος (σ Παίζει.τίτλος = Ταινία.τίτλος AND Παίζει.έτος =Ταινία.έτος(Παίζει x (σ είδος = “έγχρωμη” (Ταινία)))
Συνένωση (join) [ή σύνδεση] Συμβολισμός - Σύνταξη: R1 συνθήκη-συνένωσης R2 Για τυπογραφικούς λόγους χρησιμοποιούμε το σύμβολο : Ιδιότητες: Δυαδικός τελεστής Αντιμεταθετική πράξη (με αντιστροφή των κατηγορημάτων στη συνθήκη) Βαθμός_output = βαθμός_input_1 + βαθμός_input_2 Δεν εμφανίζονται οι πλειάδες που έχουν τιμή null στα κατηγορήματα που συμμετέχουν στη συνθήκη συνένωσης Ισοδυναμία με καρτεσιανό γινόμενο και επιλογή σ συνθήκη-συνένωσης (R1 R2)
Συνένωση Α A >< B = σδ>2(Α x Β) δ>2 Α x B σδ>2(Α x Β) Β α β γ u v w x y z Α x B σδ>2(Α x Β) α β γ δ ε u v w 1 2 x y z 3 4 5 6 α β γ δ ε u v w 3 4 x y z 5 6 Β δ ε 1 2 3 4 5 6
Συνένωση (ή θήτα συνένωση) (join) συνδυασμός σχετιζόμενων πλειάδων R <συνθήκη συνένωσης> S ( σ <συνθήκη συνένωσης> (R x S) ) Συνθήκη συνένωσης Προτάσεις της μορφής =, >, <, , , Ai <τελεστής σύγκρισης> Bj όπου Ai γνώρισμα της R, Bj γνώρισμα της S, και dom(Ai) = dom(Bj) συνδυασμένες με AND
Συνένωση το αποτέλεσμα είναι οι συνδυασμοί πλειάδων που ικανοποιούν τη συνθήκη η συνθήκη αποτιμάται για κάθε συνδυασμό αποτέλεσμα σχέση Q με n + m γνωρίσματα πλειάδες με τιμή null σε γνώρισμα συνένωσης δεν εμφανίζονται στο αποτέλεσμα
Είδη συνένωσης θήτα-join: Η συνθήκη συνένωσης περιλαμβάνει οποιονδήποτε από τους τελεστές σύγκρισης: equi-join: Η συνθήκη συνένωσης περιλαμβάνει μόνο τον τελεστή της ισότητας: natural join: Είναι equi-join αλλά δεν εμφανίζονται δύο φορές τα πεδία που συμμετέχουν στη συνθήκη συνένωσης R1 (λίστα-1, λίστα-2) R2 ή R1 R2 βαθμός output < βαθμός_input_1 + βαθμός_input_2 (Φυσική συνένωση) cross join: Δεν έχει συνθήκη συνένωσης. Ισοδύναμο με το καρτεσιανό γινόμενο.
Παράδειγμα συνένωσης ΝΟΜΟΣ ΠΟΛΗ 1 ΛΕΣΒΟΥ 100.000 2 ΧΙΟΥ 75.000 3 ΣΑΜΟΥ Α/Α ΟΝΟΜΑ ΠΛΗΘΥΣΜΟΣ 1 ΛΕΣΒΟΥ 100.000 2 ΧΙΟΥ 75.000 3 ΣΑΜΟΥ 40.000 ΞΕΝΟ ΚΛΕΙΔΙ ΠΟΛΗ Α/Α ΟΝΟΜΑ ΝΟΜΟΣ 90 ΜΥΤΙΛΗΝΗ 1 91 ΒΡΟΝΤΑΔΟΣ NULL 92 ΣΑΜΟΣ 3
ΝΟΜΟΣ X ΠΟΛΗ ΝΟΜΟΣ.Α/Α ΝΟΜΟΣ.ΟΝΟΜΑ ΠΛΗΘΥΣΜΟΣ ΠΟΛΗ.Α/Α ΠΟΛΗ.ΟΝΟΜΑ ΝΟΜΟΣ 1 ΛΕΣΒΟΥ 100.000 90 ΜΥΤΙΛΗΝΗ 91 ΒΡΟΝΤΑΔΟΣ NULL 92 ΣΑΜΟΣ 3 2 ΧΙΟΥ 75.000 ΣΑΜΟΥ 40.000
ΝΟΜΟΣ (ΝΟΜΟΣ.Α/Α=ΝΟΜΟΣ) ΠΟΛΗ ΝΟΜΟΣ.ΟΝΟΜΑ ΠΛΗΘΥΣΜΟΣ ΠΟΛΗ.Α/Α ΠΟΛΗ.ΟΝΟΜΑ ΝΟΜΟΣ 1 ΛΕΣΒΟΥ 100.000 90 ΜΥΤΙΛΗΝΗ 91 ΒΡΟΝΤΑΔΟΣ NULL 92 ΣΑΜΟΣ 3 2 ΧΙΟΥ 75.000 ΣΑΜΟΥ 40.000 ΝΟΜΟΣ.Α/Α ΝΟΜΟΣ.ΟΝΟΜΑ ΠΛΗΘΥΣΜΟΣ ΠΟΛΗ.Α/Α ΠΟΛΗ.ΟΝΟΜΑ ΝΟΜΟΣ 1 ΛΕΣΒΟΥ 100.000 90 ΜΥΤΙΛΗΝΗ 3 ΣΑΜΟΥ 40.000 92 ΣΑΜΟΣ
Φυσική Συνένωση Α A >< B = π*(σ*(Α x Β)) Α x B A >< B Β α β γ u v w x y z Α x B A >< B α β γ δ ε u v w 1 2 x y z t 3 4 5 6 α β γ δ ε u v w 1 2 x y z 5 6 Β γ δ ε w 1 2 t 3 4 z 5 6
(Θήτα) συνένωση Σχέσεις r, s: r Θs= ( Θ(r x s)) A B C D A B E 1 2 4 a b 1 3 a r s r Θs= ( Θ(r x s)) και έστω Θ := ( r.A = s.A ^ s.B > 2 ) r.A r.B 2 r.C r.D a s.A s.B 3 s.E
(Θήτα) Συνένωση U A<D V U V A U.B U.C V.B V.C D 1 2 3 2 3 4 1 2 3 2 3 4 1 2 3 2 3 5 1 2 3 7 8 10 6 7 8 7 8 10 9 7 8 7 8 10 Α Β C 1 2 3 6 7 8 9 7 8 B C D 2 3 4 2 3 5 7 8 10 U A<D AND U.B V.B V
Συνένωση Παράδειγμα Για κάθε ηθοποιό το όνομα και τον τίτλο-έτος για όλες τις έγχρωμες ταινίες στις οποίες παίζει π όνομα, τίτλος, έτος (σ Παίζει.τίτλος = Ταινία.τίτλος AND Παίζει.έτος =Ταινία.έτος(Παίζει x (σ είδος = “έγχρωμη” (Ταινία))) π όνομα, τίτλος, έτος (Παίζει Παίζει.τίτλος = Ταινία.τίτλος AND Παίζει.έτος =Ταινία.έτος(σ είδος = “έγχρωμη” (Ταινία))
Συνένωση Ισότητας (equijoin) όταν χρησιμοποιείται μόνο τελεστής ισότητας Συνθήκη συνένωσης Προτάσεις της μορφής Ai = Bj όπου Ai γνώρισμα της R, Bj γνώρισμα της S, και dom(Ai) = dom(Bj) συνδυασμένες με AND
Συνένωση Ισότητας R S R R.B = S.B S Α Β 1 2 3 4 B C D 2 5 6 4 7 8 Α Β 1 2 3 4 B C D 2 5 6 4 7 8 9 10 11 A R.B S.B C D 1 2 2 5 6 3 4 4 7 8
Φυσική Συνένωση Φυσική Συνένωση συνένωση ισότητας όπου παραλείπουμε το γνώρισμα της δεύτερης σχέσης από το αποτέλεσμα όταν διαφορετικό όνομα - μετονομασία R * (λίστα1, λίστα2) S επιλεκτικότητα συνένωσης : μέγεθος αποτελέσματος / (nr * ns)
Φυσική Συνένωση R S R * S Α Β 1 2 3 4 B C D 2 5 6 4 7 8 9 10 11 Α Β 1 2 3 4 B C D 2 5 6 4 7 8 9 10 11 A B C D 1 2 5 6 3 4 7 8
Φυσική Συνένωση U * V U V A B C D 1 2 3 4 1 2 3 5 6 7 8 10 9 7 8 10 1 2 3 4 1 2 3 5 6 7 8 10 9 7 8 10 Α Β C 1 2 3 6 7 8 9 7 8 B C D 2 3 4 2 3 5 7 8 10
Φυσική Συνένωση Παράδειγμα Για κάθε ηθοποιό το όνομα και τον τίτλο-έτος για όλες τις έγχρωμες ταινίες στις οποίες παίζει π όνομα, τίτλος, έτος (σ Παίζει.τίτλος = Ταινία.τίτλος AND Παίζει.έτος =Ταινία.έτος(Παίζει x (σ είδος = “έγχρωμη” (Ταινία))) π όνομα, τίτλος, έτος (Παίζει Παίζει.τίτλος = Ταινία.τίτλος AND Παίζει.έτος =Ταινία.έτος(σ είδος = “έγχρωμη” (Ταινία)) π όνομα, τίτλος, έτος (Παίζει * (σ είδος = “έγχρωμη” (Ταινία)))
Φυσική συνένωση Σχέσεις r, s: A B C D B D E 1 2 4 a b 1 3 a r s r s: r.A, r.B, r.C, r.D, s.E (r.B = s.B ^ r.D = s.D (r x s)) A B 1 C D a E
Σχεσιακή Άλγεβρα Α Β 1 2 1 4 2 1 6 5 R B C 2 3 2 5 1 4 Α Β 1 2 1 4 2 1 6 5 R B C 2 3 2 5 1 4 R x S R R.a >= S.b S S R R.a = S.b S R * S
Σχεσιακή Άλγεβρα Οι πράξεις τις σχεσιακής άλγεβρας: 1. Πράξεις που αφαιρούν κομμάτια από μια σχέση είτε επιλέγοντας γραμμές (σ) είτε προβάλλοντας στήλες (π) 2. Οι συνηθισμένες πράξεις συνόλου: ένωση, τομή, διαφορά 3. Πράξεις που συνδυάζουν πλειάδες από δύο σχέσεις 4. Μετονομασία γνωρισμάτων
Πλήρες σύνολο πράξεων Σχεσιακή Άλγεβρα Επίσης τομή () συνένωση συνένωση ισότητας φυσική συνένωση (*) επιλογή (σ) προβολή (π) ένωση () διαφορά (-) καρτεσιανό γινόμενο (x)
Αναδρομική Κλειστότητα Αρ_Ταυτ Διεύθυνση Μισθός Προϊστάμενος R Δεν είναι δυνατόν να βρούμε όλους τους υφισταμένους που επιτηρεί σε οποιοδήποτε επίπεδο ένας συγκεκριμένος προϊστάμενος (π.χ., Αρ_Ταυτ = Μ20200) Π1 (Προϊστ1) π Αρ_Ταυτ (σ Προϊστάμενος = Μ20200 (R)) Π2(Προϊστ2) π Αρ_Ταυτ ( Π1 Προϊστ1 = Προϊστάμενος (R))
Εξωτερική Συνένωση Εξωτερική Συνένωση Όταν θέλουμε να κρατήσουμε στο αποτέλεσμα όλες τις πλειάδες - και αυτές που δεν ταιριάζουν) είτε της σχέσης στα αριστερά (αριστερή εξωτερική συνένωση) είτε της σχέσης στα δεξιά (δεξιά εξωτερική συνένωση) R * S R S Α C B 1 6 3 1 6 5 2 4 null Α C B 1 6 3 1 6 5 3 null 9 Α C 1 6 2 4 Α B 1 3 1 5 3 9 Α C B 1 6 3 1 6 5
Συνδυασμοί πράξεων Μια σύνθετη πράξη της σχεσιακής άλγεβρας μπορεί να υπολογιστεί με πολλούς τρόπος [εν γένει] Επειδή το join είναι «ακριβή» πράξη, είναι καλύτερο να εκτελούμε πρώτα τα select και τα project. Παράδειγμα σ συνθήκη-επιλογής( R S) [σ συνθήκη-επιλογής(R)] [σ συνθήκη-επιλογής(S)]
Παραδείγματα Έστω το σχήμα βάσης (λογική σχεδίαση) που αφορά σ’ ένα τραπεζικό οργανισμό: Κατάστημα (όνομαΚ, πόλη, κεφάλαια) Πελάτης (όνομαΠ*, διεύθυνση) Λογαριασμός (αριθμόςΛ, όνομαΚ, υπόλοιπο) Δάνειο (αριθμόςΔ, όνομαΚ, κεφάλαιο) Καταθέτης (όνομαΠ, αριθμόςΛ) Δανειολήπτης (όνομαΠ, αριθμόςΔ) *στην πραγματικότητα το όνομα δεν είναι αρκετό, εδώ για απλότητα
Παράδειγμα 1 όνομαΠ(διεύθυνση =‘Αριστοτέλους’ (Πελάτης)) Βρες όλους τους πελάτες που μένουν στην οδό “Αριστοτέλους” όνομαΠ(διεύθυνση =‘Αριστοτέλους’ (Πελάτης))
όνομαΠ(Δανειολήπτης) όνομαΠ(Καταθέτης) Παράδειγμα 2 Βρες όλους τους πελάτες που έχουν είτε λογαριασμό, είτε δάνειο ή και τα δύο όνομαΠ(Δανειολήπτης) όνομαΠ(Καταθέτης)
Παράδειγμα 3 όνομαΠ(Καταθέτης) - όνομαΠ(Δανειολήπτης) Βρες όλους τους πελάτες που έχουν λογαριασμό, αλλά όχι δάνειο όνομαΠ(Καταθέτης) - όνομαΠ(Δανειολήπτης)
Παράδειγμα 4 όνομαΠ(Δανειολήπτης) όνομαΠ(Καταθέτης) ή Βρες όλους τους πελάτες που έχουν και λογαριασμό και δάνειο όνομαΠ(Δανειολήπτης) όνομαΠ(Καταθέτης) ή όνομαΠ(Δανειολήπτης Καταθέτης)
όνομαΚ( διεύθυνση =‘Αριστοτέλους’’ (Πελάτης Λογαριασμός Καταθέτης)) Παράδειγμα 5 Βρες όλα τα καταστήματα με πελάτες που έχουν λογαριασμό στην τράπεζα και μένουν στην οδό “Αριστοτέλους” όνομαΚ( διεύθυνση =‘Αριστοτέλους’’ (Πελάτης Λογαριασμός Καταθέτης))
SQL - Structured Query Language (Δομημένη Γλώσσα Επερωτήσεων)
Αντιστοιχία ορολογίας SQL Είναι γλώσσα ορισμού δεδομένων (Data Definition Language - DDL) και γλώσσα διαχείρισης δεδομένων (Data Manipulation Language - DML) Αντιστοιχία ορολογίας Σχεσιακή άλγεβρα SQL Σχέση (relation) Πίνακας (table) Κατηγόρημα (attribute) Πεδίο (field) ή Στήλη (column) Πλειάδα (tuple) Γραμμή (row)
SQL Στην SQL ένας πίνακας είναι δυνατό να περιλαμβάνει την ίδια γραμμή περισσότερες από μία φορές (πολυσύνολο - multiset) Βασικές DDL εντολές της SQL: CREATE DROP ALTER Βασικές DML εντολές της SQL: INSERT DELETE UPDATE SELECT
Η εντολή SELECT Βασική συντακτική δομή: SELECT <λίστα πεδίων> FROM <λίστα πινάκων> [WHERE <συνθήκη>] Παράδειγμα Εργαζόμενος (ΑΦΜ, Όνομα, Επώνυμο, Μισθός) SELECT Μισθός FROM Εργαζόμενος WHERE ΑΦΜ=079593828 Στη σχεσιακή άλγεβρα: πΜισθός (σΑΦΜ= 079593828(Εργαζόμενος))
Συνένωση (join) πινάκων Εργαζόμενος (ΑΦΜ, Όνομα, Επώνυμο, Μισθός, Τμήμα) Τμήμα (Κωδικός, Ονομασία, Περιοχή) Το πεδίο Τμήμα του πίνακα Εργαζόμενος αποτελεί ξένο κλειδί που αντιστοιχεί στον πίνακα Τμήμα (δηλ. στο πεδίο Κωδικός, που είναι το κλειδί του πίνακα Τμήμα) Ερώτημα: Εμφάνιση του ονοματεπώνυμου των εργαζομένων και της ονομασίας του τμήματος όπου εργάζονται: SELECT Όνομα, Επώνυμο, Ονομασία FROM Εργαζόμενος, Τμήμα WHERE Τμήμα = Κωδικός Δεν περιλαμβάνονται οι εργαζόμενοι που δεν έχουν ενταχθεί σε τμήμα (τιμή NULL στο πεδίο Τμήμα) Στη σχεσιακή άλγεβρα: πΌνομα, Επώνυμο, Ονομασία (Εργαζόμενος Τμήμα = Κωδικός Τμήμα)
inner join (εσωτερική συνένωση) Πρόκειται πάντα για equi-join. Ερώτημα: Εμφάνιση του ονοματεπώνυμου των εργαζομένων και της ονομασίας του τμήματος όπου εργάζονται, αν ο μισθός τους είναι μεγαλύτερος των 1000 ευρώ. SELECT Όνομα, Επώνυμο, Ονομασία FROM Εργαζόμενος INNER JOIN Τμήμα ON Τμήμα = Κωδικός WHERE Μισθός > 1000 Δεν περιλαμβάνονται οι εργαζόμενοι που δεν έχουν ενταχθεί σε τμήμα (τιμή NULL στο πεδίο Τμήμα), ακόμα κι αν έχουν μισθό μεγαλύτερο των 1000 ευρώ.
Self-join - Χρήση ψευδωνύμων (aliases) Εργαζόμενος (ΑΦΜ, Όνομα, Επώνυμο, Προϊστάμενος) Στο πεδίο Προϊστάμενος αποθηκεύεται ο ΑΦΜ του προϊσταμένου κάθε εργαζομένου (εκτός από τον ΓΕΝΙΚΟ ΔΙΕΥΘΥΝΤΗ που δεν έχει προϊστάμενο). Ερώτηση: Εμφάνιση για κάθε εργαζόμενο του ονοματεπώνυμου αυτού, καθώς και του ονοματεπώνυμου του προϊσταμένου του SELECT Ε1.Όνομα, Ε1.Επώνυμο, Ε2.Όνομα, Ε2.Επώνυμο FROM Εργαζόμενος Ε1, Εργαζόμενος Ε2 WHERE Ε1.Προϊστάμενος = Ε2.ΑΦΜ Ο πίνακας Εργαζόμενος εμφανίζεται δύο φορές στο ερώτημα, σαν να υπήρχαν δύο ξεχωριστοί πίνακες. Ο πεδίο Προϊστάμενος του πίνακα Ε1 είναι ξένο κλειδί που αντιστοιχεί στο πεδίο ΑΦΜ του πίνακα Ε2.
Άλλες ιδιότητες της εντολής SELECT Όταν η λίστα πινάκων περιέχει δύο ή περισσότερους πίνακες, χωρίς να υπάρχει πρόταση WHERE που να εκφράζει συνένωση, τότε η πράξη ισοδυναμεί με το καρτεσιανό γινόμενο των πινάκων Για να εμφανιστούν όλα τα πεδία ενός πίνακα: SELECT * FROM Εργαζόμενος Για να παραληφθούν οι όμοιες πολλαπλές γραμμές και να εμφανιστεί μόνο μία εξ΄ αυτών: SELECT DISTINCT Μισθός
Άλλες ιδιότητες της εντολής SELECT Σύγκριση με την ειδική τιμή NULL [δεν χρησιμοποιούνται οι τελεστές = και <>] SELECT * FROM Εργαζόμενος WHERE Τμήμα IS ΝΟΤ NULL (εμφανίζει τους εργαζόμενους που έχουν ενταχθεί σε τμήμα) SELECT * FROM Εργαζόμενος WHERE Μισθός IS NULL (εμφανίζει τους εργαζόμενους που δεν έχει ορισθεί ο μισθός τους)
Άλλες ιδιότητες της εντολής SELECT Τελεστής LIKE SELECT * FROM Εργαζόμενος WHERE Επώνυμο LIKE “Π*” (εμφανίζει τους εργαζόμενους που το επώνυμό τους αρχίζει από “Π”) Πράξεις στα πεδία του τμήματος SELECT SELECT Επώνυμο, Όνομα, Μισθός*1,1 FROM Εργαζόμενος (εμφανίζει τον μισθό των εργαζομένων αυξημένο κατά 10%)
Άλλες ιδιότητες της εντολής SELECT Συναθροιστικές συναρτήσεις Πλήθος Να υπολογιστεί το πλήθος των εργαζομένων SELECT count(*) FROM Εργαζόμενος Άθροισμα/Μέσος όρος Να υπολογιστεί η μηνιαία δαπάνη μισθοδοσίας SELECT sum(Μισθός) [αντίστοιχα Μέσος όρος : avg()] Μέγιστη/Ελάχιστη τιμή Να βρεθεί ο μεγαλύτερος μισθός SELECT max(Μισθός) [αντίστοιχα Ελάχιστος μισθός : min()]
Άλλες ιδιότητες της εντολής SELECT Ταξινόμηση εγγραφών Τελεστής ORDER BY ASC : αύξουσα ταξινόμηση (προεπιλεγμένη συμπεριφορά) DESC: φθίνουσα ταξινόμηση SELECT Επώνυμο, Όνομα, Μισθός FROM Εργαζόμενος ORDER BY Επώνυμο, Όνομα ORDER BY Επώνυμο DESC, Όνομα ASC Αύξουσα διάταξη των εγγραφών με βάση το επώνυμο και το όνομα (για όσες εγγραφές έχουν το ίδιο επώνυμο). Φθίνουσα διάταξη των εγγραφών με βάση το επώνυμο και αύξουσα με βάση το όνομα (για όσες εγγραφές έχουν το ίδιο επώνυμο)
τελεστής IN - sub-select Αντικείμενο (Κωδικός, Όνομα, Κατηγορία) Εμφάνιση όλων των αντικειμένων που έχουν κατηγορία όμοια με την κατηγορία του αντικειμένου 13. SELECT Κωδικός, Όνομα FROM Αντικείμενο WHERE Κατηγορία IN (SELECT Κατηγορία WHERE Κωδικός = 13) } sub-select
Πόσες πόλεις υπάρχουν σε κάθε νομό; Ομαδοποίηση (grouping) Η ανάγκη για ομαδοποίηση των εγγραφών ενός πίνακα ΠΟΛΗ Α/Α ΟΝΟΜΑ ΝΟΜΟΣ 90 ΜΥΤΙΛΗΝΗ ΛΕΣΒΟΥ 91 ΒΡΟΝΤΑΔΟΣ ΧΙΟΥ 92 ΣΑΜΟΣ ΣΑΜΟΥ 93 ΑΓΙΑΣΟΣ 94 ΠΥΡΓΙ 95 ΚΑΛΛΟΝΗ Πόσες πόλεις υπάρχουν σε κάθε νομό;
SELECT DISTINCT ΝΟΜΟΣ FROM ΠΟΛΗ ΛΕΣΒΟΥ ΣΑΜΟΥ ΧΙΟΥ SELECT DISTINCT ΝΟΜΟΣ FROM ΠΟΛΗ SELECT COUNT(A/A) FROM ΠΟΛΗ WHERE ΝΟΜΟΣ = “ΛΕΣΒΟY” COUNT(A/A) 3 SELECT COUNT(A/A) FROM ΠΟΛΗ WHERE ΝΟΜΟΣ = “ΣΑΜΟΥ” COUNT(A/A) 1 SELECT COUNT(A/A) FROM ΠΟΛΗ WHERE ΝΟΜΟΣ = “ΧΙΟΥ” COUNT(A/A) 2
} Εντολή UNION SELECT COUNT(A/A) FROM ΠΟΛΗ WHERE ΝΟΜΟΣ = “ΛΕΣΒΟY” 3 1 2 SELECT COUNT(A/A) FROM ΠΟΛΗ WHERE ΝΟΜΟΣ = “ΣΑΜΟΥ” UNION SELECT COUNT(A/A) FROM ΠΟΛΗ WHERE ΝΟΜΟΣ = “ΧΙΟΥ”
ΠΟΛΗ GROUP BY ΝΟΜΟΣ 90 ΜΥΤΙΛΗΝΗ ΛΕΣΒΟΥ 93 ΑΓΙΑΣΟΣ 95 ΚΑΛΛΟΝΗ 91 Α/Α ΟΝΟΜΑ ΝΟΜΟΣ 90 ΜΥΤΙΛΗΝΗ ΛΕΣΒΟΥ 93 ΑΓΙΑΣΟΣ 95 ΚΑΛΛΟΝΗ 91 ΒΡΟΝΤΑΔΟΣ ΧΙΟΥ 94 ΠΥΡΓΙ 92 ΣΑΜΟΣ ΣΑΜΟΥ Α/Α ΟΝΟΜΑ ΝΟΜΟΣ 90 ΜΥΤΙΛΗΝΗ ΛΕΣΒΟΥ 91 ΒΡΟΝΤΑΔΟΣ ΧΙΟΥ 92 ΣΑΜΟΣ ΣΑΜΟΥ 93 ΑΓΙΑΣΟΣ 94 ΠΥΡΓΙ 95 ΚΑΛΛΟΝΗ Ομαδοποίηση κατά Νομό GROUP BY ΝΟΜΟΣ ΝΟΜΟΣ COUNT ΛΕΣΒΟΥ 3 ΧΙΟΥ 2 ΣΑΜΟΥ 1 Υπολογισμός μίας γραμμής για κάθε ομάδα
GROUP BY ΝΟΜΟΣ HAVING COUNT(A/A) >= 2 ΝΟΜΟΣ COUNT ΛΕΣΒΟΥ 3 ΧΙΟΥ 2 ΣΑΜΟΥ 1 ΝΟΜΟΣ COUNT ΛΕΣΒΟΥ 3 ΧΙΟΥ 2 Υπολογισμός περιορισμών για τις γραμμές των ομάδων SELECT ΝΟΜΟΣ, COUNT(A/A) FROM ΠΟΛΗ GROUP BY ΝΟΜΟΣ HAVING COUNT(A/A) >= 2 SQL:
Ομαδοποίηση (group by) Ομαδοποιεί τις εγγραφές με βάση την τιμή που έχουν σε ένα ή περισσότερα πεδία. Οι προς ομαδοποίηση εγγραφές υπολογίζονται από τα τμήματα FROM και WHERE της εντολής SELECT. Οι ομάδες υπολογίζονται από το τμήμα GROUP BY της εντολής SELECT. Το αποτέλεσμα της εντολής αποτελείται από μία εγγραφή για κάθε ομάδα. Περιορισμοί στις ομάδες του αποτελέσματος επιβάλλονται από το τμήμα HAVING της εντολής SELECT. Τα πεδία που περιλαμβάνονται στο τμήμα SELECT πρέπει είτε να περιλαμβάνονται και στο τμήμα GROUP BY είτε να είναι συναθροιστικές συναρτήσεις.
group by – having (συνέχεια) Εργαζόμενος (ΑΦΜ, Όνομα, Επώνυμο, Μισθός, Τμήμα) Τμήμα (Κωδικός, Ονομασία, Περιοχή) Ερώτημα 1: Υπολογίστε το μέσο όρο του μισθού των εργαζομένων κάθε τμήματος SELECT Τμήμα, AVG(Μισθός) FROM Εργαζόμενος GROUP BY Τμήμα Ερώτημα 2: Εμφανίστε τους κωδικούς και τις ονομασίες των Τμημάτων με περισσότερους από 2 εργαζομένους SELECT Κωδικός, Ονομασία FROM Εργαζόμενος INNER JOIN Τμήμα ON Τμήμα = Κωδικός GROUP BY Κωδικός, Ονομασία HAVING count(ΑΦΜ) >= 3
Πλήρης συντακτική δομή: Εντολή SELECT Πλήρης συντακτική δομή: SELECT <λίστα πεδίων> FROM <λίστα πινάκων> [WHERE <συνθήκη>] [GROUP BY <λίστα πεδίων>] [HAVING <συνθήκη>] [ORDER BY <λίστα πεδίων>]
Εντολή INSERT Προσθέτει εγγραφές σε πίνακα Παράδειγμα 1 Βιβλίο (ISBN, Τίτλος,Εκδότης, ΈτοςΕκδοσης) INSERT INTO Βιβλίο (ISBN, Τίτλος,Εκδότης, ΈτοςΕκδοσης) VALUES (“299330-X3-0”, “Βάσεις Δεδομένων”, “Addison-Wesley”, 1994) (εισαγωγή μίας εγγραφής στον πίνακα Βιβλίο) Πρέπει να υπάρχει ένα-προς-ένα αντιστοιχία στον αριθμό και στον τύπο δεδομένων των πεδίων και των τιμών στις δύο παρενθέσεις.
Εντολή INSERT (συνέχεια) Παράδειγμα 2 Εργαζόμενος (ΑΦΜ, Επώνυμο, Όνομα, ΈτοςΠρόσληψης) Ασφαλισμένος (ΑΦΜ, Επώνυμο, Όνομα, Κατηγορία) INSERT INTO Ασφαλισμένος (ΑΦΜ, Επώνυμο,Όνομα) SELECT ΑΦΜ, Επώνυμο, Όνομα FROM Εργαζόμενος WHERE ΈτοςΠρόσληψης >= 1993 (εισαγωγή στον πίνακα των ασφαλισμένων όλων των εργαζομένων που προσλήφθηκαν από το 1993 και μετά)
Εντολή DELETE Διαγράφει εγγραφές από πίνακα Παράδειγμα Βιβλίο (ISBN, Τίτλος,Εκδότης, ΈτοςΕκδοσης) DELETE FROM Βιβλίο WHERE Εκδότης = “Κατσαντώνης” (διαγράφει όλες τις εγγραφές από τον πίνακα Βιβλίο που στο πεδίο Εκδότης έχουν την τιμή “Κατσαντώνης”)
Εντολή UPDATE Τροποποιεί τις τιμές σε πεδία εγγραφών ενός πίνακα Παράδειγμα Εργαζόμενος (ΑΦΜ, Επώνυμο, Όνομα, Μισθός, ΈτοςΠρόσληψης) UPDATE Εργαζόμενος SET Μισθός = Μισθός * 1,1 WHERE ΈτοςΠρόσληψης = 1998 (αυξάνει κατά 10% την τιμή στο πεδίο Μισθός μόνο των εργαζομένων που προσλήφθηκαν το 1998)
Όψεις (Views) Αποτελούν εικονικούς πίνακες. Δημιουργούνται με την εκτέλεση εντολής SELECT που εφαρμόζεται σε πίνακες ή άλλες όψεις. Δεν αποθηκεύονται οι εγγραφές τους, παρά μόνο η εντολή SELECT της δημιουργίας τους. Υπολογίζονται οι εγγραφές τους κάθε φορά που χρησιμοποιούνται. Δημιουργία όψης CREATE VIEW view-name AS εντολή SELECT Διαγραφή όψης DROP VIEW view-name