Βάσεις Δεδομένων (Databases) ΕΠΛ 342 Χειμερινό Εξάμηνο 2011 Διδάσκοντες Καθηγητές Γιώργος Σαμάρας (ΧΩΔ01 109)
θεωρητικές Γλώσσες Ερωτήσεων (Formal Query Languages): Σχεσιακή Άλγεβρα Τελεστές Θεωρίας Συνόλων Συγκεκριμένοι Σχεσιακοί Τελεστές Τελεστές Ενημέρωσης
Τυπικές Γλώσσες Σχεσιακού Μοντέλου (Formal Languages for the Relational Model) Για την εκτέλεση επερωτήσεων σε σχέσεις ορίζονται οι ακόλουθες τυπικές (θεωρητικές) γλώσσες: Σχεσιακή Άλγεβρα (Relational Algebra) Λογισμός Πλειάδων (Tuple Relational Calculus) Λογισμός Πεδίων (Domain Relational Calculus) Αυτές οι γλώσσες είναι εκφραστικά ισοδύναμες! Δηλαδή μπορούν να εκφράσουν αντίστοιχες επερωτήσεις. Οποιαδήποτε γλώσσα είναι εκφραστικά ισοδύναμη με την Σχεσιακή Άλγεβρα ονομάζεται Σχεσιακά Πλήρης Γλώσσα (Relationally-Complete Language) Η SQL είναι μια relationally complete γλώσσα
Τυπικές Γλώσσες Σχεσιακού Μοντέλου (Formal Languages for the Relational Model) Πάνω σε αυτές τις θεωρητικές γλώσσες έχουν δημιουργηθεί πραγματικές γλώσσες βάσεων δεδομένων (π.χ., SQL, QBE) Σχεσιακή Άλγεβρα (Relational Algebra) Προστακτική: ορίζεται η σειρά εκτέλεσης των πράξεων. Μια Επερώτηση του χρήστη σε SQL μεταφράζεται από την βάση σε μια έκφραση σχεσιακής άλγεβρας, το λεγόμενο πλάνο εκτέλεσης (query plan). Λογισμός Πλειάδων (Tuple Calculus) Δηλωτική: δεν ορίζεται η σειρά εκτέλεσης των πράξεων απλά το επιθυμητό αποτέλεσμα, Η SQL στηρίζεται πάνω στην δηλωτική φύση του Λογισμού Πλειάδων εάν SQL επερωτήσεις εκτελούνται σαν εκφράσεις Σχεσιακής Άλγεβρας Λογισμός Πεδίων (Domain Calculus) Όμοια με Λογισμό Πλειάδων (οι μεταβλητές είναι γνωρίσματα και όχι πλειάδες) Δηλωτική και πάνω σ αυτή στηρίζεται η QBE Υλοποιείται ΙΒΜ QMF, MS Access και Paradox, κ.α.
Τυπικές Γλώσσες Σχεσιακού Μοντέλου (Formal Languages for the Relational Model) Παράδειγμα SQL (πραγματικής γλώσσας βάσης) SELECT fname, lname, salary FROM EMPLOYEE WHERE dno=5 Παράδειγμα Σχεσιακής Άλγεβρας: TEMP σ DNO=5 (EMPLOYEE) RESULT π FNAME, LNAME, SALARY (TEMP) Παράδειγμα Λογισμού Πλειάδων: { t.fname, t.lname, t.salary EMPLOYEE(t) AND t.dno=5} H πιο πάνω έκφραση ονομάζεται Set Builder Notation (Σημειογραφία Δημιουργίας Συνόλων) {<γνωρίσματα αποτελέσματος> <συνθήκες>} Παράδειγμα Λογισμού Πεδίων: Όμοια με Λογισμό Πλειάδων (οι μεταβλητές είναι γνωρίσματα περιορισμοί στο πεδίο ορισμού - και όχι πλειάδες) { qsx EMPLOYEE(qrstuvwxyz) AND z=5} Η έκφραση σε QBE (η οποία υλοποιεί το πιο πάνω) δεν διαφέρει ουσιαστικά (μπορεί να είναι διαγραμματική ωστόσο) Δηλωτική διατύπωση, Προστακτική εκτέλεση Προστακτική διατύπωση & εκτέλεση Δηλωτική διατύπωση & εκτέλεση Δηλωτική διατύπωση & εκτέλεση
Εισαγωγή στη Σχεσιακή Άλγεβρα Η Σχεσιακή Άλγεβρα αποτελείται από ένα βασικό σύνολο πράξεων (τελεστών) για το σχεσιακό μοντέλο. Είναι ουσιαστικά η πιο διαδεδομένη τυπική γλώσσα του Σχε. Μοντ. Αυτοί οι τελεστές επιτρέπουν σε κάποιο να διατυπώσει βασικές πράξεις ανάκτησης, δηλ., επερωτήσεις (queries). Το αποτέλεσμα εκτέλεσης ΟΛΩΝ των τελεστών μας επιστρέφει πίσω μια νέα σχέση, η οποία μπορεί να δημιουργείται από 1 ή περισσότερες σχέσεις εισόδου. Αυτή η ιδιότητα κάνει την Σχεσιακή Άλγεβρα «Κλειστή» ( closed ), δηλ., ΌΛΑ τα αντικείμενα στη σχεσιακή άλγεβρα είναι σχέσεις (ακόμη και μια απλή αριθμητική τιμή) Έκφραση σχεσιακής άλγεβρας (Relational Algebra Expression): Ακολουθία εφαρμογής τελεστών πάνω σε σχέσεις, π.χ., π FNAME, LNAME, SALARY (σ DNO=5 (EMPLOYEE))
Εισαγωγή στη Σχεσιακή Άλγεβρα Η Σχεσιακή Άλγεβρα παρέχει τους τελεστές (operators): Μοναδιαίοι Σχεσιακοί Τελεστές (Unary Relational Ops) Επιλογή (Select, (sigma)) Προβολή (Project, (pi)) Μετονομασία (Rename, ρ (rho)) Σχεσιακοί Τελεστές από την Θεωρία Συνόλων Ένωση (UNION, ), Τομή (INTERSECTION, ), Διαφορά Συνόλων (DIFFERENCE ή MINUS, ) Καρτεσιανό Γινόμενο (CARTESIAN PRODUCT, x ) Δυαδικοί Σχεσιακοί Τελεστές (Binary Relational Ops) Συνένωση (JOIN, )(υπάρχουν πολλαπλές εκδοχές) Εφόσον το δεν υποστηρίζεται σαν σύμβολο θα χρησιμοποιείται το Διαίρεση (DIVISION, /) Επιπλέον Σχεσιακοί Τελεστές Συναρτήσεις Συνάθροισης AGGREGATE FUNCTIONS (π.χ., SUM, COUNT, AVG, MIN, MAX) Εξωτερική Συνένωση, κ.α., (OUTER JOINS)
Σχεσιακή Άλγεβρα Τελεστές πάνω σε όλες τις σχέσεις (πίνακες) Οι παράμετροι είναι (σταθερές ή μεταβλητές) σχέσεις Το αποτέλεσμα είναι μια σχέση Τελεστές θεωρίας συνόλων: Ένωση (Union), Τομή (Intersection), Διαφορά (Difference) και Καρτεσιανό Γινόμενο (Γινόμενο για συντομία) Συγκεκριμένοι Σχεσιακοί Τελεστές : Επιλογή (Selection), Προβολή (Projection), Σύνδεση (Join) και Διαίρεση (Division) Πλήρες σύνολο τελεστών σχεσιακής άλγεβρας: Επιλογή (Select), Προβολή (project), Γινόμενο (product), ένωση (union) και Διαφορά (difference) G. Samaras 2011
Βασικές λειτουργίες Ανάθεσης r s r s r s σχέση r A B C D A F C B D σχέση s B G A D A F Μπορούμε να κάνουμε,, μεταξύ 2 οποιονδήποτε σχέσεων; Πρέπει να είναι συμβατά Συνένωσης R = S και Ανταποκρινόμενα χαρακτηριστικά να έχουν το ίδιο πεδίο ορισμού Ιδιότητες Το και το είναι μεταβατικές λειτουργίες Η Διαφορά δεν είναι μεταβατική (commutative) G. Samaras 2011
Συμβατά; r s r s r s G. Samaras 2011
Τελεστές Θεωρίας Συνόλων Ένωση (UNION) Παράδειγμα: Βρες το SSN όλων των υπαλλήλων που δουλεύουν στο τμήμα (dno) 5 ή επιβλέπουν κάποιο υπάλληλο που δουλεύει στο τμήμα 5. Με ποια σειρά σχεσιακών τελεστών θα απαντήσουμε το πιο πάνω ερώτημα;
Τελεστές Θεωρίας Συνόλων Ένωση (UNION) Eπερώτηση: Διατύπωση σε Σχεσιακή Άλγεβρα TEMP σ DNO=5 (EMPLOYEE) RESULT1 π SSN (TEMP) RESULT2(SSN) π SUPERSSN (TEMP) RESULT RESULT1 RESULT2 Σημειώστε την μετονομασία Αποτέλεσμα:
Τελεστές Θεωρίας Συνόλων Διαφορά Συνόλων (Minus) Συμβατές-προς-Τύπο (παρόλο που έχουν διαφορετικά ονόματα γνωρισμάτων) * * Student =7 Student- Instructor = 5 Αφαίρεση Susan και Ramesh from Student * * Instructor =5 Instructor Student = 3 Αφαίρεση Susan και Ramesh from Instructor
Καρτεσιανό Γινόμενο r x s Έστω p(p) = r(r) x s(s) P =? και p(p) =? P = R + S = α r + α s p(p) = r s σχέση r a b c d a f c b d α r σχέση s b g d a α s Προβλήματα με τα κοινά ονόματα επιλύονται με την χρήση των ονομάτων των σχέσεων σαν πρόθεμα: r.a, r.b, S.A, S.B G. Samaras 2011
Επιλογή (Selection) Μοναδιαίος τελεστής Επιλογή, σ: σ συνθήκη-επιλογής (r) Π.χ., σ Name= John Name = Susan (r) σχέση r A B C a b c d a f c b d result = {t t[name] = John ή t[name] = Susan} Η συνθήκη επιλογής είναι κάθε λογική έκφραση στα χαρακτηριστικά του r εμπλέκοντας κάθε εφαρμόσιμο τελεστή σύγκρισης {=,<,, >,, } Τι γίνετε με σ B=b C = d (r) =? και σ B=b C = d (r) =? Πως μπορούμε να πάρουμε ένα αντίγραφο του r? Πως μπορούμε να πάρουμε ένα κενό αντίγραφο του r? G. Samaras 2011
Μοναδιαίοι Τελεστές Παραδείγματα Επιλογής (σ) Δεδομένα Επερώτηση Αποτέλεσμα
Προβολή (Projection) Μοναδιαίος τελεστής Προβολή, π: π λίστα-χαρακτηριστικών (r) Λίστα-χαρακτηριστικών R Π.χ., π Name, Major (r) result = {t t[name, Μajor]} Το γίνετε με π A,C (r) =? Το γίνετε με π C,A (r) =? σχέση r A B C a b c d a f c b d a d c G. Samaras 2011
Μοναδιαίοι Τελεστές Παραδείγματα Προβολής (π) Δεδομένα Διπλότυπ α Επερώτηση Αποτέλεσμα 7 εγγραφές αντί 8 εγγραφές (λογω duplicates)
Εκφράσεις Σχεσιακής Άλγεβρας Ερώτηση: Όλα τα QPA όλων των φοιτητών του CSD των οποίων το QPA είναι μεγαλύτερο από 3.5 STUDENT (SID,FName,SName,Dept,Major,QPA) Ενσωματωμένοι (nested) τελεστές π SID, QPA (σ Dept = CSD QPA>3.5 (STUDENT)) Ακολουθία τελεστών HS σ Dept = CSD QPA>3.5 (STUDENT) RESULT π SID, QPA (HS) Μετονομασία χαρακτηριστικών στο αποτέλεσμα RSLT(StudentID, GPA) π SID, QPA (HS) G. Samaras 2011
Τελεστής Μετονομασίας Αλλάξτε τα ονόματα των χαρακτηριστικών: ρ(a1,a2,a3,..,an)(r) Παράδειγμα: ρ(studentid, GPA) ( π SID, QPA (σ Dept = CSD QPA>3.5 (STUDENT)) G. Samaras 2011
Δεδομένα Μοναδιαίοι Σχεσιακοί Τελεστές Τελεστής RENAME No Renaming (A) π FNAME, LNAME, SALARY ( σ DNO=5 (EMPLOYEE) ) With Renaming (B) TEMP σ DNO=5 (EMPLOYEE) ρ(first_name, Last_Name, Salary) π FNAME, LNAME, SALARY (TEMP)
Ιδιότητες του σ και π σ cond1 (σ cond2 (R)) = σ cond2 (σ cond1 (R)) σ cond1 (σ cond2 (R)) = σ cond2 cond1 (R)) = σ cond1 cond2 (R)) π list1 (π list2 (R)) = π list1 (R) Πότε? G. Samaras 2011
Proof Example? σ cond1 (σ cond2 (R)) = σ cond2 (σ cond1 (R)) X σ cond1 (σ cond2 (R)) <==> X (σ cond2 (R) AND COND1(X) <==> X (R) AND COND2(X) AND COND1(X) <==> X (R) AND COND1(X) AND COND2(X) <==> X (σ cond1 (R) AND COND2(X) <==> X σ cond2 (σ cond1 (R)) PG. Samaras 20