Βάσεις Δεδομένων (Databases) ΕΠΛ 342 Χειμερινό Εξάμηνο 2011 Διδάσκοντες Καθηγητές Γιώργος Σαμάρας (ΧΩΔ01 109)
Δένδρο Επερώτησης (Query Tree) Δένδρο Επερώτησης (Query Tree) Είναι μια δενδρική δομή που αντιστοιχεί σε μια έκφραση της Σχεσιακής Άλγεβρας η οποία δείχνει με ποια ακολουθία πρέπει να εκτελεστούν οι τελεστές Τερματικοί Κόμβοι: Σχέσεις Εισόδου Εσωτερικοί Κόμβοι: Τελεστές To δένδρο στα δεξιά, αναπαριστάται από την έκφραση Σ.Α.: T1 σ P.Plocation= Stafford (P) T2 T1 DNum=DNumber D T3 T2 Mgr_ssn=ssn E T4 π Pnumber, Dnum,Address, Bdate (T3)
Δένδρο Επερώτησης (Query Tree) Ένα Δένδρο Επερώτησης (Query Tree) ονομάζεται και Δένδρο Αποτίμησης Επερωτήσεων (Query Evaluation Tree) Η βάση δεδομένων επιλεγεί συνήθως μόνο τα αριστεροβαθή δένδρα (αυτά στα οποία το δεξί παιδί είναι σχέση εισόδου γιατί με αυτό τον τρόπο τα αποτελέσματα μπορεί να σωληνώνονται μεταξύ τελεστών (pipelined) Σημειώστε ότι υπάρχουν πολλά τέτοια πιθανά δένδρα n!, όπου n o αριθμός των σχέσεων (διάταξη χωρίς επανατοποθέτηση)
Εκτεταμένοι Σχεσιακοί Τελεστές Εξωτερικοί τελεστές: Εξωτερική ένωση Εξωτερική Συνένωση Στατιστικές/συναθροιστικές συναρτήσεις: MAX, MIN, AVG, SUM Count Subset: ομαδοποίηση (grouping) Αριθμητικές πράξεις και άλλες συναρτήσεις G. Samaras 2011
Εξωτερική Ένωση: r * s Ορίζετε πάνω σε μερικώς συμβατές σχέσεις μη συμβατά χαρακτηριστικά εμφανίζονται στο r * s μη συμβατά χαρακτηριστικά χωρίς τιμές γίνονται NULL σχέση r A B C a b c σχέση s A B D b g a r * s A B C D a b c Null d a f Null c b d Null d a f d a f b g Null a c b d d a Null f Τι γίνετε με την εξωτερική τομή (outer intersection) ή την εξωτερική διαφορά (outer difference); G. Samaras 2011
Εξωτερική Συνένωση Η συνένωση διαλέγει μόνο πλειάδες που ικανοποιούν την συνθήκη σύνδεσης Εξωτερική Συνένωση: Αριστερή, Δεξιά, Ολική/Πλήρης Left outer join (r ] s) κρατά κάθε πλειάδα στην πρώτη ή αριστερή σχέση Right outer join (r [ s) κρατά κάθε πλειάδα στην δεύτερη ή δεξιά σχέση Full outer join (r ] [ s) κρατά όλες τις πλειάδες Χαρακτηριστικά πλειάδων που δεν έχουν ταυτισμένες πλειάδες στην συνένωση, γίνονται NULL G. Samaras 2011
Εξωτερική σχέση r Συνένωση A B C r ] s A B C D a b c Null d a f f c b d Null r [ s A B C D d a f f b g Null a a b c d a f c b d r ] [ s A B C D a b c Null d a f f c b d Null b g Null a σχέση s A B D b g a d a f G. Samaras 2011
Συναθροιστικές Συναρτήσεις Μαθηματικές και στατιστικές συναθροιστικές συναρτήσεις σε συλλογή τιμών SUM, MAXIMUM, MINIMUM, AVERAGE COUNT πλήθος πλειάδων (cardinality) F <λίστα συναρτήσεων> (<σχέση>) Λίστα Συναρτήσεων είναι λίστα από ζεύγη (<συνάρτηση, χαρακτηριστικό>) Π.χ., F count SSN, AVERAGE QPA (STUDENT) G. Samaras 2011
Επιπλέον Σχεσιακοί Τελεστές (Συναθροιστικές Συναρτήσεις) Παραδείγματα Χρήσης του Τελεστή Συναθροιστικής Συνάρτησης F F MAX(Salary) (EMPLOYEE) επιστρέφει την μέγιστη τιμή του πεδίου Salary που εμφανίζεται στη σχέση EMPLOYEE. F MIN(Salary) (EMPLOYEE) επιστρέφει την ελάχιστη τιμή του πεδίου Salary που εμφανίζεται στη σχέση EMPLOYEE. F SUM(Salary) (EMPLOYEE) επιστρέφει το άθροισμα του πεδίου Salary που εμφανίζεται στη σχέση EMPLOYEE. F COUNT(SSN), AVERAGE(Salary) (EMPLOYEE) επιστρέφει τον αριθμό των υπαλλήλων και τον μέσο όρο των μισθών τους
Ομαδοποίηση Ομαδοποίηση της πλειάδος σε μια σχέση <χαρακτηριστικά ομαδοποίησης> F <λίστα συναρτήσεων> (<σχέση>) Οι πλειάδες ομαδοποιούνται βάση των τιμών των χαρακτηριστικών ομαδοποίησης Π.χ., major F count SSN, AVERAGE QPA (STUDENT) G. Samaras 2011
Ομαδοποίηση με Συναθροιστικές Συναρτήσεις Εάν θέλουμε μπορούμε να μετονομάσουμε τα αποτελέσματα έτσι ώστε αυτά να έχουν εξειδικευμένα ονόματα γνωρισμάτων R(Dno, No_of_employees, Average_sal) DNO F COUNT(SSN), AVERAGE(Salary) (EMPLOYEE)
(Ομαδοποίηση + Επιλογή με Συναθρ. Συναρ.) Q1: Βρες τα ονόματα όλων των υπαλλήλων με δυο ή περισσότερους εξαρτώμενους (dependents). // Καταμέτρηση (COUNT) Εξαρτωμένων κάθε ατόμου 1. T1(Ssn, Dcount) ESSN F COUNT(Dependent_name) (DEPENDENT) // Φιλτράρισμα Συναρθροιστικού Αποτελέσματος με Επιλογή 2. T2 σ Dcount 2 (T1) // Προβολή Αποτελεσμάτων (μέσω φυσικής συνένωσης πάνω στο SSN) 3. RESULT π LNAME, FNAME (T2 *EMPLOYEE)
Ανάδρομη (Recursive closure) Εφαρμόζετε σε μια ανάδρομη σχέση μεταξύ πλειάδων της ίδιας σχέσης Π.χ., βρείτε όλους τους προγόνους ή απόγονους Πως το εκφράζουμε; Τι γίνετε με τον τελεστή συνένωσης; Χρειάζεται δηλώσεις ελέγχου επανάληψη G. Samaras 2011
Εκφράσεις εγγραφής στη σχεσιακή άλγεβρα Διαγραφή: r r Σχεσιακή_Έκφραση STUDENT STUDENT (σ Dept = CSD QPA<2.5 (STUDENT)) Εισαγωγή: r r Σχεσιακή_Έκφραση STUDENT STUDENT {(365, Smith, John )} Ενημέρωση: r π χαρακτηριστικά-για-αναβάθμιση (r) STUDENT π Dept = CSD (σ Dept = CS (STUDENT)) G. Samaras 2011
Συζήτηση Η σχεσιακή άλγεβρα είναι διαδικαστική (procedural) Τα ερωτήματα σε μια σχεσιακή άλγεβρα καθορίζουν το πως παράγετε ένα αποτέλεσμα, ΑΛΛΆ Το πως πρέπει να είναι ευθύνη του συστήματος Τα ερωτήματα των χρηστών πρέπει να είναι δηλωτικά καθορίζοντας τι πρέπει να επιστραφεί Γλώσσες ερωτήσεων με κείμενο (SQL, QUEL) Γλώσσες ερωτήσεων με γραφικά (QBE) Γλώσσες Οπτικών Εικόνων (QBI) Γλώσσες ερωτήσεων με Πλοήγηση (QBB) Άλλες θεωρητικές γλώσσες ερωτήσεων: Σχεσιακός Λογισμός πλειάδων (Relational Tuple Calculus) Σχεσιακός Λογισμός πεδίου τιμών (δεδομένων) (Relational Domain Calculus) G. Samaras 2011
Παραδείγματα Σχεσιακής Άλγεβρας (Σχήμα UNIVERSITY)
Παραδείγματα Σχεσιακής Άλγεβρας Q1: Ανάκτησε το name και address όλων των υπαλλήλων που δουλεύουν για το Research department. 1. RESEARCH_DEPT σ DNAME= Research (DEPARTMENT) 2. RESEARCH_EMPS (RESEARCH_DEPT DNUMBER= DNO EMPLOYEE) 3. RESULT π FNAME, LNAME, ADDRESS (RESEARCH_EMPS) * Η σειρά των σ-π- θα μπορούσε να αλλάξει λαμβάνοντας πίσω το ίδιο αποτέλεσμα (π.χ., η σειρά των joins στο 2)
Παραδείγματα Σχεσιακής Άλγεβρας Q3: Βρες το όνομα των υπαλλήλων που δουλεύουν πάνω σε όλα τα projects που ελέγχονται από το department 5. 1. DEPT5_PROJS(Pno) π Pnumber (σ DNUM=5 (PROJECT)) 2. EMP_PROJ(Ssn, Pno) π ESSN, Pno (WORKS_ON) 3. RESULT_EMP_SSNS EMP_PROJ / DEPT5_PROJS 4. RESULT π LNAME, FNAME (RESULT_EMP_SSNS * EMPLOYEE)
Παραδείγματα Σχεσιακής Άλγεβρας Smith Q4: Δημιουργήστε μια λίστα από projects τα οποία περιλαμβάνουν ένα υπάλληλο με το επίθετο Smith, ως υπάλληλο ή* ως manager του τμήματος που ελέγχει το εν λόγω project. Αναλύοντας το πιο πάνω ερώτημα βρίσκουμε ότι το αποτέλεσμα θα πρεπει να είναι της μορφής (δηλ., να είναι ένωση αποτελεσμάτων) π Pnumber (SMITH_WORKER_PROJS SMITH_MGR_PROJS) Στην επόμενη διαφάνεια δείχνουμε αναλυτικά την απάντηση. * Εάν το ή ήταν συμμετρική διάφορα (δηλαδή είτε ή) τότε θα έπρεπε να εφαρμόσουμε την ισοδυναμία R S = (R S) (S R)
Παραδείγματα Σχεσιακής Άλγεβρας Smith Q4: Δημιουργήστε μια λίστα από projects τα οποία περιλαμβάνουν ένα υπάλληλο με το επίθετο Smith, ως υπάλληλο ή ως manager του τμήματος που ελέγχει το εν λόγω project. SMITHS π SSN (σ Lname= Smith (EMPLOYEE)) SMITH_WORKER_PROJS π Pno (SMITHS SSN=ESSN WORKS_ON) SMITH_MNG_DEPTS π DNumber (SMITHS SSN=MGR_SSN DEPARTMENT) SMITH_MGR_PROJS(PNO) π Pnumber (SMITH_MNG_DEPTS DNumber=DNum PROJECT ) RESULT π Pno (SMITH_WORKER_PROJS SMITH_MGR_PROJS(PNO))
Παραδείγματα Σχεσιακής Άλγεβρας Sailors-Reserve-Boats Βρες τα ονόματα των sailors που κράτησαν μια κόκκινη βάρκα Sailors(sid:integer, sname:string, rating:integer, age:real) Boats(bid:integer, bname:string, color:string) Reserves(sid:integer, bid:integer, day:date) π sname (( σ Boats) Re serves Sailors) color = ' red' Μια πιο αποδοτική διατύπωση*: Διατήρηση μόνο των απαραιτήτων γνωρισμάτων π sname ( π π σ sid (( Boats) Re s) Sailors) bid color = ' red' * Είναι πιο αποδοτικό διότι τα ενδιάμεσα αποτελέσματα είναι μικρότερα π.χ., στο π bid (σ color=«red» Boats) διατηρούμε ως ενδιάμεσο αποτέλεσμα μόνο το bid αντί και τα τρία πεδία.