Department of Computer Science University of Cyprus EPL342 Databases Lecture 8: RM I + RA I Relational Model + Relational Algebra (Chapter 5.2-5.3, 6.1 Elmasri-Navathe 5ED) Demetris Zeinalipour http://www.cs.ucy.ac.cy/courses/epl342 8-1
Πεξηερόκελν Γηάιεμεο Κεθάιαην 5: Τν Σρεζηαθό Μνληέιν Γεδνκέλωλ Πεξηνξηζκνί ρεζηαθνύ Μνληέινπ θαη Σρεζηαθά Σρήκαηα Πξάμεηο Δλεκεξώζεωλ θαη Αληηκεηώπηζε Παξαβηάζεωλ ηωλ Πεξηνξηζκώλ Κεθάιαην 6: Τππηθέο Γιώζζεο Δπεμεξγαζίαο Σρέζεωλ Δηζαγωγή (ρεζηαθή Άιγεβξα, Λνγηζκόο Πιεηάδσλ, Λνγηζκόο Πεδίσλ), Τύπνη Τειεζηώλ Σρεζηαθήο Άιγεβξαο (Μνλαδηαίνη, Γπαδηθνί, Σειεζηέο πλάζξνηζεο, θηι) Μνλαδηαίνη Σειεζηέο ρεζηαθήο Άιγεβξαο Σειεζηήο Δπηινγήο (ζ) θαη Ιδηόηεηεο Σειεζηήο Πξνβνιήο (π) θαη Ιδηόηεηεο Σειεζηήο Μεηνλνκαζίαο (ξ) 8-2
ρεζηαθνί Καλόλεο Αθεξαηόηεηαο (Relational Integrity Constraints) Μέρξη ηώξα είδακε δηαθόξνπο νξηζκνύο θαη ηα ραξαθηεξηζηηθά ηα νπνία αθνξνύλ κηα Σρέζε. ε κηα Σρεζηαθή Βάζε σζηόζν ππάξρνπλ πνιιέο Σρέζεηο Θπκεζείηε ηηο νληόηεηεο θαη ηηο ζπζρεηίζεηο ηνπ ER Μνληέινπ νη νπνίεο αλαπαξηζηώληαη θαη νη δπν ζαλ ρέζεηο (Πίλαθεο) ζην ρεζηαθό Μνληέιν. ε κηα ζρεζηαθή βάζε ππάξρνπλ επίζεο πνιινί ηύπνη πεξηνξηζκώλ, νη νπνίνη αλαθέξνληαη Σε κηα ζρέζε (π.ρ., πεξηνξηζκόο θιεηδηνύ, πεδίνπ νξηζκνύ θαη νληόηεηαο) ε πνιιαπιέο EPL342: Databases ζρέζεηο -(π.ρ., Demetris πεξηνξηζκόο Zeinalipour (University αλαθνξηθήο of Cyprus) αθεξαηόηεηαο) 8-3
ρεζηαθνί Καλόλεο Αθεξαηόηεηαο (Relational Integrity Constraints) Σρεζηαθνί Πεξηνξηζκνί (Relational Constraints) είλαη ζπλζήθεο νη νπνίεο πξέπεη λα ηζρύνπλ γηα θάζε έγθπξε θαηάζηαζε ζρέζεο (state). ην ζρεζηαθό κνληέιν ππάξρνπλ ηξεηο ηύπνη πεξηνξηζκώλ: A. Κιεηδηνύ (Key constraints) Άηππα: Κάζε ζρέζε έρεη έλα πξσηεύσλ θιεηδί. B. Αθεξαηόηεηαο Οληνηήηωλ (Entity integrity constraints) Άηππα: Σν πξσηεύσλ Κιεηδί δελ κπνξεί λα είλαη NULL C. Αλαθνξηθήο Αθεξαηόηεηαο (Referential integrity constraints) Άηππα: Δάλ κηα πιεηάδα Α αλαθέξεηαη ζε άιιε πιεηάδα B ηόηε ε Β πξέπεη λα ππάξρεη. Σέινο, ππάξρεη θαη ν Πεξηνξηζκόο Πεδίνπ Οξηζκνύ (Domain Constraint) ν νπνίνο εμππαθνύεηαη. Η ηηκή θάζε πιεηάδαο πξέπεη λα νξίδεηαη ζην αληίζηνηρν ηεο πεδίν νξηζκνύ (ή κπνξεί λα είλαη NULL, εάλ επηηξέπεηαη γηα ην ελ ιόγσ γλώξηζκα) 8-4
ρεζηαθνί Καλόλεο Αθεξαηόηεηαο Πεξηνξηζκνί Κιεηδηνύ (Key Constraints) Κιεηδί Σρέζεο (Relation Key): Ο ειάρηζηνο αξηζκόο γλωξηζκάηωλ πνπ πξνζδηνξίδεη κνλαδηθά κηα πιεηάδα θάπνηαο ζρέζεο R. Π.ρ., SSN ή StudentID γηα Student. Δλαιιαθηηθά (θαη πην απζηεξά): Υπεξθιεηδί ηεο R (Superkey of R): Έλα ζύλνιν γλσξηζκάησλ SK ηεο R γηα ηα νπνία ηζρύεη ην αθόινπζν: ε θάζε έγθπξε θαηάζηαζε βάζεο r(r), δπν δηαθνξεηηθέο πιεηάδεο t 1 t 2 έρνπλ δηαθνξεηηθέο ηηκέο ζηα γλσξίζκαηα SK. δει., γηα t 1 t 2 ζην r(r), t 1 [SK] t 2 [SK] Κιεηδί ηεο R (Key of R): Έλα «ειάρηζην» ππεξθιεηδί 8-5
ρεζηαθνί Καλόλεο Αθεξαηόηεηαο Πεξηνξηζκνί Κιεηδηνύ (Key Constraints) Παξάδεηγκα: Θεσξήζηε ηελ ρήκα ρέζεο CAR : CAR(State, Reg#, SerialNo, Make, Model, Year) Σν CAR έρεη δπν θιεηδηά: Key1 = {State, Reg#}, π.ρ., (CA,7D873A) ή (MA,7D873A), Key2 = {SerialNo}, π.ρ., a612-a496-4a66-b83a-2641-5845-8db9 Καη ηα δπν είλαη θιεηδηά θαη ππεξθιεηδηά ηνπ CAR {SerialNo, Make} είλαη ππεξθιεηδί αιιά όρη θιεηδί (δελ είλαη ειάρηζην) Γεληθά: Κάζε θιεηδί είλαη ππεξθιεηδί (αιιά όρη ην αληίζεην) Οπνηνζδήπνηε ζπλδπαζκόο γλσξηζκάησλ πεξηιακβάλεη έλα θιεηδί είλαη ππεξθιεηδί. Έλα ειάρηζην ππεξθιεηδί είλαη θαη θιεηδί. Τπεξθιεηδί Κιεηδί 8-6
ρεζηαθνί Καλόλεο Αθεξαηόηεηαο Πεξηνξηζκνί Κιεηδηνύ (Key Constraints) Δάλ κηα ζρέζε έρεη πνιιαπιά Δλαιιαθηηθά Κιεηδηά (candidate keys), ηόηε έλα από απηά επηιέγεηαη από ηνλ ζρεδηαζηή σο ην Πξωηεύωλ Κιεηδί (Primary key). Σα γλσξίζκαηα ελόο πξσηεύσλ θιεηδηνύ ππνγξακκίδνληαη. A) Καλόλαο Πξωηεύνληνο Κιεηδηνύ: Κάζε ρέζε έρεη έλα (1) Πξσηεύσλ Κιεηδί. Παξάδεηγκα: Θεσξήζηε ηελ ρήκα ρέζεο CAR : CAR(State, Reg#, SerialNo, Make, Model, Year) Σν πξσηεύσλ θιεηδί SerialNo ρξεζηκνπνηείηαη Α) Γηα λα μερσξίδεη κνλαδηθά θάζε πιεηάδα ζηε ζρέζε (ε ηαπηόηεηα ηεο) Β) Γηα λα αλαθεξόκαζηε ζε άιιεο ζρέζεηο από κηα πιεηάδα. Γεληθόο Καλόλαο: Δπηιέμηε σο πξσηεύσλ θιεηδί ην κηθξόηεξν εθ ησλ ελαιιαθηηθώλ θιεηδηώλ (ζε άπνςε κεγέζνπο). Π.ρ., (State, Reg#) αληί SerialNo (ν νπνίνο είλαη πνιύ κεγαιύηεξνο ζε κέγεζνο). Βέβαηα ζην παξάδεηγκα, SerialNo είλαη 1 πεδίν ελώ ην (State, EPL342: Reg#) Databases δπν πεδία - Demetris νπόηαλ Zeinalipour κάιινλ (University επηιέγνπκε of Cyprus) ην SerialNo 8-7
ρεζηαθνί Καλόλεο Αθεξαηόηεηαο Αθεξαηόηεηα Οληνηήηωλ (Entity Integrity) Β) Καλόλαο Αθεξαηόηεηαο Οληνηήηωλ (Entity Integrity) νξίδεη όηη ηα γλσξίζκαηα ελόο πξσηεύνληνο θιεηδηνύ PK ΓΔΝ κπνξεί λα είλαη NULL δει., ηηκή πξσηεύνληνο θιεηδηνύ t[pk] NULL γηα νπνηαδήπνηε πιεηάδα t πνπ αλήθεη ζην r(r) Δάλ ην PK είλαη ζύλζεην, ηόηε ην NULL δελ επηηξέπεηαη ζε ΚΑΝΔΝΑ από ηα γλσξίζκαηα ηνπ PK Π.ρ.,WORKS_ON(ESSN, PNO, Hours)//PK είλαη ζύλζεην (123, 4, 5) (123, 4, NULL) (NULL, 4, 5) OK OK ERROR 8-8
ρεζηαθνί Καλόλεο Αθεξαηόηεηαο Αλαθνξηθή Αθεξαηόηεηα (Referential Integrity) Θεσξήζηε ηελ N:1 ζπζρέηηζε κεηαμύ Employee- Department (ρσξίο πεξηνξηζκνύο ζπκκεηνρήο) EMPLOYEE N WORKS_ 1 FOR Δίρακε αλαθέξεη όηη ζε N:1 ζπζρεηίζεηο ην θιεηδί ηεο νληόηεηαο ζηε πιεπξά ηνπ 1 γίλεηαη γλώξηζκα ζηε πιεπξά ηνπ N, ζπλεπώο: Σρέζε πνπ Aλαθέξεη (Referencing Relation) Π.ρ., EMPLOYEE(ssn, name, dno) Σρέζε πνπ Αλαθέξεηαη (Referenced Relation) Π.ρ., DEPARTMENT(dno, name, location) Σν dno ηεο ζρέζεο EMPLOYEE νλνκάδεηαη μέλν θιεηδί (foreign key) θαη έρεη ηα αθόινπζα ραξαθηεξηζηηθά Α) Έρεη ην ίδην πεδίν νξηζκνύ κε ην αληίζηνηρν πεδίν ηνπ DEPARTMENT B) Έρεη ηηκή EPL342: ή είλαη Databases NULL (εάλ - Demetris επηηξέπεηαη Zeinalipour θάηη ηέηνην (University από ην of Cyprus) ζρήκα) DEPARTMENT Ξέλν Κιεηδί (Foreign Key) Πξσηεύσλ Κιεηδί (Foreign Key) 8-9
ρεζηαθνί Καλόλεο Αθεξαηόηεηαο Αλαθνξηθή Αθεξαηόηεηα (Referential Integrity) Γ) Καλόλαο Αλαθνξηθήο Αθεξαηόηεηαο (Referential Integrity) νξίδεη όηη ηα μέλα θιεηδηά (FK) πξέπεη λα είλαη είηε ππαξθηά ή NULL Π.ρ., EMPLOYEE(SSN, Fname, Lname, Dno) (123, Costas, Ioannou, 5) OK (ππάξρεη ην 5) (123, Costas, Ioannou, NULL) OK (εθόζνλ επηηξέπεηαη NULL) (123, Costas, Ioannou, 1000) ERROR (ΓΔΝ ππάξρεη ην 1000) Ννείηαη, όηη ζηε πεξίπησζε πνπ ην FK είλαη κέξνο ηνπ PK κηαο ζρέζεο (FK PK), ηόηε to FK δελ κπνξεί λα είλαη NULL (θαλόλαο πξσηεύνληνο θιεηδηνύ) Π.ρ., DEPENDENT(ESSN,Dname,Sex,Bdate,Relation) 8-10
ρεζηαθνί Καλόλεο Αθεξαηόηεηαο Αλαθνξηθή Αθεξαηόηεηα (Referential Integrity) Αλαθεξόκελε Αλαθεξόκελε Αλαθέξεη Αλαθεξόκελε λαθέξεη Αλαθέξεη Αλαθέξεη Αλαθέξεη Γηαγξακκαηηθή Αλαπαξάζηαζε Αλαθνξηθώλ Πεξηνξηζκώλ Αθεξαηόηεηαο Αλαθέξεη 8-11
ρεζηαθνί Καλόλεο Αθεξαηόηεηαο Άιινη Πεξηνξηζκνί (Other Constraints) Καλόλεο Σεκαζηνινγηθήο Αθεξαηόηεηαο (Semantic Integrity Constraints): ηεξίδνληαη ζε έλλνηεο πνπ ζρεηίδνληαη κε ηελ εθαξκνγή όρη ην κνληέιν θαη ηα νπνία ΓΔΝ κπνξνύλ λα δηαηππσζνύλ από ην Σρεζηαθό Μνληέιν Π.τ., «Ο μέγιστος αριθμός ωρών ενός σπαλλήλοσ σε ένα project είναι 56» Γηα ηελ δηαηύπσζε απηώλ ησλ πεξηνξηζκώλ ρξεηάδνληαη εμεηδηθεπκέλεο εθθξάζεηο. Η SQL-99 επηηξέπεη ηελ ρξήζε ειέγρωλ (CHECK), ζθαλδαιώλ (triggers) θαη βεβαηώζεωλ (assertions) CREATE TABLE (. integer hours; CHECK hours<=56;) Δθαξκόδεηαη ζε πεξηπηώζεηο κηαο ζρέζεο. CREATE ASSERTION CHECK (NOT EXIST (.)) Δθαξκόδεηαη ζε πεξηπηώζεηο πνιιαπιώλ ζρέζεσλ. CREATE TRIGGER a BEFORE INSERT ON EMP sendmail(); EPL342: Δθαξκόδεηαη Databases ζε πεξηπηώζεηο - Demetris επηζπκίαο Zeinalipour αληίδξαζεο (University ζε δηάθνξα of Cyprus) γεγνλόηα. 8-12
Πξάμεηο Δλεκεξώζεωλ ζην Σρεζηαθό Μνληέιν Μηα βάζε δεδνκέλσλ έρεη κηα ζπλεπή αξρηθή θαηάζηαζε πγθεθξηκέλα, πιεξνύληαη όινη νη πεξηνξηζκνί όπσο νξίζηεθαλ από ηνλ ζρεδηαζηή. Όπνηε ε βάζε αιιάδεη πξνθύπηεη κηα λέα ηεο θαηάζηαζε. Οη βαζηθέο πξάμεηο γηα αιιαγή ηεο θαηάζηαζεο κηαο βάζεο δεδνκέλσλ είλαη : INSERT: Δηζαγωγή λέαο πιεηάδαο ζηε ζρέζε. DELETE: Γηαγξαθή Τθηζηάκελεο(σλ) Πιεηάδαο(σλ) MODIFY: Σξνπνπνίεζε πεδίσλ ζπγθεθξηκέλεο(σλ) πιεηάδσλ Η επόκελε δηαθάλεηα δείρλεη ηελ αξρηθή θαηάζηαζε ηεο UNIVERSITY DB πνπ ζα ρξεζηκνπνηεζεί ζηε ζπδήηεζε Θεσξήζηε όηη ηζρύνπλ νη θαλόλεο αθεξαηόηεηαο (θιεηδηνύ, νληόηεηαο, θαη αλαθνξάο) πνπ ζπδεηήζεθαλ λσξίηεξα. 8-15
Αξρηθή Καηάζηαζε Βάζεο UNIVERSITY * Πεξηνξηζκόο Κιεηδηνύ / Οληνηεηαο * Αλαθνξηθόο Πεξηνξηζκόο * * 8-16
EMPLOYEE (SSN) Αξρηθή Καηάζηαζε Βάζεο UNIVERSITY * Αλαθνξηθόο Πεξηνξηζκόο * * * Πεξηνξηζκόο Κιεηδηνύ / Οληνηεηαο 8-17
Πξάμεηο Δλεκεξώζεσλ ζην ρεζηαθό Μνληέιν Τι γίνεται σε περιπτώσεις παραβίασης των κανόνων ακεραιότητας από μια πράξη; Α) (Default Πξάμε) Αθύξσζε πξάμεο. NO ACTION Β) Δπηηξέπεηαη ε πξάμε (ζπάληα) αιιά ελεκεξώλεηαη ν ρξήζηεο Μπνξεί λα ζπκβεί ζε άπιεο πεξηπηώζεηο κόλν (π.ρ., εάλ ππάξρεη πεξηνξηζκόο TELEPHONE NOT NULL). Γελ κπνξεί λα ζπκβεί ζε πεξηπηώζεηο θαλόλωλ αθεξαηόηεηαο (θιεηδηνύ, νληόηεηαο, αλαθνξάο) θαη γεληθά δελ ππνζηεξίδεηαη. Γ) Δθηέιεζε επηπιένλ ιεηηνπξγηώλ. Π.ρ., ηελ SQL ππάξρεη ε έλλνηα ηνπ CASCADE, SET NULL, SET DEFAULT. Π.ρ., CREATE TABLE EMPLOYEE (. CONSTRAINT MGR FOREIGN KEY(Super_ssn) REFERENCES EMPLOYEE(ssn) ON DELETE SET NULL ON UPDATE CASCADE Δάλ ζβεζηεί o Supervisor ηόηε ν Emp.Super_ssn γίλεηαη NULL Δάλ ελεκεξσζεί ην SSN ηνπ Supervisor ηόηε ν Emp.Super_ssn (ζρέζεσλ EPL342: πνπ Databases ηελ αλαθέξνπλ) - Demetris Zeinalipour ελεκεξώλεηαη (University επίζεο. of Cyprus) 8-18
Πξάμεηο Δλεκεξώζεσλ ζην ρεζηαθό Μνληέιν To INSERT κπνξεί λα παξαβηάδεη όινπο ηνπο πεξηνξηζκνύο: Πεδίνπ Οξηζκνύ: π.ρ., EMPLOYEE(SSN:integer): εηζαγσγή (123.3) (πξαγκαηηθνύ αξηζκνύ) Κιεηδηνύ: π.ρ., EMPLOYEE(SSN): εηζαγσγή (123), όπνπ ε ζρέζε EMPLOYEE πεξηέρεη ήδε ην 123, π.ρ., {1,2,4,123,300} Αλαθνξηθήο Αθεξαηόηεηαο: π.ρ., EMPLOYEE(SSN, DNO): εηζαγσγή (123, 1000), ζεσξώληαο όηη ην DNO 1000 δελ ππάξρεη. Οληόηεηαο: π.ρ., EMPLOYEE(SSN, Name): εηζαγσγή (NULL, Costas ) 8-19
Πξάμεηο Δλεκεξώζεσλ ζην ρεζηαθό Μνληέιν To DELETE κπνξεί λα παξαβηάδεη ηνπο αθόινπζνπο πεξηνξηζκνύο: Πεδίνπ Οξηζκνύ: ΟΦΙ Κιεηδηνύ: ΟΦΙ Αλαθνξηθήο Αθεξαηόηεηαο: Π.ρ., εάλ ε εγγξαθή πνπ δηαγξάθεηαη αλαθέξεηαη από άιιε ζρέζε. Όπσο αλαθέξακε ήδε, ε αλαθνξηθή αθεξαηόηεηα κπνξεί λα επηβιεζεί ζηελ SQL κε ρξήζε ησλ επηπιένλ ελεξγεηώλ: CASCADE, SET NULL, SET DEFAULT Οληόηεηαο: ΟΦΙ 8-20
Πξάμεηο Δλεκεξώζεσλ ζην ρεζηαθό Μνληέιν To UPDATE από πξνο κπνξεί λα παξαβηάδεη ηνπο αθόινπζνπο πεξηνξηζκνύο: Πεδίνπ Οξηζκνύ: π.ρ., EMPLOYEE(SSN:integer): ελεκέξσζε 121 123.0 (πξαγκαηηθνύ αξηζκνύ) Κιεηδηνύ: Π.ρ., EMPLOYEE(SSN):ελεκέξσζε 121 123, όπνπ ε ζρέζε πεξηέρεη ήδε ην 123, π.ρ., {1,2,4,123,300} Αλαθνξηθήο Αθεξαηόηεηαο: π.ρ., EMPLOYEE(SSN, DNO): ελεκέξσζε (1,5) (1,1000), ζεσξώληαο όηη ην DNO 1000 δελ ππάξρεη ελώ ην 5 ππάξρεη. Οληόηεηαο: Π.ρ., EMPLOYEE(SSN): ελεκέξσζε 1 ΝULL 8-21
Τππηθέο Γιώζζεο Σρεζηαθνύ Μνληέινπ (Formal Languages for the Relational Model) Γηα ηελ εθηέιεζε επεξσηήζεσλ ζε ζρέζεηο νξίδνληαη νη αθόινπζεο ηππηθέο (ζεσξεηηθέο) γιώζζεο: Σρεζηαθή Άιγεβξα (Relational Algebra) Λνγηζκόο Πιεηάδωλ (Tuple Relational Calculus) Λνγηζκόο Πεδίωλ (Domain Relational Calculus) Απηέο νη γιώζζεο είλαη εθθξαζηηθά ηζνδύλακεο! Γειαδή κπνξνύλ λα εθθξάζνπλ αληίζηνηρεο επεξωηήζεηο. Οπνηαδήπνηε γιώζζα είλαη εθθξαζηηθά ηζνδύλακε κε ηελ ρεζηαθή Άιγεβξα νλνκάδεηαη Σρεζηαθά Πιήξεο Γιώζζα (Relationally-Complete Language) Η SQL είλαη κηα relationally complete γιώζζα 8-22
Τππηθέο Γιώζζεο Σρεζηαθνύ Μνληέινπ (Formal Languages for the Relational Model) Πάλσ ζε απηέο ηηο ζεωξεηηθέο γιώζζεο έρνπλ δεκηνπξγεζεί πξαγκαηηθέο γιώζζεο βάζεσλ δεδνκέλσλ (π.ρ., SQL, QBE) Σρεζηαθή Άιγεβξα (Relational Algebra) Πξνζηαθηηθή: νξίδεηαη ε ζεηξά εθηέιεζεο ησλ πξάμεσλ. Μηα Δπεξώηεζε ηνπ ρξήζηε ζε SQL κεηαθξάδεηαη από ηελ βάζε ζε κηα έθθξαζε ζρεζηαθήο άιγεβξαο, ην ιεγόκελν πιάλν εθηέιεζεο (query plan). Λνγηζκόο Πιεηάδωλ (Tuple Calculus) Γειωηηθή: δελ νξίδεηαη ε ζεηξά εθηέιεζεο ησλ πξάμεσλ απιά ην επηζπκεηό απνηέιεζκα, Η SQL ζηεξίδεηαη πάλσ ζηελ δεισηηθή θύζε ηνπ Λνγηζκνύ Πιεηάδωλ εάλ SQL επεξσηήζεηο εθηεινύληαη ζαλ εθθξάζεηο Σρεζηαθήο Άιγεβξαο Λνγηζκόο Πεδίωλ (Domain Calculus) Όκνηα κε Λνγηζκό Πιεηάδωλ (νη κεηαβιεηέο είλαη γλωξίζκαηα θαη όρη πιεηάδεο) Γειωηηθή θαη πάλω ζ απηή ζηεξίδεηαη ε QBE Τινπνηείηαη ΙΒΜ QMF, MS Access θαη Paradox, θ.α. 8-23
Τππηθέο Γιώζζεο Σρεζηαθνύ Μνληέινπ (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 (ε νπνία πινπνηεί ην πην πάλσ) δελ δηαθέξεη νπζηαζηηθά (κπνξεί λα είλαη δηαγξακκαηηθή σζηόζν) Γεισηηθή δηαηύπσζε, Πξνζηαθηηθή εθηέιεζε Πξνζηαθηηθή δηαηύπσζε & εθηέιεζε Γεισηηθή δηαηύπσζε & εθηέιεζε Γεισηηθή δηαηύπσζε & εθηέιεζε 8-24
Δηζαγσγή ζηε ρεζηαθή Άιγεβξα Η ρεζηαθή Άιγεβξα απνηειείηαη από έλα βαζηθό ζύλνιν πξάμεωλ (ηειεζηώλ) γηα ην ζρεζηαθό κνληέιν. Δίλαη νπζηαζηηθά ε πην δηαδεδνκέλε ηππηθή γιώζζα ηνπ ρε. Μνλη. Απηνί νη ηειεζηέο επηηξέπνπλ ζε θάπνην λα δηαηππώζεη βαζηθέο πξάμεηο αλάθηεζεο, δει., επεξωηήζεηο (queries). Σν απνηέιεζκα εθηέιεζεο ΟΛΩΝ ησλ ηειεζηώλ καο επηζηξέθεη πίζσ κηα λέα ζρέζε, ε νπνία κπνξεί λα δεκηνπξγείηαη από 1 ή πεξηζζόηεξεο ζρέζεηο εηζόδνπ. Απηή ε ηδηόηεηα θάλεη ηελ ρεζηαθή Άιγεβξα «Κιεηζηή» ( closed ), δει., ΌΛΑ ηα αληηθείκελα ζηε ζρεζηαθή άιγεβξα είλαη ζρέζεηο (αθόκε θαη κηα απιή αξηζκεηηθή ηηκή) Έθθξαζε ζρεζηαθήο άιγεβξαο (Relational Algebra Expression): Αθνινπζία εθαξκνγήο ηειεζηώλ πάλσ ζε ζρέζεηο, π.ρ., FNAME, LNAME, SALARY ( DNO=5 (EMPLOYEE)) 8-25
Δηζαγσγή ζηε ρεζηαθή Άιγεβξα Η Σρεζηαθή Άιγεβξα παξέρεη ηνπο ηειεζηέο (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) 8-26
Μνλαδηαίνη Σειεζηέο Δπηινγή (ζ) Ο Τειεζηήο Δπηινγήο (ζπκβνιίδεηαη κε (sigma)) ρξεζηκνπνηείηαη γηα λα επηιέμνπκε έλα ππνζύλνιν ησλ πιεηάδωλ κηαο ζρέζεο βάζεη θάπνηνπ θξηηεξίνπ επηινγήο (selection condition) <Κξηηήξηα Δπηινγήο> (R) Σν θξηηήξην επηινγήο ιεηηνπξγεί σο θίιηξν (δει., επηζηξέθεη κόλν ηηο πιεηάδεο πνπ ηθαλνπνηνύλ ηελ ζπλζήθε) Π.ρ., : Δύξεζε ησλ EMPLOYEE πνπ δνπιεύνπλ ζην department 4: DNO = 4 (EMPLOYEE) Δύξεζε ησλ EMPLOYEE πνπ έρνπλ κηζζό πάλσ από $30,000: SALARY > 30,000 (EMPLOYEE) 8-27
Μνλαδηαίνη Σειεζηέο Δπηινγή (ζ) <Κξηηήξηα Δπηινγήο> (R) Σν θξηηήξην επηινγήο απνηειείηαη από κηα (1) ή πεξηζζόηεξεο πξνηάζεηο (clauses) ηεο κνξθήο: Κξηηήξην Δπηινγήο := <όλνκα γλσξίζκαηνο> <ηειεζηήο> <ζηαζεξή ηηκή όλνκα γλσξίζκαηνο> Τειεζηήο: Γπαδηθόο Τειεζηήο Σύγθξηζεο {<,>,=,!=, >=, <=} Οη πξνηάζεηο κπνξεί λα ζπλδένληαη κε Λνγηθνύο Τειεζηέο: AND ή OR Π.ρ., DNO = 4 AND SALARY > 30,000 (EMPLOYEE) 8-28
Μνλαδηαίνη Σειεζηέο Δπηινγή (ζ) Ιδηόηεηεο Τειεζηή Δπηινγήο (ζ) 1. Ο ηειεζηήο <selection condition> (R) παξάγεη κηα λέα ζρέζε S ή νπνία έρεη ην ίδην ζρήκα κε ηελ R, όπνπ S == R θαη r(s) <= r(r) Ιζρύεη ε αληηκεηαζεηηθή ηδηόηεηα (commutative) : <condition1> ( <condition2> (R)) = <condition2> ( <condition1> (R)) Δπίζεο, κπνξνύκε λα δηαδώζνπκε (cascade) κηα επηινγή δει., <cond1> ( <cond2> ( <cond3> (R)) = <cond2> ( <cond3> ( <cond1> ( R))) π.ρ., <dno=5> ( <fname= Chris > ( <sex= M > (EMPLOYEE)) = <fname= Chris > ( <sex= M > ( <dno=5> (EMPLOYEE)) Δπίζεο, κηα δηάδνζε ηειεζηώλ ζ κπνξεί λα αληηθαηαζηαζεί από κηα θαη κόλν επηινγή ε νπνία ζα είλαη ε ζύδεπμε όισλ ησλ ζπλζεθώλ: δει., <cond1> ( < cond2> ( <cond3> (R)) = <cond1> AND < cond2> AND < cond3> (R))) π.ρ., <dno=5> AND <fname= Chris > AND <sex= M > (EMPLOYEE) 8-29
Μνλαδηαίνη Σειεζηέο Παξαδείγκαηα Δπηινγήο (ζ) Γεδνκέλα Δπεξώηεζε Απνηέιεζκα 8-30
Μνλαδηαίνη Σειεζηέο Πξνβνιή (π) Ο Τειεζηήο Πξνβνιήο ζπκβνιίδεηαη κε (pi)) ρξεζηκνπνηείηαη γηα λα επηιέμνπκε έλα ππνζύλνιν γλωξηζκάηωλ κηαο ζρέζεο: Attribute1,Attribute2,,AttributeN (R) πλεπώο, ν ηειεζηήο απηόο κπνξεί λα εηδσζεί ζαλ κηα θαηαθόξπθε δηακέξηζε (vertical partitioning) ηεο αξρηθήο ζρέζεο R Π.ρ., : Αλάθηεζε όια ηα Δπίζεηα, Ολόκαηα, Μηζζνύο ηωλ EMPLOYEE LNAME, FNAME,SALARY (EMPLOYEE) Ο ηειεζηήο πξνβνιήο δηαγξάθεη εμ νξηζκνύ ηα δηπιόηππα (duplicate tuple elimination) Απηό δηόηη ην απνηέιεζκα ΠΡΔΠΔΙ λα είλαη ΤΝΟΛΟ πιεηάδσλ θαη όπσο αλαθέξακε ηα ζύλνια δελ επηηξέπνπλ ηα δηπιόηππα. 8-31
Μνλαδηαίνη Σειεζηέο Πξνβνιή (π) Ιδηόηεηεο Τειεζηή Πξνβνιήο π 1. Ο ηειεζηήο π <Attributes> (R) παξάγεη κηα λέα ζρέζε S γηα ηελ νπνία ηζρύεη S <= R αιιά θαη r(s) <= r(r) (ιόγσ ηεο ελδερόκελεο δηαγξαθήο δηπινηύπσλ) Δάλ ην Attribute πεξηιακβάλεη θάπνην θιεηδί ηεο R ηόηε r(s) == r(r) Πξνθαλώο, θαη ζηηο δπν πην πάλσ πεξηπηώζεηο ν αξηζκόο ηωλ γλωξηζκάηωλ ηνπ S είλαη ππνζύλνιν ηνπ R. 2. Ο ηειεζηήο π ΓΔΝ είλαη αληηκεηαζεηηθόο (not commutative): <list1> ( <list2> (R) ) = <list2> ( <list1> (R) ) Σν πην πάλσ ηζρύεη ΜΟΝΟ εάλ list1 list2 π.ρ., <ssn,fname,dno> ( <ssn,fname,lname,dno> (EMPLOYEE)) ΣΩΣΤΟ π.ρ., <ssn,fname,lname,dno> ( <ssn,fname,dno> (EMPLOYEE)) ΛΑΘΟΣ 3. Η Πξνβνιή κπνξεί λα αληηκεηαηεζεί κε ηελ Δπηινγή ζε νξηζκέλεο πεξηπηώζεηο 8-32
Μνλαδηαίνη Σειεζηέο Παξαδείγκαηα Πξνβνιήο (π) Γεδνκέλα Γηπιόηππα Δπεξώηεζε Απνηέιεζκα 7 εγγξαθέο αληί 8 εγγξαθέο (ινγσ duplicates) 8-33
Δθθξάζεηο ρεζηαθήο Άιγεβξαο (Relational Algebra Expressions) Οη εθθξάζεηο ζρεζηαθήο άιγεβξαο κπνξνύλ λα δηαηππωζνύλ θαηά ηνπο αθόινπζνπο ηξόπνπο: A) Μηα έθθξαζε ε νπνία ζα απνηειείηαη από εκθωιεπκέλεο (nested) εθθξάζεηο: Π.ρ., FNAME, LNAME, SALARY ( DNO=5 (EMPLOYEE)) Β) Πνιιαπιέο εθθξάζεηο κε επί κέξνπο απνηειέζκαηα Π.ρ., TEMP DNO=5 (EMPLOYEE) RESULT FNAME, LNAME, SALARY (TEMP) ηελ Β πεξίπησζε πξέπεη λα δειώζνπκε νλόκαηα γηα ηα ελδηάκεζα απνηειέζκαηα. 8-34
Μνλαδηαίνη ρεζηαθνί Σειεζηέο Τειεζηήο RENAME ε νξηζκέλεο πεξηπηώζεηο ζέινπκε λα κεηνλνκάζνπκε ηα γλωξίζκαηα κηαο ζρέζεο ή ηε ζρέζε (ή θαη ηα δπν) Υξήζηκν όηαλ κηα επεξώηεζε ρξεηάδεηαη πνιιαπιέο πξάμεηο Απαξαίηεηα ζε νξηζκέλεο πεξηπηώζεηο (π.ρ., joins). Ο ηειεζηήο Μεηνλνκαζίαο (RENAME) κπνξεί λα ρξεζηκνπνηείηαη θαζ νπνηνδήπνηε απ ηνπο πην θάησ ηξόπνπο: S (B1, B2,, Bn) (R): S (R) Αιιαγή Ολόκαηνο ρέζεο από R ζε S B1, B2,, Bn: Νέα Ολόκαηα Γλσξηζκάησλ Αιιαγή Ολόκαηνο ρέζεο από R ζε S (B1, B2,, Bn ) (R): Γηα επεξσηήζεηο δελ ρξεζηκνπνηείηαη γεληθά B1, B2,, Bn: Νέα Ολόκαηα Γλσξηζκάησλ Απνηειέζκαηνο R (a->b) (R) Αιιαγή Ολόκαηνο Γλσξίζκαηνο R.a ζε R.b 8-35
Γεδνκέλα Μνλαδηαίνη ρεζηαθνί Σειεζηέο Σειεζηήο RENAME No Renaming (A) FNAME, LNAME, SALARY ( DNO=5 (EMPLOYEE) ) With Renaming (B) TEMP DNO=5 (EMPLOYEE) R(First_Name, Last_Name, Salary) FNAME, LNAME, SALARY (TEMP) 8-36