Βάσεις Δεδομένων (Databases) ΕΠΛ 342 Χειμερινό Εξάμηνο 2011 Διδάσκοντες Καθηγητές Γιώργος Σαμάρας (ΧΩΔ01 109)
Σύνδεση Ισότητας (Equi-Join) Θ στην σύνδεση είναι = (=-Join) r r.ai = s.aj s =-σύνδεση του r(r) και s(s): r r.b = s.d s =? σχέση s C D 3 4 6 8 σχέση r A B C D 1 2 3 4 2 3 3 5 2 4 6 8 1 2 6 8 2 6 6 8 8 2 3 4 2 4 3 4
Γενική Σύνδεση (Θ-Join) A B C D Θ = {=,<,, >,, } Θ-join του r(r) και s(s) στα χαρακτηριστικά r.a i και s.a j r r.ai θ s.aj s = σ r.ai θ s.aj (r x s) σχέση r 1 2 3 4 2 3 3 5 2 4 6 8 1 2 6 8 2 6 6 8 8 2 3 4 2 4 3 4 -join του r(r) και s(s): r r.b s.d s =? σχέση s C D 3 4 6 8
Σύνδεση-Θ (Θ-Join) -join του r(r) και s(s): r r.b s.d s =? r.ar r.b r.c r.d s.c s.d 2 4 6 8 3 4 2 4 3 4 3 4 2 6 6 8 3 4 σχέση r A B C D 1 2 3 4 2 3 3 5 2 4 6 8 1 2 6 8 2 6 6 8 8 2 3 4 2 4 3 4 σχέση s C D 3 4 6 8
Δυαδικοί Σχεσιακοί Τελεστές Τελεστής Συνένωσης (JOIN) Επερώτηση: Βρείτε το όνομα του manager κάθε department. a) Πρέπει να συνδυάσουμε κάθε πλειάδα του πινάκα Department με τις πλειάδες του πίνακα Employee. R = (DEPARTMENT EMPLOYEE) b) Μέτα πρέπει να επιλέξουμε τις πλειάδες για τις οποίες ισχύει το Mgr_ssn=SSN, δηλ., σ Mgr_ssn = SSN (R) Αποτέλεσμα Το a-b ισοδυναμεί με την έκφραση: DEPARTMENT Mgr_ssn = SSN EMPLOYEE
Φυσική Σύνδεση (Natural-Join) Equi-join χωρίς τις διπλές στήλες r P s P=λίστα από χαρακτηριστικά: P=R S r s =π R S (r r.p = s.p s) r s =? σχέση s C D 3 4 6 8 σχέση r A B C D 1 2 3 4 2 3 3 5 2 4 6 8 1 2 6 8 2 6 6 8 8 2 3 4 2 4 3 4
Δυαδικοί Σχεσιακοί Τελεστές Φυσική Συνένωση (Natural Join) Παράδειγμα Ι: DEPT_LOCS DEPARTMENT * DEPT_LOCATIONS
Δυαδικοί Σχεσιακοί Τελεστές Φυσική Συνένωση (Natural Join) Παράδειγμα ΙΙ: Για κάθε Project τύπωσε τις πληροφορίες του Department που ανήκει PROJ_DEPT PROJECT * ρ Dnumber Dnum (DEPARTMENT)
Παραδείγματα από την βιβλιοθήκη DB Σχήμα βιβλιοθήκης DB: LIBRARIAN(Name, SSN, SNO, BirthPlace) SECTION(SName, SNO, Head) OUTREACH(Pname, PNO, SNUM, Location) WORKSON(LSSN,PNO,Hours) Για κάθε εκδήλωση (outreach project) στη Λευκωσία, επιστρέψτε το αριθμό της εκδήλωσης (PNO), το υπεύθυνο τμήμα και το όνομα του επικεφαλή του. Βρείτε όλους τους βιβλιοθηκάριους (librarians Name & SSN) που εργάζονται σε εκδηλώσεις (projects) που εντοπίζονται στον τόπο της γέννησής τους.
Διαίρεση (Division) Έστω r(r) και s(s) σχέσεις έτσι ώστε S R Η διαίρεση του r από το s, συμβολίζετε r s, είναι σχέση της οποίας το σχήμα είναι Q=R-S και περιλαμβάνει όλες τις t έτσι ώστε t Π Q (r) και {t} x S R σχέση r A B C D 1 2 3 4 2 3 3 5 2 4 6 8 1 2 6 8 8 2 3 4 2 4 3 4 σχέση s C D 3 4 6 8 r s A B 1 2 2 4
Χρήση της Διαίρεσης Σημείωση: Ερώτημα: Επιστρέψτε τα ονόματα των φοιτητών που πήραν όλες τις τάξεις που πήρε ο John. σχέση r σχέση s FN LN DP No DP No Η διαίρεση μπορεί να εκφρασθεί με την χρήση των π, x και τελεστών: r s= π Q (r) π Q ((π Q (r) x s) r) S A CS 4 M K CS 5 K L EE 8 S A EE 8 F S CS 4 K L CS 4 CS 4 EE 8 FN LN S K r s A L
* Στην συνέχεια θα δούμε πως ο τελεστής μπορεί να υλοποιηθεί με χρήση υπαρκτών τελεστών της SQL (δηλ., αντίστοιχους τελεστές των σ-π-x) Διαίρεση (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 / = sno s1 s4
Διαίρεση (Division) Διαιρετέος (nominator) sno pno s1 p1 s1 p2 s1 p3 s1 p4 s2 p1 s2 p2 s3 p2 s4 p2 s4 p4 A 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
Παραδείγματα Ερωτημάτων Σχήματα R=(A,B) και S=(C,D); Σχέσεις r(r) και s(s) Βρείτε όλες τις πλειάδες της r με χαρακτηριστικό B που δεν είναι ίσο με το χαρακτηριστικό C κάποιας πλειάδας στην S Π ΑΒ (r B C s) Βρείτε όλες τις πλειάδες της r με χαρακτηριστικό B που δεν είναι ίσο με το χαρακτηριστικό C οποιασδήποτε πλειάδας στην S r Π ΑΒ (r B=C s) r Π ΑΒ ((r A=C s) (r B=C s)) Βρείτε όλες τις πλειάδες της r που είτε τα χαρακτηριστικά της Α ή Β δεν είναι ίσα με το χαρακτηριστικό C οποιασδήποτε πλειάδας στην S
Κενές (NULL) Τιμές Μια Null τιμή σημαίνει: Η παρούσα τιμή είναι άγνωστη Ιδιότητα μη εφαρμόσιμη Προβλήματα με την τιμή Null: Πώς να γίνουν αριθμητικές πράξεις (π.χ., 3 + NULL) ή συγκρίσεις (π.χ.,120 > NULL) Πώς να γίνουν λογικές πράξεις όπως true ή false 3 Λογικές καταστάσεις: true (T), false (F), unknown (U) OR, AND, NOT
Πίνακες Επαλήθευσης X TRUE UNK FALSE NOT FALSE UKN TRUE OR TRUE UNK FALSE TRUE TRUE TRUE TRUE UNK TRUE UNK UNK FALSE TRUE UNK FALSE AND TRUE UNK FALSE TRUE TRUE UNK FALSE UNK UNK UNK FALSE FALSE FALSE FALSE FALSE