Σχεσιακή Άλγεβρα Παύλος Εφραιμίδης Βάσεις Δεδομένων Σχεσιακή Άλγεβρα 1
Θεμελίωση της Σχεσιακού Μοντέλου Δεδομένων Σχεσιακή Άλγεβρα Σχεσιακός Λογισμός Στο μάθημα θα πούμε για Σχεσιακή Άλγεβρα Βάσεις Δεδομένων Σχεσιακή Άλγεβρα 2
Σχεσιακή Άλγεβρα Το σύνολο των πράξεων που υποστηρίζει το σχεσιακό μοντέλο δεδομένων Διακρίνουμε δύο κατηγορίες πράξεων: Συνολοθεωρητικές: Βασίζονται στο γεγονός ότι οι σχέσεις είναι σύνολα πλειάδων Παράδειγμα: Ένωση, Διαφορά, Τομή Πράξεις ειδικές για σχεσιακές βάσεις δεδομένων: Επιλογή, Προβολή και πιο πολύπλοκες πράξεις όπως η Συνένωση Βάσεις Δεδομένων Σχεσιακή Άλγεβρα 3
Συνολοθεωρητικές Πράξεις Πράξεις από τη μαθηματική θεωρία συνόλων, που μπορούν να εφαρμοστούν επειδή κάθε σχέση είναι ουσιαστικά ένα σύνολο πλειάδων Ένωση Τομή Διαφορά Καρτεσιανό Γινόμενο Βάσεις Δεδομένων Σχεσιακή Άλγεβρα 4
Ειδικές Πράξεις Πράξεις που αναπτύχθηκαν ειδικά για Σχεσιακές Βάσεις Δεδομένων και περιλαμβάνουν μεταξύ άλλων Επιλογή (Select) Προβολή (Project) Συνένωση (Join) Βάσεις Δεδομένων Σχεσιακή Άλγεβρα 5
Εκφράσεις ΕΚΦΡΑΣΗ της Σχεσιακής Άλγεβρας: Μια ακολουθία πράξεων της Σχεσιακής Άλγεβρας Αποτέλεσμα: Οι πράξεις εφαρμόζονται σε σχέσεις και το το αποτέλεσμα τους είναι επίσης μια σχέση Επιπλέον Πράξεις: Μερικές συνήθεις απαιτήσεις από τις Σχεσιακές ΒΔ δεν μπορούν να ικανοποιηθούν από τις βασικές πράξεις Σχεσιακής Άλγεβρας και για αυτό ορίζονται επιπλέον πράξεις όπως είναι Μέσος Όρος Μέγιστο... Βάσεις Δεδομένων Σχεσιακή Άλγεβρα 6
Πράξη Επιλογής (SELECT) Επιλογή: Επιλέγει ένα υποσύνολο των πλειάδων μιας σχέσης Κριτήριο επιλογής: Η επιλογή των πλειάδων γίνεται με βάση μια ΣΥΝΘΗΚΗ ΕΠΙΛΟΓΗΣ Η επιλογή είναι ένα είδους ΦΙΛΤΡΟ που κρατά μόνο τις επιθυμητές πλειάδες Βάσεις Δεδομένων Σχεσιακή Άλγεβρα 7
Συνθήκη Επιλογής Συνθήκη επιλογής: μια λογική παράσταση (έκφραση Boole) που προσδιορίζεται πάνω στα γνωρίσματα της σχέσης Παραδείγματα: 1. Φοιτητές που ανήκουν στο Τμήμα 1 2. Φοιτητές που από το 3 Εξάμηνο και πάνω ή 3. Ταυτόχρονα και τα δύο Βάσεις Δεδομένων Σχεσιακή Άλγεβρα 8
Τελεστής Select ΟτελεστήςSELECT είναι μοναδιαίος: Εφαρμόζεται σε μια σχέση Για κάθε πλειάδα υπολογίζεται η συνθήκη και επιλέγονται όλες οι πλειάδες για τις οποίες ισχύει ησυνθήκη Ο βαθμός της σχέσης που προκύπτει είναι ίσος με τον βαθμό της αρχικής σχέσης. Οπληθάρισμοςτηςσχέσηςείναι<= από την αρχική. Επιλεκτικότητα Συνθήκης (Selectivity) Το ποσοστό των πλειάδων που επιλέγονται. Βάσεις Δεδομένων Σχεσιακή Άλγεβρα 9
Αντιμεταθετική Πράξη Επιλογής: Είναι ΑΝΤΙΜΕΤΑΘΕΤΙΚΗ! Πχ ΦΟΙΤΗΤΕΣ του τμήματος 4 και ΦΟΙΤΗΤΕΣ που μένουν στην Ξάνθη Από μια σχέση - ΠΙΝΑΚΑ η πράξη ΕΠΙΛΟΓΗ επιλέγει γραμμές, αντίθετα η πράξη ΠΡΟΒΟΛΗ, επιλέγει στήλες Βάσεις Δεδομένων Σχεσιακή Άλγεβρα 10
Παρατήρηση Δεν πρέπει να συγχέουμε τον τελεστή Select της σχεσιακής άλγεβρας με την εντολή SELECT της γλώσσας SQL Βάσεις Δεδομένων Σχεσιακή Άλγεβρα 11
Προβολή (Project) Προβολή: Αν μας ενδιαφέρουν ορισμένα μόνο γνωρίσματα μιας σχέσης, τότε χρησιμοποιούμε την ΠΡΟΒΟΛΗ για να "προβάλουμε" τη σχέση στα γνωρίσματα αυτά Παραδείγματα: Μια κατάσταση από τη Γραμματεία για το βαθμολόγιο του μαθήματος: ΠΡΟΒΟΛΗ με γνωρίσματα ΑΜ, Όνομα, Επίθετο, Εξάμηνο Μια κατάσταση Επίθετο, Εξάμηνο ΠΡΟΒΟΛΗ με τα γνωρίσματα Επίθετο Εξάμηνο ΠΡΟΣΟΧΗ μπορεί να υπάρχουν ΔΙΠΛΑ! τα οποία κόβονται εξορισμού. Στην πράξη (SQL) είναι στην ευχέρεια του προγραμματιστή να επιλέξει να επιτρέπει διπλά ή όχι στο αποτέλεσμα της πράξης (λέξη κλειδί DISTINCT της SQL) Βάσεις Δεδομένων Σχεσιακή Άλγεβρα 12
Τελεστής Προβολής ΣΥΜΒΟΛΙΣΜΟΣ π_(επιθετο, ΕΞΑΜΗΝΟ) (ΦΟΙΤΗΤΗΣ) π_<λίστα γνωρισμάτων> (R) Το R είναι μια σχέση ή οποιαδήποτε έκφραση σχεσιακής άλγεβρας Η ΠΡΟΒΟΛΗ δημιουργεί μια νέα σχέση που έχει μόνο τα γνωρίσματα που προσδιορίζονται στο <λίστα γνωρισμάτων> και με την ίδια διάταξη που αυτά εμφανίζονται στη λίστα Βάσεις Δεδομένων Σχεσιακή Άλγεβρα 13
ΔΙΠΛΕΣ ΠΛΕΙΑΔΕΣ Διπλές πλειάδες: Αν η λίστα των γνωρισμάτων δεν είναι υπερκλειδί, μπορεί να εμφανιστούν διπλές ή πολλαπλές πλειάδες Στο σχεσιακό μοντέλο δεδομένων δεν επιτρέπονται διπλές πλειάδες Εξ'ορισμού η πράξη της ΠΡΟΒΟΛΗΣ απομακρύνει τα διπλά (απαλοιφή διπλότυπων - duplicate elimination) Στην SQL μπορούμε να αποφασίσουμε εμείς τον χειρισμό των διπλών πλειάδων ΒΑΘΜΟΣ: Ο αριθμός των γνωρισμάτων της ΠΡΟΒΟΛΗΣ ΠΛΗΘΟΣ ΠΛΕΙΑΔΩΝ μετά την απαλοιφή: Αν τα γνωρίσματα είναι υπερκλειδί, είναι ίσος με τον αριθμό πλειάδων της αρχικής σχέσης Δεν ισχύει η αντιμεταθετικότητα!! (Άσκηση: Δώστε ένα παράδειγμα όπου δεν ισχύει ) Βάσεις Δεδομένων Σχεσιακή Άλγεβρα 14
Συνολοθεωρητικές Πράξεις Πράξεις Ένωση Τομή Διαφορά Απαιτείται συμβατότητα πλειάδων!! Βάσεις Δεδομένων Σχεσιακή Άλγεβρα 15
Καρτεσιανό Γινόμενο Συνδυάζει πλειάδες από δύο σχέσεις ώστε να αναγνωριστούν οι πλειάδες που σχετίζονται Γενικά το αποτέλεσμα της πράξης R(A1,A2,..,An) X S(B1,B2,..,Bm) είναι μια σχέση Q με n+m γνωρίσματα Q(A1,A2,..,An,B1,..,Bm) με αυτή τη σειρά. Η Q έχει μία πλειάδα για κάθε συνδυασμό πλειάδων, και επομένως έχει n_q = n_r * n_s πλειάδες Βάσεις Δεδομένων Σχεσιακή Άλγεβρα 16
Παράδειγμα Έστω ότι θέλουμε να πάρουμε για κάθε ΕΡΓΑΖΟΜΕΝΗ μιαλίσταμεόλαταεξαρτώμεναμέλητης. ΓΥΝ_ΕΡΓΑΖ <- σ_(φυλλο = "Θ")(ΕΡΓΑΖΟΜΕΝΟΣ) ΟΝΟΜ_ΕΡΓΑΖ <- π_(ονομα,επιθετο,ατ) (ΓΥΝ_ΕΡΓΑΖ) ΕΞΑΡΤ_ΕΡΓΑΖ <- ΟΝΟΜ_ΕΡΓΑΖ Χ ΕΞΑΡΤΩΜΕΝΟΣ ΠΡΑΓΜ_ΕΞΑΡΤ <- σ_(ατ = Ε_ΑΤ) (ΕΑΞΡ_ΕΡΓΑΖ) ΑΠΟΤΕΛΕΣΜΑ <- π_(ονομα,επιθετο,ονομα_εξαρτωμενου) (ΠΡΑΓΜ_ΕΞΑΡΤ) Βάσεις Δεδομένων Σχεσιακή Άλγεβρα 17
Συνένωση (Join) Η πράξη ΚΑΡΤΕΣΙΑΝΟ ΓΙΝΟΜΕΝΟ συχνά ακολουθείται από την πράξη ΕΠΙΛΟΓΗ ώστε να επιλεγούν οι πλειάδες έχουν κάποιο συγκεκριμένο νόημα Μια πράξη: ΣΥΝΕΝΩΣΗ Βάσεις Δεδομένων Σχεσιακή Άλγεβρα 18
Συνένωση (2) Συμβολίζεται με δύο τριγωνάκια: >< Συνδέει σχετιζόμενες πλειάδες από δύο σχέσεις Επιτρέπει την επεξεργασία των συσχετίσεων ΠΑΡΑΔΕΙΓΜΑ (σελ. 292): Θέλουμε το όνομα του διευθυντή κάθε τμήματος. Βάσεις Δεδομένων Σχεσιακή Άλγεβρα 19
Παράδειγμα Πρέπει να συνδυάσουμε κάθε πλειάδα τμήματος με την πλειάδα του ΕΡΓΑΖΟΜΕΝΟΣ στην οποία ΑΤ είναι ίδια με την τιμή του ΔΙΕΥΘΥΝΤΗΣ στην πλειάδα τμήματος ΔΙΕΥΘ_ΤΜΗΜ <- ΤΜΗΜΑ >< _(ΔΙΕΘΥΝΤΗΣ=ΑΤ) ΕΡΓΑΖΟΜΕΝΟΣ ΑΠΟΤΕΛΕΣΜΑ <- π_(τ_ονομα,ονομα,επιθετο)(διευθ_τμημ) Σημειώνουμε ότι ο ΔΙΕΥΘΥΝΤΗΣ είναι "Ξένο Κλειδί" και επομένως ο περιορισμός αναφορικής ακεραιότητας παίζει ρόλο. Βάσεις Δεδομένων Σχεσιακή Άλγεβρα 20
Γενική Μορφή Συνένωσης R >< _<συνθήκη συνένωσης> S Αποτέλεσμα Q με n+m γνωρίσματα Περιέχει όλες τις πλειάδες του Καρτεσιανού Γινομένου για τις οποίες ικανοποιείται η συνθήκη συνένωσης Η συνθήκη συνένωσης αποτιμάται σε γνωρίσματα των δύο σχέσεων R και S Πλειάδες των οποίων τα γνωρίσματα συνένωσης έχουν τιμή NULL δεν εμφανίζονται στη ΣΥΝΕΝΩΣΗ ΑΡΑ η συνένωση δεν διατηρεί υποχρεωτικά όλη την πληροφορία των σχέσεων που συμμετέχουν!!! Βάσεις Δεδομένων Σχεσιακή Άλγεβρα 21
Περιπτώσεις Συνένωσης ΘΗΤΑ ΣΥΝΕΝΩΣΗ (THETA JOIN): Συνένωση στην πολύ γενική μορφή της ΣΥΝΕΝΩΣΗ ΙΣΟΤΗΤΑΣ (EQUIJOIN), ηπιο συνηθισμένη περίπτωση Δίνει πλειάδες στις οποίες δύο ή περισσότερα γνωρίσματα έχουν την ίδια τιμή. ΦΥΣΙΚΗ ΣΥΝΕΝΩΣΗ (NATURAL JOIN) Γιαναμηνεμφανίζεταιάσκοπατογνώρισμα συνένωσης δύο φορές στο αποτέλεσμα, ορίζεται η Βάσεις Δεδομένων Σχεσιακή Άλγεβρα 22
Φυσική Συνένωση (Natural Join) Συμβολίζεται με αστεράκι * Τυπικά τα δύο γνωρίσματα θα πρέπει να έχουν το ίδιο όνομα (ή μπορεί τυπικά μετονομαστεί ένα από τα δύο): ΕΡΓΟ_ΤΜΗΜΑ <- ΕΡΓΟ * P(Τ_ΟΝΟΜΑ, ΚΩΔ_ΤΜΗΜΑ, ΔΙΕΥΘΥΝΤΗΣ, ΗΜΕΡ_ΕΝΑΡΞ) ΤΜΗΜΑ Το γνώρισμα ΚΩΔ_ΤΜΗΜΑ ονομάζεται "Γνώρισμα Συνένωσης". Ουσιαστικά η ΦΥΣΙΚΗ ΣΥΝΕΝΩΣΗ είναι μια συνένωση ισότητας ακολουθούμενη από απαλοιφή των γνωρισμάτων που πλεονάζουν. Βάσεις Δεδομένων Σχεσιακή Άλγεβρα 23
Φυσική Συνένωση (2) Ένας πιο γενικός και όχι τόσο αυστηρός ορισμός της ΦΥΣΙΚΗΣ ΣΥΝΕΝΩΣΗΣ είναι: Q <- R *_(<λίστα1>,<λίστα2>) S λίστα1: i γνωρίσματα από την R λίστα2: i γνωρίσματα από την S Μόνο η λίστα1 διατηρείται στο αποτέλεσμα Αν κανένας συνδυασμός δεν ικανοποιεί τις συνθήκες συνένωσης, το αποτέλεσμα είναι μια κενή σχέση με μηδέν πλειάδες Βάσεις Δεδομένων Σχεσιακή Άλγεβρα 24
Επιλεκτικότητα Συνένωσης Το μέγεθος του αποτελέσματος συνένωσης δια του μέγιστου μεγέθους n_r * n_s Αν δεν υπάρχει <συνθήκη συνένωσης> είναι ουσιαστικά το Καρτεσιανό Γινόμενο ή ΧΙΑΣΤΙ ΣΥΝΕΝΩΣΗ (CROSS JOIN) Η Συνένωση συνδυάζει δεδομένα από πολλές σχέσεις σε μία νέα σχέση Μπορεί να οριστεί ΣΥΝΕΝΩΣΗ σχέσης με τον εαυτό της Φυσική Συνένωση ή Συνένωση Ισότητας μπορεί να ορισθεί και για n πίνακες: ((ΕΡΓΟ >< _(Κ_ΤΜΗΜΑ=ΚΩΔ_ΤΜΗΜΑ) ΤΜΗΜΑ) >< _(ΔΙΕΥΘΥΝΤΗΣ=ΑΤ) ΕΡΓΑΖΟΜΕΝΟΣ) Συνδέει κάθε ΕΡΓΟ με το ΤΜΗΜΑ που το ελέγχει και στη συνέχεια αυτό με τον ΔΙΕΥΘΥΝΤΗ που διευθύνει το ΤΜΗΜΑ. Αποτέλεσμα: έργο-τμήμα-διευθυντής Βάσεις Δεδομένων Σχεσιακή Άλγεβρα 25
Σχεσιακό Σχήμα Βάσεις Δεδομένων Σχεσιακή Άλγεβρα 26
Πηγές/Αναφορές Κεφάλαιο 6 από το Βιβλίο του Μαθήματος: Θεμελιώσεις Αρχές Συστημάτων Βάσεων Δεδομένων (Τόμος Α' - Έκδοση 4η), Elmasri & Navathe (Μετάφραση: Εκδόσεις ΔΙΑΥΛΟΣ) Βάσεις Δεδομένων Σχεσιακή Άλγεβρα 27