Department of Computer Science University of Cyprus EPL342 Databases Lecture 10: RA IΙΙ RA Advanced + Examples (Chapter 6.4-6.5, Elmasri-Navathe 5ED) Demetris Zeinalipour 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
Πεξηερόκελν Γηάιεμεο Κεθάιαην 6: Πξνρωξεκέλε ρεζηαθή Άιγεβξα 6.3) Γπαδηθνί Σρεζηαθνί Τειεζηέο: Γηαίξεζε, Σπκβνιηζκόο γηα Γέλδξα Δπεξωηήζεωλ 6.4) Δπηπιένλ Σρεζηαθέο Πξάμεηο: πλαζξνηζηηθέο πλαξηήζεηο (Aggregate Functions) Γεληθεπκέλε Πξνβνιή (Generalized Projection) Οκαδνπνίεζε (Grouping) Πξάμεηο Αλαδξνκηθήο Κιεηζηόηεηαο (Recursive Closure) Πξάμεηο Δμωηεξηθήο πλέλωζεο (Outer Join) 6.5) Παξαδείγκαηα Δπεξσηήζεσλ ζε Σρεζηαθή Άιγεβξα κε ην Σρήκα Βάζεο University θαη ην Σρήκα Sailors-Reserve-Boats 10-3
Γπαδηθνί Σρεζηαθνί Τειεζηέο Γηαίξεζε (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 * Σηελ ζπλέρεηα ζα δνύκε πσο ν ηειεζηήο κπνξεί λα πινπνηεζεί κε ρξήζε ππαξθηώλ ηειεζηώλ EPL342: Databases ηεο SQL - Demetris (δει., αληίζηνηρνπο Zeinalipour (University ηειεζηέο of ησλ Cyprus) ζ-π-x) s4 10-4
Γπαδηθνί Σρεζηαθνί Τειεζηέο Γηαηξεηένο (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-5
Expressing A/B Using Basic Operators Σεκεηώζηε όηη ε δηαίξεζε (/) ΓΔΝ είλαη βαζηθόο ηειεζηήο αιιά απνηειεί βνιηθή ζπληνκνγξαθία Τν ίδην ηζρύεη θαη γηα ηελ πλέλωζε ( ), ζπκεζείηε όηη R Θ S= Θ (R S). Ωζηόζν ε ζπλέλσζε είλαη πξαγκαηηθά ρξήζηκε (γηα απηό πινπνηείηαη από από ηελ SQL σο μερσξηζηόο ηειεζηήο) Εθόζον η διαίπεζη δεν ςπάπσει ωρ ηελεζηήρ ζε ππαγμαηικέρ γλώζζερ, ποια ακολοσθία ηελεζηών ζ-π-x θα μαρ επέζηπεθε ηο ίδιο λογικό αποηέλεζμα; Έκθραζη Γιαίρεζης με ηελεζηές ζ-π-x A / B = π x (Α) - π x ( (π x (Α) B) - A) Η επόκελε δηαθάλεηα εμεγεί ηελ πην πάλσ έθθξαζε 10-7
Γπαδηθνί Σρεζηαθνί Τειεζηέο Γηαίξεζε (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-8 s4}
Γέλδξν Δπεξώηεζεο (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-11
Γέλδξν Δπεξώηεζεο (Query Tree) Έλα Γέλδξν Δπεξώηεζεο (Query Tree) νλνκάδεηαη θαη Γέλδξν Απνηίκεζεο Δπεξωηήζεωλ (Query Evaluation Tree) Η βάζε δεδνκέλσλ επηιεγεί ζπλήζσο κόλν ηα αξηζηεξνβαζή δέλδξα (απηά ζηα νπνία ην δεμί παηδί είλαη ζρέζε εηζόδνπ γηαηί κε απηό ηνλ ηξόπν ηα απνηειέζκαηα κπνξεί λα ζσιελώλνληαη κεηαμύ ηειεζηώλ (pipelined) Σεκεηώζηε όηη ππάξρνπλ πνιιά ηέηνηα πηζαλά δέλδξα n!, όπνπ n o αξηζκόο ησλ ζρέζεσλ (δηάηαμε ρσξίο επαλαηνπνζέηεζε) 10-12
Δπηπιένλ Σρεζηαθνί Τειεζηέο (Additional Relational Operators) Η ζρεζηαθή άιγεβξα, όπσο πξνηάζεθε δελ είρε πξόλνηεο γηα θάπνηα είδε ρξήζηκωλ πξάμεωλ, π.ρ., πλαζξνηζηηθέο πλαξηήζεηο (Aggregate Functions) Δύξεζε απιώλ ζηαηηζηηθώλ ησλ πηλάθσλ (π.ρ., κέζε ειηθία, κέγηζηνο βαζκόο θνηηεηή, αξηζκόο θνηηεηώλ ζε κηα ζρέζε θηι.) Οκαδνπνίεζε (Grouping) ησλ ζπλαζξνηζηηθώλ απνηειεζκάησλ (π.ρ., αλά Τκήκα) Πξάμεηο Αλαδξ. Κιεηζηόηεηαο (Recursive Closure) γηα εύξεζε απαληήζεσλ αλαδξνκηθά ζε κηα ζρεζε Πξάμεηο Δμωηεξηθήο πλέλωζεο (Outer Join) γηα ζπκπεξίιεςε πιεηάδσλ πνπ δελ ζπλελώλνληαη Πνιιέο από ηηο πην πάλσ πξάμεηο ππνζηεξίδνληαη ζήκεξα θαη ηόζν ζην ηππηθό επίπεδν (δει., ζηε Σρεζηαθή Άιγεβξα όζν θαη ζην πξαθηηθό επίπεδν (δει., ζηε SQL, QBE, θηι.) 10-13
Δπηπιένλ Σρεζηαθνί Τειεζηέο (Σπλαζξνηζηηθέο Σπλαξηήζεηο) πλαζξνηζηηθέο πλαξηήζεηο (Aggregate Functions): Πξνζδηνξίδνπλ καζεκαηηθέο πξάμεηο πάλσ ζε ζπιινγέο ηηκώλ ηεο βάζεο: F <function-list> (Relation) Function List: ΜΙΝ, ΜΑΥ, SUM, COUNT, AVERAGE, Παξάδεηγκα: Βξεο ηε κέζε ειηθία ησλ ππάιιεισλ F Average(age) (EMPLOYEE) Η ζπλάξηεζε COUNT ρξεζηκνπνηείηαη γηα λα κεηξηνύληαη πιεηάδεο ή ηηκέο. Γελ κεηξηνύληαη ηα NULL θαη ηα δηπιόηππα (duplicates) Σηελ SQL, όπνπ νη ζρέζεηο (πίλαθεο) ελδέρεηαη λα πεξηέρνπλ δηπιόηππα (duplicates) ρξεζηκνπνηείηαη θαη ε έλλνηα ηνπ COUNT DISTINCT γηα λα MHN κεηξηνύληαη μαλά ηα δηπιόηππα. Σηε ρεζηαθή Άιγεβξα σζηόζν δελ ππάξρεη απηό ην πξόβιεκα εθόζνλ νη ζρέζεηο αθνινπζνύλ πηζηά ηελ έλλνηα ηνπ ζπλόινπ. 10-14
Δπηπιένλ Σρεζηαθνί Τειεζηέο (Σπλαζξνηζηηθέο Σπλαξηήζεηο) Παξαδείγκαηα Υξήζεο ηνπ Σειεζηή πλαζξνηζηηθήο πλάξηεζεο 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) επηζηξέθεη ηνλ αξηζκό ηωλ ππαιιήιωλ θαη ηνλ κέζν όξν ησλ κηζζώλ ηνπο 10-15
Δπηπιένλ Σρεζηαθνί Τειεζηέο (Οκαδνπνίεζε κε Σπλαζξνηζηηθέο Σπλαξηήζεηο) Οκαδνπνίεζε (Grouping) Οη ζπλαζξνηζηηθέο ζπλαξηήζεηο F κπνξεί λα εθαξκόδνληαη ζε επί κέξνπο (νκαδνπνηεκέλα) ππνζύλνια κηαο ζρέζεο Π.ρ., Βξεο ηνλ Μέζν Μηζζό αλά Σκήκα (αληί γηα όιε ηελ εηαηξεία). Ο ηειεζηήο ηεο ζπλάζξνηζεο επεθηείλεηαη σο αθνινύζσο: <grouping-list>f <function-list> (Relation) To απνηέιεζκα πεξηιακβάλεη ηα πεδία πνπ πξνζδηνξίδνληαη ζην function-list θαη ην επηπιένλ πεδίν(α) ηνπ grouping-list Παξάδεηγκα Δξώηεζε: Γηα θάζε ηκήκα, αλάθηεζε ην DNO, ηνλ αξηζκό ησλ ππαιιήισλ θαη ηνλ κέζν κηζζό αλά ηκήκα Απάληεζε: DNO F COUNT(SSN), AVERAGE(Salary) (EMPLOYEE) 10-16
Δπηπιένλ Σρεζηαθνί Τειεζηέο (Οκαδνπνίεζε κε Σπλαζξνηζηηθέο Σπλαξηήζεηο) Δάλ ζέινπκε κπνξνύκε λα κεηνλνκάζνπκε ηα απνηειέζκαηα έηζη ώζηε απηά λα έρνπλ εμεηδηθεπκέλα νλόκαηα γλσξηζκάησλ R(Dno, No_of_employees, Average_sal) DNO F COUNT(SSN), AVERAGE(Salary) (EMPLOYEE) 10-17
Δπηπιένλ Σρεζηαθνί Τειεζηέο (Οκαδνπνίεζε + Δπηινγή κε Σπλαζξ. Σπλαξ.) Οκαδνπνίεζε κε Δπηινγή (HAVING) Φηιηξάξεη ην απνηέιεζκα κηαο νκαδνπνίεζεο π.ρ., λα βξνύκε θαη πάιη ηνλ αξηζκό ππαιιήισλ θαη ηνλ κέζν όξν κηζζώλ αλά ηκήκα αιιά λα ηππώζνπκε κόλν ηα απνηειέζκαηα όπνπ Count>3. Σηε SQL ππάξρεη εμεηδηθεπκέλνο ηειεζηήο γηα απηή ηε ζπρλή ιεηηνπξγία ν νπνίνο νλνκάδεηαη HAVING (ζα κειεηεζεί αξγόηεξα) Σηε ρεζηαθή Άιγεβξα κπνξεί λα ιπζεί κε ζπλδπαζκό πλαζξνηζηηθήο ζπλάξηεζεο αθνινπζνύκελν από επηινγή. Τν παξάδεηγκα ζηελ επόκελε δηαθάλεηα δείρλεη πσο 10-18
Δπηπιένλ Σρεζηαθνί Τειεζηέο (Οκαδνπνίεζε + Δπηινγή κε Σπλαζξ. Σπλαξ.) 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) 10-19
Δπηπιένλ Σρεζηαθνί Τειεζηέο (Γεληθεπκέλε Πξνβνιή) Γεληθεπκέλε Πξνβνιή (Generalized Projection): Δπεθηείλεη ηελ πξάμε ηεο πξνβνιήο επηηξέπνληαο λα ζπκπεξηιεθζνύλ ζηε ιίζηα ηεο πξνβνιήο ζπλαξηήζεηο γλωξηζκάηωλ, δει., π F1, F2,, Fn (R), όποσ F i (i n) κπνξεί λα είλαη ζπλάξηεζε γλωξίζκαηνο ή ζηαζεξά. Π.ρ., Υπνζέζηε ην αθόινπζν Σρήκα: EMPLOYEE(Ταπηόηεηα, Μηζζόο, Απνθνπέο, Φξόληα_Υπεξεζίαο) Π Σαπηόηεηα, Μηζζόο-Απνθνπέο, 2000*Υξόληα_Τπεξεζίαο, 0.25*Μηζζόο (EMPLOYEE) Απλό Γνώπιζμα Καθαπόρ Μιζθόρ Bonus Φοπολογία 10-20
Δπηπιένλ Σρεζηαθνί Τειεζηέο (Αλαδξνκηθή Κιεηζηόηεηα) Αλαδξνκηθή Κιεηζηόηεηα (Recursive or Transitive Closure Operations): Δπεμήγεζε κε Παξάδεηγκα: Supervisor(123456789) 333445555 Supervisor(333445555) 888665555 Supervisor(888665555) NULL Supervisor(123456789) ζε όια ηα πην πάλσ επίπεδα? Απάληεζε Α= {333445555, 888665555, NULL} Τν Α νξίδεη ηελ αλαδξνκηθή θιεηζηόηεηα ηνπ Supervisor(123456789) νζέζηε ην αθόινπζν ζρήκα 10-21
Δπηπιένλ Σρεζηαθνί Τειεζηέο (Αλαδξνκηθή Κιεηζηόηεηα) Αλαδξνκηθή Κιεηζηόηεηα (Recursive Closure Operations) Σηε Σρεζηαθή Άιγεβξα δελ ππάξρεη ηειεζηήο πνπ λα ππνζηεξίδεη απηή ηελ πξάμε. Μπνξνύκε σζηόζν λα ην ππνζηεξίμνπκε κε κηα ζεηξά ελώζεωλ (δεο επόκελε δηαθάλεηα). Σε SQL3, πνπ ζα δνύκε αξγόηεξα, ζα είλαη δπλαηό λα πινπνηεζεί κε θάπνην δηαδηθαζηηθό ηξόπν, κε ρξήζε επαλαιήςεσλ, αιιά όρη κέζσ θάπνηνπ εμεηδηθεπκέλνπ ηειεζηή. Μηα ηδέα είλαη ε ρξήζε ηνπ αιγνξίζκνπ Floyd- Warshall, ην νπνίν βξίζθεη ην ειάρηζην κνλνπάηη κεηαμύ νπνηνλδήπνηε θνξπθώλ(θαη θαη επέθηαζε όια ηα δπλαηά δεύγε) 10-22
Δπηπιένλ Σρεζηαθνί Τειεζηέο (Αλαδξνκηθή Κιεηζηόηεηα) Αλαδξνκηθή Κιεηζηόηεηα ζε Σρεζηαθή Άιγεβξα 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-23
Δπηπιένλ Σρεζηαθνί Τειεζηέο (Αλαδξνκηθή Κιεηζηόηεηα) BORG SSN: 888665555 Τθηζηάκελνη Borg Δπηπέδνπ 1 Τθηζηάκελνη Borg Δπηπέδνπ 2 RESULT2 RESULT1 10-24
Δπηπιένλ Σρεζηαθνί Τειεζηέο (Δμσηεξηθή Σπλέλσζε, 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,= =) 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 10-25
Δπηπιένλ Σρεζηαθνί Τειεζηέο (Δμσηεξηθή Σπλέλσζε, Outer Join =, =, = =) EMPLOYEE = DNO=Dnumber DEPARTMENT_SUB 2 2 2 2 2 Σππηθά, ην ζελάξην απηό δελ είλαη εθηθηό ιόγω ηνπ θαλόλα αλαθνξηθήο αθεξαηόηεηαο, πξνθύπηεη ωζηόζν ζε ζπλέλωζε κεθιεηδηωλ DEPARTMENT_SUB DNO=Dnumber H εμσηεξηθή ζπλέλσζε είλαη ρξήζηκε γηα παξαγσγή απνηειεζκάησλ πνπ ζέινπλ ζην απνηέιεζκα όιεο ηηο εγγξαθέο κηαο νληόηεηαο αλεμάξηεηα εάλ ζπλελώλνληαη ή όρη. = 10-26
Παξαδείγκαηα Σρεζηαθήο Άιγεβξαο (Σρήκα UNIVERSITY) 10-27
Παξαδείγκαηα Σρεζηαθήο Άιγεβξαο 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-28
Παξαδείγκαηα Σρεζηαθήο Άιγεβξαο 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-29
Παξαδείγκαηα Σρεζηαθήο Άιγεβξαο Smith Q4: Γεκηνπξγήζηε κηα ιίζηα από projects ηα νπνία πεξηιακβάλνπλ έλα ππάιιειν κε ην επίζεην Smith, σο ππάιιειν ή* σο manager ηνπ ηκήκαηνο πνπ ειέγρεη ην ελ ιόγω project. Αλαιύνληαο ην πην πάλσ εξώηεκα βξίζθνπκε όηη ην απνηέιεζκα ζα πξεπεη λα είλαη ηεο κνξθήο (δει., λα είλαη έλσζε απνηειεζκάησλ) π Pnumber (SMITH_WORKER_PROJS SMITH_MGR_PROJS) Σηελ επόκελε δηαθάλεηα δείρλνπκε αλαιπηηθά ηελ απάληεζε. * Εάν ηο ή ήηαν ζςμμεηπική διάθοπα (δηλαδή είηε ή) ηόηε θα έππεπε να εθαπμόζοςμε ηην ιζοδςναμία R S = (R S) (S R) 10-30
Παξαδείγκαηα Σρεζηαθήο Άιγεβξαο 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-31
Παξαδείγκαηα Σρεζηαθήο Άιγεβξαο 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-32