7 Σχεσιακή Άλγεβρα και Σχεσιακός Λογισμός Σχεσιακή Άλγεβρα Σχεσιακός Λογισμός
Σχεσιακή Άλγεβρα H Σχεσιακή Άλγεβρα (relational algebra) ορίζει ένα σύνολο πράξεων που εφαρμόζονται σε μία ή περισσότερες σχέσεις (πίνακες). Μία πράξη λέγεται: μοναδιαία (unary) αν εφαρμόζεται σε μία σχέση, ή δυαδική (binary) αν εφαρμόζεται σε δύο σχέσεις. Κάθε πράξη επιστρέφει ως αποτέλεσμα μία σχέση. Η Σχεσιακή Άλγεβρα και ο Σχεσιακός Λογισμός Πλειάδων αποτελούν τη θεωρητική βάση της γλώσσας SQL 2
Σχεσιακή Άλγεβρα Η Σχεσιακή Άλγεβρα και ο Σχεσιακός Λογισμός Πλειάδων αποτελούν τη θεωρητική βάση της γλώσσας SQL Η Σχεσιακή Άλγεβρα και ο Σχεσιακός Λογισμός αποτελούν δύο διαφορετικές προσεγγίσεις (μαθηματικά εργαλεία) με τις οποίες μπορούμε να εκτελούμε πράξεις σε ένα σύνολο σχέσεων μιας Βάσης Δεδομένων. 3
Παράδειγμα 4
Πράξεις της σχεσιακής άλγεβρας 5
Για την διατύπωση των πράξεων της Σχεσιακής Άλγεβρας και του Σχεσιακού Λογισμού χρησιμοποιούνται λογικές παραστάσεις (ή λογικές συνθήκες). Για την δημιουργία λογικών παραστάσεων χρησιμοποιούνται Μεταβλητές, Τελεστές Σύγκρισης και Λογικοί Τελεστές.
Τελεστές Σύγκρισης Τελεστής Σύγκρισης Περιγραφή = ίσο με < μικρότερο από > μεγαλύτερο από μικρότερο ή ίσο από μεγαλύτερο ή ίσο από διάφορο του 7
Λογικοί Τελεστές Λογικός Τελεστής (Γλώσσες Προγραμματισμού) AND OR NOT Σχεσιακή Άλγεβρα Σχεσιακός Λογισμός 8
Πίνακες Αλήθειας Λογικών Πράξεων Πίνακας Αλήθειας Πράξης AND X Y X AND Y 0 0 0 0 1 0 1 0 0 1 1 1 Πίνακας Αλήθειας Πράξης OR X Y X OR Y 0 0 0 0 1 1 1 0 1 1 1 1 Πίνακας Αλήθειας Πράξης NOT X NOT X 0 1 1 0 9
Επιλογή (Select) Χρησιμοποιείται για την επιλογή πλειάδων (εγγραφών πίνακα) που ικανοποιούν μια λογική συνθήκη (η οποία δημιουργείται με μεταβλητές, τελεστές σύγκρισης και λογικούς τελεστές AND, OR κλπ). 10
Επιλογή (Select) - παραδείγματα «Βρες τα στοιχεία του συνδρομητή με κωδικός = 12». «Ποιές γνωστικές περιοχές έχουν λιγότερους από 5 ή περισσότερους από 50 συνδρομητές?». 11
Επιλογή (Select) - παραδείγματα «Βρες τις γραμμές του πίνακα Πρακτικά Συνεδρίου οι οποίες ικανοποιούν τη συνθήκη: χώρα = Ελλάδα και ημερομηνία > 1/1/2000» Λύση-1 Λύση-2 Χρησιμοποιούνται δύο διαδοχικές πράξεις επιλογής 12
Προβολή (Project) Χρησιμοποιείται για να απομονώσουμε συγκεκριμένες στήλες ενός πίνακα. «Βρες τα χαρακτηριστικά όνομα και τηλέφωνο για όλες τις γραμμές του πίνακα Συνδρομητής». Επιστρέφει τα χαρακτηριστικά όνομα και τηλέφωνο για όλες τις γραμμές του πίνακα Συνδρομητής 13
Προβολή (Project) - παραδείγματα «Βρες το όνομα και το τηλέφωνο των Συνδρομητών με κωδικό μεγαλύτερο του 20». Αν προκύψουν ίδιες γραμμές (Συμβαίνει αν στη λίστα των επιλεγόμενων χαρακτηριστικών δεν συμπεριλαμβάνεται κάποιο κλειδί), τότε πρέπει να γίνει απαλοιφή διπλοτύπων (duplicate elimination). 14
Καρτεσιανό Γινόμενο (Cartesian Product) Είναι δυαδική πράξη και δίνει ως αποτέλεσμα όλους τους δυνατούς συνδυασμούς γραμμών των δύο πινάκων. Η σχέση Q έχει: n + m χαρακτηριστικά n R x n S πλειάδες n R Το πλήθος των πλειάδων του πίνακα R n S Το πλήθος των πλειάδων του πίνακα S 15
Καρτεσιανό Γινόμενο - παράδειγμα Εάν το όνομα ενός χαρακτηριστικού εμφανίζεται σε δύο διαφορετικούς πίνακες τότε προτάσσεται το όνομα του πίνακα. 16
Καρτεσιανό Γινόμενο - παράδειγμα «Βρες όλους τους δυνατούς συνδυασμούς μεταξύ συνδρομητών και γνωστικών περιοχών». Ο τελικός πίνακας να έχει ως χαρακτηριστικά τα κλειδιά των πινάκων, όνομα του συνδρομητή και τον τίτλο της γνωστικής περιοχής. 17
Μετονομασία (Rename) Δηλώνεται με το σύμβολο «ρ» και παίρνει ως όρισμα μία έκφραση σχεσιακής άλγεβρας. Η πράξη συναντάται σε δύο μορφές: ρ χ (E), όπου η έκφραση E επιστρέφεται με όνομα χ, ρ χ(α,β,γ) (E), όπου η έκφραση E επιστρέφεται με όνομα χ και τα χαρακτηριστικά ονοματίζονται α, β και γ αντιστοίχως. Τα αποτελέσματα των πράξεων της Σχεσιακής Άλγεβρας δεν έχουν όνομα σε αντίθεση με τους πίνακες της ΒΔ. Η ονομασία των αποτελεσμάτων θεωρείται χρήσιμη επειδή δίνει τη δυνατότητα να χρησιμοποιήσουμε ένα αποτέλεσμα σε κάποια επόμενη πράξη. 18
Ένωση (Union) Η ένωση δύο πινάκων συμβολίζεται με U. Ο πίνακας αποτέλεσμα περιέχει τις γραμμές και των δύο πινάκων. Για να λειτουργήσει η πράξη της ένωσης πρέπει οπωσδήποτε να ισχύουν οι εξής προϋποθέσεις συμβατότητας: ο αριθμός των χαρακτηριστικών των δύο πινάκων πρέπει να είναι ίδιος, και τα πεδία ορισμού των αντίστοιχων χαρακτηριστικών των δύο πινάκων πρέπει να είναι ίδια. 19
Ένωση (Union) - παραδείγματα «Βρες τις γνωστικές περιοχές με αριθμό συνδρομητών μικρότερο από 5 ή μεγαλύτερο από 50». «Βρες τα ονόματα των συνεδρίων και των περιοδικών που υπάρχουν καταχωρισμένα στη ΒΔ». 20
Διαφορά Συνόλων (R1 R2) - (Set difference) Χρησιμοποιείται για να απομονώσει τις γραμμές ενός πίνακα, οι οποίες δεν ανήκουν σε κάποιον άλλο πίνακα. Η πράξη βασίζεται στην πράξη της διαφοράς συνόλων και συμβολίζεται με το πρόσημο της αφαίρεσης. Παράγει έναν πίνακα που περιέχει τις εγγραφές που ανήκουν στον πίνακα R1 αλλά όχι στον πίνακα R2. ο αριθμός των χαρακτηριστικών των δύο πινάκων πρέπει να είναι ίδιος, και τα πεδία ορισμού των αντίστοιχων χαρακτηριστικών των δύο πινάκων πρέπει να είναι ίδια. 21
Διαφορά Συνόλων - Παράδειγμα «Βρες όλες τις γνωστικές περιοχές εκτός εκείνων που έχουν αριθμό συνδρομητών μεγαλύτερο από 30» Γνωστικη_Περιοχη - Γνωστικη_Περιοχη αριθμος_συνδρομητων αριθμος_συνδρομητων > 30 22
Τομή Πινάκων (Intersection) Συμβολίζεται με και επιστρέφει τις κοινές πλειάδες των δύο πινάκων. Πρέπει να ισχύουν οι προϋποθέσεις συμβατότητας, όπως στην πράξη της ένωσης και της διαφοράς. «Βρες τα κοινά ονόματα συγγραφέων και συνδρομητών, χωρίς κατ ανάγκη να είναι και το ίδιο πρόσωπο». Χρησιμοποιώντας προβολή και τομή πινάκων έχουμε: Ισχύει γενικώς: 23
Φυσική ή Εσωτερική Σύνδεση (Natural Join) a b c 1 10 100 2 20 200 3 30 300 4 40 400 a d 1 123 2 321 3 111 5 222 a b c d 1 10 100 123 2 20 200 321 3 30 300 111 R 1 R 2 1 2 Η πράξη της φυσικής σύνδεσης επιστρέφει τις γραμμές των R 1 και R 2, οι οποίες έχουν την ίδια τιμή στα κοινά χαρακτηριστικά των πινάκων. Εδώ το κοινό χαρακτηριστικό είναι το a. Επιστρέφονται οι γραμμές, για τις οποίες η τιμή του a στον R 1 ισούται με την τιμή του a στον R 2. R R 24
Φυσική ή Εσωτερική Σύνδεση (Natural Join) Το καρτεσιανό γινόμενο δύο πινάκων R1 και R 2 επιστρέφει όλους τους δυνατούς συνδυασμούς των πλειάδων των πινάκων. Σε πολλές περιπτώσεις ενδιαφερόμαστε μόνο για ένα υποσύνολο του καρτεσιανού γινομένου, αναλόγως με την τιμή που έχουν κάποια χαρακτηριστικά των πινάκων. Για το σκοπό αυτό χρησιμοποιούμε την πράξη της φυσικής σύνδεσης. Αν οι R 1 και R 2 δεν έχουν κοινά χαρακτηριστικά τότε έχουμε ταύτιση καρτεσιανού γινομένου και φυσικής σύνδεσης. 25
Φυσική Σύνδεση Η έκφραση: είναι ισοδύναμη με:: a b c 1 10 100 2 20 200 3 30 300 4 40 400 R 1 2 a d 1 123 2 321 3 111 5 222 a b d 1 10 123 2 20 321 3 30 111 R a, b, d R1 R2 26
Σύνδεση-θ (θ-join) Ορίζουμε τη συνθήκη θ, ανάλογα με τις πλειάδες που θέλουμε να συμπεριληφθούν στο αποτέλεσμα. Στο παράδειγμα, το χαρακτηριστικό α του R 1 θα είναι μικρότερο από το χαρακτηριστικό x του R 2. Επίσης, οι R 1 και R 2 δεν έχουν κοινά χαρακτηριστικά οπότε έχουμε ταύτιση καρτεσιανού γινομένου και φυσικής σύνδεσης. 27
Σύνδεση-θ (θ-join) a b c x y 1 10 100 1 123 1 10 100 2 321 1 10 100 3 111 1 10 100 5 222 2 20 200 1 123 2 20 200 2 321 2 20 200 3 111 2 20 200 5 222 3 30 300 1 123 3 30 300 2 321 3 30 300 3 111 3 30 300 5 222 4 40 400 1 123 4 40 400 2 321 4 40 400 3 111 4 40 400 5 222 28
Εξωτερική Σύνδεση (Outer Join) Η εξωτερική σύνδεση δίνει όλες τις γραμμές του αριστερού ή/και του δεξιού πίνακα, χωρίς να υπάρχει ταύτιση των τιμών των κοινών χαρακτηριστικών κατ ανάγκη. Η εξωτερική σύνδεση μπορεί να είναι αριστερή (left), δεξιά (right) ή πλήρης (full) εξωτερική σύνδεση. 29
Εξωτερική Σύνδεση (Outer Join) Διατηρούμε το σχήμα της αριστερής ή δεξιάς σχέσης και προσθέτουμε το υπόλοιπο της άλλης. Υπάρχουν γραμμές του ενός πίνακα, οι οποίες δεν αντιστοιχούν σε γραμμές του άλλου πίνακα. Όλες οι γραμμές του ενός εκ των δύο πινάκων πρέπει να εμφανιστούν στο αποτέλεσμα. Οι τιμές που λείπουν συμπληρώνονται με NULL. Στην πλήρη εξωτερική σύνδεση συμμετέχουν οι γραμμές και των δύο πινάκων. Αν δεν υπάρχει αντιστοιχία μεταξύ των γραμμών οι τιμές συμπληρώνονται με NULL. 30
Εκχώρηση (Assignment) Επιτρέπει τη χρήση μεταβλητών για την αποθήκευση των ενδιάμεσων αποτελεσμάτων των πράξεων. Οι μεταβλητές μπορούν να χρησιμοποιηθούν ως ορίσματα σε επόμενες πράξεις. «Βρες τις γραμμές του πίνακα Πρακτικά Συνεδρίου, οι οποίες ικανοποιούν τη συνθήκη χώρα= Ελλάδα και ημερομηνία> 1/1/2000». 31
Σχεσιακός λογισμός (relational calculus) Ο σχεσιακός λογισμός είναι μία γλώσσα που μπορεί να χρησιμοποιηθεί αντί της σχεσιακής άλγεβρας. Έχει αποδειχθεί ότι οι δύο γλώσσες είναι ισοδύναμες. Δύο εναλλακτικές μορφές: Σχεσιακός λογισμός πλειάδων (tuple relational calculus), Σχεσιακός λογισμός πεδίου (domain relational calculus). 32
Σχεσιακός λογισμός πλειάδων Ένα ερώτημα στο σχεσιακό λογισμό πλειάδων εκφράζεται ως εξής: Η κάθε μεταβλητή στη λογική έκφραση Ε(t) αναφέρεται σε πλειάδες πινάκων. Η μεταβλητή είναι ελεύθερη ή δεσμευμένη (δηλαδή ποσοτικοποιείται με ποσοδείκτες). 33
Σχεσιακός λογισμός πλειάδων Μια έκφραση (formula) σχεσιακού λογισμού απαρτίζεται από ατομικές μονάδες (atoms) που μπορεί να είναι: 34
Σχεσιακός λογισμός πλειάδων 35
Σχεσιακός λογισμός πλειάδων Για τις εκφράσεις σχεσιακού λογισμού πλειάδων ισχύουν οι εξής ταυτότητες: 36
Σχεσιακός λογισμός πλειάδων - παραδείγματα «Βρες τις γνωστικές περιοχές που έχουν τουλάχιστον ένα συνδρομητή». Αν θέλουμε μόνο τον κωδικό της Γνωστικής_Περιοχής τότε: «Το σύνολο των πλειάδων t έτσι ώστε να υπάρχει στη σχέση Γνωστική_Περιοχή μια πλειάδα s για την οποία οι κωδικοί των t και s να είναι ίσοι και η τιμή του χαρακτηριστικού αριθμός_συνδρομητών της s να είναι τουλάχιστον 1» 37
Σχεσιακός λογισμός πλειάδων παραδείγματα «Βρες τα άρθρα που έχουν δημοσιευθεί στο συνέδριο με κωδικό 1 ή στο συνέδριο με κωδικό 2». «Βρες τα άρθρα που έχουν δημοσιευθεί και σε περιοδικό και σε πρακτικά συνεδρίου». 38
Σχεσιακός λογισμός πλειάδων παραδείγματα «Βρες τους συνδρομητές που έχουν συνδρομή στη γνωστική περιοχή Βάσεις Δεδομένων ή στην περιοχή Κβαντική Φυσική». όπου t, s, u: μεταβλητές πλειάδας αντιστοίχως για τους πίνακες Συνδρομητής, Γνωστική_Περιοχή, Συνδρομή. 39
Σχεσιακός λογισμός πεδίου Σε αντίθεση με το σχεσιακό λογισμό πλειάδων ο σχεσιακός λογισμός πεδίου χρησιμοποιεί μεταβλητές πεδίου, οι οποίες παίρνουν τιμές από ένα συγκεκριμένο πεδίο ορισμού. Ένα ερώτημα εκφράζεται ως εξής: 40
Σχεσιακός λογισμός πεδίου 41
Σχεσιακός λογισμός πεδίου 42
Σχεσιακός λογισμός πεδίου - παραδείγματα «Βρες τις γνωστικές περιοχές που έχουν τουλάχιστον ένα συνδρομητή». όπου a, b, c μεταβλητές πεδίου, οι οποίες λαμβάνουν τιμές από τα πεδία ορισμού των χαρακτηριστικών κωδικός, τίτλος και αριθμός_συνδρομητών, αντιστοίχως. 43
Σχεσιακός λογισμός πεδίου - παραδείγματα (2) «Βρες τα άρθρα που έχουν δημοσιευθεί στο συνέδριο με κωδικό 1 ή στο συνέδριο με κωδικό 2». Έστω χ 1,..., χ 12 μεταβλητές πεδίου, οι οποίες λαμβάνουν τιμές από τα πεδία ορισμού των χαρακτηριστικών της σχέσης Άρθρο με τη σειρά που αναγράφονται στο σχήμα της σχέσης (χ 1 =κωδικός, χ 2 =τίτλος κλπ). 44
Σχεσιακός λογισμός πεδίου - παραδείγματα «Βρες τα άρθρα που έχουν δημοσιευθεί και σε περιοδικό και σε πρακτικά συνεδρίου». Έστω χ 1,..., χ 12 μεταβλητές πεδίου, οι οποίες λαμβάνουν τιμές από τα πεδία ορισμού των χαρακτηριστικών της σχέσης Άρθρο με τη σειρά που αναγράφονται στο σχήμα της σχέσης (χ 1 =κωδικός, χ 2 =τίτλος κλπ). 45
Σχεσιακός λογισμός πεδίου - παραδείγματα «Βρες τους συνδρομητές που έχουν συνδρομή στη γνωστική περιοχή Βάσεις Δεδομένων ή στη γνωστική Περιοχή Κβαντική Φυσική». 46
Σύνοψη Η σχεσιακή άλγεβρα και ο σχεσιακός λογισμός ορίζουν ένα σύνολο πράξεων που εφαρμόζονται σε μία ή περισσότερες σχέσεις. Οι θεμελιώδεις πράξεις της σχεσιακής άλγεβρας είναι οι: επιλογή, προβολή, καρτεσιανό γινόμενο, μετονομασία, ένωση και διαφορά. Ορίζονται και οι εξής επιπλέον πράξεις: τομή, φυσική σύνδεση, σύνδεση-θ, αριστερή/δεξιά εξωτερική σύνδεση, αριστερή/δεξιά ημισύνδεση και εκχώρηση. Ο σχεσιακός λογισμός μπορεί να χρησιμοποιηθεί αντί της σχεσιακής άλγεβρας (οι δύο γλώσσες είναι ισοδύναμες). Ο σχεσιακός λογισμός έχει δύο μορφές: α) σχεσιακός λογισμός πλειάδων και β) σχεσιακός λογισμός πεδίου. 47