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