Σχεσιακό Μοντέλο Δαμιανός Χατζηαντωνίου Τμ. Διοικητικής Επιστήμης & Τεχνολογίας Οικονομικό Πανεπιστήμιο Αθηνών
Περιεχόμενα Σχεσιακό μοντέλο Μετατροπή Ο-Σ μοντέλου σε σχεσιακό Σχεσιακή άλγεβρα Σχεσιακός λογισμός οι διαφάνειες αυτού του κεφαλαίου βασίζονται σε μεγάλο βαθμό στις διαφάνειες της κυρίας Ευαγγελίας Πιτουρά του Πανεπιστημίου Ιωαννίνων
Σχεσιακό Μοντέλο
Εισαγωγή Σχεδιασμός μιας ΒΔ ανάλυση ποιας πληροφορίας και της σχέσης ανάμεσα στα στοιχεία της περιγραφή της δομής - σχήμα σε διάφορους συμβολισμούς ή μοντέλα Μοντέλο Οντοτήτων - Συσχετίσεων γραφικό μοντέλο -- εννοιολογικό Μετατροπή σε σχεσιακό -> είσοδο σε ένα ΣΔΒΔ
Γνωρίσματα (attributes, fields) Το Σχεσιακό Μοντέλο Ένας απλός τρόπος αναπαράστασης δεδομένων: ένας διδιάστατος πίνακας (table) που λέγεται σχέση (relation) Γνωρίσματα (attributes, fields) υπάλληλος AFM Name Address Salary 219291928 Nikos Papadopoulos Pentelis 76 1400 129348471 Maria Xilomenou Dimokratias 44 1900 281728373 Giorgos Papas Trikalwn 55 1800
Σχήμα Σχέσης (Relational Schema) Σχήμα σχέσης R που δηλώνεται R(A1, A2, …,An) αποτελείται από ένα όνομα σχέσης και μια λίστα από γνωρίσματα. Παράδειγμα - Ταινία(τίτλος, χρόνος, διάρκεια, είδος) Παράδειγμα - Υπάλληλος(ΑΦΜ, Όνομα, Επίθετο, Διευθυνση, Μισθός) Βαθμός: το πλήθος των γνωρισμάτων
Πλειάδες (Tuples) Πλειάδες Οι γραμμές της σχέσης ονομάζονται πλειάδες. τίτλος χρόνος διάρκεια είδος Star Wars 1997 124 έγχρωμη Mighty Ducks 1991 104 έγχρωμη Wayne’s World 1992 95 έγχρωμη Παράδειγμα: (Star Wars, 1997, 124, έγχρωμη) (Wayne’s World, 1992, 95, έγχρωμη)
Πλειάδες, σχέση πρόθεση (intension) Σχήμα σχέσης R που δηλώνεται R(A1, A2, …,An) αποτελείται από ένα όνομα σχέσης και μια λίστα από γνωρίσματα. έκταση ή κατάσταση (extension) Μία σχέση r ή r(R) (ή ένα στιγμιότυπο r του σχήματος σχέσης R) είναι ένα σύνολο από πλειάδες.
Ονοματολογία Πίνακας (table) Σχέση (relation) Στήλη (column, field) Γνώρισμα ή Χαρακτηριστικό (attribute) Γραμμή, εγγραφή (row, record) πλειάδα (tuple)
Πεδίο Ορισμού Πεδίο Ορισμού Κάθε γνώρισμα Ai παίρνει τιμές από κάποιο σύνολο D οποίο λέγεται πεδίο ορισμού (domain) του Ai και συμβολίζεται με dom(Ai). (το γνώρισμα είναι το όνομα ενός ρόλου που παίζει κάποιο πεδίο ορισμού D στο σχήμα σχέσης R) Πεδίο ορισμού D: ένα σύνολο από ατομικές τιμές (παράδειγμα: ακέραιοι, συμβολοσειρές - όχι εγγραφές, πίνακες, λίστες) Κάθε στοιχείο μιας πλειάδας ατομικό.
Το Σχεσιακό Μοντέλο Κάθε πλειάδα είναι μια διατεταγμένη λίστα από τιμές <v1, v2, …, vn> όπου κάθε τιμή vi είναι ένα στοιχείο του dom(Ai) ή η ειδική τιμή null Κάθε σχέση είναι ένα υποσύνολο του καρτεσιανού γινομένου: r(R) (dom(A1) X dom(A2) X … X dom(An)) Παρατηρήσεις Διάταξη των πλειάδων σε μια σχέση Διάταξη των γνωρισμάτων στο σχήμα σχέσης
Το Σχεσιακό Μοντέλο Συμβολισμός Σχήμα σχέσης βαθμού n R(A1, A2, …, An) Πλειάδα t της σχέσης r(R) <v1, v2, …, vn> αναφορά στις συνιστώσες τιμές t[Ai] t[Au, Aw, …, Az] όνομα γνωρίσματος t.Ai Q, R, S ονόματα σχέσεων t, u, v πλειάδες
Ανακεφαλαίωση Το Σχεσιακό Μοντέλο Σχήμα σχέσης (όνομα + λίστα από γνωρίσματα) Γνωρίσματα παίρνουν ατομικές τιμές από ένα πεδίο ορισμού Πλειάδα Σχέση (ή στιγμιότυπο σχέσης): σύνολο από πλειάδες
Σχήμα Σχεσιακής Βάσης Δεδομένων Σχήμα μιας σχεσιακής βάσης δεδομένων είναι ένα σύνολο από σχήματα σχέσεων Παράδειγμα - Ταινία(τίτλος, χρόνος, διάρκεια, είδος) Ηθοποιός(όνομα, διεύθυνση, έτος-γέννησης) Παίζει(όνομα_ηθοποιοιού, τίτλος, χρόνος) Παράδειγμα – Υπάλληλος(ΑΦΜ, όνομα, διευθυνση, μισθος) Project (κωδικός_έργου, περιγραφή, τοποθεσία) Συμμετέχει(ΑΦΜ, κωδικός_έργου, ώρες)
Το Σχεσιακό Μοντέλο Ταινία Τίτλος Έτος Διάρκεια Είδος Ηθοποιός Όνομα Διεύθυνση Έτος-Γέννησης Παίζει Όνομα-Ηθοποιού Τίτλος Έτος
Περιορισμός Κλειδιού (Key constraint) Μια σχέση ορίζεται ως ένα σύνολο πλειάδων, άρα όλες οι πλειάδες πρέπει να είναι διαφορετικές. Ένα υποσύνολο γνωρισμάτων SK του σχήματος σχέσης R τέτοιο ώστε σε κάθε στιγμιότυπο r(R) κανένα ζευγάρι πλειάδων δε μπορεί να έχει τον ίδιο συνδυασμό τιμών για τα γνωρίσματα αυτά, δηλαδή για δυο διαφορετικές πλειάδες t1 και t2, t1[SK] t2[SΚ] λέγεται υπερκλειδί ή εμπλουτισμένο κλειδί (superkey)
Περιορισμός Κλειδιού SK υπερκλειδί - υποψήφιο κλειδί - (πρωτεύον) κλειδί υποψήφιο κλειδί Κ (candidate key) : υπερκλειδί με την ιδιότητα ότι αν αφαιρεθεί ένα οποιοδήποτε γνώρισμα Α από το Κ, το Κ’ που προκύπτει δεν είναι υπερκλειδί Κάθε σχέση τουλάχιστον ένα υπερκλειδί, ποιο; Διαλέγουμε ένα υποψήφιο κλειδί να είναι το πρωτεύον (primary) Συμβολισμός: υπογραμμίζουμε τα γνωρίσματα του πρωτεύοντος κλειδιού
Περιορισμός Κλειδιού Παράδειγμα – Υπάλληλος(ΑΦΜ, κωδικός, όνομα, διευθυνση, μισθος) Project (κωδικός_έργου, περιγραφή, τοποθεσία) Συμμετέχει(ΑΦΜ, κωδικός_έργου, ώρες)
Περιορισμός Κλειδιού Παράδειγμα – Υπάλληλος(ΑΦΜ, κωδικός, όνομα, διευθυνση, μισθος) Project (κωδικός_έργου, περιγραφή, τοποθεσία) Συμμετέχει(ΑΦΜ, κωδικός_έργου, ώρες)
Περιορισμός Κλειδιού Ταινία Τίτλος Έτος Διάρκεια Είδος Ηθοποιός Όνομα Διεύθυνση Έτος-Γέννησης Παίζει Όνομα-Ηθοποιού Τίτλος Έτος
Περιορισμός Ακεραιότητας Οντοτήτων Δε μπορεί η τιμή του πρωτεύοντος κλειδιού να είναι null.
Περιορισμός Αναφορικής Ακεραιότητας (Referenetial Integrity) Ορίζεται μεταξύ δύο σχημάτων σχέσεων όταν μια πλειάδα μιας σχέσης αναφέρεται σε μια άλλη αυτή η άλλη πρέπει να υπάρχει Παράδειγμα – Υπάλληλος(ΑΦΜ, κωδικός, όνομα, διευθυνση, μισθος) Project (κωδικός_έργου, περιγραφή, τοποθεσία) Συμμετέχει(ΑΦΜ, κωδικός_έργου, ώρες)
Περιορισμός Αναφορικής Ακεραιότητας Ένα σύνολο από γνωρίσματα FK ενός σχήματος σχέσης R1 είναι ένα ξένο κλειδί (foreign key) του R1 αν τα γνωρίσματα του FK έχουν το ίδιο πεδίο με το πρωτεύον κλειδί PK ενός άλλου σχήματος R2 μια τιμή του FK σε μια πλειάδα t1 της R1 είτε εμφανίζεται ως τιμή του PK σε μια πλειάδα t2 της R2, δηλαδή t1[FK] = t2[PK] είτε είναι null Ταινία Τίτλος Έτος Διάρκεια Είδος Παίζει Όνομα-Ηθοποιού Τίτλος Έτος
Περιορισμός Αναφορικής Ακεραιότητας Συνήθως προκύπτουν από συσχετίσεις μεταξύ οντοτήτων Το ξένο κλειδί μπορεί να αναφέρεται στη δική του σχέση Όνομα Διεύθυνση Έτος-Γέννησης Σύζυγος-Ηθοποιού Ηθοποιός Υπάλληλος ?? Υπάλληλος(ΑΦΜ, κωδικός όνομα, διευθυνση, μισθος, ΑΦΜ_προϊσταμένου)
Περιορισμός Σημασιολογικής Ακεραιότητας Παραδείγματα: ο μισθός ενός εργαζομένου δεν μπορεί να υπερβαίνει το μισθό του προϊσταμένου του ο μέγιστος αριθμός ωρών που ένας εργαζόμενος μπορεί να απασχοληθεί σε όλα τα έργα ανά εβδομάδα είναι 56.
Περιορισμοί Περιορισμός Πεδίου Ορισμού Η τιμή κάθε γνωρίσματος A πρέπει να είναι μία ατομική τιμή από το πεδίο ορισμού αυτού του γνωρίσματος dom(A) Περιορισμός Κλειδιού Περιορισμός Ακεραιότητας Οντοτήτων Δε μπορεί η τιμή του πρωτεύοντος κλειδιού να είναι null Περιορισμός Αναφορικής Ακεραιότητας Περιορισμός Σημασιολογικής Ακεραιότητας
Σχεσιακό Σχήμα Ένα σχεσιακό σχήμα βάσης δεδομένων είναι ένα σύνολο από σχήματα σχέσεων Σ = {R1, R2, …, Rn} και ένα σύνολο από περιορισμούς ακεραιότητας. Ένα στιγμιότυπο μιας σχεσιακής βάσης δεδομένων ΒΔ του Σ είναι ένα σύνολο από στιγμιότυπα σχέσεων (σχέσεις) ΒΔ = {r1, r2, …, rn} τέτοια ώστε κάθε ri είναι ένα στιγμιότυπο του Ri που ικανοποιούν τους περιορισμούς ορθότητας (πεδίου ορισμού, κλειδιού, ακεραιότητας οντοτήτων, και αναφορικής ακεραιότητας) Προσοχή: οι περιορισμοί ακεραιότητας πρέπει να ισχύουν σε κάθε στιγμιότυπο.
Το Σχεσιακό Μοντέλο Ταινία Τίτλος Έτος Διάρκεια Είδος Παίζει Όνομα-Ηθοποιού Τίτλος Έτος Ηθοποιός Όνομα Διεύθυνση Έτος-Γέννησης Σύζυγος-Ηθοποιού
Μετατροπή μοντέλου Ο-Σ σε Σχεσιακό
Μετατροπή Σχήματος Ο/Σ σε Σχεσιακό Εννοιολογική σχεδίαση (Ο-Σ μοντέλο) απεικόνιση (mapping) Λογική σχεδίαση (Σχεσιακό μοντέλο) Αυτή η απεικόνιση πρέπει να γίνει σύμφωνα με κάποιους κανόνες.
Σημαντικά δομικά χαρακτηριστικά του μοντέλου Ο-Σ: Ανασκόπηση E-R Σημαντικά δομικά χαρακτηριστικά του μοντέλου Ο-Σ: Οντότητες ισχυρές και ασθενείς Συσχετίσεις 1-1, 1-Ν, Ν-1, Μ-Ν Γνωρίσματα μονότιμα, σύνθετα, πολλαπλών τιμών
Works-in Policy Assigned Παράδειγμα FirstName LastName DeptCode SSN Name Works-in Employee Department Policy Assigned Location Dependent Hours Name Location Code Project Description
Ισχυροί Τύποι Οντοτήτων Οντότητες 1. Ισχυροί τύποι οντοτήτων με μονότιμα γνωρίσματα Για κάθε (ισχυρό) τύπο οντοτήτων Ε δημιουργούμε ένα σχήμα σχέσης R με τα ίδια γνωρίσματα - ένα για κάθε απλό γνώρισμα του Ε. Αν το Ε έχει σύνθετα γνωρίσματα, στο σχεσιακό σχήμα R έχουμε ένα γνώρισμα για κάθε απλό γνώρισμα που απαρτίζει το σύνθετο. Παράδειγμα: Employee(SSN,Firstname,Lastname)
Ασθενείς Τύποι Οντοτήτων 2. Ασθενείς τύποι οντοτήτων με (μονότιμα) γνωρίσματα Για κάθε ασθενή τύπο οντοτήτων Α που εξαρτάται από τον ισχυρό τύπο οντοτήτων Β (προσδιορίζον ιδιοκτήτης) δημιουργούμε ένα σχήμα σχέσης R με γνωρίσματα: . τα γνωρίσματα του μερικού κλειδιού του Α, και . τα γνωρίσματα του πρωτεύοντος κλειδιού του Β ξένο κλειδί παράδειγμα: Dependent(name, SSN)
Συσχετίσεις Συσχετίσεις Γενικά, για κάθε συσχέτιση R μεταξύ n τύπων οντοτήτων που αντιστοιχούν στις σχέσεις S1, S2, … , Sn δημιουργούμε μια νέα σχέση R με γνωρίσματα: τα γνωρίσματα (ξένα κλειδιά) του πρωτεύοντος κλειδιού κάθε συμμετέχουσας σχέσης Si τα γνωρίσματα της R (αν υπάρχουν) Θα δούμε κάποιες ειδικές περιπτώσεις
Συσχετίσεις 1-1 1. 1-1 δυαδική (μη ασθενής) συσχέτιση Για κάθε 1-1 δυαδική συσχέτιση R μεταξύ δύο τύπων οντοτήτων του διαγράμματος Ο/Σ που αντιστοιχούν στις σχέσεις Τ και S 1. επιλογή μιας εκ των Τ και S, έστω της S 2. το πρωτεύον κλειδί της S γίνεται ξένο κλειδί της Τ Προτιμάμε τη σχέση που αντιστοιχεί σε τύπο οντοτήτων με ολική συμμετοχή, γιατί; Τα γνωρίσματα της R;
Συσχετίσεις 1-1 Παράδειγμα Εναλλακτικά, συγχώνευση των S και T σε μία μόνο σχέση -- πότε; -- κλειδί;
Συσχετίσεις 1-Ν 2. 1-Ν δυαδική συσχέτιση Για κάθε 1-Ν δυαδική συσχέτιση R μεταξύ δύο τύπων οντοτήτων του διαγράμματος Ο/Σ που αντιστοιχούν στις σχέσεις Τ και S 1. έστω T από την πλευρά 1 2. το πρωτεύον κλειδί της T γίνεται ξένο κλειδί της S Παράδειγμα: Employee(SSN,Firstname,Lastname, DeptCode) ξένο κλειδί
Γνωρίσματα Σύνθετα Ένα γνώρισμα για κάθε απλό γνώρισμα που απαρτίζει το σύνθετο. Πλειότιμα Για κάθε πλειότιμο γνώρισμα Α, κατασκευάζουμε μια σχέση R με γνωρίσματα: το Α (ή τα γνωρίσματα του Α αν το Α είναι σύνθετο) και τα γνωρίσματα (ξένο κλειδί) του πρωτεύοντος κλειδιού της σχέσης που παριστάνει τον τύπο οντοτήτων η συσχετίσεων του οποίου γνώρισμα είναι το Α Παράδειγμα: DeptLocations (DeptCode, Location)
Μετατροπή Σχήματος Ο/Σ σε Σχεσιακό Ανακεφαλαίωση Τύπος οντοτήτων Σχέση (οντοτήτων) Τύπος συσχέτισης 1:1 ή 1:Ν Ξένο κλειδί ή Σχέση (συσχέτισης) Τύπος συσχέτισης Μ:Ν Σχέση (συσχέτισης) με 2 ξένα κλειδιά (και γενικά) n-αδικός τύπος συσχέτισης Σχέση (συσχέτισης) με n ξένα κλειδιά Απλό γνώρισμα Γνώρισμα Σύνθετο γνώρισμα Σύνολο από γνωρίσματα Πλειότιμο γνώρισμα Σχέση και ξένο κλειδί
Σχεσιακή Άλγεβρα (Relational Algebra)
Ορισμοί και Τροποποιήσεις Προγράμματα που απαντούν σε ερωτήσεις για τον παρόν στιγμιότυπο της βάσης δεδομένων (quering) Το σχεσιακό μοντέλο έχει ένα σύνολο από πράξεις -> Σχεσιακή Άλγεβρα Τι είναι μία άλγεβρα ? Ένα κλειστό σύνολο Α ως προς ένα σύνολο πράξεων, με άλλα λόγια το αποτέλεσμα της πράξης είναι στοιχείο του Α. Πράξεις επί πινάκων που δίνουν πίνακες.
Σχεσιακή Άλγεβρα Γλώσσες Ερωτήσεων (Query Languages): Επιτρέπουν τον χειρισμό και την εύρεση πληροφορίας από μια βάση δεδομένων Το σχεσιακό μοντέλο υποστηρίζει απλές και ισχυρές γλώσσες ερωτήσεων (σε αντίθεση με το μοντέλο Ο/Σ)
Γλώσσες Ερωτήσεων != Γλώσσες Προγραμματισμού! Σχεσιακή Άλγεβρα Γλώσσες Ερωτήσεων != Γλώσσες Προγραμματισμού! Δεν αναμένεται να είναι “Turing complete”. Δεν αναμένεται να χρησιμοποιηθούν για ”δύσκολους υπολογισμούς”. Υποστηρίζουν εύκολη και αποδοτική προσπέλαση σε μεγάλα σύνολα δεδομένων
Σχεσιακή Άλγεβρα: Ποιο λειτουργική “operational” (database byte-code!) Δύο μαθηματικές γλώσσες ερωτήσεων αποτελούν το θεωρητικό υπόβαθρο για τις πραγματικές γλώσσες ερωτήσεων (π.χ. SQL) και για την υλοποίησή τους Σχεσιακή Άλγεβρα: Ποιο λειτουργική “operational” (database byte-code!) Σχεσιακός Λογισμός (calculus): Επιτρέπει στους χρήστες να περιγράψουν τι θέλουν αλλά όχι πώς να το υπολογίσουν (δηλωτική)
Σχεσιακή Άλγεβρα μετάφραση optimization SQL Σχεσιακή Άλγεβρα Πλάνο Εκτέλεσης Σχεσιακή άλγεβρα: ένας απλός τρόπος δημιουργίας νέων σχέσεων από παλιές. Ένα σύνολο από πράξεις που όταν εφαρμοστούν σε σχέσεις μας δίνουν νέες σχέσεις
Οι πράξεις τις σχεσιακής άλγεβρας: Σχεσιακή Άλγεβρα Οι πράξεις τις σχεσιακής άλγεβρας: 1. Πράξεις που αφαιρούν κομμάτια από μια σχέση είτε επιλέγοντας γραμμές είτε προβάλλοντας στήλες 2. Οι συνηθισμένες πράξεις συνόλου - ένωση, τομή, διαφορά 3. Πράξεις που συνδυάζουν πλειάδες από δύο σχέσεις 4. Μετονομασία γνωρισμάτων
Η πράξη της επιλογής (selection) Η Πράξη της Επιλογής Η πράξη της επιλογής (selection) Επιλογή ενός υποσυνόλου των πλειάδων (γραμμών) μιας σχέσης (πίνακα) που ικανοποιεί μια συνθήκη επιλογής θ σ<συνθήκη επιλογής> (<όνομα σχέσης>)
σθ (<όνομα πίνακα>) Η Πράξη της Επιλογής Επιλογή ενός υποσυνόλου των πλειάδων μιας σχέσης που ικανοποιεί μια συνθήκη επιλογής θ σθ (<όνομα πίνακα>) <όνομα γνωρίσματος> <τελεστής σύγκρισης> <όνομα γνωρίσματος> ή <σταθερή τιμή από το πεδίο ορισμού του γνωρίσματος> προτάσεις της μορφής συνθήκη θ =, >, <, , , συνδυασμένες με AND, OR, NOT
Παράδειγμα Ταινία Τίτλος Έτος Διάρκεια Είδος Παίζει Όνομα-Ηθοποιού Τίτλος Έτος Ηθοποιός Όνομα Διεύθυνση Έτος-Γέννησης Σύζυγος-Ηθοποιού
σ διάρκεια > 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 έγχρωμη
Η συνθήκη επιλογής εφαρμόζεται ανεξάρτητα σε κάθε πλειάδα (γραμμή) Η Πράξη της Επιλογής Η συνθήκη επιλογής εφαρμόζεται ανεξάρτητα σε κάθε πλειάδα (γραμμή) Ο τελεστής είναι μοναδιαίος (unary) Ο βαθμός της σχέσης που προκύπτει είναι ίδιος με τον βαθμό της αρχικής R Πλήθος γραμμών μικρότερο ή ίσο με την αρχική σχέση: το ποσοστό που επιλέγονται ονομάζεται επιλεκτικότητα (selectivity)
Ιδιότητες Η Πράξη της Επιλογής αντιμεταθετική σ <συνθ1> (σ<συνθ2> (R)) = σ<συνθ2> (σ<συνθ1> (R)) σ <συνθ1> (σ<συνθ2> ( … σ<συνθn> (R) ..)) = σ <συνθ1> AND <συνθ2> AND <συνθn> (R)
Η πράξη της προβολής (project) Η Πράξη της Προβολής Η πράξη της προβολής (project) Επιλογή συγκεκριμένων στηλών (γνωρισμάτων) π<λίστα γνωρισμάτων> (<όνομα σχέσης>)
τίτλος χρόνος διάρκεια είδος Η Πράξη της Προβολής Παραδείγματα τίτλος χρόνος διάρκεια είδος 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
Προσοχή: απαλοιφή διπλότιμων (duplicate elimination) Η Πράξη της Προβολής 2. Είδος ταινιών π είδος (Ταινία) είδος έγχρωμη Προσοχή: απαλοιφή διπλότιμων (duplicate elimination)
Τα γνωρίσματα έχουν την ίδια διάταξη Η Πράξη της Προβολής Τα γνωρίσματα έχουν την ίδια διάταξη Ο τελεστής είναι μοναδιαίος Ο βαθμός της σχέσης είναι ίσος με τον αριθμό γνωρισμάτων στη <λίστα γνωρισμάτων> Πλήθος πλειάδων μικρότερο ή ίσο (πότε;) με την αρχική σχέση
Ιδιότητες αντιμεταθετική; π <λίστα1> (π <λίστα2> (R)) = ? Η Πράξη της Προβολής Ιδιότητες αντιμεταθετική; π <λίστα1> (π <λίστα2> (R)) = ?
π διάρκεια (σ διάρκεια > 100 (Ταινία)) Σχεσιακή Άλγεβρα Παράδειγμα (ερώτημα με πράξεις σε σειρά - σημαντικό) Διάρκειες μεγαλύτερες των 100 λεπτών π διάρκεια (σ διάρκεια > 100 (Ταινία)) διάρκεια 124 104
Πράξεις συνόλου Ένωση () - union Τομή () - intersection Πράξεις Συνόλου Ένωση () - union Τομή () - intersection Διαφορά (-) - difference Πράξεις συνόλου Συμβατότητα ως προς την ένωση Δύo σχέσεις R(A1, A2, …, An) και S(B1, B2, …, Bn) είναι συμβατές ως προς την ένωση όταν 1. Έχουν τον ίδιο βαθμό n, και 2. i, dom(Ai) = dom(Bi)
Σύμβαση: η προκύπτουσα σχέση έχει τα ίδια ονόματα με την πρώτη σχέση Πράξεις Συνόλου Σύμβαση: η προκύπτουσα σχέση έχει τα ίδια ονόματα με την πρώτη σχέση Απαλοιφή διπλότιμων (duplicate elimination)
σ a > b (R) Σχεσιακή Άλγεβρα Α Β 1 2 1 4 2 1 6 5 R Π Α (R) R S Α Β 1 2 1 4 2 1 6 5 σ a > b (R) R Π Α (R) R S R S R - S B C 2 3 2 5 1 4 S
Ανάθεση (Assignment) όνομα στην ενδιάμεση σχέση R Ανάθεση Παράδειγμα ΜΕΓΑΛΗΣ_ΔΙΑΡΚΕΙΑΣ σ διάρκεια > 100 (Ταινία)
R(λίστα με νέα ονόματα) Μετονομασία μετονομασία γνωρισμάτων R(λίστα με νέα ονόματα) Παράδειγμα ΜΕΓΑΛΗΣ_ΔΙΑΡΚΕΙΑΣ (όνομα ταινίας, έτος παραγωγής, διάρκεια, είδος) σ διάρκεια > 100 (Ταινία) όνομα ταινίας έτος παραγωγής διάρκεια είδος Star Wars 1997 124 έγχρωμη Mighty Ducks 1991 104 έγχρωμη
Καρτεσιανό Γινόμενο (cartesian product) (ή χιαστί γινόμενο (cross product) ή χιαστί συζεύξη (cross join)) R(A1, A2, …, An) x S(B1, B2, …, Bm) αποτέλεσμα η σχέση Q: Q(A1, A2, …, An, B1, B2, …, Bm) n + m γνωρίσματα nR * n S πλειάδες τι γίνεται αν κάποια γνωρίσματα έχουν ίδια ονόματα ?
Καρτεσιανό Γινόμενο R x S A R.B S.B C D 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
Παράδειγμα Ταινία Τίτλος Έτος Διάρκεια Είδος Παίζει Όνομα-Ηθοποιού Τίτλος Έτος Ηθοποιός Όνομα Διεύθυνση Έτος-Γέννησης Σύζυγος-Ηθοποιού
Καρτεσιανό Γινόμενο Παράδειγμα Για κάθε ηθοποιό το όνομα τον τίτλο και έτος για όλες τις έγχρωμες ταινίες στις οποίες παίζει π όνομα-ηθοποιού, τίτλος, έτος (σ είδος = “έγχρωμη” AND Παίζει.τίτλος = Ταινία.τίτλος AND Παίζει.έτος = Ταινία.έτος (Παίζει x Ταινία)) ή π όνομα-ηθοποιού, τίτλος, έτος (σ Παίζει.τίτλος = Ταινία.τίτλος AND Παίζει.έτος =Ταινία.έτος(Παίζει x (σ είδος = “έγχρωμη” (Ταινία)))
Καρτεσιανό Γινόμενο Ταινία Παίζει Τίτλος Έτος Διάρκεια Είδος Τίτλος Έτος Διάρκεια Είδος Παραμύθι 1990 90 Έγχρωμη Παραμύθι 1930 120 Ασπρόμαυρη Φυγή 2000 98 Ασπρόμαυρη Άνοιξη 1998 101 Έγχρωμη Ταινία Όνομα-Ηθοποιού Τίτλος Έτος Αλίκη Παππά Παραμύθι 1930 Μαρία Γεωργίου Παραμύθι 1990 Κώστας Χρήστου Φυγή 2000 Μαρία Στεργίου Άνοιξη 1998 Παίζει
Παράδειγμα Παράδειγμα – Υπάλληλος(ΑΦΜ, κωδικός, όνομα, διευθυνση, μισθος) Project (κωδικός_έργου, περιγραφή, τοποθεσία) Συμμετέχει(ΑΦΜ, κωδικός_έργου, ώρες)
Καρτεσιανό Γινόμενο Παράδειγμα Για κάθε υπάλληλο δείξε το όνομα του και την περιγραφή κάθε έργου στο οποίο συμμετέχει. π ονομα, περιγραφη (σκωδικός_έργου = Project.κωδικός_έργου (σ Υπάλληλος.ΑΦΜ = Συμμετέχει.ΑΦΜ (Υπάλληλος x Συμμετέχει) x Project)) Άλλη έκφραση που να περιγράφει το ίδιο ερώτημα? Γιατί?
Θ-Σύζευξη (θ-join) Σύζευξη (Join) συνδυασμός σχετιζόμενων πλειάδων R θ S ( σ θ (R x S) ) Συνθήκη σύζευξης θ Προτάσεις της μορφής =, >, <, , , Ai <τελεστής σύγκρισης> Bj όπου Ai γνώρισμα της R, Bj γνώρισμα της S, και dom(Ai) = dom(Bj) συνδυασμένες με AND
το αποτέλεσμα είναι οι συνδυασμοί πλειάδων που ικανοποιούν τη συνθήκη Σύζευξη το αποτέλεσμα είναι οι συνδυασμοί πλειάδων που ικανοποιούν τη συνθήκη η συνθήκη αποτιμάται για κάθε συνδυασμό αποτέλεσμα σχέση Q με n + m γνωρίσματα πλειάδες με τιμή null σε γνώρισμα συνένωσης δεν εμφανίζονται στο αποτέλεσμα γιατί μια καινούργια πράξη? πιο αποτελεσματικό implementation + σύνηθες
Σύζευξη 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 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 9 10 11 A R.B S.B C D 1 2 2 5 6 3 4 4 7 8
Φυσική Σύζευξη (Natural Join) σύζευξη ισότητας όπου παραλείπουμε το γνώρισμα της δεύτερης σχέσης από το αποτέλεσμα όταν διαφορετικό όνομα - μετονομασία 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 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 Α Β C 1 2 3 6 7 8 9 7 8 B C D 2 3 4 2 3 5 7 8 10
Συναθροιστικές Συναρτήσεις (Aggregate functions) Χρήσιμη η δυνατότητα της συνάθροισης: συνδυασμός των γραμμών μιας σχέσης για τον υπολογισμό μιας συναθροιστικής τιμής (π.χ. min, max, sum, count, avg) Παραδείγματα: πόσοι ηθοποιοί παίζουν σε μια ταινία, ποιος ηθοποιός πήρε το μεγαλύτερο μισθό, κ.λ.π. Παραδείγματα: πόσοι δουλεύουν σε κάποιο έργο, ποιός έχει το μεγαλύτερο μισθό, κ.λ.π. Η βάση για ερωτήματα στήριξης αποφάσεων (decision support)
Συναθροιστικές Συναρτήσεις συναρτήσεις που παίρνουν ως παράμετρο μια συλλογή (όχι σύνολο) από τιμές συνήθεις συναρτήσεις: SUM, AVERAGE, MAX, MIN, COUNT αποτέλεσμα μια σχέση (πίνακας) και όχι μια τιμή π<λίστα συναρτήσεων> (<όνομα σχέσης>) ζεύγη <συνάρτηση γνώρισμα> - π.χ. max(μισθός)
Συναθροιστικές Συναρτήσεις Παράδειγμα: μέση διάρκεια ταινιών AVERAGE_διάρκεια 91 π AVERAGE(διάρκεια)(Ταινία) Παράδειγμα: παλιότερη και πιο πρόσφατη έγχρωμη ταινία π ΜΙΝ (έτος), ΜΑΧ (έτος) ( σ είδος = έγχρωμη (Ταινία)) ΜΙΝ_έτος MAX_έτος 1945 1999
Συναθροιστικές Συναρτήσεις Παρατήρηση: σύμβαση για το όνομα των γνωρισμάτων του αποτελέσματος (δηλ, concatenation του ονόματος της συνάρτησης με το όνομα του γνωρίσματος)- δυνατή και η μετονομασία
Συναθροιστικές Συναρτήσεις Ομαδοποίηση (Grouping) <γνωρίσματα ομαδοποίησης> F <λίστα συναρτήσεων> (<όνομα σχέσης>) Παράδειγμα: πόσοι ηθοποιοί ανά ταινία πόσα έργα ανά υπάλληλο
Συναθροιστικές Συναρτήσεις Παράδειγμα: αριθμός ηθοποιών ανά ταινία Τίτλος, έτος F COUNT Όνομα-Ηθοποιού (Παίζει) Τίτλος Έτος COUNT_Όνομα Ηθοποιού Sixth Sense 1999 20 Run Lola Run 1998 10 Eyes Wide Shut 1999 14 Ποιο θα ήταν το αποτέλεσμα αν δεν υπήρχαν τα γνωρίσματα ομαδοποίησης;
Εξωτερική Σύζευξη (Outer Join) Όταν θέλουμε να κρατήσουμε στο αποτέλεσμα όλες τις πλειάδες - και αυτές που δεν ταιριάζουν) είτε της σχέσης στα αριστερά (αριστερή – left - εξωτερική συνένωση) είτε της σχέσης στα δεξιά (δεξιά – right - εξωτερική συνένωση) 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
Υπάλληλος <- Υπάλληλος – σμισθός > 2500 (Υπάλληλος) Αλλαγές στη Β.Δ. Διαγραφή (Deletion) Διαγραφή ολόκληρων γραμμών Επιτυγχάνεται μέσω της πράξης της ανάθεσης και διαφοράς: R <- R - E R το όνομα μίας σχέσης, Ε μια έκφραση σε σχεσιακή άλγεβρα Παράδειγμα: Υπάλληλος <- Υπάλληλος – σμισθός > 2500 (Υπάλληλος)
R <- R U {“219099999”, “Damianos”, …} Αλλαγές στη Β.Δ. Εισαγωγή (Insertion) Επιτυγχάνεται μέσω της πράξης της ανάθεσης και ένωσης: R <- R U E ή R <- R U {“219099999”, “Damianos”, …} R το όνομα μίας σχέσης, Ε μια έκφραση σε σχεσιακή άλγεβρα
δμισθός <- μισθός*1.05 (Υπάλληλος) Αλλαγές στη Β.Δ. Ενημέρωση (Updating) Επιτυγχάνεται μέσω μίας νέας πράξης, που συμβολίζεται με δ. δ<γνώρισμα> <- Ε (<όνομα σχέσης>), όπου Ε μία έκφραση στο πεδίο τιμών του γνωρίσματος. Παράδειγμα: δμισθός <- μισθός*1.05 (Υπάλληλος)
Όψεις Β.Δ. (Views) Views Δεν είναι απαραίτητο κάθε χρήστης να έχει την ίδια εικόνα της Β.Δ. (λόγοι ασφάλειας, πολυπλοκότητας, personalization) Κάθε σχέση που δεν είναι μέρος του λογικού μοντέλου αλλά είναι ορατή στο χρήστη σαν «εικονική», λέγεται όψη (view). Μία όψη δεν είναι απαραίτητa υλοποιημένη (materialized), συνήθως επανα-υπολογίζεται. Συνήθως μεγάλος αριθμός όψεων επί ενός σχήματος. Οι ενημερώσεις των όψεων δημιουργουν προβλήματα. Γιατί? Οι αποθήκες δεδομένων στηρίζονται στην έννοια των όψεων.
Σχεσιακός Λογισμός (Relational Calculus)
Σχεσιακός Λογισμός Στη σχεσιακή άλγεβρα έχουμε μια ακολουθία πράξεων ενώ στον σχεσιακό λογισμό έχουμε δηλωτικές εκφράσεις (μη διαδικαστικός τρόπος) – βασισμένο στη μαθηματική λογική (First Order Predicate Calculus)
Σχεσιακή άλγεβρα = Σχεσιακό λογισμό Σχεσιακός Λογισμός Expressivity: Το σύνολο των ερωτημάτων που μπορεί να εκφράσει μια γλώσσα. Σχεσιακή άλγεβρα = Σχεσιακό λογισμό όποιo ερώτημα μπορεί να προσδιοριστεί σε σχεσιακή άλγεβρα μπορεί και σε σχεσιακό λογισμό και αντιστρόφως σχεσιακά πλήρης γλώσσα
Δυο προσαρμογές (από παίρνουν τιμές οι μεταβλητές): Σχεσιακός Λογισμός Ορισμός ενός συνόλου από τιμές μέσω μιας λογικής συνθήκης. Π.χ. μαθηματικά: {x : x (0,1) και x < ½} Δυο προσαρμογές (από παίρνουν τιμές οι μεταβλητές): -- σχεσιακός λογισμός πλειάδων (tuple relational cal.) -- σχεσιακός λογισμός πεδίου (domain relational cal.)
Σχεσιακός Λογισμός Πλειάδων (Tuple relational calculus) Ο σχεσιακός λογισμός πλειάδων βασίζεται στον ορισμό ενός συνόλου πλειάδων μέσω μίας λογικής έκφρασης Κάθε μεταβλητή παίρνει τιμές από μια σχέση μιας Β.Δ.
Παραδείγματα Παράδειγμα – Υπάλληλος(ΑΦΜ, κωδικός, όνομα, διευθυνση, μισθος) Project (κωδικός_έργου, περιγραφή, τοποθεσία) Συμμετέχει(ΑΦΜ, κωδικός_έργου, ώρες)
Βρες τους υπαλλήλους με μισθό πάνω από 1200 ευρώ: Παραδείγματα Βρες τους υπαλλήλους με μισθό πάνω από 1200 ευρώ: {t : t Υπάλληλος και t.μισθός > 1200} ή {t : Υπάλληλος(t) και t.μισθός > 1200 } κατηγορηματικός λογισμός (αποτίμηση σε T/F) Βρες το όνομα των υπαλλήλων με μισθό πάνω από 1200 ευρώ: {t.όνομα : Υπάλληλος(t) και t.μισθός > 1200 }
Σχεσιακός Λογισμός Πλειάδων {t | COND(t)} (όπου t μεταβλητή πλειάδων) t είναι μια μεταβλητή πλειάδων (επί μίας σχέσης) και η συνθήκη COND(t) είναι ένας τύπος (formula) που για κάθε t αποτιμάται σε true / false. Αποτέλεσμα είναι το σύνολο όλων των πλειάδων t για τις οποίες η συνθήκη COND(t) είναι TRUE
Παράδειγμα Ταινία Τίτλος Έτος Διάρκεια Είδος Παίζει Όνομα-Ηθοποιού Τίτλος Έτος Ηθοποιός Όνομα Διεύθυνση Έτος-Γέννησης Σύζυγος-Ηθοποιού
Σχεσιακός Λογισμός Πλειάδων πχ. οι έγχρωμες ταινίες {t | Ταινία(t) and t.Είδος = «Έγχρωμη»} μόνο ο τίτλος και το έτος {t.Τίτλος, t.Έτος | Ταινία(t) and t.Είδος = «Έγχρωμη»}
Σχεσιακός Λογισμός Πλειάδων {t | COND(t)} (όπου t μεταβλητή πλειάδων) πχ. οι ταινίες με διάρκεια πάνω από 100 λεπτά {t | Ταινία(t) and t.Διάρκεια > 100} μόνο ο τίτλος και το έτος {t.Τίτλος, t.Έτος | Ταινία(t) and t.Διάρκεια > 100}
Σχεσιακός Λογισμός Πλειάδων Ποια σχέση {t.Τίτλος, t.Έτος | Ταινία(t) and t.Διάρκεια > 100} Ποια συνθήκη ποια γνωρίσματα (project)
Σχεσιακός Λογισμός Πλειάδων Τυπικός Ορισμός {t1.A1, t2.A2, …, tn.An | COND(t1, t2, …, tn, tn+1, tn+2, … tn+m)} t1, t2, …, tn+m : μεταβλητές πλειάδων Α1, Α2, …, Αn : γνωρίσματα COND ένας τύπος (formula) του σχεσιακού λογισμού πλειάδων
Σχεσιακός Λογισμός Πλειάδων Ένας τύπος του σχεσιακού λογισμού πλειάδων αποτελείται από ατομικούς τύπους Ατομικοί τύποι του σχεσιακού λογισμού πλειάδων: R(ti): R όνομα σχέσης, ti μεταβλητή πλειάδων, προσδιορίζει ότι το πεδίο τιμών της πλειάδας είναι η σχέση R ti.A opt tj.B ti.A opt c ή c opt ti.A , c σταθερά
Σχεσιακός Λογισμός Πλειάδων Κάθε ατομικός τύπος αποτιμάται σε true ή false (τιμή αληθείας) Κάθε τύπος κατασκευάζεται από ένα ή περισσότερους άτομικούς τύπους Κάθε ατομικός τύπος ένας τύπος (F1 and F2) (F1 or F2) not(F1)
Σχεσιακός Λογισμός Πλειάδων Επίσης: ( τ) (Φ) ( τ) (Φ) Ελεύθερη και δεσμευμένη μεταβλητή Απλά, δεσμευμένη αν ποσοδεικτείται
Παράδειγμα Ταινία Τίτλος Έτος Διάρκεια Είδος Παίζει Όνομα-Ηθοποιού Τίτλος Έτος Ηθοποιός Όνομα Διεύθυνση Έτος-Γέννησης Σύζυγος-Ηθοποιού
Σχεσιακός Λογισμός Πλειάδων Παράδειγμα: Το όνομα και η διεύθυνση όλων των ηθοποιών που έπαιξαν στη ταινία «ΑΙ» του 2001 {t.Όνομα, t.διεύθυνση | Ηθοποιός(t) and (( d) ( Παίζει(d) and d.Τίτλος = ‘ΑΙ’ and d.Έτος = 2001 and d. Όνομα-Ηθοποιού = t. Όνομα))}
Βρες το ΑΦΜ των υπαλλήλων που δουλεύουν σε κάποιο έργο στο «Μαρούσι»: Παραδείγματα Βρες το ΑΦΜ των υπαλλήλων που δουλεύουν σε κάποιο έργο στο «Μαρούσι»: {t.ΑΦΜ : Συμμετέχει(t) και Project (r) και t.ΑΦΜ = r.ΑΦΜ και r.τοποθεσία = «Μάρούσι»} ή {t.ΑΦΜ : Συμμετέχει(t) και ( r) (Project (r) και t.ΑΦΜ = r.ΑΦΜ και r.τοποθεσία = «Μάρούσι»}
Βρες το όνομα των υπαλλήλων που δουλεύουν σε όλα τα έργα: Παραδείγματα Βρες το όνομα των υπαλλήλων που δουλεύουν σε όλα τα έργα: {t.όνομα : Υπάλληλος(t) και ( r) (Project (r) => (s) (Συμμετέχει(s) και s.ΑΦΜ = r.ΑΦΜ και s.ΑΦΜ=t.ΑΦΜ)) }