Department of Computer Science University of Cyprus. EPL342 Databases. Lecture 10: RA IΙ. RA Advanced + Examples

Σχετικά έγγραφα
Βάσεις Δεδομένων (Databases)

Εισαγωγή στη Σχεσιακή Άλγεβρα

Διάλεξη 10: Σχεσιακή Άλγεβρα και Σχεσιακός Λογισμός (Relational Algebra/Calculus) ΙI

Βάσεις Δεδομένων (Databases)

Βάσεις Δεδομένων (Databases)

Διδάσκων: Παναγιώτης Ανδρέου

Lecture 14: SQL DML I

Βάσεις Δεδομένων Προχωρημένα Ερωτήματα SQL

Περιεχόμενα. Βάσεις Δεδομένων Προχωρημένα Ερωτήματα SQL. Συνένωση Σχέσεων στην SQL2 (3) Συνένωση Σχέσεων στην SQL2. (Join Relations Feature in SQL)

Βάσεις δεδομένων. (6 ο μάθημα) Ηρακλής Βαρλάμης

Εισαγωγή στις Βάσεις Δεδομζνων II

ΣΧΕΣΙΑΚΟ ΜΟΝΤΕΛΟ Relational Model. SQL Μαθ. #11

Σχεσιακή Άλγεβρα και Σχεσιακός Λογισμός. Σχεσιακή Άλγεβρα Σχεσιακός Λογισμός

ΗΥ-360 Αρχεία και Βάσεις Δεδομένων Διδάσκων: Δ. Πλεξουσάκης. Φροντιστήριο SQL Examples ΙΙ Ξένου Ρουμπίνη

Lecture 16: SQL DML III

Department of Computer Science University of Cyprus. EPL342 Databases. Lecture 10: RA IΙΙ. RA Advanced + Examples

ΣΧΕΣΙΑΚΟ ΜΟΝΤΕΛΟ (Relational Model) Μαθ. #10

Βάσεις δεδομένων. (7 ο μάθημα) Ηρακλής Βαρλάμης

Lecture 8: RM I + RA I

Βάσεις Δεδομένων Σύνθετα SQL queries. Ψευδώνυμα (Aliases) (2) Ψευδώνυμα (Aliases) (1) Ασάφεια και Πλήρη Ονόματα. Ερώτημα χωρίς τον όρο WHERE (1)

Βάσεις Δεδομένων Σύνθετα SQL queries

Διάλεξη 13: Γλώσσα Επεξεργασίας Δεδομένων/ Data Manipulation Language (SQL DML) I. Διδάσκων: Παναγιώτης Ανδρέου

Σχεσιακή Άλγεβρα. Κεφάλαιο 4. Database Management Systems, R. Ramakrishnan and J. Gehrke

Διάλεξη 08: Αντιστοίχηση Εννοιολογικού σε Σχεσιακό Μοντέλο (ER/EER to Relational) Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 07: Σχεσιακό Μοντέλο II (Relational Data Model) Διδάσκων: Παναγιώτης Ανδρέου

Department of Computer Science University of Cyprus. EPL342 Databases. Lecture 8: RM II. Relational Model. (Chapter )

Διάλεξη 14: Γλώσσα Επεξεργασίας Δεδομένων/ Data Manipulation Language (SQL DML) II. Διδάσκων: Παναγιώτης Ανδρέου

#5. Σχεσιακό Μοντέλο

SQL: Αιτήματα. Κεφάλαιο 5. Database Management Systems, R. Ramakrishnan and J. Gehrke

Οργάνωση Βάσεων Βιοϊατρικών Δεδομένων Εξόρυξη Γνώσης Βιοϊατρικών Δεδομένων. Σεμινάριο 7: Αλγόριθμοι για επεξεργασία ερωτήσεων και βελτιστοποίηση

Διάλεξη 04: Εννοιολογική Σχεδίαση Βάσης Δεδομένων II (Entity Relationship Modelling) Διδάσκων: Παναγιώτης Ανδρέου

Βάσεις Δεδομένων Ευαγγελία Πιτουρά 2. Εννοιολογικός Σχεδιασμός Βάσεων εδομένων (με χρήση του Μοντέλου Οντοτήτων/Συσχετίσεων)

Βάσεις Δεδομένων Ευαγγελία Πιτουρά 2. Εννοιολογικός Σχεδιασμός Βάσεων εδομένων (με χρήση του Μοντέλου Οντοτήτων/Συσχετίσεων)

Query-by-Example (QBE)

Βάσεις Δεδομένων. Σχεσιακό Μοντέλο Δεδομένων. Βασίλειος Βεσκούκης Ορισμός Βάσης Δεδομένων Δομή Περιορισμοί

Βάσεις Δεδομένων Ενότητα 6

Οργάνωση Βάσεων Βιοϊατρικών Δεδομένων Εξόρυξη Γνώσης Βιοϊατρικών Δεδομένων. Σεμινάριο 3: Σχεσιακή Άλγεβρα

Kεφ.2: Σχεσιακό Μοντέλο (επανάληψη) Κεφ.6.1: Σχεσιακή Άλγεβρα

Department of Computer Science University of Cyprus. EPL342 Databases. Lecture 5: ER II. Data Modeling Using the ER Model

Σχεσιακή Άλγεβρα. Παύλος Εφραιμίδης. Βάσεις Δεδομένων Σχεσιακή Άλγεβρα 1

S Q Q L L -- SQL (Structured Query Language) select insert update delete 2.47

Lecture 21: Functional Dependencies and Normalization

Βάσεις Δεδομένων (Databases)

Κεφάλαιο 3 ΣΧΕΣΙΑΚΟ ΜΟΝΤΕΛΟ. I.B. Το Σχεσιακό Μοντέλο Σελίδα 2.1

Διάλεξη 06: Σχεσιακό Μοντέλο I (Relational Data Model) Διδάσκων: Παναγιώτης Ανδρέου

ΗΥ-360 Αρχεία και Βάσεις Δεδομένων Διδάσκων: Δ. Πλεξουσάκης. Φροντιστήριο SQL Examples Ξένου Ρουμπίνη

Βάσεις Δεδομένων ΗγλώσσαSQL (Structured Query Language)

Κεφάλαιο 3. ΣΧΕΣΙΑΚΟ ΜΟΝΤΕΛΟ B Μέρος. Tο Σχεσιακό Μοντέλο Σελίδα 1

Τελεστής Προβολής - Παράδειγμα. Π Πόλη, Εξάμηνο (Φοιτητές)

Βάσεις δεδομένων. (8 ο μάθημα) Ηρακλής Βαρλάμης

Lecture 15: SQL DML II

Βάσεις δεδομένων. (5 ο μάθημα) Ηρακλής Βαρλάμης

Βάσεις Δεδομένων Η γλώσσα SQL (Structured Query Language) Εισαγωγή στην SQL (2) Ιστορικά Στοιχεία. SQL - Structured Query Language (1)

Σχεσιακή Άλγεβρα. Συνολοθεωρητικές Πράξεις. Εκφράσεις. Ειδικές Πράξεις. Θεμελίωση της Σχεσιακού Μοντέλου Δεδομένων. Σχεσιακός Λογισμός

Σχεσιακή Άλγεβρα. Βάσεις Δεδομένων : Σχεσιακή Άλγεβρα 1

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι

Βάσεις δεδομένων. (4 ο μάθημα) Ηρακλής Βαρλάμης

Εισαγωγή στην Επεξεργασία Ερωτήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Lecture 23: Functional Dependencies and Normalization

Σχεσιακή Άλγεβρα. Εισαγωγή. Εισαγωγή. Εισαγωγή. Παράδειγμα. Εισαγωγή. Ταινία Τίτλος Έτος Διάρκεια Είδος. Παίζει Όνομα-Ηθοποιού Τίτλος Έτος.

Κεφάλαιο 4. Η Γλώσσα SQL και Σχεσιακός Λογισµός. Ι.Β. Σχεσιακός Λογισµός και η Γλώσσα SQL Σελίδα 2.46

ΗΥ360: Αρχεία και Βάσεις Δεδομένων Διδάσκων: Πλεξουσάκης Δημήτρης. Φροντιστήριο Σχεσιακή Άλγεβρα Δημητράκη Κατερίνα

ΗΥ360 Αρχεία και Βάσεις Δεδομένων. Φροντιστήριο στην Σχεσιακή Άλγεβρα.

Σχεσιακή Άλγεβρα. Προγράμματα που απαντούν σε επερωτήσεις για τον τρέχον στιγμιότυπο της βάσης δεδομένων (querying)

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι. Ενότητα 6: SQL (Συζεύξεις, Εμφώλευση, Ομαδοποίηση) Ευαγγελίδης Γεώργιος. Τμήμα Εφαρμοσμένης Πληροφορικής ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι

Βάσεις Δεδομένων (Databases)

Σχεσιακή Άλγεβρα. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Βάσεις εδοµένων. Συνολοθεωρητικές Πράξεις. Ειδικές Πράξεις. Εκφράσεις. Θεµελίωση της Σχεσιακού Μοντέλου εδοµένων. Σχεσιακή Άλγεβρα Σχεσιακός Λογισµός

Εισαγωγή στις Βάσεις Δεδομζνων II

BΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΕΞΕΤΑΣΗ ΦΕΒΡΟΥΑΡΙΟΥ 2005

Εισαγωγή στην. Εισαγωγή Σ Β. Αρχεία ευρετηρίου Κατάλογος. συστήματος. Αρχεία δεδομένων

Ασκήσεις -Επανάληψη. Βάσεις Δεδομένων

Σχεσιακή Άλγεβρα. Σχεσιακή Άλγεβρα

Επεξεργασία Ερωτήσεων

Επεξεργασία Ερωτήσεων

Σχεσιακή Άλγεβρα. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Επεξεργασία Ερωτήσεων

Βάσεις Δεδομένων (Databases)

Βάσεις Δεδομένων. Εργαστήριο ΙV. Τμήμα Πληροφορικής ΑΠΘ

Σχεσιακή Άλγεβρα. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Κεφάλαιο 5 Σχεσιακή Άλγεβρα

Σχεσιακή Άλγεβρα Σχεδιασμός Βάσεων Δεδομένων

GROUP BY, HAVING, COUNT, MIN, MAX, SUM, AVG, ROLLUP.

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ. Επιλέγει όλες τις πλειάδες, από μια σχέση R, που ικανοποιούν τη συνθήκη επιλογής.

Σχεσιακή Άλγεβρα. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

ΚΕΡΑΜΟΠΟΥΛΟΣ ΕΥΚΛΕΙΔΗΣ

Διδάσκων: Παναγιώτης Ανδρέου

Βάσεις Δεδομένων. Σχεσιακή Άλγεβρα. Φροντιστήριο 4 ο

Σχεσιακή Άλγεβρα Relational Algebra

Εισαγωγή στην Επεξεργασία Ερωτήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Κεφάλαιο 6. Σχεσιακή Άλγεβρα και Σχεσιακός Λογισμός. Copyright 2007 Ramez Elmasri and Shamkant B. Navathe

SQL Data Manipulation Language

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι

Βάσεις Δεδομένων. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα

Ηλεκτρονικοί Υπολογιστές II

Βάσεις εδοµένων Ευαγγελία Πιτουρά 2. Εννοιολογικός Σχεδιασµός Βάσεων Δεδοµένων (µε χρήση του Μοντέλου Οντοτήτων/Συσχετίσεων)

Διδάσκων: Παναγιώτης Ανδρέου


Οργάνωση Βάσεων Βιοϊατρικών Δεδομένων Εξόρυξη Γνώσης Βιοϊατρικών Δεδομένων. Σεμινάριο 4: Σχεσιακός Λογισμός

1. Ανασκόπηση των Βασικών Εννοιών των Βάσεων Δεδομένων

Transcript:

Department of Computer Science University of Cyprus EPL342 Databases Lecture 10: RA IΙ RA Advanced + Examples (Chapter 6.4-6.5, Elmasri-Navathe 5ED) ιδάσκων: Παναγιώτης Ανδρέου http://www.cs.ucy.ac.cy/courses/epl342 10-1

Επισκόπηση Τελεστών Σχεσιακής Άλγεβρας που Καλύφθηκαν Η Σχεσιακή Άλγεβρα παρέχει τους τελεστές (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), 10-2

υαδικοί Σχεσιακοί Τελεστές Συνένωση (JOIN) Αυτό που θα θέλαμε στη πραγματικότητα, είναι να συνδυάσουμε τα Reserves με τους Sailors κατά τέτοιο τρόπο που να δημιουργείται κάποια χρήσιμη πληροφορία Χρήσιμο Ερώτημα: Βρες σε ποιο όνομα ανήκει κάθε κράτηση Reserve Reserves =6 sid bid day 28 103 12/4/06 28 103 11/3/06 31 101 10/10/06 31 102 10/12/06 31 101 10/11/06 58 103 11/12/06 Sailors =5 sid sname rating age 22 dustin 7 45.0 28 yuppy 9 35.0 31 lubber 8 55.5 44 guppy 5 35.0 58 rusty 10 35.0 Εάν εκτελεστεί το Reserves x Sailors ακολουθούμενο από σ Reserves.sid = Sailors.sid τότε βρίσκουμε το επιθυμητό αποτέλεσμα To αποτέλεσμα αυτή την φορά θα είναι μόνο έξι πλειάδες: (28, 103, 12/4/06, yuppy, 9, 35.0) (28, 103, 11/3/06, yuppy, 9, 35.0) (31, 101, 10/10/06, lubber, 8, 55.5) (31, 102, 10/12/06, lubber, 8, 55.5) (31, 101, 10/11/06, lubber, 8, 55.5) (58, 103, 11/12/06, rusty, 10, 35.0) 10-3

υαδικοί Σχεσιακοί Τελεστές Συνένωση (JOIN) Τελεστής Συνένωσης (JOIN ) Είναι ένας δυαδικός τελεστής ο όποιος συνδυάζει σχετιζόμενες πλειάδες σχέσεων σε μια ενιαία πλειάδα. Τυπικά, ορίζεται ως το καρτεσιανό γινόμενο μεταξύ δυο σχέσεων ακολουθούμενο από επιλογή. R <Κριτήρια> S = <Κριτήρια> (R S) Τα κριτήρια είναι μια Λογική Έκφραση (Boolean Expression): Κριτήρια:= <Κριτήριο> $ <Κριτήριο> $... $ <Κριτήριο> $ είναι Λογικός Τελεστής AND ή OR Κριτήριο := <γνώρισμα> # <σταθερή τιμή γνώρισμα> # είναι δυαδικός Τελεστής Σύγκρισης {<,>,=,!=, >=, <=} π.χ., (age=30) AND (sex= M ) AND (ssn!=mgr_ssn) Για να αναφερθούμε σε γνωρίσματα χρησιμοποιείται και η σημειογραφία με την τελεία, π.χ., DEPARTMENT.MGRSS, EMPLOYEE.SSN 10-4

υαδικοί Σχεσιακοί Τελεστές Τελεστής Συνένωσης (JOIN) Επερώτηση: Βρείτε το όνομα του manager κάθε department. a) Πρέπει να συνδυάσουμε κάθε πλειάδα του πινάκα Department με τις πλειάδες του πίνακα Employee. R = (DEPARTMENT EMPLOYEE) b) Μέτα πρέπει να επιλέξουμε τις πλειάδες για τις οποίες ισχύει το Mgr_ssn=SSN, δηλ., σ Mgr_ssn = SSN (R) Αποτέλεσμα Το a-b ισοδυναμεί με την έκφραση: DEPARTMENT Mgr_ssn = SSN EMPLOYEE 10-5

υαδικοί Σχεσιακοί Τελεστές Τελεστής Συνένωσης (JOIN) Πρακτικά, το χρησιμοποιείται για να συνδυαστούν σχετιζόμενες πλειάδες δυο σχέσεων, Η Συνένωση μεταξύ δυο σχέσεων βαθμού μεγαλυτέρου του 2, π.χ., R(A 1, A 2,..., A n ) S(B 1, B 2,..., B m ), μας επιστρέφει μια σχέση Q βαθμού n+m δηλ., Q(A1, A2,..., An, B1, B2,..., Bm) H μεγαλύτερη δυνατή τιμή του Q είναι n*m (εάν και στη πράξη αναμένεται να είναι μικρότερο, λόγω της επιλογής) Στην συνένωση, όπως και στο Καρτεσιανό Γινόμενο, οι τελεσταίοι (R, S) ΕΝ χρειάζεται να συμφωνούν στον τύπο ΑΛΛΑ πρέπει να έχουν ένα κοινό πεδίο (το οποίο θα συμφωνεί στον τύπο δεδομένων, δηλ., R.Ai=S.Bj ή r[ai]=s[bj]) Στη συνέχεια θα δούμε διάφορες παραλλαγές του βασικού τελεστή (Συνένωση Ισότητας (Equi-join), Φυσική Συνένωση (Natural Join), κτλ) 10-6

υαδικοί Σχεσιακοί Τελεστές Θ-Συνένωση (Θ-JOIN) Ο τελεστής συνένωσης που είδαμε μέχρι τώρα ονομάζεται Θ-join και αποτελεί την γενικευμένη περίπτωση: R Θ S Όπως είχαμε αναφέρει, η συνθήκη συνένωσης Θ μπορεί να είναι οποιαδήποτε Λογική (Boolean) έκφραση Σημειώστε ότι οποιαδήποτε λογική έκφραση μπορεί να μεταφραστεί σε Συζευκτική Κανονική Μορφή (Conjunctive Normal Form - CNF) με χρήση λογικών ισοδυναμιών CNF: Μια σύζευξη όρων, όπου κάθε όρος είναι μια διάζευξη κριτηρίων (λεκτικών στοιχείων) Π.χ., (day<8/9/94 OR bid=5 OR sid=3) AND (rname= Paul OR bid=5 OR sid=3) CNF NOT CNF 10-7

υαδικοί Σχεσιακοί Τελεστές Συνένωση Ισότητας (EQUIJOIN) Συνένωση Ισότητας (EQUIJOIN) Εξειδίκευση του τελεστή θ-join: ο τελεστής σύγκρισης περιορίζεται μόνο σε ισοδυναμία = Π.χ., DEPARTMENT Mgr_ssn = SSN EMPLOYEE Υπάρχει σαν ορισμός εφόσον οι περισσότερες συνενώσεις χρησιμοποιούν μόνο συγκρίσεις ισότητας Στην πράξη ωστόσο δεν διαφέρει (σε άποψη σημειογραφίας ή υλοποίησης) Σημειώστε ότι στο αποτέλεσμα του Equijoin θα έχουμε δυο στήλες με την ίδια πληροφορία Π.χ., Mgr_ssn και SSN 10-8

υαδικοί Σχεσιακοί Τελεστές Φυσική Συνένωση (Natural Join) Φυσική Συνένωση (Natural Join, Σύμβολο * ) Εξειδίκευση του τελεστή equi-join (δηλ., μόνο =) με τους εξής περιορισμούς: 1. Οι τελεσταίοι έχουν το ίδιο όνομα στο γνώρισμα συνένωσης, π.χ., Department * Dept_Locations (Dnumber = Dnumber) OK Department * Employee (SSN=Mgr_SSN) Μη-επιτρεπτό Σε αυτή την περίπτωση πρέπει να γίνει πρώτα μετονομασία του εν λόγω πεδίου π.χ., ρ D (Mgr_SSN->SSN) (D) μετά Dept_Mgr=D * E 2. Το κοινό γνώρισμα εμφανίζεται στο αποτέλεσμα 1 φορά. Π.χ., 10-9

υαδικοί Σχεσιακοί Τελεστές Φυσική Συνένωση (Natural Join) Παράδειγμα Ι: DEPT_LOCS DEPARTMENT * DEPT_LOCATIONS 10-10

υαδικοί Σχεσιακοί Τελεστές Φυσική Συνένωση (Natural Join) Παράδειγμα ΙΙ: Για κάθε Project τύπωσε τις πληροφορίες του Department που ανήκει PROJ_DEPT PROJECT * ρ Dnumber Dnum (DEPARTMENT) 10-11

υαδικοί Σχεσιακοί Τελεστές Φυσική Συνένωση (Natural Join) Παράδειγμα ΙΙΙ: Q R(A,B,C,D) * S(C,D,E) Η υπονοούμενη συνθήκη συνένωσης περιλαμβάνει όλα τα ζεύγη γνωρισμάτων με το ίδιο όνομα, για τα οποία δημιουργούμε μια σύζευξη (AND): ηλ., R.C=S.C AND R.D=S.D Το αποτέλεσμα διατηρεί μόνο μια φορά κάθε γνώρισμα, δηλ.: Q(A,B,C,D,E) 10-12

Κλειστότητα Σχεσιακών Τελεστών Complete Set of Relational Operations To σύνολο σχεσιακών τελεστών {,,,,, X} ονομάζεται κλειστό σύνολο (complete set) διότι κάθε έκφραση σχεσιακής άλγεβρας μπορεί να διατυπωθεί από τον συνδυασμό των πιο πάνω τελεστών: Π.χ., : R S = (R S ) ((R S) (S R)) R <join condition> S = <join condition> (R X S) R S 10-13

Περιεχόμενο ιάλεξης Κεφάλαιο 6: Προχωρημένη Σχεσιακή Άλγεβρα 6.3) υαδικοί Σχεσιακοί Τελεστές: ιαίρεση, Συμβολισμός για ένδρα Επερωτήσεων 6.4) Επιπλέον Σχεσιακές Πράξεις: Συναθροιστικές Συναρτήσεις (Aggregate Functions) Γενικευμένη Προβολή (Generalized Projection) Ομαδοποίηση (Grouping) Πράξεις Αναδρομικής Κλειστότητας (Recursive Closure) Πράξεις Εξωτερικής Συνένωσης (Outer Join) 6.5) Παραδείγματα Επερωτήσεων σε Σχεσιακή Άλγεβρα με το Σχήμα Βάσης University και το Σχήμα Sailors-Reserve-Boats 10-14

υαδικοί Σχεσιακοί Τελεστές ιαίρεση (Division) Ο τελεστής της ιαίρεσης (Division, /), παρόλο που ΕΝ υποστηρίζεται σε πραγματικές γλώσσες βάσεων δεδομένων*, είναι χρήσιμος στο πλαίσιο της Σχεσιακής Άλγεβρας για να διατυπώσει επερωτήσεις της μορφής: Βρες τους Suppliers που προσφέρουν ΌΛΑ τα Parts Π.χ., (όπως προσδιορίζονται τα Parts). sno pno s1 p1 s1 p2 s1 p3 s1 p4 s2 p1 s2 p2 s3 p2 s4 p2 s4 p4 PARTS pno p2 p4 / = s1 sno * Στην συνέχεια θα δούμε πως ο τελεστής μπορεί να υλοποιηθεί με χρήση 10-15 υπαρκτών EPL342: τελεστών Databases της SQL - Demetris (δηλ., αντίστοιχους Zeinalipour (University τελεστές of των Cyprus) σ-π-x) s4

υαδικοί Σχεσιακοί Τελεστές ιαιρετέος (nominator) sno pno s1 p1 s1 p2 s1 p3 s1 p4 s2 p1 s2 p2 s3 p2 s4 p2 s4 p4 A ιαίρεση (Division) sno s1 s2 s3 s4 A/B1 ιαιρέτες (denominators) pno / / pno p2 p2 B1 p4 Απάντηση; B2 Απάντηση; sno s1 s4 A/B2 Αναπαράσταση ιαίρεσης με Ποσοδείκτες Α / Β = { x (x,y) A y B} / pno p1 p2 p4 B3 Απάντηση; sno s1 A/B3 10-16

ιαίρεση (Division) Επιπλέον Παραδείγματα / = / = 10-17

Expressing A/B Using Basic Operators Σημειώστε ότι η διαίρεση (/) ΕΝ είναι βασικός τελεστής αλλά αποτελεί βολική συντομογραφία Το ίδιο ισχύει και για την Συνένωση ( ), θυμηθείτε ότι R Θ S= Θ (R S). Ωστόσο η συνένωση είναι πραγματικά χρήσιμη (για αυτό υλοποιείται από την SQL ως ξεχωριστός τελεστής) Εφόσον η διαίρεση δεν υπάρχει ως τελεστής σε πραγματικές γλώσσες, ποια ακολουθία τελεστών σ-π-x θα μας επέστρεφε το ίδιο λογικό αποτέλεσμα; Έκφραση ιαίρεσης με τελεστές σ-π-x A/ B= π x (Α) π x ((π x (Α) B) A) Η επόμενη διαφάνεια εξηγεί την πιο πάνω έκφραση 10-18

υαδικοί Σχεσιακοί Τελεστές ιαίρεση (Division) A/ B= π x (Α) π x ((π x (Α) B) A) = all_results disqualifying_results all_results: Όλες οι δυνατές πλειάδες του αποτελέσματος π.χ., όλοι οι suppliers π x (Α) = { s 1, s 2, s 3, s 4 } Από το all_results πρέπει να αφαιρέσουμε τους ακατάλληλους suppliers (disqualifying_results) π χ αυτούς που ΕΝ προσφέρουν ΟΛΑ τα parts y Β. (δηλ., s 2, s 3 ) disqualifying_results συμβολίζεται με [ π x ((π x (Α) B) A)] Η επεξήγηση του πιο πάνω ακολουθεί διαγραμματικά x s1 s2 s3 x s1 s1 y p2 p4 y s2 p2 p2 s2 p4 p4 = s3 p2 s3 p4 s4 B s4 p2 π s4 p4 x (Α) (π x (Α) B) Όλοι οι υνατοί Συνδυασμοί x s1 s1 s1 s1 s2 s2 s3 y p1 p2 p3 p4 p1 p2 p2 s4 p2 A s4 p4 Πραγματικοί Συνδυασμοί x s1 s1 s1 s1 s2 s2 s3 s4 s4 Α Β y p2 p4 sno s2 s3 y p1 p2 p3 p4 p1 p2 p2 p2 p4 Disqualifying_ results = Τέλος, Α/Β = {s1,s2,s3,s4} {s2,s3} = {s1, 10-19 s4}

Επανάληψη Τελεστών Σχεσιακής Άλγεβρας 10-20

Επανάληψη Τελεστών Σχεσιακής Άλγεβρας 10-21

ένδρο Επερώτησης (Query Tree) ένδρο Επερώτησης (Query Tree) Είναι μια δενδρική δομή που αντιστοιχεί σε μια έκφραση της Σχεσιακής Άλγεβρας η οποία δείχνει με ποια ακολουθία πρέπει να εκτελεστούν οι τελεστές Τερματικοί Κόμβοι: Σχέσεις Εισόδου Εσωτερικοί Κόμβοι: Τελεστές To δένδρο στα δεξιά, αναπαριστάται από την έκφραση Σ.Α.: T1 σ P.Plocation= Stafford (P) T2 T1 DNum=DNumber D T3 T2 Mgr_ssn=ssn D T4 π Pnumber, Dnum,Address, Bdate (T3) 10-22

ένδρο Επερώτησης (Query Tree) Ένα ένδρο Επερώτησης (Query Tree) ονομάζεται και ένδρο Αποτίμησης Επερωτήσεων (Query Evaluation Tree) Η βάση δεδομένων επιλεγεί συνήθως μόνο τα αριστεροβαθή δένδρα (αυτά στα οποία το δεξί παιδί είναι σχέση εισόδου γιατί με αυτό τον τρόπο τα αποτελέσματα μπορεί να σωληνώνονται μεταξύ τελεστών (pipelined) Σημειώστε ότι υπάρχουν πολλά τέτοια πιθανά δένδρα n!, όπου n o αριθμός των σχέσεων (διάταξη χωρίς επανατοποθέτηση) 10-23

Επιπλέον Σχεσιακοί Τελεστές (Additional Relational Operators) Η σχεσιακή άλγεβρα, όπως προτάθηκε δεν είχε πρόνοιες για κάποια είδη χρήσιμων πράξεων, π.χ., Συναθροιστικές Συναρτήσεις (Aggregate Functions) Εύρεση απλών στατιστικών των πινάκων (π.χ., μέση ηλικία, μέγιστος βαθμός φοιτητή, αριθμός φοιτητών σε μια σχέση κτλ.) Ομαδοποίηση (Grouping) των συναθροιστικών αποτελεσμάτων (π.χ., ανά Τμήμα) Πράξεις Αναδρ. Κλειστότητας (Recursive Closure) για εύρεση απαντήσεων αναδρομικά σε μια σχεση Πράξεις Εξωτερικής Συνένωσης (Outer Join) για συμπερίληψη πλειάδων που δεν συνενώνονται Πολλές από τις πιο πάνω πράξεις υποστηρίζονται σήμερα και τόσο στο τυπικό επίπεδο (δηλ., στη Σχεσιακή Άλγεβρα όσο και στο πρακτικό επίπεδο (δηλ., στη SQL, QBE, κτλ.) 10-24

Επιπλέον Σχεσιακοί Τελεστές (Συναθροιστικές Συναρτήσεις) Συναθροιστικές Συναρτήσεις (Aggregate Functions): Προσδιορίζουν μαθηματικές πράξεις πάνω σε συλλογές τιμών της βάσης: <function-list>(relation) Function List: ΜΙΝ, ΜΑΧ, SUM, COUNT, AVERAGE, Παράδειγμα: Βρες τη μέση ηλικία των υπάλληλων Average(age) (EMPLOYEE) Η συνάρτηση COUNT χρησιμοποιείται για να μετριούνται πλειάδες ή τιμές. εν μετριούνται τα NULL και τα διπλότυπα (duplicates) Στην SQL, όπου οι σχέσεις (πίνακες) ενδέχεται να περιέχουν διπλότυπα (duplicates) χρησιμοποιείται και η έννοια του COUNT DISTINCT για να MHN μετριούνται ξανά τα διπλότυπα. Στη Σχεσιακή Άλγεβρα ωστόσο δεν υπάρχει αυτό το πρόβλημα εφόσον οι σχέσεις ακολουθούν πιστά την έννοια του συνόλου. 10-25

Επιπλέον Σχεσιακοί Τελεστές (Συναθροιστικές Συναρτήσεις) Παραδείγματα Χρήσης του Τελεστή Συναθροιστικής Συνάρτησης MAX(Salary) (EMPLOYEE) επιστρέφει την μέγιστη τιμή του πεδίου Salary που εμφανίζεται στη σχέση EMPLOYEE. MIN(Salary) (EMPLOYEE) επιστρέφει την ελάχιστη τιμή του πεδίου Salary που εμφανίζεται στη σχέση EMPLOYEE. SUM(Salary) (EMPLOYEE) επιστρέφει το άθροισμα του πεδίου Salary που εμφανίζεται στη σχέση EMPLOYEE. COUNT(SSN), AVERAGE(Salary) (EMPLOYEE) επιστρέφει τον αριθμό των υπαλλήλων και τον μέσο όρο των μισθών τους 10-26

Επιπλέον Σχεσιακοί Τελεστές (Ομαδοποίηση με Συναθροιστικές Συναρτήσεις) Ομαδοποίηση (Grouping) Οι συναθροιστικές συναρτήσεις μπορεί να εφαρμόζονται σε επί μέρους (ομαδοποιημένα) υποσύνολα μιας σχέσης Π.χ., Βρες τον Μέσο Μισθό ανά Τμήμα (αντί για όλη την εταιρεία). Ο τελεστής της συνάθροισης επεκτείνεται ως ακολούθως: <grouping-list> <function-list> (Relation) To αποτέλεσμα περιλαμβάνει τα πεδία που προσδιορίζονται στο function-list και το επιπλέον πεδίο(α) του grouping-list Παράδειγμα Ερώτηση: Για κάθε τμήμα, ανάκτησε το DNO, τον αριθμό των υπαλλήλων και τον μέσο μισθό ανά τμήμα Απάντηση: DNO COUNT(SSN), AVERAGE(Salary) (EMPLOYEE) 10-27

Επιπλέον Σχεσιακοί Τελεστές (Ομαδοποίηση με Συναθροιστικές Συναρτήσεις) Εάν θέλουμε μπορούμε να μετονομάσουμε τα αποτελέσματα έτσι ώστε αυτά να έχουν εξειδικευμένα ονόματα γνωρισμάτων R(Dno, No_of_employees, Average_sal) DNO COUNT(SSN), AVERAGE(Salary) (EMPLOYEE) 10-28

Επιπλέον Σχεσιακοί Τελεστές (Ομαδοποίηση + Επιλογή με Συναθρ. Συναρ.) Ομαδοποίηση με Επιλογή (HAVING) Φιλτράρει το αποτέλεσμα μιας ομαδοποίησης π.χ., να βρούμε και πάλι τον αριθμό υπαλλήλων και τον μέσο όρο μισθών ανά τμήμα αλλά να τυπώσουμε μόνο τα αποτελέσματα όπου Count>3. Στη SQL υπάρχει εξειδικευμένος τελεστής για αυτή τη συχνή λειτουργία ο οποίος ονομάζεται HAVING (θα μελετηθεί αργότερα) Στη Σχεσιακή Άλγεβρα μπορεί να λυθεί με συνδυασμό Συναθροιστικής συνάρτησης ακολουθούμενο από επιλογή. Το παράδειγμα στην επόμενη διαφάνεια δείχνει πως 10-29

Επιπλέον Σχεσιακοί Τελεστές (Ομαδοποίηση + Επιλογή με Συναθρ. Συναρ.) Q1: Βρες τα ονόματα όλων των υπαλλήλων με δυο ή περισσότερους εξαρτώμενους (dependents). // Καταμέτρηση (COUNT) Εξαρτωμένων κάθε ατόμου 1. T1(Ssn, Dcount) ESSN COUNT(Dependent_name) (DEPENDENT) // Φιλτράρισμα Συναρθροιστικού Αποτελέσματος με Επιλογή 2. T2 σ Dcount 2 (T1) // Προβολή Αποτελεσμάτων (μέσω φυσικής συνένωσης πάνω στο SSN) 3. RESULT π LNAME, FNAME (T2 *EMPLOYEE) 10-30

Επιπλέον Σχεσιακοί Τελεστές (Γενικευμένη Προβολή) Γενικευμένη Προβολή (Generalized Projection): Επεκτείνει την πράξη της προβολής επιτρέποντας να συμπεριληφθούν στη λίστα της προβολής συναρτήσεις γνωρισμάτων, δηλ., π F1, F2,, Fn (R), όπου F i (i n) μπορεί να είναι συνάρτηση γνωρίσματος ή σταθερά. Π.χ., Υποθέστε το ακόλουθο Σχήμα: EMPLOYEE(Ταυτότητα, Μισθός, Αποκοπές, Χρόνια_Υπηρεσίας) Π Ταυτότητα, Μισθός-Αποκοπές, 2000*Χρόνια_Υπηρεσίας, 0.25*Μισθός (EMPLOYEE) Απλό Γνώρισμα Καθαρός Μισθός Bonus Φορολογία 10-31

Επιπλέον Σχεσιακοί Τελεστές (Αναδρομική Κλειστότητα) Αναδρομική Κλειστότητα (Recursive or Transitive Closure Operations): Επεξήγηση με Παράδειγμα: Supervisor(123456789) 333445555 Supervisor(333445555) 888665555 Supervisor(888665555) NULL Supervisor(123456789) σε όλα τα πιο πάνω επίπεδα? Απάντηση Α= {333445555, 888665555, NULL} Το Α ορίζει την αναδρομική κλειστότητα του Supervisor(123456789) οθέστε το ακόλουθο σχήμα 10-32

Επιπλέον Σχεσιακοί Τελεστές (Αναδρομική Κλειστότητα) Αναδρομική Κλειστότητα (Recursive Closure Operations) Στη Σχεσιακή Άλγεβρα δεν υπάρχει τελεστής που να υποστηρίζει αυτή την πράξη. Μπορούμε ωστόσο να το υποστηρίξουμε με μια σειρά ενώσεων (δες επόμενη διαφάνεια). Σε SQL3, που θα δούμε αργότερα, θα είναι δυνατό να υλοποιηθεί με κάποιο διαδικαστικό τρόπο, με χρήση επαναλήψεων, ή μέσω κάποιου εξειδικευμένου τελεστή. Μια ιδέα είναι η χρήση του αλγορίθμου Floyd- Warshall, το οποίο βρίσκει το ελάχιστο μονοπάτι μεταξύ οποιονδήποτε κορυφών(και κατ επέκταση όλα τα δυνατά ζεύγη) 10-33

Επιπλέον Σχεσιακοί Τελεστές (Αναδρομική Κλειστότητα) Αναδρομική Κλειστότητα σε Σχεσιακή Άλγεβρα supervises Borg Ερώτημα (Q5): Βρες τους υφιστάμενους (supervisees) του James Borg μέχρι 2 επίπεδα κάτω. Απάντηση: A B 1. BORG_SSN π SSN (σ Fname= James AND Lname= Borg (EMPLOYEE)) C 2. SUPERVISION(SSN1,SSN2) π SSN, Super_ssn (EMPLOYEE) // Υφιστάμενοι του James Borg σε επίπεδο 1 3. RESULT1(SSN)= π SSN1 (SUPERVISION SSN2=SSN BORG_SSN)) // Υφιστάμενοι των Άμεσα Υφιστάμενων του James Borg (σε επίπεδο 2) 4. RESULT2(SSN)= π SSN1 (SUPERVISION SSN2=SSN RESULT1)) 5. RESULT RESULT2 RESULT1 10-34

Επιπλέον Σχεσιακοί Τελεστές (Αναδρομική Κλειστότητα) BORG SSN: 888665555 Υφιστάμενοι Borg Επιπέδου 1 Υφιστάμενοι Borg Επιπέδου 2 RESULT2 RESULT1 10-35

Επιπλέον Σχεσιακοί Τελεστές (Εξωτερική Συνένωση, Outer Join =, =, = =) Εξωτερική Συνένωση (Outer Join) Παράδειγμα Sailors =5 sid sname rating age 22 dustin 7 45.0 28 yuppy 9 35.0 31 lubber 8 55.5 44 guppy 5 35.0 58 rusty 10 35.0 sid=sid Reserves =6 sid bid Σε μια Θ-συνένωση τo αποτέλεσμα περιλαμβάνει MONO τις πλειάδες που έχουν το ίδιο γνώρισμα συνένωσης (δηλ., το sid): SAILOR sid=sid RESERVES = {(28, yuppy, 9, 35.0, 103, 12/4/06), (28, yuppy, 9, 35.0, 103, 11/3/06), (31, lubber, 8, 55.5, 101, 10/10/06), (31, lubber, 8, 55.5, 102, 10/12/06), (31, lubber, 8, 55.5, 101, 10/11/06), (58, rusty, 10, 35.0, 103, 11/12/06)} Συχνά, θέλουμε να έχουμε στο αποτέλεσμα ΟΛΕΣ τις πλειάδες της ΑΡΙΣΤΕΡΗΣ σχέσης, δηλ., να περιλαμβάνει και τις πλειάδες (22,dustin,7,45.0,NULL,NULL), (44,guppy,5,35.0,NULL, NULL) Το πιο πάνω είναι παράδειγμα Αριστερής Εξ. Συν. (left outer join, = ) Κατά αντίστοιχο τρόπο δημιουργούνται και οι έννοιες της δεξιάς (right outer join, =) και Πλήρης Εξωτερικής συνένωσης (full outer join,= =) 10-36 day 28 103 12/4/06 28 103 11/3/06 31 101 10/10/06 31 102 10/12/06 31 101 10/11/06 58 103 11/12/06

Επιπλέον Σχεσιακοί Τελεστές (Εξωτερική Συνένωση, Outer Join =, =, = =) EMPLOYEE = DNO=Dnumber DEPARTMENT_SUB 2 2 2 2 2 Τυπικά, το σενάριο αυτό δεν είναι εφικτό λόγω του κανόνα αναφορικής ακεραιότητας, προκύπτει ωστόσο σε συνένωση μηκλειδιων DEPARTMENT_SUB DNO=Dnumber H εξωτερική συνένωση είναι χρήσιμη για παραγωγή αποτελεσμάτων που θέλουν στο αποτέλεσμα όλες τις εγγραφές μιας οντότητας ανεξάρτητα εάν συνενώνονται ή όχι. = 10-37

Παραδείγματα Σχεσιακής Άλγεβρας (Σχήμα UNIVERSITY) 10-38

Παραδείγματα Σχεσιακής Άλγεβρας 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) 10-39

Παραδείγματα Σχεσιακής Άλγεβρας 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) 10-40

Παραδείγματα Σχεσιακής Άλγεβρας Smith Q4: ημιουργήστε μια λίστα από projects τα οποία περιλαμβάνουν ένα υπάλληλο με το επίθετο Smith, ως υπάλληλο ή* ως manager του τμήματος που ελέγχει το εν λόγω project. Αναλύοντας το πιο πάνω ερώτημα βρίσκουμε ότι το αποτέλεσμα θα πρεπει να είναι της μορφής (δηλ., να είναι ένωση αποτελεσμάτων) π Pnumber (SMITH_WORKER_PROJS SMITH_MGR_PROJS) Στην επόμενη διαφάνεια δείχνουμε αναλυτικά την απάντηση. * Εάν το ή ήταν συμμετρική διάφορα (δηλαδή είτε ή) τότε θα έπρεπε να εφαρμόσουμε την ισοδυναμία R S = (R S) (S R) 10-41

Παραδείγματα Σχεσιακής Άλγεβρας 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)) 10-42

Παραδείγματα Σχεσιακής Άλγεβρας 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 αντί και τα τρία πεδία. 10-43