Download - Βάσεις δεδομένων

Transcript
Page 1: Βάσεις δεδομένων

ΠΕΡΙΕΧΟΜΕΝΑ

1 ΒΑΣΕΙΣ ∆Ε∆ΟΜΕΝΩΝ ..................................................................................... 6

1.1 ΕΙΣΑΓΩΓΗ ............................................................................................................ 6 1.2 ΙΣΤΟΡΙΑ- ΕΞΕΛΙΞΗ ΒΑΣΕΩΝ ∆Ε∆ΟΜΕΝΩΝ .............................................................. 7 1.3 ΣΥΣΤΗΜΑ ΒΑΣΗΣ ∆Ε∆ΟΜΕΝΩΝ .............................................................................. 8

1.3.1 Βάση ∆εδοµένων......................................................................................... 9 1.3.2 Συστήµατα διαχείρισης βάσεων δεδοµένων ................................................ 9 1.3.3 Σύστηµα Βάσης δεδοµένων....................................................................... 10

1.4 ∆Ε∆ΟΜΕΝΑ........................................................................................................ 12 1.5 ΠΑΡΑ∆ΕΙΓΜΑΤΑ ΒΑΣΕΩΝ ∆Ε∆ΟΜΕΝΩΝ ................................................................ 14 1.6 ΠΛΕΟΝΕΚΤΗΜΑΤΑ ΤΗΣ ΧΡΗΣΗΣ ΒΑΣΕΩΝ ∆Ε∆ΟΜΕΝΩΝ.......................................... 15 1.7 ΣΧΕΣΙΑΚΑ ΚΑΙ ΜΗ ΣΧΕΣΙΑΚΑ ΣΥΣΤΗΜΑΤΑ ............................................................. 16

2 ΕΝΝΟΙΕΣ ΚΑΙ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΣΥΣΤΗΜΑΤΩΝ ΒΑΣΕΩΝ ∆Ε∆ΟΜΕΝΩΝ 20

2.1 ΑΦΑΙΡΕΤΙΚΗ ΑΠΟΨΗ ∆Ε∆ΟΜΕΝΩΝ ....................................................................... 20 2.2 ΜΟΝΤΕΛΑ ∆Ε∆ΟΜΕΝΩΝ, ΣΧΗΜΑΤΑ ΚΑΙ ΣΤΙΓΜΙΟΤΥΠΑ............................................ 21

2.2.1 Κατηγορίες Μοντέλων ∆εδοµένων ............................................................ 22 2.2.2 Σχήµατα, Στιγµιότυπα και Κατάσταση της Βάσης ∆εδοµένων ................... 23

2.3 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΣΥΣΤΗΜΑΤΩΝ ΒΑΣΕΩΝ ∆Ε∆ΟΜΕΝΩΝ............................................ 26 2.4 ΤΟ ΕΞΩΤΕΡΙΚΟ ΕΠΙΠΕ∆Ο .................................................................................... 27 2.5 ΤΟ ΕΝΝΟΙΟΛΟΓΙΚΟ ΕΠΙΠΕ∆Ο............................................................................... 28 2.6 ΤΟ ΕΣΩΤΕΡΙΚΟ ΕΠΙΠΕ∆Ο .................................................................................... 29 2.7 ΑΝΕΞΑΡΤΗΣΙΑ ∆Ε∆ΟΜΕΝΩΝ ΣΤΗΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΤΡΙΩΝ ΣΧΗΜΑΤΩΝ ................... 29 2.8 ΜΕΤΑ-∆Ε∆ΟΜΕΝΑ .............................................................................................. 31 2.9 ΕΥΡΕΤΗΡΙΑ........................................................................................................ 31 2.10 ΓΛΩΣΣΕΣ ΒΑΣΕΩΝ ∆Ε∆ΟΜΕΝΩΝ .......................................................................... 32 2.11 Η ΓΛΩΣΣΑ ΟΡΙΣΜΟΥ ∆Ε∆ΟΜΕΝΩΝ (DDL)............................................................. 33 2.12 ΓΛΩΣΣΑ ΧΕΙΡΙΣΜΟΥ ∆Ε∆ΟΜΕΝΩΝ (DML).............................................................. 34

3 ΜΟΝΤΕΛΟ ΟΝΤΟΤΗΤΩΝ-ΣΥΣΧΕΤΙΣΕΩΝ..................................................... 36

3.1 ΕΙΣΑΓΩΓΗ ....................................................................................................... 36 3.2 ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΚΑΙ ΣΥΜΒΟΛΙΣΜΟΙ ................................................................... 37 3.3 ΓΝΩΡΙΣΜΑΤΑ...................................................................................................... 39 3.4 ΤΥΠΟΙ ΣΥΣΧΕΤΙΣΕΩΝ.......................................................................................... 42 3.5 ∆ΟΜΙΚΟΙ ΠΕΡΙΟΡΙΣΜΟΙ ΣΤΟ ΜΟΝΤΕΛΟ E-R. ........................................................ 43

3.5.1 Βαθµός τύπου συσχετίσεων (relationship degree) .................................... 43 3.5.2 Περιορισµός Συµµετοχής και Εξαρτήσεις Ύπαρξης. ................................. 43 3.5.3 Λόγος πληθικότητας (cardinality) .............................................................. 44 3.5.4 ∆ΟΜΙΚΟΙ ΠΕΡΙΟΡΙΣΜΟΙ: Γνωρίσµατα .................................................... 45

3.6 ΓΝΩΡΙΣΜΑΤΑ ΤΥΠΩΝ ΣΥΣΧΕΤΙΣΕΩΝ..................................................................... 46 3.7 ΜΗ ΙΣΧΥΡΟΙ ΤΥΠΟΙ ΟΝΤΟΤΗΤΩΝ .......................................................................... 47 3.8 ΕΙ∆ΙΚΑ ΘΕΜΑΤΑ ΣΤΟ ΜΟΝΤΕΛΟ E-R .......................................................... 48

3.8.1 Η Έννοια της Γενίκευσης........................................................................... 48 3.8.2 Η Έννοια της Συσσώρευσης ..................................................................... 48

4 ΣΧΕΣΙΑΚΕΣ ΒΑΣΕΙΣ ∆Ε∆ΟΜΕΝΩΝ .............................................................. 50

4.1 ΕΙΣΑΓΩΓΗ .......................................................................................................... 50

5 ΣΧΕΣΙΑΚΟ ΜΟΝΤΕΛΟ ................................................................................... 52

Page 2: Βάσεις δεδομένων

ΒΑΣΕΙΣ ∆Ε∆ΟΜΕΝΩΝ

5.1 ΤΟ ΣΧΕΣΙΑΚΟ ΜΟΝΤΕΛΟ ΜΕ ΜΙΑ ΜΑΤΙΑ ................................................................ 52 5.2 ΟΡΟΛΟΓΙΑ ΤΟΥ ΣΧΕΣΙΑΚΟΥ ΜΟΝΤΕΛΟΥ ............................................................... 55 5.3 ΦΟΡΜΑΛΙΣΜΟΣ ΤΟΥ ΣΧΕΣΙΑΚΟΥ ΜΟΝΤΕΛΟΥ ........................................................ 56 5.4 ΠΕ∆ΙΑ ΟΡΙΣΜΟΥ ................................................................................................. 57 5.5 ΣΧΕΣΕΙΣ ΚΑΙ ΤΙΜΕΣ ΣΧΕΣΕΩΝ .............................................................................. 57 5.6 Ι∆ΙΟΤΗΤΕΣ ΤΩΝ ΣΧΕΣΕΩΝ ................................................................................... 58 5.7 ΕΙ∆Η ΣΧΕΣΕΩΝ................................................................................................... 59 5.8 ∆ΟΜΙΚΟΙ ΠΕΡΙΟΡΙΣΜΟΙ ΣΤΟ ΣΧΕΣΙΑΚΟ ΜΟΝΤΕΛΟ .................................. 60

5.8.1 Περιορισµοί Κλειδιών ................................................................................ 60 5.8.2 Κανόνες ξένων κλειδιών - ακεραιότητα αναφορών.................................... 61 5.8.3 Null ............................................................................................................ 62 5.8.4 Κλειδιά και null- ακεραιότητα οντότητας..................................................... 63 5.8.5 Ρητοί περιορισµοί ...................................................................................... 64

5.9 ΜΕΤΑΤΡΟΠΗ ∆ΙΑΓΡΑΜΜΑΤΟΣ E-R ΣΤΟ ΣΧΕΣΙΑΚΟ ΜΟΝΤΕΛΟ................ 65 5.9.1 Μετατροπή Τύπων Οντοτήτων .................................................................. 65 5.9.2 Μετατροπή Τύπων Συσχετίσεων ............................................................... 65 5.9.3 Γνωρίσµατα ............................................................................................... 66

6 ΘΕΩΡΙΑ ΚΑΝΟΝΙΚΟΠΟΙΗΣΗΣ ...................................................................... 68

6.1 ΕΙΣΑΓΩΓΗ .......................................................................................................... 68 6.2 ΣΥΝΑΡΤΗΣΙΑΚΕΣ ΕΞΑΡΤΗΣΕΙΣ ............................................................................. 68 6.3 ΚΛΕΙ∆ΙΑ ΚΑΙ ΜΟΝΑ∆ΙΚΟΤΗΤΑ ............................................................................... 69 6.4 ΠΡΟΒΛΗΜΑΤΑ ΤΡΟΠΟΠΟΙΗΣΕΩΝ ........................................................................ 69 6.5 ΚΑΝΟΝΙΚΟΠΟΙΗΣΗ-ΚΑΝΟΝΙΚΕΣ ΜΟΡΦΕΣ ............................................................. 70

6.5.1 Πρώτη κανονική µορφή (1NF)................................................................... 70 6.5.2 ∆εύτερη κανονική µορφή (2NF)................................................................. 71 6.5.3 Τρίτη κανονική µορφή (3NF) ..................................................................... 72

7 ΣΧΕΣΙΑΚΗ ΑΛΓΕΒΡΑ..................................................................................... 74

7.1 ΠΡΩΤΟΤΥΠΗ ΣΧΕΣΙΑΚΗ ΑΛΓΕΒΡΑ ........................................................................ 74 7.2 ΣΥΝΟΨΗ ΤΩΝ ΟΚΤΩ ΚΥΡΙΟΤΕΡΩΝ ΠΡΑΞΕΩΝ:........................................................ 76 7.3 ΟΙ ΠΡΩΤΟΓΕΝΕΙΣ ΤΕΛΕΣΤΕΣ ............................................................................... 77 7.4 ΚΛΕΙΣΤΟΤΗΤΑ .................................................................................................... 77 7.5 ΠΡΟΤΕΡΑΙΟΤΗΤΑ ΤΩΝ ΤΕΛΕΣΤΩΝ ........................................................................ 78 7.6 ΣΧΕΣΙΑΚΗ ΆΛΓΕΒΡΑ - ΠΡΑΞΕΙΣ............................................................................ 78 7.7 ΤΕΛΕΣΤΗΣ ΠΡΟΒΟΛΗΣ ....................................................................................... 79 7.8 ΤΕΛΕΣΤΗΣ ΕΠΙΛΟΓΗΣ ......................................................................................... 80 7.9 ΤΕΛΕΣΤΗΣ ΚΑΡΤΕΣΙΑΝΟΥ ΓΙΝΟΜΕΝΟΥ ................................................................ 81 7.10 ΤΕΛΕΣΤΗΣ ΜΕΤΟΝΟΜΑΣΙΑΣ ................................................................................ 82 7.11 ΤΕΛΕΣΤΗΣ ΈΝΩΣΗΣ ........................................................................................... 84 7.12 ΤΕΛΕΣΤΗΣ ∆ΙΑΦΟΡΑΣ ΣΥΝΟΛΩΝ ......................................................................... 85 7.13 ΣΥΝΘΕΣΗ ΤΩΝ ΤΕΛΕΣΤΩΝ................................................................................... 87 7.14 ΠΑΡΑ∆ΕΙΓΜΑΤΑ ΕΡΩΤΗΣΕΩΝ ΣΧΕΣΙΑΚΗΣ ΑΛΓΕΒΡΑΣ ............................................. 88 7.15 ΕΠΙΣΗΜΟΣ ΟΡΙΣΜΟΣ ΤΗΣ ΚΛΕΙΣΤΟΤΗΤΑΣ ΤΩΝ ΒΑΣΙΚΩΝ ΠΡΑΞΕΩΝ ......................... 90 7.16 ΕΠΙΠΡΟΣΘΕΤΟΙ ΤΕΛΕΣΤΕΣ ΠΡΑΞΕΩΝ................................................................... 91 7.17 ΤΕΛΕΣΤΗΣ ΤΟΜΗΣ ΣΥΝΟΛΩΝ.............................................................................. 91 7.18 ΤΕΛΕΣΤΗΣ (ΦΥΣΙΚΗΣ) ΣΥΝΕΝΩΣΗΣ ..................................................................... 92 7.19 ΤΕΛΕΣΤΗΣ ∆ΙΑΙΡΕΣΗΣ ........................................................................................ 94 7.20 ΤΕΛΕΣΤΗΣ ΑΝΑΘΕΣΗΣ........................................................................................ 95 7.21 ΓΕΝΙΚΕΥΜΕΝΗ ΠΡΟΒΟΛΗ ................................................................................... 96 7.22 ΣΥΝΑΘΡΟΙΣΤΙΚΕΣ ΣΥΝΑΡΤΗΣΕΙΣ ......................................................................... 97 7.23 ΕΞΩΤΕΡΙΚΗ ΣΥΝΕΝΩΣΗ (ΣΥΖΕΥΞΗ) ................................................................... 100 7.24 NULL ΤΙΜΕΣ ..................................................................................................... 102 7.25 Η ΛΟΓΙΚΗ ΤΡΙΩΝ ΤΙΜΩΝ (TRUE-UNKNOWN-FALSE) .............................................. 102 7.26 ΤΡΟΠΟΠΟΙΗΣΗ ΤΗΣ ΒΑΣΗΣ ∆Ε∆ΟΜΕΝΩΝ............................................................ 103

Σελ. 2

Page 3: Βάσεις δεδομένων

1.1 Εισαγωγή

7.26.1 ∆ιαγραφή (deletion)................................................................................. 103 7.26.2 Εισαγωγή (insertion) ............................................................................... 103 7.26.3 Τροποποίηση (updating)......................................................................... 104

8 Η ΓΛΩΣΣΑ ΒΑΣΕΩΝ ∆Ε∆ΟΜΕΝΩΝ SQL ................................................... 105

8.1 ΕΙΣΑΓΩΓΗ ........................................................................................................ 105 8.2 ΒΑΣΙΚΗ ΣΥΝΤΑΞΗ ΓΛΩΣΣΑΣ ΧΕΙΡΙΣΜΟΥ ∆Ε∆ΟΜΕΝΩΝ (ΕΡΩΤΗΣΕΩΝ) ................... 108

8.2.1 Βασική ∆οµή............................................................................................ 108 8.2.2 Η Πρόταση SELECT -βασική δοµή ......................................................... 111 8.2.3 Η Πρόταση SELECT DISTINCT -απαλοιφή διπλοτύπων ........................ 111 8.2.4 Η Πρόταση SELECT - αριθµητικές εκφράσεις ......................................... 112 8.2.5 Η Πρόταση where ................................................................................... 113 8.2.6 Η Πρόταση where -τελεστής between .. and.. ......................................... 113 8.2.7 Η Πρόταση from ...................................................................................... 114 8.2.8 Πράξεις µε Συµβολοσειρές (αλφαριθµητικά) ............................................ 116 8.2.9 ∆ιάταξη των Πλειάδων- order by ............................................................. 116 8.2.10 Η Πράξη της Μετονοµασίας..................................................................... 117 8.2.11 Μεταβλητές Πλειάδων ............................................................................. 118 8.2.12 Συνολοθεωρητικές Πράξεις και Τελεστές Συνόλων ................................. 119 8.2.13 Null Τιµές................................................................................................. 120 8.2.14 Τιµές Null και η Λογική Τριών Τιµών ....................................................... 121 8.2.15 Τιµές Null και συναθροιστικές συναρτήσεις ............................................. 121 8.2.16 Συναθροιστικές Συναρτήσεις ................................................................... 121 8.2.17 Συναθροιστικές Συναρτήσεις-Οµαδοποίηση (group by) .......................... 123 8.2.18 Συναθροιστικές Συναρτήσεις –Πρόταση having ...................................... 124 8.2.19 Εµφωλιασµένα Υποερωτήµατα ............................................................... 127 8.2.20 Εµφωλιασµένα Υποερωτήµατα - τελεστής in (not in).............................. 128 8.2.21 Εµφωλιασµένα Υποερωτήµατα - τελεστής some (any)........................... 130 8.2.22 Εµφωλιασµένα Υποερωτήµατα - τελεστής all ......................................... 131 8.2.23 Εµφωλιασµένα Υποερωτήµατα - τελεστής exists (not exists) ................. 133 8.2.24 Εµφωλιασµένες Υποερωτήσεις - τελεστής unique (not unique).............. 136 8.2.25 Συνενώσεις Συνόλων .............................................................................. 138 8.2.26 Παραγόµενες Σχέσεις .............................................................................. 139

8.3 ΒΑΣΙΚΗ ΣΥΝΤΑΞΗ ΓΛΩΣΣΑΣ ΧΕΙΡΙΣΜΟΥ ∆Ε∆ΟΜΕΝΩΝ......................................... 141 8.3.1 Τύποι Πεδίων Ορισµού στην SQL........................................................... 141 8.3.2 Ορισµός Σχήµατος .................................................................................. 142 8.3.3 Περιορισµοί Ακεραιότητας αναφορών ..................................................... 143 8.3.4 Περιορισµοί Ακεραιότητας Πεδίου ορισµού ............................................. 144 8.3.5 ∆ιαγραφή Σχήµατος ................................................................................ 146 8.3.6 Τροποποίηση Σχήµατος .......................................................................... 146

8.4 ΤΡΟΠΟΠΟΙΗΣΗ ΒΑΣΗΣ ∆Ε∆ΟΜΕΝΩΝ ΓΛΩΣΣΑ ΧΕΙΡΙΣΜΟΥ ∆Ε∆ΟΜΕΝΩΝ (ΓX∆) .... 147 8.4.1 Εισαγωγή ................................................................................................ 147 8.4.2 ∆ιαγραφή................................................................................................. 148 8.4.3 Ενηµερώσεις ........................................................................................... 149

9 ΣΥΝΑΛΛΑΓΕΣ............................................................................................... 151

9.1 ΠΡΑΞΕΙΣ ΣΥΝΑΛΛΑΓΩΝ..................................................................................... 152 9.2 ΟΙ Ι∆ΙΟΤΗΤΕΣ ACID ΜΙΑΣ ΣΥΝΑΛΛΑΓΗΣ ............................................................. 154 9.3 ΟΡΙΣΜΟΣ ΣΥΝΑΛΛΑΓΗΣ .................................................................................... 155 9.4 ΧΡΟΝΟΠΡΟΓΡΑΜΜΑ ......................................................................................... 155 9.5 ΣΥΓΚΡΟΥΣΗ ΠΡΑΞΕΩΝ ΣΕ ΧΡΟΝΟΠΡΟΓΡΑΜΜΑ ................................................... 157 9.6 ΠΛΗΡΕΣ ΧΡΟΝΟΠΡΟΓΡΑΜΜΑ............................................................................ 157 9.7 ΣΕΙΡΙΑΚΑ ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΑ....................................................................... 158

9.7.1 Ισοδύναµα Χρονοπρογράµµατα : ............................................................ 158 9.7.2 Σειριοποιήσιµο Χρονοπρόγραµµα ........................................................... 159

Σελ. 3

Page 4: Βάσεις δεδομένων

ΒΑΣΕΙΣ ∆Ε∆ΟΜΕΝΩΝ

9.8 ΙΣΟ∆ΥΝΑΜΑ ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΑ ΒΑΣΕΙ ΣΥΓΚΡΟΥΣΕΩΝ .................................. 159 9.8.1 Σειριοποιησιµότητα βάσει Συγκρούσεων: ................................................ 159 9.8.2 Σειριοποιησιµότητα Βάσει Όψεων ........................................................... 160

10 ΑΝΑΚΑΜΨΗ ................................................................................................. 161

10.1 ΕΙ∆Η ΑΠΟΤΥΧΙΩΝ ............................................................................................. 161 10.2 ΣΗΜΕΙΟ ΕΛΕΓΧΟΥ............................................................................................ 162 10.3 ΕΠΙΚΥΡΩΣΗ ∆ΥΟ ΦΑΣΕΩΝ ................................................................................. 164 10.4 ΥΠΟΣΤΗΡΙΞΗ ΑΠΟ ΤΗΝ SQL ............................................................................. 164

11 ΤΑΥΤΟΧΡΟΝΙΣΜΟΣ ..................................................................................... 166

11.1 ΧΑΜΕΝΗ ΕΝΗΜΕΡΩΣΗ...................................................................................... 168 11.2 ΕΞΑΡΤΗΣΗ ΑΠΟ ΑΝΕΠΙΚΥΡΩΤΗ ΜΕΤΑΒΟΛΗ ........................................................ 168 11.3 ΑΣΥΝΕΠΗΣ ΑΝΑΛΥΣΗ........................................................................................ 169 11.4 ΤΕΧΝΙΚΗ ΕΛΕΓΧΟΥ ΚΛΕΙ∆ΩΜΑ (LOCKING) ...................................................... 170 11.5 ΜΗΤΡΩΟ ΣΥΜΒΑΤΟΤΗΤΑΣ (COMPATIBILITY MATRIX) .................................. 171 11.6 ΠΡΩΤΟΚΟΛΛΟ ΠΡΟΣΠΕΛΑΣΗΣ ∆Ε∆ΟΜΕΝΩΝ (DATA ACCESS PROTOCOL) ............. 172 11.7 Α∆ΙΕΞΟ∆Ο (DEADLOCK) ............................................................................. 172

11.7.1 Το πρόβληµα της χαµένης ενηµέρωσης.................................................. 173 11.7.2 Το πρόβληµα Εξάρτησης από Ανεπικύρωτη Μεταβολή .......................... 173 11.7.3 Το πρόβληµα Ασυνεπούς Ανάλυσης....................................................... 174 11.7.4 Γενικό Παράδειγµα Αδιεξόδου................................................................. 175 11.7.5 Χρονοσήµο ∆οσοληψίας ......................................................................... 175 11.7.6 Επιφυλακτική αναµονή ............................................................................ 176

11.8 ΣΕΙΡΟΠΟΙΗΣΙΜΟΤΗΤΑ (SERIALIABILITY) ............................................................. 177 11.9 ΠΡΩΤΟΚΟΛΛΟ ΚΛΕΙ∆ΩΜΑΤΟΣ ∆ΥΟ ΦΑΣΕΩΝ ....................................................... 177 11.10 ΠΡΟΤΙΘΕΜΕΝΟ ΚΛΕΙ∆ΩΜΑ............................................................................. 178

12 ΑΣΦΑΛΕΙΑ .................................................................................................... 179

12.1 ΕΙΣΑΓΩΓΗ ........................................................................................................ 179 12.2 ΠΡΟΒΛΗΜΑΤΑ.................................................................................................. 179 12.3 ΠΟΛΙΤΙΚΗ ΑΣΦΑΛΕΙΑΣ ...................................................................................... 180 12.4 ΜΗΧΑΝΙΣΜΟΣ ΑΣΦΑΛΕΙΑΣ ................................................................................ 181 12.5 Ο ∆ΙΑΧΕΙΡΙΣΤΗΣ Β∆ ......................................................................................... 181 12.6 ΠΡΟΣΤΑΣΙΑ ΠΡΟΣΠΕΛΑΣΗΣ, ΛΟΓΑΡΙΑΣΜΟΙ ΧΡΗΣΤΩΝ ΚΑΙ ΕΠΙΘΕΩΡΗΣΕΙΣ ΒΑΣΕΩΝ ∆Ε∆ΟΜΕΝΩΝ. ............................................................................................................ 183 12.7 ΊΧΝΗ ΕΛΕΓΧΟΥ ................................................................................................ 184 12.8 ΕΠΙΛΕΚΤΙΚΟΣ Η ΠΕΡΙΠΤΩΣΙΑΚΟΣ ΈΛΕΓΧΟΣ ΠΡΟΣΠΕΛΑΣΗΣ ................................ 185

12.8.1 Επιλεκτικός ή Περιπτωσιακός Έλεγχος Προσπέλασης βάσει Όψεων ..... 185 12.8.2 Μοντέλο Πίνακα Προσπέλασης (Access Matrix Model) .......................... 185 12.8.3 Η εντολή GRANT .................................................................................... 186 12.8.4 Η εντολή REVOKE ................................................................................. 187 12.8.5 Παραδείγµατα.......................................................................................... 187 12.8.6 Επιλεκτικός Έλεγχος Προσπέλασης στις Όψεις ...................................... 188 12.8.7 SECURITY RULE .................................................................................. 188

12.9 ΥΠΟΧΡΕΩΤΙΚΟΣ Η ΚΑΝΟΝΙΣΤΙΚΟΣ ΈΛΕΓΧΟΣ ΠΡΟΣΠΕΛΑΣΗΣ............................... 189 12.9.1 Κλάσεις Ασφάλειας.................................................................................. 189 12.9.2 Παράδειγµα Α.......................................................................................... 190 12.9.3 Παράδειγµα Β.......................................................................................... 191

13 ΚΡΥΠΤΟΓΡΑΦΗΣΗ ...................................................................................... 192

13.1 ΑΠΛΟΣ ΜΗΧΑΝΙΣΜΟΣ ΚΡΥΠΤΟΓΡΑΦΗΣΗΣ.......................................................... 192 13.2 ΤΟ ΠΡΟΤΥΠΟ DES (DATA ENCRYPTION STANDARD)............................ 193 13.3 ΚΡΥΠΤΟΓΡΑΦΗΣΗ ΜΕ ∆ΗΜΟΣΙΟ ΚΛΕΙ∆Ι ............................................................. 194 13.4 MΗΧΑΝΙΣΜΟΣ RSA .......................................................................................... 195

Σελ. 4

Page 5: Βάσεις δεδομένων

1.1 Εισαγωγή

13.4.1 Λειτουργία RSA....................................................................................... 195 13.4.2 Παράδειγµα RSA..................................................................................... 196 13.4.3 Παράδειγµα Αποφυγής Πλαστογράφησης .............................................. 197

14 ΣΥΓΧΡΟΝΑ ΘΕΜΑΤΑ ΒΑΣΕΩΝ ∆Ε∆ΟΜΕΝΩΝ.......................................... 198

14.1 ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΈΝΝΟΙΕΣ ΤΩΝ ΧΩΡΙΚΩΝ ΒΑΣΕΩΝ ∆Ε∆ΟΜΕΝΩΝ ........................ 198 14.1.1 Κατηγορίες Τυπικών Χωρικών Επερωτήσεων ........................................ 199

14.2 ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΈΝΝΟΙΕΣ ΒΑΣΕΩΝ ∆Ε∆ΟΜΕΝΩΝ ΠΟΛΥΜΕΣΩΝ ...................................................... 200 14.2.1 Εικόνας.................................................................................................... 201 14.2.2 Βίντεο ...................................................................................................... 202 14.2.3 Κειµένου .................................................................................................. 202 14.2.4 Ήχου ....................................................................................................... 203

14.3 ΓΕΩΓΡΑΦΙΚΑ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ ........................................... 203 14.3.1 Εφαρµογές ΓΣΠ ...................................................................................... 204 14.3.2 Απαιτήσεις ∆ιαχείρισης ∆εδοµένων από τα ΓΣΠ ..................................... 205 14.3.3 Συγκεκριµένες Πράξεις σε ∆εδοµένα ΓΣΠ ............................................... 207 14.3.4 Άλλη Λειτουργικότητα των Βάσεων ∆εδοµένων. ..................................... 208

Σελ. 5

Page 6: Βάσεις δεδομένων

ΒΑΣΕΙΣ ∆Ε∆ΟΜΕΝΩΝ

1 ΒΑΣΕΙΣ ∆Ε∆ΟΜΕΝΩΝ

1.1 ΕΙΣΑΓΩΓΗ

Οι βάσεις δεδοµένων και τα συστήµατα των βάσεων δεδοµένων αποτελούν ένα σηµαντικό στοιχείο της καθηµερινής ζωής στη σύγχρονη κοινωνία. Για παράδειγµα, αν πάµε στην τράπεζα για κατάθεση η ανάληψη χρηµάτων, αν κάνουµε κράτηση ξενοδοχείου η αεροπορικού ταξιδιού, αν ψάχνουµε βιβλιογραφικά στοιχεία από έναν κατάλογο βιβλιοθήκης η αν παραγγέλνουµε µια συνδροµή περιοδικού σ' έναν εκδότη, υπάρχει πιθανότητα η δραστηριότητα µας να περιλαµβάνει κάποια προσπέλαση σε βάση δεδοµένων. Ακόµη και η αγορά αντικειµένων από ένα σούπερ µάρκετ σήµερα περιλαµβάνει σε πολλές περιπτώσεις ενηµέρωση της βάσης δεδοµένων όπου καταχωρούνται τα αποθέµατα των προϊόντων του σούπερ µάρκετ. Αυτές οι διεπαφές είναι παραδείγµατα αυτού που αποκαλούµε παραδοσιακές εφαρµογές των βάσεων δεδοµένων, όπου οι περισσότερες αποθηκευµένες πληροφορίες είναι ή σε µορφή text ή σε µορφή αριθµών. Τα τελευταία χρόνια η πρόοδος στην τεχνολογία έχει οδηγήσει σε συναρπαστικές νέες εφαρµογές των συστηµάτων βάσεων δεδοµένων. Οι βάσεις δεδοµένων πολυµέσων µπορούν σήµερα να αποθηκεύσουν εικόνες, video και µηνύµατα ήχου. Τα γεωγραφικά πληροφοριακά συστήµατα (GIS) µπορούν να αποθηκεύσουν και να αναλύσουν δεδοµένα καιρού και δορυφορικές εικόνες. Οι αποθήκες δεδοµένων και τα on-line συστήµατα αναλυτικής επεξεργασίας (OLAP) χρησιµοποιούνται σε πολλές εταιρείες για την εξαγωγή και ανάλυση χρήσιµων πληροφοριών από µεγάλες βάσεις δεδοµένων για λήψη αποφάσεων. Οι τεχνικές αναζήτησης των βάσεων δεδοµένων έχουν εφαρµοσθεί στο WEB για τη βελτίωση της αναζήτησης πληροφοριών για τις οποίες ερευνούν οι χρήστες που περιηγούνται το διαδύκτιο.

Είναι εύλογο να ειπωθεί ότι οι βάσεις δεδοµένων θα διαδραµατίσουν κρίσιµο ρόλο σε όλες τις περιοχές όπου χρησιµοποιούνται υπολογιστές όπως στις επιχειρήσεις, στη µηχανική, στην ιατρική, στα νοµικά, στην εκπαίδευση και στη βιβλιοθηκονοµία, για να αναφέρουµε µερικές µόνο από αυτές. Η φράση βάση δεδοµένων βρίσκεται σε τόσο κοινή χρήση που πρέπει να αρχίσουµε ορίζοντας τι είναι µια βάση δεδοµένων.

Βάση δεδοµένων (database) είναι µια ολοκληρωµένη συλλογή από σχετιζόµενα δεδοµένα. Με τον όρο δεδοµένα εννοούµε γνωστά γεγονότα που µπορούν να καταγραφούν και που έχουν κάποια υπονοούµενη σηµασία.

Ο πιο πάνω ορισµός της βάσης δεδοµένων είναι αρκετά γενικός. Ωστόσο, η συνήθης χρήση του όρου βάση δεδοµένων είναι αρκετά πιο περιορισµένη.

Μπορούµε να πούµε ότι µια Β∆ αναπαριστά ένα µικρόκοσµο. Παραδείγµατα τέτοιων µικρόκοσµων είναι ένα πανεπιστήµιο (καθηγητές - φοιτητές - µαθήµατα - αίθουσες κλπ.), µια εταιρία (υπάλληλοι -τµήµατα - κτίρια κλπ.), ένα κατάστηµα λιανικής (προϊόντα - ράφια - πελάτες - προµηθευτές κλπ.), µια βιβλιοθήκη (βιβλία - θέσεις αποθήκευσης - δανειζόµενοι κλπ.). Σηµαντικό χαρακτηριστικό των πληροφοριών που

Σελ. 6

Page 7: Βάσεις δεδομένων

1.2 Ιστορία- Εξέλιξη Βάσεων ∆εδοµένων

περιέχονται σε µια Β∆ είναι ότι αυτές είναι συσχετιζόµενες. Για παράδειγµα, στο µικρόκοσµο του πανεπιστήµιου, οι καθηγητές διδάσκουν µαθήµατα, τα οποία παρακολουθούνται από φοιτητές κοκ. Αν µια πληροφορία δεν σχετίζεται µε άλλες µέσα στον µικρόκοσµο, τότε δεν ανήκει στη συγκεκριµένη Β∆.

1.2 ΙΣΤΟΡΙΑ- ΕΞΕΛΙΞΗ ΒΑΣΕΩΝ ∆Ε∆ΟΜΕΝΩΝ

∆εκαετία του 1950

Για τη διαχείριση και επεξεργασία µεµονωµένων αρχείων χρησιµοποιούνταν οι Κάρτες και ταινίες (σειριακή επεξεργασία). Οι εξελίξεις σε συσκευές µαζικής αποθήκευσης τυχαίας πρόσβασης και αύξηση υπολογιστικής ισχύος θέτουν τις προϋποθέσεις για την ανάπτυξη συστηµάτων διαχείρισης δεδοµένων σε αντικατάσταση των συστηµάτων διαχείρισης αρχείων.

∆εκαετία του 1960

Τα πρώτα συστήµατα διαχείρισης βάσεων δεδοµένων δηµιουργήθηκαν τη δεκαετία του 1960 µε σκοπό να προσφέρουν ένα κοινό οργανωτικό πλαίσιο για τη διαχείριση δεδοµένων τα οποία µέχρι τότε αποθηκεύονταν σε µεµονωµένα αρχεία. Το 1964, ο Charles Bachman (1st Turing Award, 1973) της General Electric πρότεινε ένα δικτυωτό µοντέλο δεδοµένων (network data model) στο οποίο οι εγγραφές δεδοµένων ήταν συνδεδεµένες µεταξύ τους µε τέτοιο τρόπο ώστε να σχηµατίζουν τεµνόµενα σύνολα δεδοµένων. Τα πρώτα συστήµατα διαχείρισης βάσεων δεδοµένων στηρίχθηκαν σε αυτό το δικτυωτό µοντέλο.

Το 1965 η εταιρία IBM και η ∆ιεύθυνση ∆ιαστήµατος της North American Aviation ανέπτυξαν από κοινού το ιεραρχικό µοντέλο δεδοµένων (hierarchical data model). Σε αυτό το µοντέλο, τα δεδοµένα παριστάνονταν ως δενδροειδείς δοµές µέσα σε µία ιεραρχία εγγραφών. Το Σύστηµα ∆ιαχείρισης Πληροφοριών (Information Management System - IMS) της ΙΒΜ που κυκλοφόρησε στην αγορά το 1969 ήταν βασιζόµενο στο ιεραρχικό µοντέλο δεδοµένων. Από τα δικτυωτά και ιεραρχικά συστήµατα µόνο το IMS παραµένει σε χρήση µέχρι σήµερα.

1970

Ο ορισµός του σχεσιακού µοντέλου δεδοµένων (Relational data model) έγινε για πρώτη φορά το 1970 από τον ∆ρ. Edgar Codd (Turing Award, 1981) σε ένα ερευνητικό έντυπο της IBM µε τίτλο "System R4 Relational". Στην αρχή βέβαια δεν ήταν ξεκάθαρο κατά πόσο ένα σχεσιακό σύστηµα που θα βασιζόταν στο σχεσιακό µοντέλο θα µπορούσε να πετύχει εµπορικά. Έτσι µέχρι και το 1979 όλες οι εµπορικές υλοποιήσεις βάσεων δεδοµένων βασίζονταν είτε στη δικτυωτή είτε στην ιεραρχική προσέγγιση. Άρχισαν να αναπτύσσονται βέβαια τα ερευνητικά προγράµµατα σχεσιακών συστηµάτων System R (IBM) και INGRESS (Berkley) καθώς και οι σχεσιακές γλώσσες SEQUEL, QBE, και QUEL.

1976

Το µοντέλο οντοτήτων-συσχετίσεων του Chen

Σελ. 7

Page 8: Βάσεις δεδομένων

ΒΑΣΕΙΣ ∆Ε∆ΟΜΕΝΩΝ

1979

Τη χρονιά αυτή ιδρύθηκε η εταιρία Relational Software Incorporated (RSI) και κυκλοφόρησε στην αγορά τη σχεσιακή βάση δεδοµένων Oracle V.2. Η IBM δεν ενσωµάτωσε τη σχεσιακή τεχνολογία σε κανένα προϊόν της µέχρι την κυκλοφορία του λογισµικού Query Management Facility το 1983.

Αρχές του 1980

Η σχεσιακή γλώσσα SQL (µέρος του System R) αντικατέστησε την QUEL στο σύστηµα INGRES. Αναπτύχθηκαν οι έννοιες της διαχείρισης συναλλαγών (transaction management) από τον Jim Gray (Turing Award, 1999). Οι τάσεις που άρχισαν να εµφανίζονται αφορούν τα αντικειµενοστραφή συστήµατα, την αρχιτεκτονική πελάτη-διακοµιστή, και τις κατανεµηµένες βάσεις.

∆εκαετία του 1980 :

Οι εγκαταστάσεις των σχεσιακών συστηµάτων αυξάνουν µε γοργούς ρυθµούς µε πρώτα τα συστήµατα Oracle, SQL Server, Sybase, Informix, DB2. Εµφανίζονται τα σχεσιακά συστήµατα διαχείρισης βάσεων δεδοµένων και σε προσωπικούς υπολογιστές : DBase II (Ashton Tate) εξελίχτηκε µέχρι τις µέρες µας ως Paradox, Microsoft ACCESS.

∆εκαετία του 1990:

Εµφανίζονται τα πρώτα εµπορικά αντικειµενοστραφή συστήµατα Β ∆, η σύνδεση Β∆ στο διαδίκτυο, η ευρύτατη διάδοση τεχνολογίας που επιτρέπει την επικοινωνία των χρηστών µε Β∆ µέσω διαδικτύου (HTML, XML, ASP κλπ)

1.3 ΣΥΣΤΗΜΑ ΒΑΣΗΣ ∆Ε∆ΟΜΕΝΩΝ

∆εδοµένα (data) είναι γνωστά γεγονότα / περιστατικά που καταγράφονται και έχουν νόηµα.

Βάση ∆εδοµένων - Β∆ (database) είναι µία ολοκληρωµένη συλλογή σχετιζόµενων δεδοµένων µέσα σε κοινά διαθέσιµο µέσο µαζικής αποθήκευσης. Άρα τα δεδοµένα µιας Β∆ δεν είναι ανεξάρτητα µεταξύ τους γιατί στην περίπτωση αυτή θα είχαµε όχι µία αλλά περισσότερες Β∆. Η Βάση ∆εδοµένων αποθηκεύεται (συνήθως) σε δευτερεύουσα µνήµη.

Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων -Σ∆Β∆ (Database Management System - DBMS) είναι µια αυτοτελής συλλογή από τµήµατα λογισµικού (προγράµµατα) για την δηµιουργία, επεξεργασία και συντήρηση Β∆.

Τέλος, Σύστηµα Βάσεων ∆εδοµένων - ΣΒ∆ (Database System) είναι το λογισµικό DBMS µαζί µε τη Βάση δεδοµένων.

ΣΥΣΤΗΜΑ ∆ΙΑΧΕΙΡΙΣΗΣ ΒΑΣΗΣ ∆Ε∆ΟΜΕΝΩΝ

ΒΑΣΗ ∆Ε∆ΟΜΕΝΩΝ

Σελ. 8

ΣΥΣΤΗΜΑ ΒΑΣΗΣ ∆Ε∆ΟΜΕΝΩΝ

Page 9: Βάσεις δεδομένων

1.3 Σύστηµα βάσης δεδοµένων

Το Σύστηµα βάσης δεδοµένων αποτελείται από τη βάση δεδοµένων, µία ή περισσότερες γλώσσες βάσεων δεδοµένων που επιτρέπουν την επικοινωνία µε τη βάση και κάποια προγράµµατα εφαρµογών

1.3.1 Βάση ∆εδοµένων Μια βάση δεδοµένων έχει τις ακόλουθες υπονοούµενες ιδιότητες:

• αναπαριστά κάποια άποψη του πραγµατικού κόσµου η οποία µερικές φορές λέγεται µικρόκοσµος (miniworld)

• είναι µια λογικά συνεκτική συλλογή δεδοµένων που έχει κάποια εγγενή σηµασία. Μια τυχαία διευθέτηση δεδοµένων δεν είναι σωστό να αναφέρεται ως βάση δεδοµένων.

• σχεδιάζεται, χτίζεται και γεµίζει µε δεδοµένα για κάποιο συγκεκριµένο σκοπό. Προορίζεται για µια συγκεκριµένη οµάδα χρηστών και για κάποιες προκαθορισµένες εφαρµογές.

Κάθε βάση δεδοµένων έχει κάποια πηγή από την οποία παράγονται τα δεδοµένα, αλληλεπιδρά σε κάποιο βαθµό µε γεγονότα του πραγµατικού κόσµου και απευθύνεται σ' ένα ακροατήριο που ενδιαφέρεται ενεργά για το περιεχόµενο της.

ΒΑΣΗ ∆Ε∆ΟΜΕΝΩΝ

Εικόνα: Βάση ∆εδοµένων είναι µία ολοκληρωµένη συλλογή σχετιζόµενων

δεδοµένων.

Αν µια πληροφορία δεν σχετίζεται µε άλλες µέσα στη βάση, τότε δεν ανήκει στη συγκεκριµένη Βάση ∆εδοµένων

1.3.2 Συστήµατα διαχείρισης βάσεων δεδοµένων Σε ένα τυπικό "σύστηµα επεξεργασία αρχείων" υποστηριζόµενο από ένα

συµβατικό λειτουργικό σύστηµα οι εγγραφές διατηρούνται στα µόνιµα αρχεία και τα προγράµµατα εφαρµογών γράφονται για να διαχειριστούν τα αρχεία αυτά για να εκτελέσουν ενέργειες εισαγωγής, διαγραφής, εύρεσης κλπ: Καθώς η ανάπτυξη και εξέλιξη του συστήµατος θα συνεχίζεται µε την πάροδο του χρόνου νέα προγράµµατα εφαρµογών πρέπει να γραφτούν, νέα µόνιµα αρχεία δηµιουργούνται και στη διάρκεια µεγάλης χρονικής περιόδου τα αρχεία θα έχουν διαφορετικά format, και τα προγράµµατα εφαρµογών θα είναι σε διαφορετικές γλώσσες προγραµµατισµού.

Έτσι τα συστήµατα διαχείρισης βάσεων δεδοµένων αναπτύχθηκαν για να χειρίζονται και ελέγχουν τις παρακάτω δυσκολίες των τυπικών συστηµάτων διαχείρισης αρχείων που υποστηρίζονταν από τα συµβατικά λειτουργικά συστήµατα

• Προβλήµατα Ασυνέπειας και πλεονασµού δεδοµένων (οι ίδιες πληροφορίες µπορεί να αναπαραχθούν σε διαφορετικά αρχεία)

Σελ. 9

Page 10: Βάσεις δεδομένων

ΒΑΣΕΙΣ ∆Ε∆ΟΜΕΝΩΝ

• Προβλήµατα Ακεραιότητας ∆εδοµένων (τα δεδοµένα θα πρέπει να ικανοποιούν κάποιους περιορισµούς. Π.χ. κανένα υπόλοιπο λογαριασµού κάτω από 1.000).

• ∆υσκολίες προσπέλασης ∆εδοµένων (θα πρέπει να γραφτεί ένα νέο πρόγραµµα εφαρµογής για να ικανοποιηθεί ένα ασυνήθιστο αίτηµα. Π.χ. βρείτε όλους τους πελάτες µε τον ίδιο ταχυδροµικό κώδικα.)

• Προβλήµατα Ασφάλειας (Π.χ. οι υπεύθυνοι µισθοδοσίας χειρίζονται µόνο τα αρχεία υπαλλήλων, και δεν πρέπει να δουν τους λογαριασµούς πελατών.)

• Προβλήµατα Ανεξαρτησίας ∆εδοµένων (πολλαπλά αρχεία και formats)

• ∆υσκολίες ενηµέρωσης πολλών αρχείων (όλα τα αντίγραφα δεν είναι δυνατόν να ενηµερωθούν σωστά)

• Προβλήµατα ταυτόχρονης προσπέλασης από πολλούς χρήστες (Π.χ. δύο πελάτες που αποσύρουν τα κεφάλαια από τον ίδιο λογαριασµό την ίδια χρονική στιγµή— ο λογαριασµός έχει 10.000 και αποσύρουν 2.000 και 3.000 ο καθένας)

Αυτά τα προβλήµατα και άλλα οδήγησαν στην ανάπτυξη των συστηµάτων διαχείρισης βάσεων δεδοµένων.

Σύστηµα διαχείρισης βάσεων δεδοµένων (Σ∆Β∆) (database management system-DBMS) είναι µια συλλογή από προγράµµατα που επιτρέπουν στους χρήστες να δηµιουργήσουν και να συντηρήσουν µια βάση δεδοµένων.

Εποµένως, το Σ∆Β∆ είναι ένα γενικής χρήσης (general-purpose) σύστηµα λογισµικού που διευκολύνει τις διαδικασίες ορισµού, κατασκευής και χειρισµού βάσεων δεδοµένων για διάφορες εφαρµογές.

Ο ορισµός (definition) µιας βάσης δεδοµένων περιλαµβάνει την προδιαγραφή των τύπων, των δοµών και των περιορισµών των δεδοµένων που θα αποθηκευτούν στη βάση. Κατασκευή µιας βάσης δεδοµένων είναι η διαδικασία αποθήκευσης των ίδιων των δεδοµένων σ' ένα µέσο αποθήκευσης που ελέγχεται από το Σ∆Β∆. Ο χειρισµός (manipulation) µιας βάσης δεδοµένων περιλαµβάνει λειτουργίες όπως υποβολή επερωτήσεων (queries) προς τη βάση για ανάκτηση συγκεκριµένων δεδοµένων, ενηµέρωση της βάσης ώστε να αντανακλά αλλαγές στο µικρόκοσµο και παραγωγή αναφορών από τα δεδοµένα.

1.3.3 Σύστηµα Βάσης δεδοµένων Μια βάση δεδοµένων, µαζί µε το αντίστοιχο λογισµικό DBMS, αποτελεί το σύστηµα

βάσης δεδοµένων (database system).

O γενικός σκοπός του Σύστηµα βάσης δεδοµένων είναι

• να τηρεί πληροφορίες και

• να δίνει αυτές τις πληροφορίες όταν του ζητούνται.

Βασικά χαρακτηριστικά των Συστηµάτων Βάσεων ∆εδοµένων είναι:

Σελ. 10

Page 11: Βάσεις δεδομένων

1.3 Σύστηµα βάσης δεδοµένων

η αυτοπεριγραφική φύση τους: ο οµοιογενής δηλαδή τρόπος δηµιουργίας, πρόσβασης και ελέγχου των δεδοµένων, ανεξάρτητα εφαρµογής

το µοίρασµα (sharing) των δεδοµένων και η χρήση τους από πολλούς χρήστες, ακόµη και ταυτόχρονα

ο κεντρικός έλεγχος λειτουργίας και διαχείρισης (database administration) από ένα ή περισσότερα πρόσωπα που έχουν συγκεκριµένο ρόλο «∆ιαχειριστή Β∆» (database administrator – DBA)

η υποστήριξη κανόνων ακεραιότητας (δεν µπορούν να υπάρχουν λανθασµένα δεδοµένα, δηλαδή δεδοµένα που παραβαίνουν κάποιους κανόνες που έχουν δηλωθεί), ασφάλειας (δεν µπορούν να πειραχτούν δεδοµένα που δεν πρέπει), δικαιοδοσίας (το σύστηµα «γνωρίζει» ποιος έχει δικαίωµα πάνω σε ποια δεδοµένα)

ο έλεγχος ταυτοχρονισµού (concurrency control) στις περιπτώσεις ταυτόχρονης προσπέλασης των ίδιων δεδοµένων από περισσότερους του ενός χρήστες και ειδικοί µηχανισµοί για ανάκαµψη (recovery) σε περιπτώσεις αθέλητης διακοπής της λειτουργίας του Σ∆Β∆.

Εικόνα Ένα απλουστευµένο περιβάλλον συστήµατος βάσης δεδοµένων

Υπάρχουν συστήµατα βάσεων δεδοµένων για µηχανήµατα που εκτείνονται σε όλο το φάσµα — από τους µικροϋπολογιστές (ακόµα και τα φορητά PC) µέχρι τα µεγαλύτερα συστήµατα mainframe. Ειδικότερα, τα συστήµατα για µεγάλα µηχανήµατα

Σελ. 11

Page 12: Βάσεις δεδομένων

ΒΑΣΕΙΣ ∆Ε∆ΟΜΕΝΩΝ

(τα "µεγάλα συστήµατα") είναι συνήθως συστήµατα πολλών χρηστών, ενώ εκείνα των µικρότερων µηχανηµάτων (τα "µικρά συστήµατα") είναι συνήθως συστήµατα ενός χρήστη. Σύστηµα ενός χρήστη (single user system) είναι ένα σύστηµα στο οποίο µόνο ένας χρήστης έχει πρόσβαση στη βάση δεδοµένων οποιαδήποτε δεδοµένη στιγµή σύστηµα πολλών χρηστών (multiuser system) είναι ένα σύστηµα στο οποίο πολλοί χρήστες έχουν πρόσβαση στη βάση δεδοµένων ταυτόχρονα.

1.4 ∆Ε∆ΟΜΕΝΑ

Οι πιο γνωστοί τύποι δεδοµένων που χρησιµοποιούνται στα σύγχρονα πληροφοριακά συστήµατα, είναι:

Ονοµασία Περιγραφή Μέγεθος σε bytes Integer Ακέραιοι αριθµοί 2 Real Πραγµατικοί αριθµοί 4 Char Χαρακτήρες 1 String Λέξεις και φράσεις Μεταβλητό Date Ηµεροµηνία 8

Αυτοί οι στοιχειώδεις τύποι δεδοµένων συσχετίζονται µε µια και µοναδική τιµή, και δεν µπορούν να αναλυθούν σε µικρότερες µονάδες.

Σύνθετοι τύποι δεδοµένων: Στις πιο συνηθισµένες περιπτώσεις, τα δεδοµένα υφίστανται ευκολότερη και αποτελεσµατικότερη διαχείριση εάν οµαδοποιηθούν σε µεγαλύτερες οντότητες, τις οποίες διαπραγµατευόµαστε όπως ακριβώς και τα απλά δεδοµένα. Ας πάρουµε για παράδειγµα την περίπτωση µιας Εταιρίας. Εάν θελήσουµε να δηµιουργήσουµε ένα πρόγραµµα στο οποίο θα καταχωρούµε τα στοιχεία των υπαλλήλων, τότε τα στοιχεία εκείνα που θα κρατάµε για κάθε υπάλληλο, θα είναι το Όνοµά του, το Επώνυµό του, η Ηµεροµηνία Γέννησής του, και ο Κωδικός του – ας περιοριστούµε µόνο σε αυτά. Στην περίπτωση αυτή, δηµιουργούµε ένα σύνθετο τύπο δεδοµένων – τον οποίο ας ονοµάσουµε ΥΠΑΛΛΗΛΟΣ – που θα περιέχει τα τέσσερα πεδία που περιγράψαµε παραπάνω:

Κωδικός

Όνοµα

Επώνυµο

ΗµΓέν

ΥΠΑΛΛΗΛΟΣ

ΗµΓέν_Υπαλλήλου

Επώνυµο_Υπαλλήλου

Όνοµα_Υπαλλήλου

Κωδικός_Υπαλλήλου

Σχήµα: Περιγραφή οντότητας µε απλούς και σύνθετους τύπους δεδοµένων

Οι τέσσερις τύποι δεδοµένων που σχηµατίζουν τον σύνθετο τύπο δεδοµένων ΥΠΑΛΛΗΛΟΣ, υφίστανται διαχείριση, σαν να ήταν ένας απλός τύπος δεδοµένων και χρησιµοποιείται για την αποθήκευση εγγραφών (records). Όπως γίνεται και στις

Σελ. 12

Page 13: Βάσεις δεδομένων

1.4 ∆εδοµένα

συµβατικές γλώσσες προγραµµατισµού όπου για παράδειγµα ένα πρόγραµµα PASCAL µπορεί να περιέχει δηλώσεις για δοµές εγγραφών, ένα πρόγραµµα C++ µπορεί να χρησιµοποιεί δηλώσεις "struct" και "class" ενώ ένα πρόγραµµα COBOL έχει δηλώσεις στο Data Division για τον ορισµό των αρχείων του.

Βέβαια στην παραδοσιακή επεξεργασία αρχείων, ο ορισµός των δεδοµένων αποτελεί τµήµα των ίδιων των προγραµµάτων εφαρµογών ενώ στην προσέγγιση των βάσεων δεδοµένων οι ορισµοί των δοµών των αρχείων, ο τύπος και η µορφή αποθήκευσης κάθε στοιχειώδους δεδοµένου, καθώς και οι διάφοροι περιορισµοί επί των δεδοµένων αποθηκεύονται ξεχωριστά στον κατάλογο (catalog) του συστήµατος της βάσης δεδοµένων και λέγονται µετα-δεδοµένα (meta-data).

∆εδοµένα- ενοποίηση και µερισµός

Γενικά, τα δεδοµένα της βάσης δεδοµένων είναι ενοποιηµένα (integrated) και µεριζόµενα (shared— δηλαδή κοινόχρηστα). Αυτές οι δύο πλευρές, η ενοποίηση και ο µερισµός των δεδοµένων, είναι από τα µεγαλύτερα πλεονεκτήµατα των συστηµάτων βάσεων δεδοµένων.

• Με τον όρο ενοποίηση δεδοµένων (data integration) εννοούµε ότι η βάση δεδοµένων µπορεί να θεωρείται µια συνένωση πολλών αρχείων δεδοµένων, που από κάθε άλλη άποψη είναι ξεχωριστά το ένα από το άλλο, ενώ κάθε πλεονασµός εξαιτίας της επανάληψης δεδοµένων µεταξύ αυτών των αρχείων έχει εξαλειφθεί εντελώς ή κατά ένα µέρος.

Για παράδειγµα, µια βάση δεδοµένων µπορεί να περιλαµβάνει ένα αρχείο ΥΠΑΛΛΗΛΟΙ, που περιέχει τα ονόµατα, τις διευθύνσεις, τα τµήµατα, τους µισθούς κ.λπ. των υπαλλήλων, και ένα αρχείο ΣΥΜΜΕΤΟΧΕΣ, που αντιπροσωπεύει τις συµµετοχές υπαλλήλων σε κάποια εκπαιδευτικά σεµινάρια (δείτε στην παρακάτω Εικόνα). Ας υποθέσουµε τώρα ότι, για να υποστηριχθεί η διαχείριση των εκπαιδευτικών σεµιναρίων, πρέπει να είναι γνωστό το τµήµα στο οποίο ανήκει ο κάθε υπάλληλος που συµµετέχει. Είναι σαφές ότι, σε αυτή την περίπτωση, δεν υπάρχει λόγος να συµπεριληφθούν αυτές οι (πλεονάζουσες) πληροφορίες στο αρχείο ΣΥΜΜΕΤΟΧΕΣ, επειδή µπορεί κανείς να τις βρίσκει από το αρχείο ΥΠΑΛΛΗΛΟΙ.

ΥΠΑΛΛΗΛΟΙ ΟΝΟΜΑ ∆ΙΕΥΘΥΝΣΗ ΤΜΗΜΑ ΜΙΣΘΟΣ …………. ΣΥΜΜΕΤΟΧΕΣ ΟΝΟΜΑ ΣΕΜΙΝΑΡΙΟ ……….

Εικόνα Τα αρχεία ΥΠΑΛΛΗΛΟΙ και ΣΥΜΜΕΤΟΧΕΣ

• Με τον όρο µερισµός δεδοµένων (data sharing) εννοούµε ότι τα µεµονωµένα στοιχεία δεδοµένων της βάσης δεδοµένων µπορούν να τα µοιράζονται πολλοί διαφορετικοί χρήστες, µε την έννοια ότι καθένας από αυτούς τους χρήστες µπορεί να έχει πρόσβαση στο ίδιο στοιχείο δεδοµένων (και οι διάφοροι χρήστες µπορούν να το χρησιµοποιούν για διαφορετικό σκοπό). Όπως αναφέραµε και νωρίτερα, οι διάφοροι χρήστες µπορούν να έχουν πρόσβαση στο ίδιο στοιχείο δεδοµένων την ίδια στιγµή ("ταυτόχρονη προσπέλαση"). Αυτού του είδους ο µερισµός (ταυτόχρονος ή όχι) είναι σε ένα βαθµό συνέπεια του γεγονότος ότι η βάση δεδοµένων είναι ενοποιηµένη. Στο

Σελ. 13

Page 14: Βάσεις δεδομένων

ΒΑΣΕΙΣ ∆Ε∆ΟΜΕΝΩΝ

παραπάνω παράδειγµα µας, των υπαλλήλων και των συµµετοχών τους σε σεµινάρια, τις πληροφορίες του αρχείου ΥΠΑΛΛΗΛΟΙ για τα τµήµατα στα οποία ανήκουν οι υπάλληλοι θα τις µοιράζονται κατά κανόνα οι χρήστες που ανήκουν στο Τµήµα Προσωπικού και στο Τµήµα Εκπαίδευσης — και, όπως είδαµε προηγουµένως, αυτές οι δύο κατηγορίες χρηστών θα χρησιµοποιούν κατά κανόνα αυτές τις πληροφορίες για διαφορετικό σκοπό.

1.5 ΠΑΡΑ∆ΕΙΓΜΑΤΑ ΒΑΣΕΩΝ ∆Ε∆ΟΜΕΝΩΝ

• Μια βάση δεδοµένων αποτελείται από κάποια συλλογή µόνιµων δεδοµένων που χρησιµοποιούνται από τα συστήµατα των εφαρµογών µιας επιχείρησης, ενός οργανισµού ενός ιδιώτη κλπ. Μερικά παραδείγµατα είναι τα:

Τράπεζες - Νοσοκοµεία- Πανεπιστήµια- Κρατικές υπηρεσίες

Αντιπροσωπεία Αυτοκινήτων (Αγορές-Πωλήσεις-Ενοικιάσεις)

Βάση Εφαρµογών Λογισµικού (Εταιρείες, Κατηγορίες, Λογισµικά, Λειτουργικά)

Βιβλίο Εσόδων-Εξόδων (Κατηγορίες, Κινήσεις, Πελάτες, Προµηθευτές)

∆ιαχείριση εστιατορίου (Υπάλληλοι, Κινήσεις-Παραγγελίες, Τραπέζια)

∆ιαχείριση µηχανογραφικού κέντρου (Servers, Υπολογιστές, Administrators, Χρήστες, Περιφερειακά, Λογισµικό, ∆ίκτυα)

Εµπορικό κύκλωµα (Πελάτες, Προµηθευτές, Κινήσεις, Αποθήκη)

Εταιρεία Πώλησης Software / Hardware

Ιατρείο - Λογιστικό Γραφείο - Μεσιτικό Γραφείο

Εταιρεία εύρεσης προσωπικού επιχειρήσεων (Επιχειρήσεις, Άνεργοι, Ειδικότητες, Κινήσεις)

Πολιτικό γραφείο υπ. Βουλευτή (Ραντεβού, Ψηφοφόροι, Επαγγέλµατα, Πόλεις)

Σχολείο (Μαθητές, Καθηγητές, Τµήµατα, Μαθήµατα, Αίθουσες)

Ταµείο Επιχείρησης (Εσοδα, Εξοδα, Αξιόγραφα, Πελάτες, Προµηθευτές)

Τεχνική Βοήθεια (Ηλεκτρικά / Υδραυλικά κλπ)

Τεχνική Εταιρεία (Έργα, Υλικά, Πελάτες, Προµηθευτές, Υπεργολάβοι, Εργάτες)

Σε κάθε ένα από τα προηγούµενα παραδείγµατα πρέπει αναγκαστικά να τηρούνται πολλά δεδοµένα που αφορούν τη λειτουργία τους.

Σήµερα επίσης, οι βάσεις δεδοµένων χρησιµοποιούνται όλο και περισσότερο και για άλλου είδους εφαρµογές — όπως είναι οι εφαρµογές υποστήριξης αποφάσεων (decision support). Στην πράξη µάλιστα, οι επιχειρήσεις διατηρούν στις µέρες µας δύο ξεχωριστές βάσεις δεδοµένων, µία για τα επιχειρησιακά δεδοµένα και άλλη µία για τα δεδοµένα υποστήριξης αποφάσεων. Η βάση δεδοµένων υποστήριξης αποφάσεων αποτελείται συχνά από συγκεντρωτικές πληροφορίες (π.χ. πληροφορίες για συνολικές ποσότητες και µέσους όρους), οι οποίες εξάγονται περιοδικά (για παράδειγµα, καθηµερινά ή εβδοµαδιαία) από την επιχειρησιακή βάση δεδοµένων.

Σελ. 14

Page 15: Βάσεις δεδομένων

1.6 Πλεονεκτήµατα της χρήσης βάσεων δεδοµένων

1.6 ΠΛΕΟΝΕΚΤΗΜΑΤΑ ΤΗΣ ΧΡΗΣΗΣ ΒΑΣΕΩΝ ∆Ε∆ΟΜΕΝΩΝ

Υπάρχουν συγκεκριµένα πλεονεκτήµατα που προκύπτουν από τον κεντρικό έλεγχο των δεδοµένων.

• Ο πλεονασµός (redundancy) µπορεί να µειωθεί στο ελάχιστο.

Στα συµβατικά συστήµατα η κάθε εφαρµογή έχει τα δικά της αρχεία. Αυτό το γεγονός οδηγεί πολύ συχνά σε υψηλό βαθµό πλεονασµού (επανάληψης) για τα αποθηκευµένα δεδοµένα, µε αποτέλεσµα τη σπατάλη αποθηκευτικού χώρου. Π.χ. µια εφαρµογή παρακολούθησης προσωπικού και µια εφαρµογή καταγραφής εκπαιδευτικών δραστηριοτήτων µπορεί να έχουν από ένα αρχείο µε πληροφορίες που αφορούν τα τµήµατα της επιχείρησης στα οποία ανήκουν οι υπάλληλοι. Όπως είδαµε όµως αυτά τα δύο αρχεία µπορούν να ενοποιηθούν ώστε να εξαλειφθεί ο πλεονασµός.

• Η ασυνέπεια µπορεί να αποφευχθεί.

Στην ουσία, αυτό είναι συνέπεια της προηγούµενης παρατήρησης. Ας υποθέσουµε ότι ένα δεδοµένο γεγονός του πραγµατικού κόσµου — ας πούµε, το γεγονός ότι ο υπάλληλος Υ3 εργάζεται στο τµήµα Τ8 — αναπαρίσταται στην αποθηκευµένη βάση δεδοµένων από δύο ξεχωριστές εγγραφές. Ας υποθέσουµε επίσης ότι το DBMS δεν είναι ενήµερο γι' αυτή τη "διπλοεγγραφή" (δηλαδή, ότι ο πλεονασµός δεν είναι ελεγχόµενος). Τότε, είναι βέβαιο ότι θα υπάρξουν περιπτώσεις που οι δύο καταχωρίσεις δε θα συµφωνούν µεταξύ τους — περιπτώσεις που η µία καταχώριση θα έχει ενηµερωθεί ενώ η άλλη όχι. Σε αυτές τις περιπτώσεις, λέµε ότι η βάση δεδοµένων είναι ασυνεπής (inconsistent). Είναι προφανές ότι µια ασυνεπής βάση δεδοµένων µπορεί να δώσει στους χρήστες της λανθασµένες ή αντιφατικές πληροφορίες.

• Τα δεδοµένα µπορούν να είναι κοινόχρηστα.

Ο µερισµός (κοινή χρήση) δε σηµαίνει µόνο ότι οι υπάρχουσες εφαρµογές µπορούν να µοιράζονται τα δεδοµένα της βάσης δεδοµένων αλλά και ότι είναι δυνατή η ανάπτυξη νέων εφαρµογών που θα µπορούν να χρησιµοποιούν τα ίδια αποθηκευµένα δεδοµένα. Με άλλα λόγια, είναι δυνατό να ικανοποιούνται οι απαιτήσεις νέων εφαρµογών σε ό,τι αφορά τα δεδοµένα, χωρίς να είναι αναγκαία η δηµιουργία νέων αποθηκευµένων δεδοµένων.

• Μπορούν να επιβάλλονται πρότυπα.

Με τον κεντρικό έλεγχο της βάσης δεδοµένων, ο υπεύθυνος διαχείρισης βάσεων δεδοµένων (DBA) µπορεί να εξασφαλίσει ότι θα τηρούνται όλα τα σχετικά πρότυπα για την αναπαράσταση των δεδοµένων. Τα πρότυπα αυτά µπορεί να είναι πρότυπα της επιχείρησης, του εγκατεστηµένου συστήµατος, του τµήµατος της επιχείρησης, του τεχνολογικού τοµέα, ή εθνικά και διεθνή πρότυπα. Η τυποποίηση της αναπαράστασης των δεδοµένων διευκολύνει ιδιαίτερα την ανταλλαγή δεδοµένων (data interchange), δηλαδή τη µεταφορά δεδοµένων µεταξύ διαφορετικών συστηµάτων.

• Μπορούν να εφαρµόζονται περιορισµοί ασφάλειας.

Έχοντας πλήρη δικαιοδοσία πάνω στη βάση δεδοµένων, ο DBA µπορεί να εξασφαλίσει ότι η πρόσβαση στη βάση δεδοµένων θα µπορεί να γίνεται µόνο µέσω των

Σελ. 15

Page 16: Βάσεις δεδομένων

ΒΑΣΕΙΣ ∆Ε∆ΟΜΕΝΩΝ

κατάλληλων καναλιών και, να ορίσει κανόνες ασφάλειας µε βάση τους οποίους θα γίνεται έλεγχος κάθε φορά που θα υπάρχει απόπειρα προσπέλασης εµπιστευτικών δεδοµένων. Είναι δυνατό να καθοριστούν διαφορετικοί κανόνες για το κάθε είδος προσπέλασης (ανάκληση, εισαγωγή, διαγραφή, κ.λπ.) σε κάθε στοιχείο πληροφοριών της βάσης δεδοµένων. Σηµειώστε, όµως, ότι χωρίς τέτοιους κανόνες η ασφάλεια των δεδοµένων µπορεί να διατρέχει µεγαλύτερο κίνδυνο από ό,τι σε ένα παραδοσιακό σύστηµα αρχειοθέτησης (µε γεωγραφικά αποµακρυσµένα αρχεία) δηλαδή, η κεντρική φύση ενός συστήµατος βάσης δεδοµένων απαιτεί κατά κάποιον τρόπο την ύπαρξη ενός καλού συστήµατος ασφάλειας.

• Μπορεί να διατηρείται η ακεραιότητα.

Το πρόβληµα της ακεραιότητας (integrity) είναι να εξασφαλίζεται ότι τα δεδοµένα της βάσης δεδοµένων είναι ακριβή. Η ασυµφωνία µεταξύ δύο καταχωρίσεων που υποτίθεται ότι αντιπροσωπεύουν το ίδιο "γεγονός" είναι ένα παράδειγµα έλλειψης ακεραιότητας Ακόµη και αν δεν υπάρχει τέτοιος πλεονασµός όµως, πάλι υπάρχει περίπτωση να περιέχει η βάση δεδοµένων λανθασµένες πληροφορίες. Για παράδειγµα, ένας υπάλληλος µπορεί να εµφανίζεται ότι έχει δουλέψει 400 ώρες µέσα σε µία εβδοµάδα, αντί για 40, ή ότι ανήκει στο τµήµα Τ9 ενώ δεν υπάρχει τέτοιο τµήµα. Ο κεντρικός έλεγχος της βάσης δεδοµένων µπορεί να βοηθήσει να αποφευχθούν τέτοιου είδους προβλήµατα επιτρέποντας στον υπεύθυνο διαχείρισης δεδοµένων να ορίζει (και στον DBA να υλοποιεί) κανόνες ακεραιότητας µε βάση τους οποίους θα γίνεται έλεγχος κάθε φορά που επιχειρείται κάποια πράξη εισαγωγής, διαγραφής, ή τροποποίησης δεδοµένων.

• Οι αντικρουόµενες απαιτήσεις µπορούν να εξισορροπούνται.

Γνωρίζοντας τις συνολικές απαιτήσεις της επιχείρησης — σε αντιδιαστολή µε τις απαιτήσεις των µεµονωµένων χρηστών — ο DBA µπορεί να δοµήσει το σύστηµα µε τέτοιον τρόπο ώστε να παρέχει γενικές υπηρεσίες που να είναι "βέλτιστες για την επιχείρηση". Για παράδειγµα, είναι δυνατό να επιλεχθεί µια αναπαράσταση των αποθηκευµένων δεδοµένων που θα παρέχει γρήγορη πρόσβαση στις σηµαντικότερες εφαρµογές (ίσως σε βάρος της απόδοσης ορισµένων άλλων εφαρµογών).

1.7 ΣΧΕΣΙΑΚΑ ΚΑΙ ΜΗ ΣΧΕΣΙΑΚΑ ΣΥΣΤΗΜΑΤΑ

Όλα σχεδόν τα προϊόντα διαχείρισης βάσεων δεδοµένων που αναπτύχθηκαν από τα τέλη της δεκαετίας του 1970 και µετά βασίζονται στη λεγόµενη σχεσιακή προσέγγιση (relational approach) ακόµα, η συντριπτική πλειοψηφία των ερευνών που έγιναν για τις βάσεις δεδοµένων τα τελευταία 25 χρόνια βασίζονται επίσης σε αυτή την προσέγγιση. Η σχεσιακή προσέγγιση αποτελεί σήµερα την κυρίαρχη τάση στην αγορά, και ότι το "σχεσιακό µοντέλο" είναι το σηµαντικότερο επίτευγµα των βάσεων δεδοµένων επειδή είναι το µόνο µοντέλο δεδοµένων που έχει στερεές µαθηµατικές βάσεις.

Τι εννοούµε, λοιπόν, όταν λέµε ότι ένα σύστηµα είναι σχεσιακό; Με δύο λόγια, σχεσιακό είναι ένα σύστηµα που:

1. Ο χρήστης αντιλαµβάνεται τα δεδοµένα ως σχέσεις (κανονικοποιηµένοι πίνακες).

Σελ. 16

Page 17: Βάσεις δεδομένων

1.7 Σχεσιακά και µη σχεσιακά συστήµατα

2. Οι τελεστές πράξεων που έχει στη διάθεση του ο χρήστης (για παράδειγµα, για την ανάκληση δεδοµένων) είναι τελεστές που δηµιουργούν νέους πίνακες µε βάση κάποιους παλιότερους. Για παράδειγµα, υπάρχει ένας τελεστής για την εξαγωγή ενός υποσυνόλου των γραµµών ενός πίνακα, και ένας άλλος τελεστής για την εξαγωγή ενός υποσυνόλου των στηλών του.

Ο λόγος για τον οποίο ονοµάζονται αυτά τα συστήµατα "σχεσιακά" (relational) είναι ότι ο όρος "σχέση" (relation) είναι ουσιαστικά ένα όρος των µαθηµατικών που αντιστοιχεί σε έναν κανονικοποιηµένο πίνακα. Στην παρακάτω εικόνα µπορείτε να δείτε ένα παράδειγµα σχεσιακής βάσης δεδοµένων µε πίνακες που αφορούν δεδοµένα για Φοιτητές (Student) - Μαθήµατα (Course) - ∆ιδασκαλίεςΜαθηµάτων (Section) - ΒαθµολογίεςΦοιτητών (Grade Report) -ΠροαπαιτούµεναΜαθήµατα (Prerequisite)

Εικόνα. Ένα παράδειγµα σχεσιακής βάσης δεδοµένων που αποθηκεύει φοιτητές και βαθµούς

Μπορούµε τώρα να κάνουµε την εξής διάκριση ανάµεσα στα σχεσιακά και τα µη σχεσιακά συστήµατα: Ο χρήστης ενός σχεσιακού συστήµατος βλέπει τα δεδοµένα ως πίνακες και µόνο ως πίνακες. Αντίθετα, ο χρήστης ενός µη σχεσιακού συστήµατος βλέπει και άλλες δοµές δεδοµένων, αντί για τους πίνακες ενός σχεσιακού συστήµατος ή εκτός από αυτούς. Αυτές οι άλλες δοµές, µε τη σειρά τους, χρειάζονται άλλους τελεστές πράξεων για το χειρισµό των δεδοµένων τους. Για παράδειγµα, σε ένα ιεραρχικό σύστηµα (hierarchic system) τα δεδοµένα παρουσιάζονται στο χρήστη µε τη µορφή ενός συνόλου δενδροειδών δοµών (ιεραρχιών), και στους τελεστές για το

Σελ. 17

Page 18: Βάσεις δεδομένων

ΒΑΣΕΙΣ ∆Ε∆ΟΜΕΝΩΝ

χειρισµό αυτών των δοµών περιλαµβάνονται τελεστές για να διατρέχονται οι ιεραρχικές διαδροµές προς την κορυφή ή προς τη βάση των δένδρων.

Αναγνώστης

Συγγραφέας1

Ένα µε πολλά

Ένα µε πολλά

Βιβλίο 2 Βιβλίο 3Βιβλίο 1

Συγγραφέας2

Συγγραφέας3

Συγγραφέας4

Αναγνώστης

Συγγραφέας1

Ένα µε πολλά

Ένα µε πολλά

Βιβλίο 2 Βιβλίο 3Βιβλίο 1

Συγγραφέας2

Συγγραφέας3

Συγγραφέας4

Εικόνα. Ιεραρχικό µοντέλο δεδοµένων

Τα συστήµατα βάσεων δεδοµένων µπορούν να καταταχθούν σε κατηγορίες, σύµφωνα µε τις δοµές δεδοµένων και τους τελεστές που παρέχουν στο χρήστη. Τα παλιότερα συστήµατα (τα προ-σχεσιακά) έχουν πια ιστορική αξία, όπως τα ιεραρχικά συστήµατα (hierarchical system), και τα δικτυωτά συστήµατα (network system).

Αναγνώστης 1

Συγγραφέας1

πολλά µε πολλά

πολλά µε πολλά

Βιβλίο 2 Βιβλίο 3Βιβλίο 1

Συγγραφέας2

Συγγραφέας3

Συγγραφέας4

Αναγνώστης 2Αναγνώστης 1

Συγγραφέας1

πολλά µε πολλά

πολλά µε πολλά

Βιβλίο 2 Βιβλίο 3Βιβλίο 1

Συγγραφέας2

Συγγραφέας3

Συγγραφέας4

Αναγνώστης 2

Εικόνα. ∆ικτυωτό µοντέλο δεδοµένων

Τα πρώτα σχεσιακά συστήµατα άρχισαν να εµφανίζονται στην αγορά στα τέλη της δεκαετίας του 1970 και στις αρχές της δεκαετίας του 1980. Μέχρι σήµερα έχουν κυκλοφορήσει πάρα πολλά σχεσιακά προϊόντα, για όλα σχεδόν τα συστήµατα υλικού και λογισµικού που είναι γνωστά.

Σελ. 18

Page 19: Βάσεις δεδομένων

1.7 Σχεσιακά και µη σχεσιακά συστήµατα

Κωδικόςαναγνώστη

Όνοµα ∆ιεύθυνση Τηλ. Τµήµα

053 Ματθέου Κ. Βηλαρά 28 45893 ΠΛΗΡΟΦΟΡΙΚΗ

109 Παππάς Ι. Λαµπρίδη 45 97155 ΜΑΘΗΜΑΤΙΚΟ

027 Αλεξίου Μ. Τσακάλωφ 9 66202 ΙΑΤΡΙΚΗ

212 Μπέης Γ. Σµύρνης 12 70359 ΦΥΣΙΚΟ

310 Χατζής Ν. Σαράφη 6 32078 ΙΑΤΡΙΚΗ

ΘεµατικέςενότητεςΒιβλία

Αναγνώστες Παραγγελίες

πολλά µε πολλά

ένα µε πολλά

Πολλά µε ένα

Κωδικόςαναγνώστη

Όνοµα ∆ιεύθυνση Τηλ. Τµήµα

053 Ματθέου Κ. Βηλαρά 28 45893 ΠΛΗΡΟΦΟΡΙΚΗ

109 Παππάς Ι. Λαµπρίδη 45 97155 ΜΑΘΗΜΑΤΙΚΟ

027 Αλεξίου Μ. Τσακάλωφ 9 66202 ΙΑΤΡΙΚΗ

212 Μπέης Γ. Σµύρνης 12 70359 ΦΥΣΙΚΟ

310 Χατζής Ν. Σαράφη 6 32078 ΙΑΤΡΙΚΗ

ΘεµατικέςενότητεςΒιβλία

Αναγνώστες Παραγγελίες

πολλά µε πολλά

ένα µε πολλά

Πολλά µε ένα

Εικόνα. Σχεσιακό µοντέλο δεδοµένων

Ο παρακάτω πίνακας δίνει µερικά παραδείγµατα προϊόντων της αγοράς

Συστήµατααντιστραµµένης λίστας

CA-DATACOM/DBτης Computer AssociatesInternational Inc.

Ιεραρχικά συστήµατα IMS της IBM Corporation

∆ικτυωτά συστήµατα CA-IDMS/DBτης Computer AssociatesInternational Inc.

Σχεσιακά συστήµαταπου εµφανίζονται στις αρχές του1980

DB2 της IBM Corporation

INGRES της Ingres Inc.

ORACLE της OracleCorporation

SYBASE της Sybase Inc.

Για τα σχεσιακά συστήµατα της αγοράς των απλών προσωπικών υπολογιστών το λογισµικό Access (Microsoft) το Paradox (Borland), Q&A (Symantec), FileMaker Pro (Claris Corp.), Approach (Lotus).

Μια άλλη ενδιαφέρουσα κατηγορία Σ∆Β∆ για τα σχεσιακά συστήµατα είναι τα λεγόµενα λογισµικά ανοιχτού-κώδικα (open-source), τα οποία προσφέρονται δωρεάν και επιπλέον µαζί µε το εκτελέσιµο πρόγραµµα διατίθεται ο πηγαίος κώδικας ορισµένων ή ακόµη και όλων των συστατικών του Σ∆Β∆, για να µπορεί κάποιος να τα τροποποιήσει ανάλογα µε τις ανάγκες του (συνήθως για εκπαιδευτικούς και ερευνητικούς σκοπούς). Το µόνο µειονέκτηµα αυτής της κατηγορίας είναι ότι οι κατασκευαστές τους προσφέρουν µικρή υποστήριξη, αφού είναι δωρεάν λογισµικό. Παραδείγµατα της κατηγορίας αυτής είναι τα PostgreSQL , MySQL, BerkeleyDB κλπ

Σελ. 19

Page 20: Βάσεις δεδομένων

ΕΝΝΟΙΕΣ ΚΑΙ ΑΡΧΙΤΕΚΤΟΝΙΚΉ ΣΥΣΤΗΜΆΤΩΝ ΒΆΣΕΩΝ ∆Ε∆ΟΜΈΝΩΝ

2 ΕΝΝΟΙΕΣ ΚΑΙ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΣΥΣΤΗΜΑΤΩΝ ΒΑΣΕΩΝ ∆Ε∆ΟΜΕΝΩΝ

2.1 ΑΦΑΙΡΕΤΙΚΗ ΑΠΟΨΗ ∆Ε∆ΟΜΕΝΩΝ

Ο σηµαντικότερος σκοπός ενός συστήµατος βάσεων δεδοµένων είναι να παράσχει στους χρήστες µια αφαιρετική άποψη του συστήµατος. Το σύστηµα κρύβει ορισµένες λεπτοµέρειες για το πώς τα δεδοµένα αποθηκεύονται και διατηρούνται. Η πολυπλοκότητα λοιπόν πρέπει να κρυφτεί από τους χρήστες βάσεων δεδοµένων. Γι' αυτό υπάρχουν τρία επίπεδα αφαίρεσης:

(α) φυσικό επίπεδο:

• είναι το χαµηλότερο επίπεδο αφαίρεσης.

• περιγράφει πώς αποθηκεύονται τα δεδοµένα. Π.χ. δείκτες, β-δέντρα, αποκερµατισµός.

• εδώ περιγράφονται λεπτοµερώς όλες οι σύνθετες δοµές χαµηλού επιπέδου.

(β) εννοιολογικό επίπεδο:

• το αµέσως υψηλότερο επίπεδο αφαίρεσης.

• περιγράφει τι είδους δεδοµένα αποθηκεύονται.

• περιγράφει τις συσχετίσεις µεταξύ αυτών των δεδοµένων.

(γ) Επίπεδο άποψης:

• το πιο υψηλό επίπεδο.

• περιγράφει τµήµατα της βάσης δεδοµένων για κάθε συγκεκριµένη οµάδα χρηστών.

• µπορεί να είναι πολλές διαφορετικές απόψεις µιας βάσης δεδοµένων.

• Π.χ. οι ταµίες σε µια τράπεζα παίρνουν µια άποψη των απολογισµών πελατών, αλλά όχι των δεδοµένων µισθοδοτικών καταστάσεων.

• • • • •

Άποψη N Άποψη 2 Άποψη 1

Εννοιολογικό επίπεδο

Φυσικό επίπεδο

Σελ. 20

Page 21: Βάσεις δεδομένων

2.2 Μοντέλα δεδοµένων, σχήµατα και στιγµιότυπα

2.2 ΜΟΝΤΕΛΑ ∆Ε∆ΟΜΕΝΩΝ, ΣΧΗΜΑΤΑ ΚΑΙ ΣΤΙΓΜΙΟΤΥΠΑ

Ένα βασικό χαρακτηριστικό της προσέγγισης των βάσεων δεδοµένων είναι το ότι παρέχει επίπεδα αφαίρεσης δεδοµένων µε το να αποκρύπτει λεπτοµέρειες της αποθήκευσης των δεδοµένων που δεν είναι απαραίτητες στους περισσότερους χρήστες µιας βάσης. Ένα µοντέλο δεδοµένων -µια συλλογή από έννοιες που µπορεί να χρησιµοποιηθούν για να περιγράψουν τη γενική δοµή µιας βάσης δεδοµένων- παρέχει τα απαραίτητα µέσα για να επιτευχθεί αυτή η αφαίρεση.

Για παράδειγµα σε µία εταιρία οι πληροφορίες για τους υπαλλήλους µπορεί να κρατούνται σε ένα αρχείο µε όνοµα employees που θα είναι µία ακολουθία εγγραφών του τύπου:

record

name: char[30];

manager: char[30]

end

Ένα αφαιρετικό µοντέλο για τα δεδοµένα αυτά θα µπορούσε να είναι µία σχέση του σχεσιακού µοντέλου:

Employees(name, manager)

όπου employees είναι το όνοµα της σχέσης και name και manager είναι τα γνωρίσµατα της σχέσης.

Με τον όρο δοµή της βάσης δεδοµένων εννοούµε τους τύπους δεδοµένων, τις συσχετίσεις και τους περιορισµούς που πρέπει να ισχύουν για τα δεδοµένα. Τα περισσότερα µοντέλα δεδοµένων περιλαµβάνουν επίσης ένα σύνολο από βασικές πράξεις (basic operations) για τον προσδιορισµό ανακτήσεων και ενηµερώσεων της βάσης δεδοµένων.

Ένα µοντέλο δεδοµένων λοιπόν έχει γενικά τρεις βασικές συνιστώσες: (1) δοµές, (2) πράξεις και (3) δοµικούς περιορισµούς.

1. ∆οµές (structures): είναι τα αντικείµενα του µικρόκοσµου, π.χ. το σύνολο των υπαλλήλων ή το σύνολο των τµηµάτων της εταιρίας

2. Πράξεις (operations) πάνω στις δοµές: αν π.χ. αναφερόµαστε σε σύνολα, η τοµή, η ένωση, η διαφορά δύο συνόλων είναι πράξεις. Ένα χαρακτηριστικό είναι η κλειστότητα ή όχι µιας πράξης: για παράδειγµα, οι ανωτέρω πράξεις πάνω στα σύνολα είναι κλειστές αφού το αποτέλεσµα της τοµής / ένωσης / διαφοράς µεταξύ δύο συνόλων είναι και αυτό σύνολο.

3. Περιορισµοί (constraints) πάνω στις δοµές: Στο παράδειγµα µιας εταιρίας θα µπορούσαµε να σκεφτούµε περιορισµούς όπως «κανένας υπάλληλος δεν εργάζεται σε περισσότερα από ένα τµήµατα», «κανένας υπάλληλος δεν παίρνει µισθό µεγαλύτερο του προϊστάµενου του» κοκ. Οι δοµικοί περιορισµοί διακρίνονται σε έµφυτους (inherent), ρητούς (explicit) και συνεπαγόµενους (implicit), και τα χαρακτηριστικά της κάθε κατηγορίας θα αναφερθούν αργότερα.

Σελ. 21

Page 22: Βάσεις δεδομένων

ΕΝΝΟΙΕΣ ΚΑΙ ΑΡΧΙΤΕΚΤΟΝΙΚΉ ΣΥΣΤΗΜΆΤΩΝ ΒΆΣΕΩΝ ∆Ε∆ΟΜΈΝΩΝ

Πέρα από τις βασικές πράξεις που παρέχει το µοντέλο δεδοµένων, συνηθίζεται όλο και περισσότερο να περιλαµβάνονται στο µοντέλο δεδοµένων δυναµικά χαρακτηριστικά (ή συµπεριφορά) µιας εφαρµογής βάσεων δεδοµένων. Αυτό επιτρέπει στον σχεδιαστή της βάσης δεδοµένων να ορίσει ένα σύνολο από δικές του επιτρεπτές πράξεις στα αντικείµενα της βάσης δεδοµένων. Ένα παράδειγµα ορισµένης από το χρήστη πράξης είναι η "ΥΠΟΛΟΓΙΣΕ_ΤΟ_ΜΕΣΟ_ΟΡΟ" που µπορεί να εφαρµοστεί σε ένα αντικείµενο του τύπου ΦΟΙΤΗΤΗΣ. Από την άλλη µεριά, γενικές πράξεις για εισαγωγή, διαγραφή, τροποποίηση ή ανάκτηση ενός αντικειµένου συχνά περιλαµβάνονται στις βασικές πράξεις ενός µοντέλου δεδοµένων.

2.2.1 Κατηγορίες Μοντέλων ∆εδοµένων Μπορούµε να ταξινοµήσουµε τα µοντέλα δεδοµένων µε βάση τους τύπους

εννοιών που παρέχουν για την περιγραφή της δοµής µιας βάσης δεδοµένων.

Τα υψηλού επιπέδου (high-level) ή εννοιολογικά (conceptual) µοντέλα δεδοµένων παρέχουν έννοιες που βρίσκονται κοντά στον τρόπο µε τον οποίο πολλοί χρήστες αντιλαµβάνονται τα δεδοµένα.

Τα χαµηλού επιπέδου (low-level) ή φυσικά (physical) µοντέλα δεδοµένων παρέχουν έννοιες που περιγράφουν τις λεπτοµέρειες του τρόπου αποθήκευσης των δεδοµένων στον υπολογιστή.

Τα παραστατικά µοντέλα δεδοµένων. Μεταξύ των δύο άκρων υπάρχει µια κλάση παραστατικών (representational) µοντέλων ή µοντέλων υλοποίησης (implementation), που παρέχουν έννοιες οι οποίες µπορεί να κατανοούνται από τους τελικούς χρήστες αλλά δεν είναι τόσο αποµακρυσµένες από τον τρόπο αποθήκευσης των δεδοµένων στον υπολογιστή. Τα παραστατικά µοντέλα δεδοµένων αποκρύπτουν µερικές λεπτοµέρειες αποθήκευσης των δεδοµένων αλλά µπορούν να υλοποιηθούν σ' ένα υπολογιστικό σύστηµα κατά άµεσο τρόπο.

Άρα τα µοντέλα δεδοµένων είναι µια συλλογή από εργαλεία για την περιγραφή δοµών δεδοµένων, συσχετίσεων δεδοµένων, τη σηµασιολογία (semantics) δεδοµένων και τους περιορισµούς δεδοµένων. Υπάρχουν τρεις διαφορετικές οµάδες που αντιστοιχούν στις τρεις φάσεις σχεδιασµού:

φυσικό µοντέλο φυσικός σχεδιασµός φυσικό σχήµα βάσης

παραστατικό µοντέλολογικός σχεδιασµός λογικό σχήµα

εννοιολογικό µοντέλο εννοιολογικός σχεδιασµός εννοιολογικό σχήµα

Τα εννοιολογικά µοντέλα δεδοµένων χρησιµοποιούν έννοιες όπως οι οντότητες, τα γνωρίσµατα και οι συσχετίσεις. Μια οντότητα (entity) αντιπροσωπεύει ένα αντικείµενο ή µια έννοια του πραγµατικού κόσµου, όπως έναν εργαζόµενο ή ένα έργο για το οποίο αποθηκεύονται πληροφορίες στη βάση δεδοµένων. Ένα γνώρισµα (attribute) αντιπροσωπεύει µια ιδιότητα που περιγράφει περαιτέρω µια οντότητα, όπως το επίθετο ενός εργαζόµενου ή το µισθό του. Μια συσχέτιση (relationship) µεταξύ δύο ή περισσότερων οντοτήτων αντιπροσωπεύει µια αλληλεπίδραση µεταξύ των οντοτήτων για παράδειγµα η "εργάζεται-σε" είναι µια συσχέτιση µεταξύ ενός εργαζοµένου και ενός

Σελ. 22

Page 23: Βάσεις δεδομένων

2.2 Μοντέλα δεδοµένων, σχήµατα και στιγµιότυπα

έργου. Στο επόµενο κεφάλαιο θα παρουσιάσουµε το µοντέλο Οντοτήτων-Συσχετίσεων, ένα δηµοφιλές µοντέλο δεδοµένων υψηλού επιπέδου.

όνοµα-πελάτηοδός-πελάτη

πόλη-πελάτη υπόλοιπο

αριθµός-λογαριασµού

πελάτης λογαριασµόςκαταθέτηςκαταθέτης

Σχήµα : Ένα διάγραµµα του µοντέλου οντοτήτων-συσχετίσεων (ER).

Η εννοιολογική δοµή µιας βάσης δεδοµένων µπορεί να εκφραστεί γραφικά από ένα διάγραµµα οντοτήτων-συσχετίσεων

Τα παραστατικά µοντέλα δεδοµένων ή µοντέλα υλοποίησης είναι αυτά που χρησιµοποιούνται πιο συχνά στα σύγχρονα εµπορικά Σ∆Β∆ και περιλαµβάνουν το ευρέως χρησιµοποιούµενο σχεσιακό µοντέλο δεδοµένων και τα αποκαλούµενα παραδοσιακά συστήµατα -το δικτυωτό και το ιεραρχικό- που έχουν χρησιµοποιηθεί ευρέως στο παρελθόν. Τα παραστατικά µοντέλα δεδοµένων παριστάνουν δεδοµένα χρησιµοποιώντας δοµές εγγραφών και γι' αυτό µερικές φορές ονοµάζονται βασισµένα σε εγγραφές (record-based) µοντέλα δεδοµένων.

Καβάλα∆ήµου 11Ιωάννου142-878-117

ΑλµυρόςΕρµού 24Βλάχου312-512-9641

ΒελεστίνοΚοραή 55∆ηµητρίου187-25-2558

ΣέρρεςΡοζού 7Αρµένης147-25-1023

ΛάρισαΓαλλίας 47Ευσταθίου254-56-1480

ΑθήναΌγλ 25Κυριάκου192-83-7465

πόλη-πελάτηδιεύθυνση-πελάτηόνοµα-πελάτηκωδικός πελάτη

Καβάλα∆ήµου 11Ιωάννου142-878-117

ΑλµυρόςΕρµού 24Βλάχου312-512-9641

ΒελεστίνοΚοραή 55∆ηµητρίου187-25-2558

ΣέρρεςΡοζού 7Αρµένης147-25-1023

ΛάρισαΓαλλίας 47Ευσταθίου254-56-1480

ΑθήναΌγλ 25Κυριάκου192-83-7465

πόλη-πελάτηδιεύθυνση-πελάτηόνοµα-πελάτηκωδικός πελάτη

3000∆-212

1500∆-369

2200∆-355

1800∆-142

1500∆-541

2000∆-141

ποσόαριθµός-δανείου

3000∆-212

1500∆-369

2200∆-355

1800∆-142

1500∆-541

2000∆-141

ποσόαριθµός-δανείου

ΠελάτηςΠελάτης ∆άνειο∆άνειο

Εικόνα: µία σχεσιακή βάση δεδοµένων

Η λογική σχεδίαση µιας σχεσιακής βάσης δεδοµένων απεικονίζεται µε ένα σχεσιακό σχήµα βάσης, δηλαδή µε ένα σύνολο σχέσεων.

2.2.2 Σχήµατα, Στιγµιότυπα και Κατάσταση της Βάσης ∆εδοµένων Για να µπορούµε να ξεχωρίζουµε τα δεδοµένα της βάσης και την περιγραφή της

βάσης χρησιµοποιούµε τους όρους στιγµιότυπα βάσης δεδοµένων (database instance) και σχήµα βάσης δεδοµένων (database schema) αντίστοιχα

• Η γενική δοµή της βάσης καλείται σχήµα και ορίζεται κατά τη δηµιουργία της.

• Ένα σχήµα βάσης δεδοµένων δεν αλλάζει συχνά.

Σελ. 23

Page 24: Βάσεις δεδομένων

ΕΝΝΟΙΕΣ ΚΑΙ ΑΡΧΙΤΕΚΤΟΝΙΚΉ ΣΥΣΤΗΜΆΤΩΝ ΒΆΣΕΩΝ ∆Ε∆ΟΜΈΝΩΝ

• Οι πληροφορίες σε µια βάση δεδοµένων σε ένα συγκεκριµένο χρονικό σηµείο καλούνται στιγµιότυπα (instance) της βάσης δεδοµένων.

• Κάθε αλλαγή των δεδοµένων δηµιουργεί καινούργια στιγµιότυπα της βάσης δεδοµένων.

Η αναλογία των στιγµιότυπων και του σχήµατος µε τις έννοιες των γλωσσών προγραµµατισµού είναι

Ορισµοί τύπων δεδοµένων σχήµα

Τιµή µιας µεταβλητής στιγµιότυπο

Η περιγραφή της βάσης δεδοµένων που λέγεται σχήµα της βάσης (database schema) προσδιορίζεται κατά το σχεδιασµό της βάσης δεδοµένων και δεν αναµένεται να αλλάζει συχνά. Τα περισσότερα µοντέλα δεδοµένων διαθέτουν συγκεκριµένες συµβάσεις για τη διαγραµµατική αναπαράσταση των σχηµάτων. Ένα αναπαραστηµένο σχήµα λέγεται διάγραµµα σχήµατος (schema diagram). Ονοµάζουµε κάθε αντικείµενο του σχήµατος -όπως το ΦΟΙΤΗΤΗΣ ή το ΜΑΘΗΜΑ- δοµικό στοιχείο του σχήµατος.

Για παράδειγµα από ένα σχεσιακό µοντέλο δεδοµένων προκύπτει η περιγραφή της βάσης δεδοµένων που ονοµάζεται σχεσιακό σχήµα Β∆.

Το σχήµα αφορά τη δοµή της βάσης δεδοµένων χωρίς τα στιγµιότυπα των δεδοµένων (εγγραφές).

Εικόνα. Ένα διάγραµµα σχεσιακού σχήµατος µίας Πανεπιστηµιακής βάσης δεδοµένων µε το σχεσιακό µοντέλο

Ένα διάγραµµα σχήµατος παρουσιάζει µόνο τα ονόµατα των τύπων εγγραφών και των στοιχειωδών δεδοµένων, καθώς και µερικούς τύπους περιορισµών. Για παράδειγµα, η εικόνα δεν δείχνει ούτε τον τύπο δεδοµένων, ούτε τις συσχετίσεις ανάµεσα στα διάφορα αρχεία. Πολλοί τύποι περιορισµών δεν παριστάνονται στα διαγράµµατα σχηµάτων. Για παράδειγµα, ένας περιορισµός όπως "οι φοιτητές της Πληροφορικής πρέπει να περάσουν το µάθηµα COSC1310 πριν το τέλος του δεύτερου έτους σπουδών" είναι αρκετά δύσκολο να παρασταθεί.

Τα πραγµατικά δεδοµένα σε µια βάση δεδοµένων µπορεί να αλλάζουν συχνά. Παράδειγµα, η βάση δεδοµένων που παρουσιάζεται στην εικόνα αλλάζει κάθε φορά που εισάγουµε ένα νέο φοιτητή ή εισάγουµε ένα νέο βαθµό για κάποιον φοιτητή. Τα δεδοµένα που βρίσκονται στη βάση δεδοµένων σε µια συγκεκριµένη χρονική στιγµή ονοµάζονται τρέχουσα κατάσταση (state) ή σύνολο στιγµιότυπων (set of instances)

Σελ. 24

Page 25: Βάσεις δεδομένων

2.2 Μοντέλα δεδοµένων, σχήµατα και στιγµιότυπα

της βάσης δεδοµένων. Το Σ∆Β∆ είναι εν µέρει υπεύθυνο να εξασφαλίζει ότι κάθε κατάσταση της βάσης δεδοµένων είναι µια έγκυρη κατάσταση.

Η διαφοροποίηση µεταξύ του σχήµατος και της κατάστασης µιας βάσης δεδοµένων είναι πολύ σηµαντική. Όταν ορίζουµε µια νέα βάση δεδοµένων, προσδιορίζουµε µόνο το σχήµα της βάσης δεδοµένων στο Σ∆Β∆. Στο σηµείο αυτό, η αντίστοιχη κατάσταση της βάσης δεδοµένων είναι η "κενή κατάσταση" χωρίς δεδοµένα. Παίρνουµε την "αρχική κατάσταση" της βάσης δεδοµένων όταν η βάση φορτωθεί µε αρχικά δεδοµένα.

Εικόνα: Στιγµιότυπο µίας Πανεπιστηµιακής Σχεσιακής Βάσης ∆εδοµένων

Σελ. 25

Page 26: Βάσεις δεδομένων

ΕΝΝΟΙΕΣ ΚΑΙ ΑΡΧΙΤΕΚΤΟΝΙΚΉ ΣΥΣΤΗΜΆΤΩΝ ΒΆΣΕΩΝ ∆Ε∆ΟΜΈΝΩΝ

2.3 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΣΥΣΤΗΜΑΤΩΝ ΒΑΣΕΩΝ ∆Ε∆ΟΜΕΝΩΝ

Η τυποποιηµένη (ANSI/SPARC) αρχιτεκτονική 3-επιπέδων ενός συστήµατος Β∆ παρουσιάζεται στο παρακάτω. ∆ιακρίνονται 3 επίπεδα - "σχήµατα": το εξωτερικό, το εννοιολογικό και το εσωτερικό/φυσικό, καθώς και οι αντίστοιχες διαπαφές από το ένα σχήµα στο άλλο και προς τη Β∆. Το Σ∆Β∆ είναι υπεύθυνο για τον ορισµό και την υλοποίηση όλων των διεπαφών, ιδιότητα πολύ θετική αφού δεν αφήνεται σαν επιπλέον εργασία στον προγραµµατιστή.

Η αρχιτεκτονική 3-επιπέδων χωρίζεται σε τρία επίπεδα: το εσωτερικό, το εννοιολογικό, και το εξωτερικό επίπεδο:

Εικόνα. Τα τρία επίπεδα της αρχιτεκτονικής

Το εσωτερικό επίπεδο (internal level) είναι αυτό που βρίσκεται πιο κοντά στη φυσική αποθήκευση

Το εξωτερικό επίπεδο (external level) είναι αυτό που βρίσκεται πιο κοντά στους χρήστες (απόψεις µεµονωµένων χρηστών).

Το εννοιολογικό επίπεδο (conceptual level) είναι ένα "ενδιάµεσο επίπεδο" που συνδέει τα δύο προηγούµενα (κοινοτική άποψη χρηστών).

Εδώ δεν έχει ιδιαίτερη σηµασία αν το σύστηµα που εξετάζουµε είναι σχεσιακό ή όχι. Είναι όµως χρήσιµο να περιγράψουµε µε συντοµία τον τρόπο µε τον οποίο υλοποιούνται συνήθως τα τρία επίπεδα της αρχιτεκτονικής σε ένα σχεσιακό σύστηµα:

Σελ. 26

Page 27: Βάσεις δεδομένων

2.4 Το εξωτερικό επίπεδο

• Πρώτον, το εννοιολογικό επίπεδο σε ένα τέτοιο σύστηµα θα είναι οπωσδήποτε σχεσιακό, µε την έννοια ότι τα αντικείµενα που είναι ορατά σε αυτό το επίπεδο θα είναι σχεσιακοί πίνακες (και οι τελεστές των πράξεων θα είναι επίσης σχεσιακοί τελεστές).

• ∆εύτερον, µια δεδοµένη εξωτερική άποψη θα είναι συνήθως και αυτή σχεσιακή ή κάτι παραπλήσιο για παράδειγµα, οι διάφορες δηλώσεις των εγγραφών που είδαµε στην Εικόνα µπορούν να θεωρηθούν ισοδύναµες µε τη δήλωση ενός σχεσιακού πινάκα σε ένα σχεσιακό σύστηµα,

• Τρίτον, το εσωτερικό επίπεδο δεν θα είναι "σχεσιακό", επειδή τα αντικείµενα σε αυτό το επίπεδο δε θα είναι αποθηκευµένοι σχεσιακοί πίνακες' θα είναι αντικείµενα σαν αυτά που συναντάµε στο εσωτερικό επίπεδο οποιουδήποτε άλλου είδους συστήµατος (αποθηκευµένες εγγραφές, δείκτες, ευρετήρια, κ.λπ.).

Εστω οτι για παράδειγµα έχουµε : µια Βάση ∆εδοµένων “ University ” . Tότε •α) Εξωτερικό σχήµα (View) θα µπορούσε να είναι µία οποιαδήποτε όψη: Course_info (cid:string, enrollment:integer) •β) Εννοιολογικό σχήµα θα µπορούσε να είναι: students (sid:string, name:string, login:string, age:integer, gpa:real) courses (cid:string, cname:string, credits:integer) Enrolled (sid:string, cid:string, grade:string) • γ) Φυσικό σχήµα θα µπορούσε να είναι: Σχέσεις αποθηκευµένες σε αρχεία ∆είκτης στην 1η στήλη του students Θα εξετάσουµε τώρα τα τρία επίπεδα της αρχιτεκτονικής πολύ πιο αναλυτικά,

αρχίζοντας από το εξωτερικό επίπεδο.

2.4 ΤΟ ΕΞΩΤΕΡΙΚΟ ΕΠΙΠΕ∆Ο

Το εξωτερικό επίπεδο είναι το επίπεδο του µεµονωµένου χρήστη. Ένας δεδοµένος χρήστης µπορεί να είναι είτε προγραµµατιστής εφαρµογών είτε τελικός χρήστης µε οποιονδήποτε βαθµό εξειδίκευσης. Ο υπεύθυνος διαχείρισης βάσεων δεδοµένων είναι µια σηµαντική ειδική περίπτωση, που χρειάζεται να ασχολείται επίσης µε το εννοιολογικό και το εσωτερικό επίπεδο, όπως θα δούµε παρακάτω.

Ο κάθε χρήστης έχει µια γλώσσα στη διάθεση του:

• Για τον προγραµµατιστή εφαρµογών, αυτή η γλώσσα µπορεί να είναι είτε µία από τις συµβατικές γλώσσες προγραµµατισµού, είτε µια αποκλειστική γλώσσα για το συγκεκριµένο σύστηµα. Οι αποκλειστικές γλώσσες αυτού του είδους λέγονται συχνά γλώσσες "τέταρτης γενιάς" (4th generation language, 4GL)

• Για τον τελικό χρήστη, η γλώσσα µπορεί να είναι είτε µια γλώσσα ερωτηµάτων (query language) είτε κάποια ειδική εφαρµογή οδηγούµενη από φόρµες ή µενού, η οποία είναι προσαρµοσµένη στις απαιτήσεις του συγκεκριµένου χρήστη και υποστηρίζεται από κάποιο πρόγραµµα εφαρµογής άµεσης επεξεργασίας

Σελ. 27

Page 28: Βάσεις δεδομένων

ΕΝΝΟΙΕΣ ΚΑΙ ΑΡΧΙΤΕΚΤΟΝΙΚΉ ΣΥΣΤΗΜΆΤΩΝ ΒΆΣΕΩΝ ∆Ε∆ΟΜΈΝΩΝ

ΠΡΟΓΡΑΜΜΑΤΑΠΕΛΑΤΩΝ

ΠΡΟΓΡΑΜΜΑΤΑΠΡΟΜΗΘΕΥΤΩΝΠΡΟΓΡΑΜΜΑΤΑ

ΓΕΝΙΚΗΣΛΟΓΙΣΤΙΚΗΣ

ΠΡΟΓΡΑΜΜΑΤΑΑΠΟΘΗΚΗΣ

ΣΥΣΤΗΜΑ ∆ΙΑΧΕΙΡΙΣΗΣ ΒΑΣΗΣ ∆Ε∆ΟΜΕΝΩΝ

ΓΕΝΙΚΗΛΟΓΙΣΤΙΚΗ

ΠΕΛΑΤΕΣ

ΠΡΟΜΗΘΕΥΤΕΣ

ΑΠΟΘΗΚΗ

ΠΡΟΓΡΑΜΜΑΤΑΠΕΛΑΤΩΝ

ΠΡΟΓΡΑΜΜΑΤΑΠΡΟΜΗΘΕΥΤΩΝΠΡΟΓΡΑΜΜΑΤΑ

ΓΕΝΙΚΗΣΛΟΓΙΣΤΙΚΗΣ

ΠΡΟΓΡΑΜΜΑΤΑΑΠΟΘΗΚΗΣ

ΣΥΣΤΗΜΑ ∆ΙΑΧΕΙΡΙΣΗΣ ΒΑΣΗΣ ∆Ε∆ΟΜΕΝΩΝ

ΓΕΝΙΚΗΛΟΓΙΣΤΙΚΗ

ΠΕΛΑΤΕΣ

ΠΡΟΜΗΘΕΥΤΕΣ

ΑΠΟΘΗΚΗ

Εικόνα: πολλές απόψεις µίας βάσης δεδοµένων

Σύµφωνα µε την ορολογία ANSI/SPARC, η άποψη ενός µεµονωµένου χρήστη είναι µια εξωτερική άποψη. Μια εξωτερική άποψη είναι, λοιπόν, το περιεχόµενο της βάσης δεδοµένων όπως το βλέπει κάποιος συγκεκριµένος χρήστης (δηλαδή, γι' αυτόν το συγκεκριµένο χρήστη, η εξωτερική άποψη είναι η βάση δεδοµένων). Για παράδειγµα, ένας χρήστης από το Τµήµα Προσωπικού µιας εταιρείας µπορεί να θεωρεί τη βάση δεδοµένων ως µια συλλογή από παρουσίες εγγραφών τµηµάτων συν µια συλλογή από παρουσίες εγγραφών υπαλλήλων, και µπορεί να αγνοεί εντελώς τις παρουσίες εγγραφών προµηθευτών και εξαρτηµάτων που βλέπουν οι χρήστες από το Τµήµα Προµηθειών της εταιρείας.

2.5 ΤΟ ΕΝΝΟΙΟΛΟΓΙΚΟ ΕΠΙΠΕ∆Ο

Το εννοιολογικό επίπεδο είναι µια αναπαράσταση ολόκληρου του πληροφοριακού περιεχοµένου της βάσης δεδοµένων, µε µορφή κάπως αφηρηµένη σε σύγκριση µε τον τρόπο που γίνεται η φυσική αποθήκευση των δεδοµένων (όπως συµβαίνει και µε µια εξωτερική άποψη). Κατά κανόνα, διαφέρει επίσης πολύ από τον τρόπο που βλέπει τα δεδοµένα οποιοσδήποτε συγκεκριµένος χρήστης, θα µπορούσαµε να πούµε ότι η εννοιολογική άποψη είναι µια άποψη των δεδοµένων "όπως είναι πραγµατικά", και όχι όπως υποχρεώνονται να τα βλέπουν οι χρήστες από τις δεσµεύσεις, π.χ., της συγκεκριµένης γλώσσας ή του υλικού που χρησιµοποιούν.

Το εννοιολογικό επίπεδο αποτελείται από πολλές παρουσίες του καθενός από τους διάφορους τύπους εννοιολογικών εγγραφών. Για παράδειγµα, θα µπορούσε να αποτελείται από µια συλλογή από παρουσίες εγγραφών τµηµάτων, συν µια συλλογή από παρουσίες εγγραφών υπαλλήλων, συν µια συλλογή από παρουσίες εγγραφών προµηθευτών, συν µια συλλογή από παρουσίες εγγραφών εξαρτηµάτων, κ.λπ..

Σελ. 28

Page 29: Βάσεις δεδομένων

2.6 Το εσωτερικό επίπεδο

Το εννοιολογικό επίπεδο ορίζεται µε το εννοιολογικό σχήµα, που περιλαµβάνει ορισµούς για τον καθένα από τους διαφόρους τύπους εννοιολογικών εγγραφών. Για να επιτευχθεί η ανεξαρτησία των δεδοµένων, οι ορισµοί της εννοιολογικής άποψης. δεν πρέπει να ασχολούνται καθόλου µε την αποθηκευτική δοµή ή µε την τεχνική προσπέλασης — πρέπει να είναι µόνο ορισµοί πληροφοριακού περιεχοµένου. ∆εν υπάρχει στο εννοιολογικό σχήµα καµία αναφορά σε αποθηκευµένες αναπαραστάσεις πεδίων, στη σειρά των αποθηκευµένων εγγραφών, σε ευρετήρια, σε δείκτες, ή σε οποιεσδήποτε άλλες λεπτοµέρειες της αποθήκευσης και της προσπέλασης..

2.6 ΤΟ ΕΣΩΤΕΡΙΚΟ ΕΠΙΠΕ∆Ο

Το τρίτο επίπεδο της αρχιτεκτονικής είναι το εσωτερικό επίπεδο. Το εσωτερικό επίπεδο είναι µια αναπαράσταση χαµηλού επιπέδου για ολόκληρη τη βάση δεδοµένων' αποτελείται από πολλές παρουσίες του καθενός από τους διαφόρους τύπους εσωτερικών εγγραφών. Η εσωτερική άποψη περιγράφεται µε το εσωτερικό σχήµα, που όχι µόνο ορίζει τους διαφόρους τύπους αποθηκευµένων εγγραφών αλλά καθορίζει επίσης ποια ευρετήρια υπάρχουν, πώς αναπαριστώνται τα αποθηκευµένα πεδία, µε ποια φυσική σειρά είναι τοποθετηµένες οι αποθηκευµένες εγγραφές, κ.ο.κ.

παραδείγµατα εντολών SQL στα τρία επίπεδα

Εξωτερικό επίπεδο

CREATE VIEW ATHENS_SUPPLIERS AS SELECT S_No, S_Name, S_City FROM SUPPLIERS WHERE S_City="ATHENS"

CREATE VIEW ALL_SUPPLIERS AS SELECT * FROM SUPPLIERS

Εννοιολογικό επίπεδο

CREATE TABLE SUPPLIERS ( S_No NUMBER(4) NOT NULL, S_Name CHAR(25), S_City CHAR(20) );

Εσωτερικό επίπεδο

CREATE INDEX Supplier_Name ON SUPPLIERS(S_Name);

CREATE UNIQUE INDEX Supplier_No ON SUPPLIERS(S_No);

2.7 ΑΝΕΞΑΡΤΗΣΙΑ ∆Ε∆ΟΜΕΝΩΝ ΣΤΗΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΤΡΙΩΝ ΣΧΗΜΑΤΩΝ

Η αρχιτεκτονική τριών σχηµάτων µπορεί να χρησιµοποιηθεί για να εξηγηθεί η έννοια της ανεξαρτησίας δεδοµένων (data independence), που µπορεί να οριστεί ως η δυνατότητα να αλλάζουµε το σχήµα ενός επιπέδου σ' ένα σύστηµα βάσης δεδοµένων χωρίς να χρειάζεται να αλλάξουµε το σχήµα του αµέσως υψηλότερου επιπέδου. Υπάρχουν δύο τύποι ανεξαρτησίας δεδοµένων:

Λογική ανεξαρτησία δεδοµένων

Σελ. 29

Page 30: Βάσεις δεδομένων

ΕΝΝΟΙΕΣ ΚΑΙ ΑΡΧΙΤΕΚΤΟΝΙΚΉ ΣΥΣΤΗΜΆΤΩΝ ΒΆΣΕΩΝ ∆Ε∆ΟΜΈΝΩΝ

• η δυνατότητα να τροποποιηθεί το εννοιολογικό σχήµα (π.χ. προσθήκη ή αλλαγή ενός πεδίου) χωρίς να χρειάζεται να αλλάξουµε τα εξωτερικά σχήµατα ή τα προγράµµατα εφαρµογών.

• οι τροποποιήσεις σε αυτό το επίπεδο γίνονται συνήθως όταν αλλάζει η λογική δοµή της βάσης δεδοµένων. Οι εξωτερικές απόψεις που αναφέρονται µόνο στα υπόλοιπα δεδοµένα δεν θα πρέπει να επηρεάζονται.

• Μόνον ο ορισµός των απόψεων που αναφέρονται στις αλλαγές που έγιναν και οι απεικονίσεις χρειάζεται να αλλάζουν σ' ένα Σ∆Β∆ που υποστηρίζει λογική ανεξαρτησία δεδοµένων. Προγράµµατα εφαρµογών που αναφέρονται στις απόψεις του εξωτερικού σχήµατος πρέπει να δουλεύουν όπως και πριν, αν γίνει κάποια λογική αναδιοργάνωση του εννοιολογικού σχήµατος. Αλλαγές στους περιορισµούς µπορεί επίσης να γίνουν στο εννοιολογικό σχήµα χωρίς να επηρεάζονται τα εξωτερικά σχήµατα ή τα προγράµµατα εφαρµογών.

Φυσική ανεξαρτησία δεδοµένων

• η δυνατότητα να τροποποιηθεί το φυσικό σχήµα (η φυσική οργάνωση της βάσης π.χ. µε προσθήκη ενός µονοπατιού προσπέλασης -access path- που συνήθως ορίζεται σε ένα πεδίο του αρχείου που λέγεται πεδίο ευρετηριοποίησης -indexing field-) χωρίς να αναγκάσει τα προγράµµατα εφαρµογών να ξαναγραφούν

• οι τροποποιήσεις σε αυτό το επίπεδο γίνονται συνήθως για να βελτιωθεί η απόδοση.

• Για παράδειγµα, η κατασκευή ενός µονοπατιού προσπέλασης για τη βελτίωση της ανάκτησης των εγγραφών διδασκαλίας µε βάση τα πεδία Εξάµηνο και Έτος δεν θα πρέπει να απαιτεί αλλαγή µιας ερώτησης όπως "βρες όλες τις διδασκαλίες του χειµερινού εξαµήνου 1998". Η ερώτηση όµως θα µπορεί να εκτελεστεί πιο γρήγορα από το Σ∆Β∆ µε αξιοποίηση των νέων µονοπατιών προσπέλασης.

Η λογική ανεξαρτησία δεδοµένων είναι πιο δύσκολο να επιτύχει αφού τα προγράµµατα εφαρµογών εξαρτώνται από τη λογική δοµή των δεδοµένων. Κάτι ανάλογο γίνεται και στους αφηρηµένους τύπους δεδοµένων (abstract data types) στις γλώσσες προγραµµατισµού.

Όποτε έχουµε ένα Σ∆Β∆ πολλών επιπέδων, ο κατάλογος του πρέπει να επεκταθεί για να συµπεριλάβει πληροφορίες σχετικά µε το πώς απεικονίζονται τα ερωτήµατα και τα δεδοµένα µεταξύ των διαφόρων επιπέδων. Για να πραγµατοποιήσει τις απεικονίσεις αυτές το Σ∆Β∆ χρησιµοποιεί επιπλέον λογισµικό το οποίο αναφέρεται στις πληροφορίες απεικόνισης του καταλόγου. Η ανεξαρτησία δεδοµένων επιτυγχάνεται διότι όταν το σχήµα σε κάποιο επίπεδο αλλάζει, το σχήµα στο επόµενο επίπεδο παραµένει αµετάβλητο· το µόνο που αλλάζει είναι η απεικόνιση µεταξύ των δύο επιπέδων.

Σελ. 30

Page 31: Βάσεις δεδομένων

2.8 Μετα-δεδοµένα

2.8 ΜΕΤΑ-∆Ε∆ΟΜΕΝΑ

Τα µετα-δεδοµένα δηλαδή δηλ. "δεδοµένα για τα δεδοµένα" είναι ειδικές πληροφορίες για τα δεδοµένα που υπάρχουν στη βάση.

1. Πληροφορίες για το πώς και που αποθηκεύονται τα δεδοµένα

• δοµές αρχείων

• εγγραφές

• ονόµατα των αρχείων, τύποι δεδοµένων

• µορφή (format) των τύπων δεδοµένων

2. Πληροφορίες σχετικά µε την αντιστοιχία µεταξύ των διαφορετικών σχηµάτων

Τα µετα-δεδοµένα αποθηκεύονται, στον αποκαλούµενο, κατάλογο συστήµατος ή λεξικό δεδοµένων. Οι κατάλογοι σε ένα σχεσιακό σύστηµα αποθηκεύονται και οι ίδιοι σαν σχέσεις

Τα µετα-δεδοµένα χρησιµοποιούνται από το Σ∆Β∆ (σύστηµα διαχείρισης βάσεων δεδοµένων) για να απαντήσουν σε ερωτήσεις όπως:

• Ποιες πληροφορίες υπάρχουν στη βάση δεδοµένων;

• Πόσο διαφορετικά είναι τα µέρη της βάσης δεδοµένων;

• Πόσο µεγάλος είναι ο χρόνος απόκρισης για τους διάφορους τύπους επερωτήσεων;

• Ποιος χρήστης προσπάθησε να σπάσει το σύστηµα ασφάλειας της βάσης δεδοµένων;

• Απαιτείται βελτιστοποίηση της φυσικής οργάνωσης της βάσης δεδοµένων σε σχέση µε τους χρόνους απόκρισης ή την αξιοποίηση της µνήµης;

2.9 ΕΥΡΕΤΗΡΙΑ

• Ένα ευρετήριο (index) είναι µια βοηθητική δοµή αρχείου που κάνει πιο αποδοτική την αναζήτηση µιας εγγραφής σε ένα αρχείο

• Το ευρετήριο καθορίζεται (συνήθως) σε ένα γνώρισµα του αρχείου

• Συχνά αποκαλείται access path (µονοπάτι πρόσβασης) στο γνώρισµα

• Μια καταχώρηση / εγγραφή στο ευρετήριο έχει την µορφή:

Τιµή Πεδίου Ευρετηριοποίσης ∆είκτης στο block της εγγραφής

Το αρχείο ευρετηρίου καταλαµβάνει µικρότερο χώρο από το ίδιο το αρχείο δεδοµένων (οι καταχωρήσεις είναι µικρότερες και λιγότερες)

Κάνοντας δυαδική αναζήτηση στο ευρετήριο βρίσκουµε τον δείκτη στο block όπου είναι αποθηκευµένη η εγγραφή που θέλουµε.

Σελ. 31

Page 32: Βάσεις δεδομένων

ΕΝΝΟΙΕΣ ΚΑΙ ΑΡΧΙΤΕΚΤΟΝΙΚΉ ΣΥΣΤΗΜΆΤΩΝ ΒΆΣΕΩΝ ∆Ε∆ΟΜΈΝΩΝ

2.10 ΓΛΩΣΣΕΣ ΒΑΣΕΩΝ ∆Ε∆ΟΜΕΝΩΝ

Ο όρος γλώσσα βάσεων δεδοµένων (Database language) είναι γενικός όρος για µία κατηγορία γλωσσών όπως η γλώσσα SQL που χρησιµοποιούνται για τον ορισµό, την επικοινωνία και το χειρισµό της βάσης δεδοµένων.

Στις συµβατικές γλώσσες προγραµµατισµού οι δηλώσεις και οι προτάσεις ενός προγράµµατος υλοποιούνται σε µία και µόνη γλώσσα κάθε φορά.

Από την άλλη µεριά ένα σύστηµα βάσης δεδοµένων χρησιµοποιεί πολλές διαφορετικές γλώσσες λόγω της ύπαρξης τριών επιπέδων αφαίρεσης:

• Γλώσσα ορισµού αποθήκευσης -Storage Definition Language (SDL)

• Γλώσσα ορισµού δεδοµένων -Data Definition Language (DDL)

• Γλώσσα ορισµού απόψεων -View Definition Language (VDL)

• Γλώσσα χειρισµού δεδοµένων -Data Manipulation Language (DML)

Μόλις συµπληρωθεί ο σχεδιασµός µιας βάσης δεδοµένων και επιλεγεί ένα Σ∆Β∆ για την υλοποίηση της βάσης, το πρώτο πράγµα είναι να προσδιοριστούν εννοιολογικά και εσωτερικά σχήµατα για τη βάση δεδοµένων καθώς και οι τυχόν απεικονίσεις µεταξύ των δύο. Σε πολλά Σ∆Β∆ όπου δεν τηρείται αυστηρός διαχωρισµός των επιπέδων, µία και µόνο γλώσσα, που λέγεται γλώσσα ορισµού δεδοµένων (data definition language -DDL-), χρησιµοποιείται από το ∆Β∆ και τους σχεδιαστές της βάσης δεδοµένων για τον ορισµό και των δύο σχηµάτων. Το Σ∆Β∆ θα έχει ένα µεταγλωττιστή της γλώσσας ορισµού δεδοµένων που λειτουργία του είναι να επεξεργάζεται τις εντολές DDL για να αναγνωρίσει τις περιγραφές των δοµικών στοιχείων του σχήµατος και να αποθηκεύσει την περιγραφή του σχήµατος στον κατάλογο του Σ∆Β∆.

Σε Σ∆Β∆ όπου υποστηρίζεται σαφής διαχωρισµός µεταξύ του εννοιολογικού και του εσωτερικού επιπέδου, η γλώσσα ορισµού δεδοµένων χρησιµοποιείται µόνο για τον ορισµό του εννοιολογικού σχήµατος. Μια άλλη γλώσσα, η γλώσσα ορισµού αποθήκευσης (storage definition language -SDL-) χρησιµοποιείται για τον ορισµό του εσωτερικού σχήµατος. Οι απεικονίσεις µεταξύ των δύο σχηµάτων µπορούν να προσδιοριστούν σε οποιαδήποτε από αυτές τις δύο γλώσσες. Για µια πραγµατική αρχιτεκτονική τριών σχηµάτων θα χρειαζόµασταν µια τρίτη γλώσσα, τη γλώσσα ορισµού όψεων (view definition language -VDL-), για να οριστούν οι όψεις των χρηστών και οι απεικονίσεις των όψεων στο εννοιολογικό σχήµα, αλλά στα περισσότερα Σ∆Β∆ η γλώσσα ορισµού δεδοµένων χρησιµοποιείται για τον ορισµό και του εννοιολογικού και των εξωτερικών σχηµάτων.

Μόλις µεταγλωττιστούν τα σχήµατα της βάσης δεδοµένων και φορτωθεί µε δεδοµένα η βάση, οι χρήστες πρέπει να έχουν κάποια µέσα για το χειρισµό της. Τυπικές περιπτώσεις χειρισµού περιλαµβάνουν την ανάκτηση, την εισαγωγή, τη διαγραφή και την τροποποίηση των δεδοµένων. Το Σ∆Β∆ παρέχει µια γλώσσα χειρισµού δεδοµένων (data manipulation language -DML-) για το σκοπό αυτό.

Στα σηµερινά Σ∆Β∆ συνήθως οι παραπάνω τύποι γλωσσών δεν διαχωρίζονται.

Αντίθετα, µπορεί να χρησιµοποιηθεί µια περιεκτική ολοκληρωµένη γλώσσα που να περιλαµβάνει δοµικά στοιχεία για τον ορισµό του εννοιολογικού σχήµατος, τον

Σελ. 32

Page 33: Βάσεις δεδομένων

2.11 Η Γλώσσα ορισµού δεδοµένων (DDL)

ορισµό όψεων και το χειρισµό των δεδοµένων. Τυπικό παράδειγµα εµπεριστατωµένης γλώσσας βάσης δεδοµένων είναι η γλώσσα σχεσιακών βάσεων δεδοµένων SQL, που αποτελεί συνδυασµό γλώσσας ορισµού δεδοµένων, γλώσσας ορισµού όψεων και γλώσσας χειρισµού δεδοµένων καθώς και εντολών για προσδιορισµό περιορισµών και εξέλιξης σχήµατος. Η γλώσσα ορισµού αποθήκευσης ήταν στοιχείο προηγούµενων εκδόσεων της SQL αλλά έχει αφαιρεθεί από τη γλώσσα και έχει παραµείνει µόνο σε εννοιολογικό και εξωτερικό επίπεδο.

2.11 Η ΓΛΩΣΣΑ ΟΡΙΣΜΟΥ ∆Ε∆ΟΜΕΝΩΝ (DDL)

Μία γλώσσα ορισµού δεδοµένων (Data Definition Language -DDL) χρησιµοποιείται για να καθορίσει σχήµα της βάσης δεδοµένων ως σύνολο δηλώσεων DDL.

1. οι δηλώσεις DDL µεταγλωτίζονται και δηµιουργούν ένα σύνολο πινάκων που αποθηκεύονται σε ένα ειδικό αρχείο αποκαλούµενο λεξικό δεδοµένων ή κατάλογος δεδοµένων.

2. Ο κατάλογος δεδοµένων περιέχει τα µεταδεδοµένα.

3. Οι δοµές αποθήκευσης και προσπέλασης δεδοµένων που χρησιµοποιούνται από το σύστηµα βάσης δεδοµένων καθορίζονται µε ένα σύνολο ορισµών από έναν τµήµα της γλώσσας DDL αποκαλούµενο γλώσσα ορισµού και αποθήκευσης δεδοµένων

Η βασική ιδέα: η απόκρυψη των λεπτοµερειών φυσικής υλοποίησης του σχήµατος της βάσης από τους χρήστες.

Η DDL-SQL επιτρέπει τον ορισµό, τροποποίηση ή διαγραφή πινάκων.

CREATE | DROP | ALTER TABLE (base table)

CREATE | DROP | ALTER VIEW (virtual table)

CREATE | DROP | ALTER INDEX (index table)

Παραδείγµατα DDL στην SQL create table ΠΤΗΣΕΙΣ (Αριθµός_Πτήσης int, Ηµεροµηνία char(6), Θέσεις int, Από char(3), Προορισµός char(3)); create index for ΠΤΗΣΕΙΣ on Αριθµός_Πτήσης;

• Η πρώτη έκφραση δηµιουργεί µία σχέση (κανονικοποιηµένο πίνακα), τα γνωρίσµατα της (πεδία) και τα πεδία τιµών για κάθε γνώρισµα.

• Η δεύτερη έκφραση δηµιουργεί ευρετήριο για το πεδίο Αριθµός_Πτήσης, ως µέρος του εσωτερικού σχήµατος, κάνοντας έτσι ταχύτερη την αναζήτηση στον πίνακα πτήσεις (αυτό επιτυγχάνετε δηµιουργώντας έναν κατακερµατισµένο πίνακα -hash table- µε το πεδίο Αριθµός_Πτήσης σαν κλειδί)

Σελ. 33

Page 34: Βάσεις δεδομένων

ΕΝΝΟΙΕΣ ΚΑΙ ΑΡΧΙΤΕΚΤΟΝΙΚΉ ΣΥΣΤΗΜΆΤΩΝ ΒΆΣΕΩΝ ∆Ε∆ΟΜΈΝΩΝ

2.12 ΓΛΩΣΣΑ ΧΕΙΡΙΣΜΟΥ ∆Ε∆ΟΜΕΝΩΝ (DML)

Ο χειρισµός των δεδοµένων επιτρέπει την:

• ανάκτηση των πληροφοριών από τη βάση δεδοµένων

• εισαγωγή των νέων πληροφοριών στη βάση δεδοµένων

• διαγραφή των πληροφοριών στη βάση δεδοµένων

• τροποποίηση των πληροφοριών στη βάση δεδοµένων

Μία γλώσσα χειρισµού δεδοµένων (Data Manipulation Language -DML) επιτρέπει στους χρήστες να έχουν πρόσβαση και να χειρίζονται τα δεδοµένα.

Υπάρχουν δύο είδη της γλώσσας χειρισµού δεδοµένων:

• χαµηλού επιπέδου (low-level) ή διαδικαστική (procedural): ο χρήστης διευκρινίζει ποια δεδοµένα χρειάζεται και πώς να τα πάρει

• υψηλού επιπέδου (high-level) ή µη διαδικαστική (nonprocedural): ο χρήστης διευκρινίζει µόνο ποια δεδοµένα χρειάζεται

Επίσης µια γλώσσα διατύπωσης ερωτήσεων (query language) είναι ένα κοµµάτι της υψηλού επιπέδου γλώσσας χειρισµού δεδοµένων που χρησιµοποιείται αυτόνοµα και αλληλεπιδραστικά για την ανάκτηση πληροφοριών µόνο.

Γενικά όµως, τόσο οι εντολές ανάκτησης όσο και οι εντολές ενηµέρωσης µιας γλώσσας χειρισµού δεδοµένων υψηλού επιπέδου µπορούν να χρησιµοποιηθούν αλληλεπιδραστικά και εποµένως θεωρούνται τµήµα της γλώσσας επερωτήσεων. Γι' αυτό οι όροι DML και γλώσσα διατύπωσης ερωτήσεων χρησιµοποιούνται συχνά ταυτόσηµα.

Η υψηλού επιπέδου ή µη διαδικαστική γλώσσα χειρισµού δεδοµένων µπορεί να χρησιµοποιηθεί αυτόνοµα για να προδιαγράψει πολύπλοκες σχεσιακές πράξεις.

Η χαµηλού επιπέδου ή διαδικαστική γλώσσα χειρισµού δεδοµένων όµως πρέπει να εµφυτεύεται σε µια γενικής χρήσης γλώσσα προγραµµατισµού. Αυτός ο τύπος ανακτά µια-µια εγγραφή από τη βάση δεδοµένων και επεξεργάζεται κάθε εγγραφή ξεχωριστά. Εποµένως χρειάζεται να χρησιµοποιήσει δοµικά στοιχεία κάποιας γλώσσας προγραµµατισµού, όπως οι επαναλήψεις, για να ανακτήσει και να επεξεργαστεί καθεµιά εγγραφή από ένα σύνολο εγγραφών. Όταν εντολές µιας γλώσσας χειρισµού δεδοµένων, είτε υψηλού είτε χαµηλού επιπέδου, εµφυτεύονται οι µια γενικής χρήσης γλώσσα προγραµµατισµού, η γλώσσα αυτή λέγεται φιλόξενη γλώσσα (host language) και η γλώσσα χειρισµού δεδοµένων λέγεται υπογλώσσα δεδοµένων (data sublanguage).

Οι υψηλού επιπέδου γλώσσες χειρισµού δεδοµένων, όπως η SQL, µπορούν να προσδιορίσουν και να ανακτήσουν πολλές εγγραφές µε µία και µόνο εντολή DML και εποµένως λέγονται γλώσσες χειρισµού δεδοµένων ενός συνόλου τη φορά (set-at-a-time) ή συνολοστρεφείς (set-oriented). Μια ερώτηση σε µια υψηλού επιπέδου γλώσσα χειρισµού δεδοµένων συνήθως προσδιορίζει ποια δεδοµένα πρέπει να

Σελ. 34

Page 35: Βάσεις δεδομένων

2.12 γλώσσα χειρισµού δεδοµένων (DML)

ανακτηθούν και όχι πώς θα ανακτηθούν αυτά τα δεδοµένα· έτσι, αυτές λέγονται και δηλωτικές.

Η DML-SQL επιτρέπει τη διαχείριση των στοιχείων πινάκων του συστήµατος Β∆

• SELECT αναζήτηση

• INSERT εισαγωγή εγγραφής

• DELETE διαγραφή εγγραφής

• UPDATE τροποποίηση εγγραφής

Παραδείγµατα DML στην SQL update ΠΤΗΣΕΙΣ set Θέσεις = Θέσεις -4 where Αριθµός_Πτήσης = 123 and Ηµεροµηνία = ‘AUG 20’

Η έκφραση SQL ελαττώνει τις θέσεις κατά 4 στην πτήση 123 στις 20 Αυγούστου. insert into ΠΤΗΣΕΙΣ values(171,‘AUG 31’, 100, ‘Ρώµη’, ‘Λονδίνο’)

Η έκφραση SQL προσθέτει µία καινούργια πτήση µε αριθµό πτήσης 171 και 100 θέσεις από την Ρώµη στο Λονδίνο στις 31 Αυγούστου.

select * from ΠΤΗΣΕΙΣ where Αριθµός_Πτήσης = 123 Η έκφραση SQL προβάλει όλα τα στοιχεία της πτήσης µε αριθµό 123.

Σελ. 35

Page 36: Βάσεις δεδομένων

ΜΟΝΤΕΛΟ ΟΝΤΟΤΉΤΩΝ-ΣΥΣΧΕΤΊΣΕΩΝ

3 ΜΟΝΤΕΛΟ ΟΝΤΟΤΗΤΩΝ-ΣΥΣΧΕΤΙΣΕΩΝ

3.1 ΕΙΣΑΓΩΓΗ

Το µοντέλο οντοτήτων-συσχετίσεων (entity-relationship model) προτάθηκε από τον P.P. Chen το 1976 για να περιγράψει µε γραφικά σύµβολα τα δεδοµένα ως οντότητες, συσχετίσεις και γνωρίσµατα. Από τότε έχει αποτελέσει το αντικείµενο εκτεταµένων ερευνών µε αποτέλεσµα τη διαρκή ανάπτυξή του. Σήµερα θεωρείται ένα από τα πιο σηµαντικά εργαλεία κατασκευής εννοιολογικών µοντέλων βάσεων δεδοµένων, σε περιβάλλοντα µε ποικίλες απαιτήσεις, και αποτελεί βασική συνιστώσα µεθοδολογιών ανάπτυξης πληροφοριακών συστηµάτων. Χρησιµοποιείται κατά το στάδιο του λογικού ή εννοιολογικού σχεδιασµού (conceptual design) της βάσης δεδοµένων.

Ένα εννοιολογικό µοντέλο δεδοµένων (conceptual data model) αναπαριστά µία ολοκληρωµένη άποψη για τα δεδοµένα του οργανισµού, για τον οποίο πρόκειται να κατασκευαστεί η βάση δεδοµένων, και είναι ανεξάρτητο από το λογισµικό διαχείρισης βάσης δεδοµένων που θα χρησιµοποιηθεί, καθώς και από τις τεχνικές λεπτοµέρειες υλοποίησης της βάσης δεδοµένων.

Στην ουσία το εννοιολογικό µοντέλο οντοτήτων-συσχετίσεων βασίζεται στην ιδέα ότι ο πραγµατικός χώρος αποτελείται από οντότητες (ο ΥΠΑΛΛΗΛΟΣ "Μαρία", το ΤΜΗΜΑ "Λογιστήριο", το ΠΡΟΪΟΝ "Βίδες", το ΜΑΘΗΜΑ "Βάσεις ∆εδοµένων" κοκ.), µε συγκεκριµένα χαρακτηριστικά (γνωρίσµατα) και από συσχετίσεις µεταξύ των οντοτήτων αυτών (η "Μαρία" ΕΡΓΑΖΕΤΑΙ στο "Λογιστήριο", η "Ελένη" ΠΡΟΪΣΤΑΤΑΙ της "Μαρίας", ο "Γιάννης" ∆Ι∆ΑΣΚΕΙ "Βάσεις ∆εδοµένων" κοκ.).

Προφανώς, σε έναν πραγµατικό χώρο υπάρχουν οντότητες µε ταυτόσηµα γνωρίσµατα (π.χ. ΟΛΟΙ οι εργαζόµενοι, ΟΛΑ τα τµήµατα, ΌΛΑ τα µαθήµατα). Αυτές οι οντότητες οµαδοποιούνται σε τύπους οντοτήτων (entity sets / types). Αντίστοιχα, συσχετίσεις ιδίου τύπου οµαδοποιούνται σε τύπους συσχετίσεων (relationship sets / types).

τύποι οντοτήτων

ΑΠΑΣΧΟΛΕΙΤΑΙ ΕΡΓΑΖΟΜΕΝΟΣ ΕΡΓΟ

ΤοποθεσίαΑρ Ταυτ Όνοµα κωδικός

τύπος Συσχέτισης

γνωρίσµατα

Σελ. 36

Page 37: Βάσεις δεδομένων

3.2 Βασικές έννοιες και συµβολισµοί

Μοντέλο οντοτήτων-συσχετίσεων

• ΟΝΤΟΤΗΤΕΣ (entity): αντικείµενα / έννοιες του φυσικού κόσµου µε ανεξάρτητη ύπαρξη

• ΤΥΠΟΣ ΟΝΤΟΤΗΤΩΝ (entity type) : ένα σύνολο από οντότητες που έχουν τα ίδια γνωρίσµατα

• ΓΝΩΡΙΣΜΑΤΑ (attribute): ιδιότητες µιας οντότητας του φυσικού κόσµου, που παίρνουν τιµές για συγκεκριµένα στιγµιότυπα της οντότητας

• ΤΥΠΟΙ ΓΝΩΡΙΣΜΑΤΩΝ: απλά, σύνθετα, µονότιµα/πλειότιµα, αποθηκευµένα, παραγόµενα

• ΓΝΩΡΙΣΜΑΤΑ ΚΛΕΙ∆ΙΑ: :γνωρίσµατα µε µοναδικές τιµές

• ΠΕ∆ΙΑ ΟΡΙΣΜΟΥ ΓΝΩΡΙΣΜΑΤΩΝ το σύνολο των τιµών που µπορεί να πάρει το γνώρισµα

• ΣΥΣΧΕΤΙΣΕΙΣ: Λογικές συνδέσεις µεταξύ δύο ή περισσοτέρων τύπων οντοτήτων.

3.2 ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΚΑΙ ΣΥΜΒΟΛΙΣΜΟΙ

Στο µοντέλο οντοτήτων-συσχετίσεων χρησιµοποιούνται τρεις βασικές έννοιες:

τύποι οντοτήτων

τύποι συσχετίσεων

γνωρίσµατα

Τύπος Οντότητας (entity type) είναι ένα σύνολο από οντότητες µε τα ίδια γνωρίσµατα - όπως προϊόντα, αυτοκίνητα, σπίτια, τµήµατα, φοιτητές ή εργαζόµενοι, τοποθεσίες, έργα ή πανεπιστηµιακά µαθήµατα-, που µπορεί να υπάρχει ανεξάρτητα και να προσδιορισθεί µονοσήµαντα στη Β∆. Κάθε τύπος οντότητας έχει συγκεκριµένες ιδιότητες που λέγονται γνωρίσµατα (attributes) και την περιγράφουν. Για παράδειγµα, µια οντότητα ΥΠΑΛΛΗΛΟΣ που αναπαριστά έναν εργαζόµενο µπορεί να περιγράφεται από γνωρίσµατα όπως το όνοµα του εργαζοµένου, την ηλικία, τη διεύθυνση, το µισθό και την εργασία του.

Τύπος Συσχέτισης (relationship type) ονοµάζεται ένα σύνολο από λογικές συνδέσεις µεταξύ δύο ή περισσοτέρων τύπων οντοτήτων. Ενώ οι τύποι οντοτήτων έχουν αυτοτελή ύπαρξη, οι τύποι συσχετίσεων ορίζονται µόνο σε συνδυασµό µε τύπους οντοτήτων. Για παράδειγµα ο τύπος συσχέτισης µεταξύ των τύπων οντοτήτων "προµηθευτής" και "προϊόν" µπορεί να είναι "προµηθεύει". Οι τύποι Συσχετίσεων µπορούν να έχουν κι αυτές γνωρίσµατα (attributes), τα οποία είναι ιδιότητες που τις χαρακτηρίζουν. Για παράδειγµα, η συσχέτιση ΕΡΓΑΖΕΤΑΙ έχει γνώρισµα ηµεροµηνία (ενδεικτικά, η "Ελένη" ∆ΙΕΥΘΥΝΕΙ το "Λογιστήριο" από τις "20/10/2000". Συνήθως τα γνωρίσµατα των Συσχετίσεων προσδιορίζουν έννοιες όπως: ποιος έκανε την συσχέτιση, πότε έγινε αυτή, πότε παύει να ισχύει, κλπ.

∆ιαφορετικοί τύποι γνωρισµάτων εµφανίζονται στο µοντέλο ΟΣ: απλά και σύνθετα, µονότιµα και πλειότιµα, αποθηκευµένα και παραγόµενα.

Σελ. 37

Page 38: Βάσεις δεδομένων

ΜΟΝΤΕΛΟ ΟΝΤΟΤΉΤΩΝ-ΣΥΣΧΕΤΊΣΕΩΝ

Έννοια Άτυπος Ορισµός Παραδείγµατα ΤΥΠΟΣ ΟΝΤΟΤΗΤΑΣ Ένα σύνολο

διακεκριµένων αντικειµένων

Προµηθευτής, Εξάρτηµα, Αποστολή Υπάλληλος, Τµήµα, Πρόσωπο Σύνδεση, Κονσέρτο Ορχήστρα, Μαέστρος Παραγγελία. Γραµµή παραγγελίας

ΓΝΩΡΙΣΜΑ/Ι∆ΙΟΤΗΤΑ Μια πληροφορία που περιγράφει έναν τύπο οντότητας

Κωδικός Προµηθευτή Ποσότητα Αποστολής Όνοµα υπαλλήλου ∆ιεύθυνση υπαλλήλου Ηµεροµηνία παραγγελίας

ΤΥΠΟΣ ΣΥΣΧΕΤΙΣΗΣ Ορίζει ένα σύνολο συνδέσεων δύο ή περισσότερων τύπων οντοτήτων

Αποστέλλει (προµηθευτής-εξάρτηµα) ∆ιευθύνει (Υπάλληλος-τµήµα) Ηχογράφηση (σύνδεση-ορχήστρα – µαέστρος)

Πίνακας βασικών εννοιολογικών εννοιών (οι δοµές)

Η λογική δοµή µιας βάσης δεδοµένων που έχει οργανωθεί κατά το µοντέλο Οντοτήτων-Συσχετίσεων µπορεί να αναπαρασταθεί µε το σχεδιασµό ενός ∆ιαγράµµατος Οντοτήτων-Συσχετίσεων (E-R diagram). Σε ένα τέτοιο διάγραµµα χρησιµοποιούνται γραφικά σύµβολά για την περιγραφή της δοµής της βάσης.

Ένας τύπος οντοτήτων παριστάνεται στα διαγράµµατα ΟΣ ως παραλληλόγραµµο κουτί που περικλείει το όνοµα του τύπου. Τα ονόµατα των γνωρισµάτων περικλείονται σε ελλείψεις και συνδέονται µε τον τύπο οντοτήτων τους µε ευθείες γραµµές. Τα σύνθετα γνωρίσµατα συνδέονται µε τα συστατικά τους γνωρίσµατα επίσης µε ευθείες γραµµές. Τα πλειότιµα γνωρίσµατα παρουσιάζονται µέσα σε ελλείψεις µε διπλό περίγραµµα.

όνοµα-πελάτη οδός

πόληαριθµός-δανείου

ποσό

πελάτης δάνειοδανειζόµενοςδανειζόµενος

υπόλοιπο

αριθµός-λογαριασµού

λογαριασµός

όνοµα-υποκαταστήµατος

πόλη

υποκατάστηµα

ενεργητικό

καταθέτηςκαταθέτης

λογαριασµός-υποκαταστήµατος

δάνειο-υποκαταστήµατος

Εικόνα ∆ιάγραµµα ΟΝΤΟΤΗΤΩΝ-ΣΥΣΧΕΤΙΣΕΩΝ για µία Β∆ µιας τράπεζας.

Σελ. 38

Page 39: Βάσεις δεδομένων

3.3 Γνωρίσµατα

3.3 ΓΝΩΡΙΣΜΑΤΑ

∆ιαφορετικοί τύποι γνωρισµάτων εµφανίζονται στο µοντέλο ΟΣ: απλά και σύνθετα, µονότιµα και πλειότιµα, αποθηκευµένα και παραγόµενα.

Σύνθετα έναντι Απλών (Ατοµικών) Γνωρισµάτων. Τα σύνθετα γνωρίσµατα (composite attributes) µπορούν να χωριστούν σε µικρότερα τµήµατα που αναπαριστάνουν βασικότερα γνωρίσµατα µε τη δική του ανεξάρτητη σηµασία το καθένα. Για παράδειγµα, το γνώρισµα ∆ιεύθυνση της οντότητας ΕΡΓΑΖΟΜΕΝΟΣ µπορεί να υποδιαιρεθεί σε Οδό, Αριθµό, Πόλη, Νοµό, και Ταχ_Κωδ . Γνωρίσµατα που δεν υποδιαιρούνται λέγονται απλά (simple) ή ατοµικά γνωρίσµατα (atomic attributes). Η τιµή ενός σύνθετου γνωρίσµατος είναι η συνένωση των τιµών των απλών γνωρισµάτων που το αποτελούν.

Απλό

Σύνθετο

Τ.Κ. Αριθµός Νοµός

Οδός

Πόλη

∆ιεύθυνσηΑρ Ταυτ

ΕΡΓΑΖΟΜΕΝΟΣ

Εικόνα. Σύνθετα και απλά γνωρίσµατα.

Μονότιµα έναντι Πλειοτίµων Γνωρισµάτων. Τα περισσότερα γνωρίσµατα έχουν µία και µόνο τιµή για µια συγκεκριµένη οντότητα· τέτοια γνωρίσµατα λέγονται µονότιµα (single-valued). Για παράδειγµα, ο Αριθµός Ταυτότητος και η Ηµεροµηνία Γέννησης ενός ατόµου είναι µονότιµα γνωρίσµατα. Σε µερικές περιπτώσεις ένα γνώρισµα µπορεί να έχει ένα σύνολο από τιµές για την ίδια οντότητα -για παράδειγµα το γνώρισµα Χρώµατα για ένα αυτοκίνητο ή το γνώρισµα ΠανεπιστηµιακάΠτυχία για έναν άνθρωπο. Τα µονόχρωµα αυτοκίνητα έχουν µία τιµή ενώ τα δίχρωµα αυτοκίνητα δύο τιµές για το γνώρισµα Χρώµατα. Οµοίως, ένα άτοµο µπορεί να µην έχει κανένα πανεπιστηµιακό πτυχίο, ένα άλλο άτοµο να έχει ένα πτυχίο και ένα τρίτο να έχει δύο ή περισσότερα πτυχία· έτσι, διαφορετικά άτοµα µπορεί να έχουν διαφορετικό πλήθος τιµών για το γνώρισµα ΠανεπιστηµιακάΠτυχία. Τέτοια γνωρίσµατα ονοµάζονται πλειότιµα (multivalued).

Σελ. 39

ΕΡΓΑΖΟΜΕΝΟΣ ΑΥΤΟΚΙΝΗΤΑ

Πτυχία ΧρώµαταΑρ πλαισίουΑρ Ταυτ

Πλειότιµα

Μονότιµα

Page 40: Βάσεις δεδομένων

ΜΟΝΤΕΛΟ ΟΝΤΟΤΉΤΩΝ-ΣΥΣΧΕΤΊΣΕΩΝ

Παραγόµενα Γνωρίσµατα. Σε µερικές περιπτώσεις δύο (ή περισσότερες) τιµές γνωρισµάτων σχετίζονται -για παράδειγµα τα γνωρίσµατα Ηλικία και ΗµεροµηνιαΓεννησης ενός ατόµου. Η τιµή του Ηλικία µπορεί να υπολογιστεί από την τρέχουσα ηµεροµηνία και την τιµή του ΗµεροµηνιαΓεννησης για το άτοµο αυτό. Εποµένως το γνώρισµα Ηλικία λέγεται παραγόµενο γνώρισµα (derived attribute). Οι τιµές µερικών γνωρισµάτων µπορούν να υπολογιστούν από σχετιζόµενες οντότητες· για παράδειγµα, ένα γνώρισµα Αριθµος_Υπαλληλων ενός τµήµατος µπορεί να παραχθεί µετρώντας τον αριθµό των υπαλλήλων που σχετίζονται µε (εργάζονται στο) τµήµα αυτό.

Παραγόµενα γνωρίσµατα

Αριθ_Εργαζοµένων Όνοµα Ηµ_Γεν Ηλικία

ΕΡΓΑΖΕΤΑΙ ΤΜΗΜΑ ΕΡΓΑΖΟΜΕΝΟΣ

Γνωρίσµατα-Κλειδιά ενός Τύπου Οντοτήτων. Όπως θα δούµε και παρακάτω ένας σηµαντικός δοµικός περιορισµός για τις οντότητες ενός τύπου οντοτήτων είναι ο περιορισµός κλειδιού (key constraint) ή µοναδικότητας (uniqueness constraint) για τα γνωρίσµατα. Ένας τύπος οντοτήτων συνήθως έχει κάποιο γνώρισµα του οποίου οι τιµές είναι µοναδικές για κάθε ξεχωριστή οντότητα. Ένα τέτοιο γνώρισµα λέγεται γνώρισµα-κλειδί (key attribute) και οι τιµές του µπορούν να χρησιµοποιηθούν για να προσδιορίζεται κάθε οντότητα µονοσήµαντα.. Για τους τύπους οντοτήτων ΑΤΟΜΟ, ΕΡΓΑΖΟΜΕΝΟΣ ένα τυπικό γνώρισµα-κλειδί είναι ο αριθµός ταυτότητας. Το γνώρισµα Όνοµα είναι κλειδί του τύπου οντοτήτων ΕΤΑΙΡΕΙΑ διότι δύο εταιρείες δεν επιτρέπεται σε καµία περίπτωση να έχουν το ίδιο όνοµα

κωδικός

γνωρίσµατα κλειδιά

ΤοποθεσίαΑρ Ταυτ Όνοµα

ΑΠΑΣΧΟΛΕΙΤΑΙ ΕΡΓΟ ΕΡΓΑΖΟΜΕΝΟΣ

Μερικές φορές, διαφορετικά γνωρίσµατα µαζί σχηµατίζουν ένα κλειδί, µε την έννοια ότι ο συνδυασµός των τιµών των γνωρισµάτων αυτών πρέπει να είναι διαφορετικός για κάθε ατοµική οντότητα. Ένα σύνολο από γνωρίσµατα που έχει αυτή την ιδιότητα µπορεί να οµαδοποιηθεί σε ένα σύνθετο γνώρισµα, το οποίο γίνεται

Σελ. 40

Page 41: Βάσεις δεδομένων

3.3 Γνωρίσµατα

γνώρισµα-κλειδί του τύπου οντοτήτων. Στο συµβολισµό των διαγραµµάτων ΟΣ, κάθε γνώρισµα-κλειδί έχει το όνοµα του υπογραµµισµένο µέσα στην έλλειψη.

Μερικοί τύποι οντοτήτων έχουν περισσότερα από ένα γνωρίσµατα-κλειδιά. Για παράδειγµα, στον τύπο οντοτήτων ΑΥΤΟΚΙΝΗΤΟ, τόσο ο Αριθµός_ Πλαισίου όσο και ο Αριθµός_Κυκλοφορίας είναι από µόνος του ο καθένας κλειδί.

ΑΥΤΟΚΙΝΗΤΟ

Αρ_Πλαισίου

Αρ Κυκλοφορίας

Μοντέλο

Χρώµα

Έτος

Κατασκευαστής

Από την άλλη πλευρά ένας τύπος οντότητας µπορεί να µην έχει κανένα κλειδί και σ' αυτή την περίπτωση ονοµάζεται µη ισχυρός τύπος οντότητας (ασθενής τύπος). Για παράδειγµα σε µία εταιρεία θέλουµε για ασφαλιστικούς λόγους να τηρούµε στοιχεία για τα ΜΕΛΗ_ΟΙΚΟΓΕΝΕΙΑΣ ενός ΕΡΓΑΖΟΜΕΝΟΥ, για να υπολογίζουµε τα επιδόµατα µισθού. Είναι προφανές ότι αν δεν υπάρχει εργαζόµενος δεν υπάρχουν και µέλη οικογένειας (δεν είναι ανεξάρτητη οντότητα) γι' αυτό και λέγεται µη ισχυρός τύπος οντότητας.

ΗµΓενΌνοµα

ασθενής τύπος οντότητας

Φύλλο Αρ Ταυτ Όνοµα

ΠΡΟΣΤΑΤΕΥΕΙ ΜΕΛΗ ΟΙΚΟΓΕΝΕΙΑΣ ΕΡΓΑΖΟΜΕΝΟΣ

Σύνολα Τιµών (Πεδία ορισµού) των Γνωρισµάτων. Τα σύνολα τιµών δεν παρουσιάζονται στα διαγράµµατα ΟΣ. Κάθε απλό γνώρισµα ενός τύπου οντοτήτων συνδέεται βέβαια µε ένα σύνολο τιµών ή πεδίο ορισµού (domain), που προσδιορίζει τις επιτρεπτές τιµές που µπορεί να πάρει το γνώρισµα αυτό.

Null τιµές. Σε µερικές περιπτώσεις µια συγκεκριµένη οντότητα µπορεί να µην έχει καµιά δυνατή τιµή για ένα γνώρισµα. Για παράδειγµα, το γνώρισµα Αριθµος_∆ιαµερισµατος µιας διεύθυνσης υφίσταται µόνον για διευθύνσεις κτιρίων µε διαµερίσµατα και όχι για άλλους τύπους οικιών όπως οι µονοκατοικίες. Παρόµοια, το γνώρισµα Πανεπιστηµιακα_Πτυχια αφορά µόνο άτοµα µε πανεπιστηµιακά πτυχία. Για τέτοιες περιπτώσεις δηµιουργείται µια ειδική τιµή που λέγεται null. Η διεύθυνση µιας µονοκατοικίας θα είχε την τιµή null για το γνώρισµα Αριθµος_∆ιαµερισµατος και ένα άτοµο χωρίς πανεπιστηµιακό πτυχίο θα είχε την τιµή null για το γνώρισµα Πανεπιστηµιακα_Πτυχια.

Σελ. 41

Page 42: Βάσεις δεδομένων

ΜΟΝΤΕΛΟ ΟΝΤΟΤΉΤΩΝ-ΣΥΣΧΕΤΊΣΕΩΝ

3.4 ΤΥΠΟΙ ΣΥΣΧΕΤΙΣΕΩΝ

Ένας τύπος συσχέτισης (relationship type) µεταξύ δύο τύπων οντοτήτων ορίζει ένα σύνολο συνδέσεων -ή ένα σύνολο συσχετίσεων- µεταξύ αυτών των τύπων οντοτήτων. Στα διαγράµµατα ΟΣ οι τύποι συσχετίσεων παρουσιάζονται ως ρόµβοι οι οποίοι συνδέονται µε ευθείες γραµµές µε τα παραλληλόγραµµα που παριστάνουν τους συµµετέχοντες τύπους οντοτήτων. Το όνοµα µιας συσχέτισης γράφεται µέσα στον αντίστοιχο ρόµβο.

Π.χ. ο τύπος συσχέτισης ΕΡΓΑΖΕΤΑΙ µεταξύ των δύο τύπων οντοτήτων ΕΡΓΑΖΟΜΕΝΟΣ και ΤΜΗΜΑ, που συνδέει κάθε εργαζόµενο µε το τµήµα του.

Τύπος Συσχέτισης

ΕΡΓΑΖΕΤΑΙ ΤΜΗΜΑ ΕΡΓΑΖΟΜΕΝΟΣ

Ιδιότητες των ΤΥΠΩΝ ΣΥΣΧΕΤΙΣΕΩΝ

–Περισσότεροι του ενός τύποι συσχετίσεων µπορεί να υπάρχουν µεταξύ των ιδίων τύπων οντοτήτων (multiple relationships). π,χ., Εργαζοµενος-Εργαζεται-Τµήµα, Εργαζόµενος-∆ιευθύνει-Τµήµα.

–Μια συσχέτιση µπορεί να συνδέει δύο οντότητες που ανήκουν στον ίδιο τύπο οντοτήτων (αποκαλείται, ένας αναδροµικός τύπος συσχετίσεων - recursive relationship type) π.χ., ο ΕΠΙΒΛΕΠΕΙ τύπος συσχετίσεων συνδέει ΕΡΓΑΖΟΜΕΝΟ (στον ρόλο αυτού που επιβλέπεται) µε κάποιο άλλο ΕΡΓΑΖΟΜΕΝΟ (στον ρόλο του επιβλέποντα)

.

ΕΡΓΑΖΟΜΕΝΟΣ

ΕΠΙΒΛΕΠΕΙ

1 N

ΠΡΟΣΤΑΤΕΥΕΙ

ΕΞΑΡΤΩΜΕΝΟΣ

1

N

ΕΡΓΑΖΕΤΑΙ ΣΕ

ΑΠΑΣΧΟΛΕΙΤΑΙ

∆ΙΕΥΘΥΝΕΙ

N 1

1 1

MN

ΤΜΗΜΑ

ΕΡΓΟ

ΕΛΕΓΧΕΙ

1

N

προϊστάµενος υφιστάµενος

Σχήµα : Απλοποιηµένο ∆ιάγραµµα E-R χωρίς τα γνωρίσµατα που συµβολίζει τη Β∆ µιας εταιρίας

Σελ. 42

Page 43: Βάσεις δεδομένων

3.5 ∆οµικοί Περιορισµοί στο Μοντέλο E-R.

3.5 ∆ΟΜΙΚΟΙ ΠΕΡΙΟΡΙΣΜΟΙ ΣΤΟ ΜΟΝΤΕΛΟ E-R.

Υπάρχουν δοµικοί περιορισµοί (α) στους τύπους συσχετίσεων και (β) στα γνωρίσµατα των τύπων οντοτήτων ή τύπων συσχετίσεων.

3.5.1 Βαθµός τύπου συσχετίσεων (relationship degree) Βαθµός (degree) ενός τύπου συσχέτισης είναι το πλήθος των τύπων οντοτήτων

που συµµετέχουν. Άρα υπάρχουν τύποι συσχετίσεων µεταξύ 2 τύπων οντοτήτων, µεταξύ 3 τύπων οντοτήτων, γενικά µεταξύ Ν τύπων οντοτήτων (N-ary relationship). Εποµένως, ο τύπος συσχέτισης ΕΡΓΑΖΕΤΑΙ είναι βαθµού δύο. Ένας τύπος συσχέτισης βαθµού δύο λέγεται δυαδικός (binary), και ένας βαθµού τρία τριαδικός (ternary). Ένα παράδειγµα τριαδικού τύπου συσχέτισης είναι το ΠΡΟΜΗΘΕΥΕΙ µεταξύ των τύπων οντοτήτων ΠΡΟΜΗΘΕΥΤΗΣ, ΕΡΓΟ και ΕΞΑΡΤΗΜΑ που παρουσιάζεται στην παρακάτω εικόνα

Εικόνα: Ο Τριαδικός τύπος συσχέτισης SUPPLY µεταξύ των τριών τύπων οντοτήτων SUPPLIER, PART, PROJECT

Οι συσχετίσεις µπορεί να είναι οποιουδήποτε βαθµού αλλά αυτές που εµφανίζονται πιο συχνά είναι οι δυαδικές συσχετίσεις.

3.5.2 Περιορισµός Συµµετοχής και Εξαρτήσεις Ύπαρξης. Ο περιορισµός Συµµετοχής ορίζει αν η συµµετοχή µιας οντότητας στον τύπο

συσχέτισης είναι ολική (total) ή µερική (partial). Με άλλα λόγια, αν όλες οι οντότητες του συγκεκριµένου τύπου οντοτήτων συµµετέχουν υποχρεωτικά σ' ένα τύπο συσχετίσεων ή όχι. Για παράδειγµα, όλοι οι υπάλληλοι του τύπου οντοτήτων ΕΡΓΑΖΟΜΕΝΟΣ εργάζονται υποχρεωτικά σ' ένα ΤΜΗΜΑ, άρα έχουν ολική συµµετοχή στον τύπο συσχετίσεων ΕΡΓΑΖΕΤΑΙ. Αντίθετα, δεν είναι όλοι διευθυντές τµηµάτων, οπότε η συµµετοχή του τύπου οντοτήτων ΕΡΓΑΖΟΜΕΝΟΣ στον τύπο συσχετίσεων ∆ΙΕΥΘΥΝΕΙ είναι µερική. Η ολική συµµετοχή µερικές φορές λέγεται εξάρτηση ύπαρξης (existence dependency).

Η ολική συµµετοχή αναπαριστάται ως διπλή γραµµή που ενώνει το συµµετέχοντα τύπο οντοτήτων µε την συσχέτιση, ενώ η µερική συµµετοχή ως απλή γραµµή.

Σελ. 43

Page 44: Βάσεις δεδομένων

ΜΟΝΤΕΛΟ ΟΝΤΟΤΉΤΩΝ-ΣΥΣΧΕΤΊΣΕΩΝ

3.5.3 Λόγος πληθικότητας (cardinality) Ο Λόγος πληθικότητας ενός τύπου συσχετίσεων ορίζει πόσες φορές µια

οντότητα από έναν τύπο οντοτήτων µπορεί να εµπλακεί στο συγκεκριµένο τύπο συσχετίσεων. Έχουµε τις εξής περιπτώσεις:

1:1 : µια οντότητα από τη µια πλευρά συνδέεται το πολύ µε µια οντότητα από την άλλη πλευρά (συσχέτιση ένα-µε-ένα)

1:Ν : µια οντότητα από την πρώτη πλευρά µπορεί να συνδέεται µε περισσότερες από µια οντότητες από τη δεύτερη πλευρά Ν ενώ µια οντότητα από τη δεύτερη πλευρά συνδέεται το πολύ µε µια οντότητα από την πρώτη πλευρά 1 (συσχέτιση ένα-µε-πολλά). Ακριβώς το ανάποδο ισχύει στο λόγο πληθικότητας Ν:1.

Ν: Μ : µια οντότητα από τη µια πλευρά µπορεί να συνδέεται µε περισσότερες από µια οντότητες από την άλλη πλευρά. (συσχέτιση πολλά-µε-πολλά)

Σελ. 44

Page 45: Βάσεις δεδομένων

3.5 ∆οµικοί Περιορισµοί στο Μοντέλο E-R.

Οι λόγοι πληθικότητας για τις δυαδικές σχέσεις παρουσιάζονται στα διαγράµµατα ΟΣ µε χρήση των συµβόλων 1, Μ και Ν στους ρόµβους

Ο δυαδικός τύπος συσχέτισης ΕΡΓΑΖΕΤΑΙ µεταξύ των ΤΜΗΜΑ και ΕΡΓΑΖΟΜΕΝΟΣ έχει λόγο πληθικότητας 1 :Ν (ένα-µε-πολλά), που σηµαίνει ότι κάθε τµήµα µπορεί να σχετίζεται µε πολλούς εργαζόµενους, αλλά ένας εργαζόµενος µπορεί να σχετίζεται µε (να εργάζεται σε) ένα µόνο τµήµα.

Λόγος πληθικότητας Ν:1

Ν 1ΕΡΓΑΖΕΤΑΙ ΤΜΗΜΑ ΕΡΓΑΖΟΜΕΝΟΣ

Παράδειγµα ενός 1:1 δυαδικού τύπου συσχέτισης είναι ο ∆ΙΕΥΘΥΝΕΙ που σχετίζει µια οντότητα τµήµατος µε τον εργαζόµενο που διευθύνει το τµήµα αυτό. Ο αντίστοιχος περιορισµός λόγου πληθικότητας αναπαριστά τον περιορισµό του µικρόκοσµου ότι ένας εργαζόµενος µπορεί να διευθύνει µόνο ένα τµήµα και ένα τµήµα έχει έναν και µόνο διευθυντή.

Λόγος πληθικότητας 1:1

1 1∆ΙΕΥΘΥΝΕΙ ΤΜΗΜΑ ΕΡΓΑΖΟΜΕΝΟΣ

Ο τύπος συσχέτισης ΑΠΑΣΧΟΛΕΙΤΑΙ έχει λόγο πληθικότητας Μ:Ν, επειδή ένας εργαζόµενος µπορεί να εργάζεται σε διαφορετικά έργα και ένα έργο µπορεί να έχει πολλούς εργαζόµενους.

Λόγος πληθικότητας Μ:Ν

Μ ΝΑΠΑΣΧΟΛΕΊΤΑΙ ΕΡΓΟ ΕΡΓΑΖΟΜΕΝΟΣ

3.5.4 ∆ΟΜΙΚΟΙ ΠΕΡΙΟΡΙΣΜΟΙ: Γνωρίσµατα Βασικό χαρακτηριστικό ενός τύπου οντοτήτων ή συσχετίσεων είναι τα

γνωρίσµατα κλειδιά ή απλά κλειδιά (keys): Ένα γνώρισµα (ή σύνολο γνωρισµάτων) που χαρακτηρίζει µοναδικά κάθε οντότητα (αντίστοιχα, συσχέτιση) µέσα στον τύπο οντοτήτων (συσχετίσεων), δεν επιτρέπει δηλαδή δυο διαφορετικές οντότητες (συσχετίσεις) µέσα στον ίδιο τύπο να έχουν ίδια τιµή, ονοµάζεται υπερ-κλειδί (super-key).

Σελ. 45

Page 46: Βάσεις δεδομένων

ΜΟΝΤΕΛΟ ΟΝΤΟΤΉΤΩΝ-ΣΥΣΧΕΤΊΣΕΩΝ

Για παράδειγµα, στον τύπο οντοτήτων ΕΡΓΑΖΟΜΕΝΟΣ το Αρ Ταυτ (Αριθµός ταυτότητας) του εργαζόµενου είναι υπέρ- κλειδί αφού χαρακτηρίζει µοναδικά την κάθε οντότητα µέσα στο σύνολο των υπαλλήλων. Αλλά και το Αρ Ταυτ, Όνοµα είναι υπερ-κλειδί αφού δεν µπορεί να υπάρξουν δύο οντότητες (εργαζόµενοι) µε τις ίδιες τιµές σ' αυτόν τον συνδυασµό γνωρισµάτων, όπως επίσης και τα Αρ Ταυτ, ΑΦΜ, Αρ_Ασφάλισης

Μεταξύ των (πιθανώς πολλών) υπερ-κλειδιών, τα ελάχιστα κλειδιά (αυτά δηλαδή που κανένα υποσύνολο των γνωρισµάτων τους δεν είναι και αυτό υπερ-κλειδί) είναι υποψήφια κλειδιά (candidate keys) ή απλά κλειδιά (keys).

Για παράδειγµα, το Αρ Ταυτ είναι υποψήφιο κλειδί αλλά το Αρ Ταυτ, Όνοµα δεν είναι.

Μεταξύ των υποψηφίων κλειδιών, ορίζουµε ένα να είναι το πρωτεύον κλειδί (primary key) του τύπου οντοτήτων ή συσχετίσεων. Το πρωτεύον κλειδί ορίζεται έτσι ως προσδιοριστής ή αναγνωριστικό (identifier) για τον συγκεκριµένο τύπο οντοτήτων ή συσχετίσεων. Στο παράδειγµα µας, το Αρ Ταυτ είναι µια καλή επιλογή πρωτεύοντος κλειδιού για τον τύπο οντοτήτων ΕΡΓΑΖΟΜΕΝΟΣ.

Κάθε γνώρισµα κλειδί θα φαίνεται υπογραµµισµένο στο ∆ιάγραµµα Ο-Σ

Ορισµοί: ένα γνώρισµα (ή σύνολο γνωρισµάτων) ενός τύπου οντοτήτων/συσχετίσεων για το οποίο κάθε οντότητα/συσχέτιση στο σύνολο πρέπει να έχει µοναδική τιµή ονοµάζεται υπερ-κλειδί (super-key). Ένα ελάχιστο υπερ-κλειδί (σύνολο γνωρισµάτων) που µπορεί να χαρακτηρίσει µοναδικά τις εγγραφές ονοµάζεται υποψήφιο κλειδί (candidate key). Μεταξύ των κλειδιών ορίζουµε ένα ως τον προσδιοριστή του τύπου οντοτήτων και το ονοµάζουµε πρωτεύον κλειδί (primary key)

ΑΠΑΣΧΟΛΕΙΤΑΙ ΕΡΓΑΖΟΜΕΝΟΣ ΕΡΓΟ

ΤοποθεσίαΑρ Ταυτ κωδικόςΌνοµα

γνωρίσµατα κλειδιά

3.6 ΓΝΩΡΙΣΜΑΤΑ ΤΥΠΩΝ ΣΥΣΧΕΤΙΣΕΩΝ

Οι τύποι συσχετίσεων µπορεί επίσης να έχουν γνωρίσµατα παρόµοια µε αυτά των τύπων οντοτήτων. Για παράδειγµα, για να καταγράψουµε τις εβδοµαδιαίες ώρες απασχόλησης ενός εργαζοµένου σ' ένα έργο µπορούµε να περιλάβουµε ένα γνώρισµα Ωρες στον τύπο συσχέτισης ΑΠΑΣΧΟΛΕΙΤΑΙ. Ένα άλλο παράδειγµα είναι να συµπεριλάβουµε την ηµεροµηνία κατά την οποία ένας διευθυντής άρχισε να διευθύνει ένα τµήµα µέσω ενός γνωρίσµατος ΗµερΕναρ για τον τύπο συσχέτισης ∆ΙΕΥΘΥΝΕΙ.

Τα γνωρίσµατα των 1:1 ή 1:Ν τύπων συσχετίσεων µπορούν να µεταφερθούν σε έναν από τους συµµετέχοντες τύπους οντοτήτων. Για παράδειγµα, το γνώρισµα

Σελ. 46

Page 47: Βάσεις δεδομένων

3.7 Μη ισχυροί τύποι οντοτήτων

ΗµερΕναρ για τη συσχέτιση ∆ΙΕΥΘΥΝΕΙ µπορεί να γίνει γνώρισµα είτε του ΕΡΓΑΖΟΜΕΝΟΣ είτε του ΤΜΗΜΑ (εδώ θα γίνει γνώρισµα στο ΤΜΗΜΑ λόγο ολικής συµµετοχής). Αυτό συµβαίνει διότι η ∆ΙΕΥΘΥΝΕΙ είναι µια 1:1 συσχέτιση, οπότε κάθε οντότητα τµήµατος ή εργαζοµένου συµµετέχει το πολύ σε ένα στιγµιότυπο της συσχέτισης.

Για έναν τύπο συσχέτισης 1:Ν, ένα γνώρισµα της συσχέτισης µπορεί να µεταφερθεί µόνο στον τύπο οντοτήτων που συµµετέχει στη συσχέτιση από την πλευρά του Ν. Για παράδειγµα, αν η συσχέτιση ΕΡΓΑΖΕΤΑΙ έχει και αυτή ένα γνώρισµα ΗµερΕναρ που δηλώνει πότε ένας εργαζόµενος άρχισε να εργάζεται σ' ένα τµήµα, αυτό το γνώρισµα µπορεί να µεταφερθεί στον τύπο οντοτήτων ΕΡΓΑΖΟΜΕΝΟΣ. Αυτό συµβαίνει διότι η συσχέτιση είναι 1:Ν, εποµένως κάθε οντότητα εργαζόµενου συµµετέχει το πολύ σε ένα στιγµιότυπο της συσχέτισης ΕΡΓΑΖΕΤΑΙ.

Για τους Μ:Ν τύπους συσχετίσεων, µερικά γνωρίσµατα µπορεί να προσδιορίζονται από συνδυασµό των οντοτήτων που συµµετέχουν σ' ένα στιγµιότυπο της συσχέτισης και όχι από µια οποιαδήποτε από τις οντότητες αυτές. Τέτοια γνωρίσµατα πρέπει να ορίζονται ως γνωρίσµατα συσχέτισης. Ένα παράδειγµα είναι το γνώρισµα Ωρες της Μ:Ν συσχέτισης ΑΠΑΣΧΟΛΕΙΤΑΙ, όπου ο αριθµός των ωρών που ένας εργαζόµενος απασχολείται σ' ένα έργο προσδιορίζεται από τον συνδυασµό εργαζοµένου-έργου και όχι ξεχωριστά από οποιαδήποτε από τις δύο οντότητες.

3.7 ΜΗ ΙΣΧΥΡΟΙ ΤΥΠΟΙ ΟΝΤΟΤΗΤΩΝ

Οι τύποι οντοτήτων που δεν έχουν γνωρίσµατα-κλειδιά από µόνοι τους λέγονται µη ισχυροί ή ασθενής τύποι οντοτήτων (weak entity types).

ΕΡΓΑΖΟΜΕΝΟΣ

ΜΕΛΗ ΟΙΚΟΓΕΝΕΙΑΣ ΠΡΟΣΤΑΤΕΥΕΙ

Όνοµα Αρ Ταυτ Φύλλο

ασθενής τύπος οντότητας

Όνοµα ΗµΓεν

Σε αντίθεση, οι κανονικοί τύποι οντοτήτων που έχουν ένα γνώρισµα κλειδί ονοµάζονται ισχυροί τύποι οντοτήτων. Οι οντότητες (π.χ. τα µέλη οικογένειας κάθε εργαζοµένου) που ανήκουν σε κάποιον µη ισχυρό τύπο οντοτήτων προσδιορίζονται από τη σχέση τους µε συγκεκριµένες οντότητες (π.χ. οι εργαζόµενοι) από έναν άλλο τύπο οντοτήτων, σε συνδυασµό µε τις τιµές κάποιων γνωρισµάτων τους. Ονοµάζουµε αυτόν τον άλλο τύπο οντοτήτων προσδιορίζοντα ή ιδιοκτήτη τύπο οντότητας (owner entity type) και τον τύπο συσχέτισης που συνδέει ένα µη ισχυρό τύπο οντοτήτων µε τον ιδιοκτήτη του προσδιορίζουσα συσχέτιση (identifying relationship).

Ένας µη ισχυρός τύπος οντοτήτων έχει πάντα περιορισµό ολικής συµµετοχής (εξάρτηση ύπαρξης) ως προς την προσδιορίζουσα του συσχέτιση, διότι µια µη ισχυρή οντότητα δεν µπορεί να προσδιοριστεί χωρίς µια οντότητα-ιδιοκτήτη. Για παράδειγµα, µια οντότητα του τύπου Α∆ΕΙΑ_Ο∆ΗΓΗΣΗΣ δεν µπορεί να υπάρξει αν δεν σχετίζεται µε µια οντότητα του τύπου ΑΤΟΜΟ, αν και έχει το δικό της κλειδί (Αρ_Αδειας_Οδηγησης) και εποµένως δεν είναι µη ισχυρή οντότητα.

Σελ. 47

Page 48: Βάσεις δεδομένων

ΜΟΝΤΕΛΟ ΟΝΤΟΤΉΤΩΝ-ΣΥΣΧΕΤΊΣΕΩΝ

3.8 ΕΙ∆ΙΚΑ ΘΕΜΑΤΑ ΣΤΟ ΜΟΝΤΕΛΟ E-R

3.8.1 Η Έννοια της Γενίκευσης Γενίκευση is-A (is-A generalization) είναι η θεώρηση ενός συνόλου τύπων

οντοτήτων ως ένα γενικευµένο (generic) τύπο. Για παράδειγµα, τόσο οι καταθετικοί λογαριασµοί όσο και τα δάνεια αλλά και οι πιστωτικές κάρτες είναι όλα προϊόντα που παρέχει µια τράπεζα. Το ερώτηµα είναι γιατί µας ενδιαφέρει να θεωρήσουµε έναν γενικευµένο τύπο οντοτήτων επιπλέον των αρχικών τύπων (των εξειδικεύσεων του). Η απάντηση είναι η ιδιότητα της κληρονοµικότητας (inheritance) των γνωρισµάτων από ένα γενικευµένο τύπο σε µια εξειδίκευση του. Στο παραπάνω παράδειγµα της τράπεζας, όλα τα γνωρίσµατα που είναι κοινά και στα τρία προϊόντα (π.χ. όνοµα δικαιούχου) τα κρατάµε µόνο στη γενίκευση τους και δεν τα επαναλαµβάνουµε τρεις φορές. Από την άλλη, σαν γνωρίσµατα µιας εξειδίκευσης θεωρούµε τόσο τα δικά της γνωρίσµατα όσο και της γενίκευσης της. Άρα τα γνωρίσµατα µιας γενίκευσης κληρονοµούνται στις εξειδικεύσεις της.

Μια γενίκευση µπορεί να είναι πλήρης (complete) ή µη. Πλήρης είναι µια γενίκευση όταν δεν υπάρχει οντότητα που να ανήκει στη γενίκευση αλλά να µην ανήκει σε κάποια εξειδίκευση. Επίσης, µια γενίκευση µπορεί να είναι χωρίς επικαλύψεις (disjoint) ή µε επικαλύψεις. Χωρίς επικαλύψεις είναι µια γενίκευση όταν δεν υπάρχει οντότητα που να συµµετέχει ταυτόχρονα σε περισσότερες από µία εξειδικεύσεις της ίδιας γενίκευσης.

3.8.2 Η Έννοια της Συσσώρευσης Μια αδυναµία του Μοντέλου E-R είναι ότι δεν υποστηρίζεται ο ορισµός

συσχέτισης µεταξύ συσχετίσεων, ενδεχόµενο αρκετά πιθανό σε σύνθετες Β∆, αφού εξ' ορισµού η συσχέτιση ορίζεται µόνο µεταξύ 2 ή περισσότερων οντοτήτων. Αυτό το πρόβληµα αντιµετωπίζεται µε τη συσσώρευση (aggregation).

Συσσώρευση είναι η αντιµετώπιση ενός τύπου συσχετίσεων (και των τύπων οντοτήτων που εµπλέκονται σε αυτήν) σαν ένα "εικονικό" τύπο οντοτήτων, ο οποίος, κατά συνέπεια, επιτρέπεται να συµµετέχει µε τη σειρά του σε έναν άλλο τύπο συσχετίσεων

Εικόνα Παράδειγµα συσσώρευσης (aggregation). Στο σχεσιακό µοντέλο δηµιουργούµε

έναν πίνακα µε όνοµα MONITORS µε πεδία τα κλειδιά των τριών οντοτήτων

Σελ. 48

Page 49: Βάσεις δεδομένων

3.8 ΕΙ∆ΙΚΑ ΘΕΜΑΤΑ ΣΤΟ ΜΟΝΤΕΛΟ E-R

ΤΥΠΟΣ ΟΝΤΟΤΗΤΩΝ

ΜΗ ΙΣΧΥΡΟΣ ΤΥΠΟΣ ΟΝΤΟΤΗΤΩΝ

ΤΥΠΟΣ ΣΥΣΧΕΤΙΣΕΩΝ

ΤΥΠΟΣ ΠΡΟΣ∆ΙΟΡΙΖΟΥΣΑΣ ΣΥΣΧΕΤΙΣΗΣ

ΓΝΩΡΙΣΜΑ

ΓΝΩΡΙΣΜΑ-ΚΛΕΙ∆Ι

ΠΛΕΙΟΤΙΜΟ ΓΝΩΡΙΣΜΑ

ΣΥΝΘΕΤΟ ΓΝΩΡΙΣΜΑ

ΠΑΡΑΓΟΜΕΝΟ ΓΝΩΡΙΣΜΑ

R Ε2 Ε1

ΟΛΙΚΗ ΣΥΜΜΕΤΟΧΗ ΤΗΣ Ε2 ΣΤΗΝ R

Ν1

R Ε2 Ε1 ΛΟΓΟΣ ΠΛΗΘΙΚΟΤΗΤΑΣ 1:Ν

Εικόνα Σύνοψη του συµβολισµού των διαγραµµάτων Οντοτήτων-Συσχετίσεων

Σελ. 49

Page 50: Βάσεις δεδομένων

ΣΧΕΣΙΑΚΕΣ ΒΆΣΕΙΣ ∆Ε∆ΟΜΈΝΩΝ

4 ΣΧΕΣΙΑΚΕΣ ΒΑΣΕΙΣ ∆Ε∆ΟΜΕΝΩΝ

4.1 ΕΙΣΑΓΩΓΗ

Τα πρώτα συστήµατα Βάσεων δεδοµένων ήταν βασισµένα στο ιεραρχικό ή στο δικτυωτό µοντέλο δεδοµένων. Το σχεσιακό µοντέλο πρωτοπαρουσιάσθηκε από τον Ted Codd της IBM Research το 1970 σε µια κλασική εργασία [Codd 1970] και τα πρώτα συστήµατα που βασίστηκαν σε αυτό ήταν τα INGRES και System/R. Το σχεσιακό µοντέλο είναι τώρα το κυρίαρχο µοντέλο σε όλες σχεδόν τις υλοποιήσεις βάσεων δεδοµένων.

Μία σχεσιακή βάση δεδοµένων αποτελείται από µία συλλογή από κανονικοποιηµένους πίνακες (σχέσεις) που έχουν µοναδικά ονόµατα.

Μία γραµµή (συστοιχία) του κάθε πίνακα αναπαριστά µία συσχέτιση 1:1 µεταξύ ενός συνόλου τιµών. Έτσι ο κάθε πίνακας αναπαριστά µία συλλογή από συσχετίσεις 1:1.

Υπάρχει µία ακριβής αντιστοιχία µεταξύ της έννοιας του πίνακα και της µαθηµατικής έννοιας της σχέσης (relation). Μία ολοκληρωµένη θεωρία έχει αναπτυχθεί για τις σχεσιακές βάσεις δεδοµένων.

Το σχεσιακό σύστηµα διαχείρισης βάσεων δεδοµένων (relational database management system, RDBMS), είναι ένα σύστηµα που υλοποιείται µε το σχεσιακό µοντέλο και στο οποίο:

1. Τα δεδοµένα γίνονται αντιληπτά στο χρήστη ως σχέσεις (πίνακες). Οι πίνακες βέβαια είναι η λογική δοµή σ' ένα σχεσιακό σύστηµα. Στο φυσικό επίπεδο, το σύστηµα είναι ελεύθερο να χρησιµοποιεί οποιεσδήποτε ή και όλες τις συνηθισµένες αποθηκευτικές δοµές — σειριακά αρχεία, ευρετηρίαση, κατακερµατισµό, αλυσίδες δεικτών, συµπίεση, κ.λπ. — µε µόνη προϋπόθεση, να µπορεί να απεικονίζει αυτές τις δοµές σε πίνακες, στο λογικό επίπεδο.

2. Οι τελεστές πράξεων π.χ. για ανάκληση δεδοµένων — είναι τελεστές που παράγουν νέους πίνακες (σχέσεις) από παλιούς. Ένα βασικό σηµείο είναι ότι οι πράξεις (σχεσιακή άλγεβρα- θεωρία συνόλων) γίνονται όλες κατά σύνολο και όχι κατά γραµµή. Αντίθετα, στα µη σχεσιακά συστήµατα, οι πράξεις γίνονται κατά κανόνα σε επίπεδο γραµµής ή εγγραφής.

3. Τέλος, όλες οι τιµές δεδοµένων είναι ατοµικές (ή βαθµωτές). ∆ηλαδή, σε κάθε τοµή γραµµής και στήλης υπάρχει µία τιµή δεδοµένων, και ποτέ οµάδα τιµών.

Σχεσιακή βάση δεδοµένων είναι µια βάση δεδοµένων που γίνεται αντιληπτή από το χρήστη ως συλλογή κανονικοποιηµένων πινάκων (σχέσεων). Οι ιδέες του σχεσιακού µοντέλου αφορούν το εξωτερικό και το εννοιολογικό επίπεδο του συστήµατος και όχι το εσωτερικό επίπεδο.

Οι µαθηµατικοί ορίζουν τη σχέση σαν υποσύνολο του καρτεσιανού γινοµένου µιας λίστας από πεδία ορισµού.

Σελ. 50

Page 51: Βάσεις δεδομένων

4.1 Εισαγωγή

Το σχεσιακό σχήµα της βάσης δεδοµένων είναι η περιγραφή της βάσης.

Είδαµε ότι ξεχωρίζουµε το σχήµα της βάσης δεδοµένων από τα ίδια τα δεδοµένα της (στιγµιότυπα).

1. Ένα Σχεσιακό Σχήµα R είναι το όνοµα και τα γνωρίσµατα σε µια Σχέση, µαζί µε τα αντίστοιχα πεδία τιµών για τα γνωρίσµατα. Όνοµα σχέσης (γνώρισµα1, γνώρισµα2,…)

2. Ένα Σχήµα Βάσης ∆εδοµένων είναι ένα σύνολο Σχέσεων

ΣΕΜΙΝΑΡΙΟ (ΚωδΣεµιναρίου, Τίτλος, ∆ιάρκεια)

ΠΡΟΑΠΑΙΤΟΥΜΕΝΑ ΣΕΜΙΝΑΡΙΑ (ΚωδΣεµιναρίου, ΚωδΠροαπαιτουµενου)

ΠΡΟΣΦΕΡΟΜΕΝΑ ΜΑΘΗΜΑΤΑ (ΚωδΠροσφΜαθ, ΚωδΣεµιναριου, ΗµεροµΕναρξης)

∆ΗΛΩΣΕΙΣ ΣΥΜΜΕΤΟΧΗΣ (ΚωδΠροσφΜαθ, ΚωδΣεµιναρίου, ΚωδΥπαλλήλου, Βαθµός)

∆Ι∆ΑΣΚΟΝΤΕΣ (ΚωδΠροσφΜαθ, ΚωδΣεµιναρίου, ΚωδΥπαλλήλου, Ωρες∆ιδασκαλίας)

ΥΠΑΛΛΗΛΟΙ (ΚωδΥπαλλήλου, Όνοµα, Επώνυµο, Εργασία)

Εικόνα: Το σχεσιακό σχήµα µίας βάσης δεδοµένων εκπαίδευσης που περιέχει πληροφορίες για ένα εσωτερικό εκπαιδευτικό πρόγραµµα µιας εταιρείας. Σηµειώστε ότι µερικά γνωρίσµατα στο σχήµα εµφανίζονται πολλές φορές. Αυτό δεν είναι λάθος.

Προσφέρει τον τρόπο συσχέτισης των πινάκων µεταξύ τους.

Ένας εναλλακτικός τρόπος να ερµηνευθεί ένα σχήµα σχέσης είναι ως κατηγόρηµα (predicate). Στην περίπτωση αυτή, οι τιµές σε κάθε συστοιχία ερµηνεύονται ως τιµές που ικανοποιούν το κατηγόρηµα.

Κάθε σχεσιακό Σ∆Β∆ έχει µια γλώσσα ορισµού των δεδοµένων (Data Definition Language -DDL) για τον ορισµό του σχήµατος της σχεσιακής βάσης δεδοµένων (συνήθως η SQL).

Υλοποίηση – σε σχεσιακό Σ∆Β∆

1 Ορισµός Σχέσεων (σχήµα) create table R(A1 D1, A2, D2, …)

2 Εισαγωγή Στοιχείων (δηµιουργία του αρχικού στιγµιότυπου)

insert/delete/update

3 ∆ιατύπωση Ερωτήσεων select - from - where

Τα περισσότερα σηµερινά σχεσιακά προϊόντα υποστηρίζουν κάποια διάλεκτο της καθιερωµένης σχεσιακής γλώσσας δεδοµένων, της SQL. Η SQL χρησιµοποιείται για τη διατύπωση σχεσιακών πράξεων. Η γλώσσα χειρισµού δεδοµένων της SQL (DML) µπορεί να εφαρµόζεται στο εξωτερικό και στο εννοιολογικό επίπεδο. Αντίστοιχα, η γλώσσα ορισµού δεδοµένων (DDL) µπορεί να χρησιµοποιείται για να ορίζονται αντικείµενα στο εξωτερικό επίπεδο (απόψεις), στο εννοιολογικό επίπεδο (βασικοί πίνακες), και ακόµα στο εσωτερικό επίπεδο (π.χ. ευρετήρια). Ακόµα, η SQL παρέχει επίσης ορισµένες υπηρεσίες "ελέγχου δεδοµένων". Ένα παράδειγµα τέτοιας υπηρεσίας είναι η εντολή GRANT, που επιτρέπει σ' ένα χρήστη να παραχωρεί ορισµένα προνόµια πρόσβασης σ' έναν άλλο.

Σελ. 51

Page 52: Βάσεις δεδομένων

ΣΧΕΣΙΑΚΟ ΜΟΝΤΈΛΟ

5 ΣΧΕΣΙΑΚΟ ΜΟΝΤΕΛΟ

5.1 ΤΟ ΣΧΕΣΙΑΚΟ ΜΟΝΤΕΛΟ ΜΕ ΜΙΑ ΜΑΤΙΑ

Το σχεσιακό µοντέλο είναι ένα παραστατικό µοντέλο δεδοµένων που χρησιµοποιείται για την υλοποίηση των Σχεσιακών Βάσεων ∆εδοµένων. Το σχεσιακό µοντέλο πρωτοπαρουσιάσθηκε από τον Ted Codd της IBM Research το 1970 σε µια κλασική εργασία. Το µοντέλο χρησιµοποιεί την έννοια της µαθηµατικής σχέσης -που µοιάζει κατά κάποιον τρόπο µε έναν πίνακα τιµών- σαν δοµικό στοιχείο και η θεωρητική του βάση είναι η θεωρία συνόλων και ο κατηγορηµατικός λογισµός πρώτης τάξης.

Κατά το σχεσιακό µοντέλο οι λογικές εγγραφές οµαδοποιούνται σε σχέσεις (κανονικοποιηµένοι πίνακες) οι οποίες αποτελούνται από γνωρίσµατα (πεδία). Οι συνδέσεις µεταξύ των πινάκων επιτυγχάνονται µόνο µέσω των τιµών των κοινών πεδίων σύνδεσής τους (πρωτεύον κλειδί ξένο κλειδί).

Το σχεσιακό µοντέλο δεδοµένων έχει τρεις βασικές συνιστώσες: (1) δοµές, (2) δοµικούς περιορισµούς και (3) πράξεις.

1. ∆οµές (structures): είναι οι σχέσεις (πίνακες) που αναπαριστούν τα αντικείµενα του µικρόκοσµου, π.χ. το σύνολο των υπαλλήλων ή των τµηµάτων

2. Περιορισµοί (constraints) πάνω στις δοµές: Π.χ. «κανένας υπάλληλος δεν παίρνει µισθό µεγαλύτερο του προϊστάµενου του» κοκ. Οι δοµικοί περιορισµοί διακρίνονται σε έµφυτους (inherent) και ρητούς (explicit)

3. Πράξεις (operations) πάνω στις δοµές: αν π.χ. αναφερόµαστε σε σύνολα (σχέσεις), η τοµή, η ένωση, η διαφορά δύο συνόλων είναι πράξεις. Ένα χαρακτηριστικό είναι η κλειστότητα ή όχι µιας πράξης: για παράδειγµα, οι ανωτέρω πράξεις πάνω στα σύνολα είναι κλειστές αφού το αποτέλεσµα της τοµής / ένωσης / διαφοράς µεταξύ δύο συνόλων είναι και αυτό σύνολο.

∆οµές- Μία σχέση είναι ένα σύνολο από γνωρίσµατα µε τιµές για κάθε γνώρισµα τέτοιες ώστε να ισχύουν οι παρακάτω ιδιότητες σχέσης:

1. Κάθε όνοµα γνωρίσµατος (όνοµα στήλης) είναι µοναδικό.

2. Όλες οι τιµές κάθε γνωρίσµατος είναι ίδιου τύπου (ή πεδίου ορισµού).

3. Κάθε τιµή γνωρίσµατος είναι ατοµική (µία τιµή και όχι οµάδα τιµών).

4. Τα γνωρίσµατα δεν έχουν διάταξη από τα αριστερά προς τα δεξιά.

5. Οι συστοιχίες (γραµµές) δεν έχουν διάταξη από επάνω προς τα κάτω.

6. ∆εν υπάρχουν δύο ίδιες συστοιχίες (γραµµές) σε µία σχέση.

Ένας πίνακας που αποτελείται από επικεφαλίδες στηλών και τιµές δεδοµένων σε κάθε στήλη αντιστοιχεί σε σχέση µόνο όταν πληρεί τις παραπάνω προϋποθέσεις. Τότε ονοµάζεται κανονικοποιηµένος πίνακας πρώτου βαθµού.

Σελ. 52

Page 53: Βάσεις δεδομένων

5.1 Το σχεσιακό µοντέλο µε µια µάτια

• Πεδίο ορισµού (Domain): Το σύνολο των επιτρεπτών τιµών ενός γνωρίσµατος. Συµπεριλαµβάνει επίσης τον τύπο δεδοµένων και το µέγεθος/µήκος τους.

• Κλειδί σε µία σχέση είναι ένα σύνολο από γνωρίσµατα που έχουν µοναδικές τιµές για κάθε συστοιχία. Μπορεί να υπάρχουν πολλά υποψήφια κλειδιά σε µία σχέση.

• Πρωτεύον Κλειδί είναι ένα κλειδί που προσδιορίζει µοναδικά κάθε συστοιχία της σχέσης.

• Ξένο Κλειδί σε µία σχέση R1 είναι ένα σύνολο από γνωρίσµατα που χρησιµοποιείται σαν πρωτεύον κλειδί σε µία άλλη σχέση R2.

• Έµφυτοι Περιορισµοί Σχεσιακής ακεραιότητας:

1. Περιορισµός κλειδιού: Κάθε σχέση πρέπει να έχει ένα πρωτεύον κλειδί (για να εξασφαλίζεται η µοναδικότητα των συστοιχιών)

2. Ακεραιότητα οντότητας: Ένα πρωτεύον κλειδί δεν µπορεί να περιέχει τιµή Null (κενό ή άγνωστο).

3. Ακεραιότητα αναφορών: ∆εν είναι δυνατόν να υπάρχει µία τιµή ξένου κλειδιού σε µία σχέση R1 η οποία δεν αντιστοιχεί σε καµία τιµή του πρωτεύοντος κλειδιού της άλλης σχέσης R2. Συνήθως µία συσχέτιση A δηµιουργείται µεταξύ των δύο σχέσεων για να διατηρεί την ακεραιότητα αυτών των αντιστοιχιών.

Εργαζόµενοι ΤµήµαταΚωδικός Επώνυµο Όνοµα Τµήµα Μισθός Τµήµα Περιγραφή Τοποθεσία

Πρωτεύον κλειδί ξένο κλειδί Πρωτεύον κλειδί

13 Γεωργίου ∆ήµητρα 1 1000 15 Ιωάννου Ελισάβετ 2 1200 17 Ψυχάρης Γιώργος 4 2300 18 Μάλλιος Φίλιππος 2 2200

1 Μάρκετινγκ Αθήνα 2 Πωλήσεις Αθήνα 3 Προµήθειες Θεσ/νίκη 4 ∆ιοίκηση Θεσ/νίκη

Οι περιορισµοί ακεραιότητας ορίζονται στο σχήµα µιας βάσης δεδοµένων και αναµένεται να ισχύουν σε κάθε στιγµιότυπο βάσης δεδοµένων αυτού του σχήµατος.

• Ρητοί περιορισµοί

Είναι οι περιορισµοί που δηλώνει ο σχεδιαστής της Β∆. Έχουµε δύο βασικά είδη ρητών περιορισµών:

1. Περιορισµοί πεδίου ορισµού: είναι οι κανόνες που καθορίζουν ότι η τιµή κάθε γνωρίσµατος Α πρέπει να είναι µια ατοµική τιµή από το πεδίο ορισµού dom(A) αυτού του γνωρίσµατος (π.χ. "small integers" ή "integers between 1

Σελ. 53

Page 54: Βάσεις δεδομένων

ΣΧΕΣΙΑΚΟ ΜΟΝΤΈΛΟ

and 10" κλπ). Αυτοί είναι κυρίως περιορισµοί πάνω στους βασικούς τύπους δεδοµένων (data types), char, number, date κλπ.

2. Περιορισµοί οριζόµενοι από τον χρήστη (user-defined) ή Σηµασιολογικής Ακεραιότητας: Κάθε περιορισµός, πέραν αυτών που έχουν ήδη αναφερθεί. Για την υποστήριξη επιχειρηµατικών κανόνων, απαιτούνται τέτοιοι περιορισµοί µε σηµαντική πολυπλοκότητα. Π.χ. ο µισθός ενός εργαζόµενου δεν µπορεί να υπερβαίνει τον µισθό του προϊσταµένου του. Μια σειρά µηχανισµών χρησιµοποιούνται για την υποστήριξη τέτοιων κανόνων σε ένα σχεσιακό σύστηµα, όπως σκανδάλες (triggers) ή βεβαιώσεις (assertions) κλπ.

• Πράξεις

Το κύριο στοιχείο αυτού του µέρους του σχεσιακού µοντέλου είναι η σχεσιακή άλγεβρα (relational algebra), που ουσιαστικά αποτελείται από µια συλλογή τελεστών, όπως ο τελεστής σύζευξης JOIN, οι οποίοι δέχονται τελεστέους που είναι σχέσεις και επιστρέφουν αποτελέσµατα που είναι επίσης σχέσεις:

• Οι παραδοσιακές πράξεις των συνόλων, ένωση, τοµή, διαφορά, και καρτεσιανό γινόµενο (όλες κάπως τροποποιηµένες ώστε να λαµβάνεται υπόψη το γεγονός ότι οι τελεστέοι τους είναι σχέσεις και όχι τυχαία σύνολα).

• Οι ειδικές σχεσιακές πράξεις περιορισµός (restrict), προβολή (project), σύζευξη (join), και διαίρεση (divide).

Πέρα από τις βασικές πράξεις περιλαµβάνονται και δυναµικά χαρακτηριστικά επιπλέον πράξεων. Ένα παράδειγµα είναι η ορισµένη από το χρήστη πράξη είναι η "ΥΠΟΛΟΓΙΣΕ_ΤΟ_ΜΕΣΟ_ΟΡΟ". Από την άλλη µεριά, γενικές πράξεις για εισαγωγή, διαγραφή, τροποποίηση ή ανάκτηση ενός αντικειµένου συχνά περιλαµβάνονται στις βασικές πράξεις ενός µοντέλου δεδοµένων.

Λογαριασµός

Υποκατάστηµα

Πελάτης

Καταθέτης

∆άνειο

Όνοµα-Υποκαταστήµατος Αριθµός-Λογαριασµού ΥπόλοιποΌνοµα-Υποκαταστήµατος Αριθµός-Λογαριασµού Υπόλοιπο

Όνοµα-Πελάτη Αριθµός-ΛογαριασµούΌνοµα-Πελάτη Αριθµός-Λογαριασµού

Όνοµα-Πελάτη Οδός ΠόληΌνοµα-Πελάτη Οδός Πόλη

Όνοµα-Υποκαταστήµατος Πόλη Ενεργητικό

Όνοµα-Πελάτη Αριθµός-∆ανείουΌνοµα-Πελάτη Αριθµός-∆ανείου

Όνοµα-Υποκαταστήµατος Αριθµός-∆ανείου Ποσό

∆ανειζόµενος

Εικόνα. Ένα παράδειγµα µοντελοποίησης τραπεζικού συστήµατος µε το σχεσιακό µοντέλο

Σελ. 54

Page 55: Βάσεις δεδομένων

5.2 Ορολογία του σχεσιακού µοντέλου

5.2 ΟΡΟΛΟΓΙΑ ΤΟΥ ΣΧΕΣΙΑΚΟΥ ΜΟΝΤΕΛΟΥ

Το σχεσιακό µοντέλο (για τον λογικό σχεδιασµό) χωρίζεται σε τρία µέρη που αφορούν τις δοµές (structure) των δεδοµένων (οι πίνακες), την ακεραιότητα (integrity) των δεδοµένων (δοµικοί περιορισµοί), και το χειρισµό των δεδοµένων (Πράξεις πάνω στις δοµές). Και τα τρία µέρη έχουν δική τους ειδική ορολογία. Οι σηµαντικότεροι από τους όρους που χρησιµοποιούνται σε σχέση µε τα "αντικείµενα του σχεσιακού µοντέλου παρουσιάζονται παρακάτω. Οι όροι αυτοί είναι φυσικά η ίδια η σχέση, η συστοιχία, η πληθικότητα, το γνώρισµα, ο βαθµός, το πεδίο ορισµού, και το πρωτεύον κλειδί. Από αυτούς, τουλάχιστον οι όροι σχέση και πρωτεύον κλειδί θα πρέπει να σας είναι ήδη σχετικά οικείοι, θα εξηγήσουµε όλους αυτούς τους όρους πολύ άτυπα παρακάτω:

• Μια σχέση (relation) αντιστοιχεί σε έναν κανονικοποιηµένο πίνακα.

• Μια συστοιχία ή πλειάδα (tuple) αντιστοιχεί σε µία γραµµή ενός τέτοιου πίνακα, και ένα γνώρισµα (attribute) αντιστοιχεί σε µία στήλη. Το πλήθος των συστοιχιών ονοµάζεται πληθικότητα (cardinality) και το πλήθος των γνωρισµάτων ονοµάζεται βαθµός (degree).

• Το πρωτεύον κλειδί (primary key) είναι ένα µοναδικό αναγνωριστικό για τον πίνακα — δηλαδή, µια στήλη ή συνδυασµός στηλών που έχει την ιδιότητα ότι οποιαδήποτε δεδοµένη στιγµή δεν υπάρχουν δύο γραµµές του πίνακα που να περιέχουν την ίδια τιµή σε αυτή τη στήλη ή συνδυασµό στηλών.

• Τέλος, ένα πεδίο ορισµού (domain) είναι µια δεξαµενή τιµών από την οποία τα συγκεκριµένα γνωρίσµατα των συγκεκριµένων σχέσεων αντλούν τις συγκεκριµένες τιµές τους.

ΣέρρεςΕρµού 24Βλάχου

ΒόλοςΡοζού 7Αρµένης

ΛάρισαΓαλλίας 47Ευσταθίου

ΑθήναΌλγας 25Κυριάκου

πόληδιεύθυνσηόνοµα-πελάτη

ΣέρρεςΕρµού 24Βλάχου

ΒόλοςΡοζού 7Αρµένης

ΛάρισαΓαλλίας 47Ευσταθίου

ΑθήναΌλγας 25Κυριάκου

πόληδιεύθυνσηόνοµα-πελάτη

ΓνωρίσµαταΓνωρίσµατα

Συστοιχίες ή Συστοιχίες ή πλειάδεςπλειάδες

ΠληθικότηταΠληθικότητα

ΒαθµόςΒαθµός

ΣχέσηΣχέση

Πρωτεύον κλειδίΠρωτεύον κλειδί

Εικόνα. Μία σχέση (πίνακας) µε τους διάφορους ορισµούς

Σελ. 55

Page 56: Βάσεις δεδομένων

ΣΧΕΣΙΑΚΟ ΜΟΝΤΈΛΟ

ΤΥΠΙΚΟΣ ΣΧΕΣΙΑΚΟΣ ΟΡΟΣ ΆΤΥΠΟΙ ΙΣΟ∆ΥΝΑΜΟΙ ΟΡΟΙ σχέση πίνακας συστοιχία ή πλειάδα γραµµή ή εγγραφή πληθικότητα αριθµός γραµµών γνώρισµα στήλη ή πεδίο βαθµός αριθµός στηλών πρωτεύον κλειδί µοναδικό αναγνωριστικό πεδίο ορισµού δεξαµενή επιτρεπτών τιµών

Βέβαια οι "ισοδυναµίες" αυτές είναι όλες προσεγγιστικές, επειδή οι τυπικοί σχεσιακοί όροι στα αριστερά έχουν ακριβείς ορισµούς ενώ οι άτυποι "ισοδύναµοι" όροι στα δεξιά έχουν µόνο εµπειρικούς ορισµούς.

5.3 ΦΟΡΜΑΛΙΣΜΟΣ ΤΟΥ ΣΧΕΣΙΑΚΟΥ ΜΟΝΤΕΛΟΥ

Ακολουθεί ο απαραίτητος φορµαλισµός του Σχεσιακού Μοντέλου:

Ένα Σχεσιακό Σχήµα R είναι το όνοµα και τα γνωρίσµατα σε µια Σχέση, µαζί µε τα αντίστοιχα πεδία τιµών για τα γνωρίσµατα. Όταν είναι προφανές, τα πεδία τιµών παραλείπονται. Ένα Σχεσιακό Σχήµα συµβολίζεται µε R(A1 ,A2 , ... An).

Ένα Σχήµα Βάσης ∆εδοµένων S είναι ένα σύνολο Σχέσεων R1, R2, …,Rm.. Ένα Σχήµα Βάσης ∆εδοµένων συµβολίζεται µε S =R1, R2, …,Rm.

Μια συστοιχία ή πλειάδα (tuple) t µιας Σχέσης R(A1 ,A2 , ... An). είναι µια (διατεταγµένη) λίστα τιµών t = <v1 , v2 , ... vn >,όπου κάθε τιµή v, είναι ένα στοιχείο του πεδίου τιµών D(Ai).

Ένα στιγµιότυπο σχέσης (relation instance) ή πιο απλά µια σχέση (relation) r(R) σε δεδοµένη στιγµή είναι ένα σύνολο πλειάδων r(R) = t1 ,t2 , ... tk .

Η πληθικότητα (cardinality) της R. είναι ο αριθµός των πλειάδων στην r(R) και συµβολίζεται µε CARDR.

Οι πράξεις στο Σχεσιακό Μοντέλο είναι δύο ειδών: (α) ενηµερώσεις και (β) ανακτήσεις. Στις ενηµερώσεις, διακρίνουµε τρεις πράξεις:

εισαγωγή συστοιχίας (insert), διαγραφή συστοιχίας (delete) και τροποποίηση συστοιχίας (modify). Από την άλλη πλευρά, οι ανακτήσεις αποτελούν αναζητήσεις µέσα στη Β∆ µε κατάλληλες επερωτήσεις (queries) που διατυπώνει ο χρήστης.

Σηµαντική παρατήρηση αποτελεί το γεγονός ότι το σύνολο των πράξεων στο Σχεσιακό Μοντέλο είναι κλειστό, δηλαδή οι πράξεις ορίζονται πάνω σε Σχέσεις και έχουν αποτέλεσµα νέες Σχέσεις.

Σελ. 56

Page 57: Βάσεις δεδομένων

5.4 Πεδία ορισµού

Μεταξύ Μοντέλου Οντοτήτων-Συσχετίσεων (E-R) και Σχεσιακού Μοντέλου υπάρχουν οι εξής σαφείς αντιστοιχίες:

Μοντέλο E-R…………………Σχεσιακό Μοντέλο

Τύπος Οντοτήτων…………………Σχέση

Οντότητα…………………………...Συστοιχία ή Πλειάδα

Γνώρισµα…………………………..Γνώρισµα

Τύπος Συσχετίσεων……………….ή Σχέση ή ξένο κλειδί

5.4 ΠΕ∆ΙΑ ΟΡΙΣΜΟΥ

Οι βαθµωτές τιµές είναι "η µικρότερη εννοιολογική µονάδα δεδοµένων", µε την έννοια ότι είναι ατοµικές τιµές. ∆εν έχουν εσωτερική δοµή (δηλαδή δεν είναι άλλες σχέσεις).

Πεδίο ορισµού (domain) D είναι ένα σύνολο από ατοµικές τιµές, που είναι όλες του ίδιου τύπου. Τα πεδία ορισµού είναι δεξαµενές τιµών από τις οποίες αντλούνται οι πραγµατικές τιµές των γνωρισµάτων. Το κάθε γνώρισµα πρέπει να ορίζεται "µε βάση" ένα και µόνο ένα πεδίο ορισµού, που σηµαίνει ότι οι τιµές αυτού του γνωρίσµατος πρέπει να προέρχονται από αυτό το πεδίο ορισµού.

Μια κοινή πρακτική για τον προσδιορισµό ενός πεδίου ορισµού είναι να προσδιοριστεί ένας τύπος δεδοµένων από τον οποίο επιλέγονται οι τιµές δεδοµένων που σχηµατίζουν το πεδίο

Ένας τύπος δεδοµένων (data type) ή µορφοποίηση (format) προσδιορίζεται επίσης για κάθε πεδίο ορισµού. Για παράδειγµα, ο τύπος δεδοµένων για το πεδίο ορισµού Αριθµοί_τηλεφώνων µπορεί να οριστεί ως µια συµβολοσειρά της µορφής (ddd)ddd-dddd, όπου κάθε d είναι ένα αριθµητικό (δεκαδικό) ψηφίο και τα τρία πρώτα ψηφία σχηµατίζουν έναν έγκυρο κωδικό τηλεφώνου περιοχής. Ο τύπος δεδοµένων για το Ηλικίες_εργαζοµένων είναι ένας ακέραιος µεταξύ 15 και 80. Για τα ονόµατα Ακαδηµαϊκών_τµηµάτων, ο τύπος δεδοµένων είναι το σύνολο όλων των συµβολοσειρών που παριστάνουν έγκυρα ονόµατα.

5.5 ΣΧΕΣΕΙΣ ΚΑΙ ΤΙΜΕΣ ΣΧΕΣΕΩΝ

Ας δούµε λοιπόν τον ορισµό του όρου σχέση (πίνακας):

• Μια σχέση R που ορίζεται πάνω σε µια συλλογή πεδίων ορισµού D1 ,D2 , ... Dn αποτελείται από δύο µέρη: την επικεφαλίδα και τον κορµό. (Στην αναπαράσταση µιας σχέσης µε στήλες, η επικεφαλίδα είναι η γραµµή µε τις επικεφαλίδες των στηλών και ο κορµός είναι το σύνολο των γραµµών δεδοµένων.) Ειδικότερα:

1. Η επικεφαλίδα αποτελείται από ένα σταθερό σύνολο γνωρισµάτων ή, για την ακρίβεια, ζευγών < όνοµα-γνωρίσµατος:όνοµα-πεδίου-ορισµού >

<A1 : D1 > , <A2 : D2 >, ... <An : Dn >

έτσι ώστε το κάθε γνώρισµα Ai να αντιστοιχεί ακριβώς στο υποκείµενο πεδίο ορισµού Di.

Σελ. 57

Page 58: Βάσεις δεδομένων

ΣΧΕΣΙΑΚΟ ΜΟΝΤΈΛΟ

2. Ο κορµός αποτελείται από ένα σύνολο συστοιχιών (tuples).

Είναι αναµφίβολα µεγάλο πλεονέκτηµα του σχεσιακού µοντέλου ότι το βασικό του αφηρηµένο αντικείµενο (δηλαδή η σχέση) έχει µια τόσο απλή αναπαράσταση στο χαρτί (πίνακας). Αυτή η απλή αναπαράσταση είναι που κάνει τα σχεσιακά συστήµατα εύχρηστα και ευνόητα και διευκολύνει τη λογική σκέψη σχετικά µε τον τρόπο που συµπεριφέρονται αυτά.

5.6 Ι∆ΙΟΤΗΤΕΣ ΤΩΝ ΣΧΕΣΕΩΝ

Οι σχέσεις έχουν ορισµένες ιδιότητες, που είναι όλες άµεσες συνέπειες του ορισµού της σχέσης, και είναι όλες πολύ σηµαντικές:

• ∆εν υπάρχουν επαναλαµβανόµενες συστοιχίες.

• Οι συστοιχίες δεν είναι διατεταγµένες από επάνω προς τα κάτω.

• Τα γνωρίσµατα δεν είναι διατεταγµένα από τα αριστερά προς τα δεξιά.

• Όλες οι τιµές των γνωρισµάτων είναι ατοµικές.

1. ∆εν υπάρχουν επαναλαµβανόµενες συστοιχίες

Αυτή η ιδιότητα προκύπτει από το γεγονός ότι ο κορµός της σχέσης είναι ένα µαθηµατικό σύνολο (από συστοιχίες), και τα σύνολα στα µαθηµατικά εξ ορισµού δεν περιέχουν επαναλαµβανόµενα στοιχεία.

Μια σηµαντική συνέπεια του γεγονότος ότι δεν υπάρχουν επαναλαµβανόµενες συστοιχίες είναι ότι υπάρχει πάντα ένα πρωτεύον κλειδί.

2. Οι συστοιχίες δεν έχουν διάταξη (από επάνω προς τα κάτω)

Αυτή η ιδιότητα προκύπτει επίσης από το γεγονός ότι ο κορµός της σχέσης είναι ένα µαθηµατικό σύνολο, και τα σύνολα στα µαθηµατικά δεν έχουν διάταξη. Για παράδειγµα, οι συστοιχίες µιας σχέσης θα µπορούσαν άνετα να εµφανίζονται µε την αντίστροφη σειρά — πάλι θα ήταν η ίδια σχέση. Έτσι, δεν υπάρχει "πέµπτη συστοιχία" ή "97η συστοιχία" ή "πρώτη συστοιχία" µιας σχέσης, ούτε "επόµενη συστοιχία" µε άλλα λόγια, δεν υπάρχει η έννοια της προσπέλασης µε βάση τη θέση.

3. Τα γνωρίσµατα δεν έχουν διάταξη (από τα αριστερά προς τα δεξιά)

Αυτή η ιδιότητα προκύπτει από το γεγονός ότι η επικεφαλίδα µιας σχέσης ορίζεται επίσης ως ένα σύνολο (γνωρισµάτων). Για παράδειγµα, τα γνωρίσµατα µιας σχέσης θα µπορούσαν να εµφανίζονται µε άλλη σειρά, π.χ. ΚωδΠελάτη, Όνοµα, Επίθετο, Τηλ. — θα ήταν πάλι η ίδια σχέση, τουλάχιστον όσον αφορά το σχεσιακό µοντέλο. Έτσι, δεν υπάρχει "πρώτο γνώρισµα" ή "δεύτερο γνώρισµα" (κ.λπ.), ούτε "επόµενο γνώρισµα" µε άλλα λόγια, γίνεται πάντα αναφορά στα γνωρίσµατα µε το όνοµα τους και ποτέ µε τη θέση τους.

4. Όλες οι τιµές των γνωρισµάτων είναι ατοµικές

Αυτή η τελευταία ιδιότητα είναι, βέβαια, συνέπεια του ότι όλα τα υποκείµενα πεδία ορισµού περιέχουν µόνο ατοµικές τιµές (δεν είναι άλλες σχέσεις). Μπορούµε να διατυπώσουµε την ιδιότητα διαφορετικά (µε όχι τυπικά αυστηρό τρόπο): σε κάθε θέση

Σελ. 58

Page 59: Βάσεις δεδομένων

5.7 Είδη σχέσεων

γραµµής και στήλης στον πίνακα, υπάρχει πάντα ακριβώς µία τιµή και ποτέ µια οµάδα πολλών τιµών. Ή ισοδύναµα: οι σχέσεις δεν περιέχουν επαναληπτικές οµάδες. Μια σχέση που ικανοποιεί αυτή τη συνθήκη λέµε ότι είναι κανονικοποιηµένη (normalized) ή, ισοδύναµα, ότι είναι στην πρώτη κανονική µορφή.

Από τα παραπάνω υπονοείται ότι όλες οι σχέσεις είναι κανονικοποιηµένες όσον αφορά το σχεσιακό µοντέλο, και πραγµατικά είναι. Μάλιστα, ο απλός όρος "σχέση" θεωρείται πάντα ότι σηµαίνει "κανονικοποιηµένη σχέση" στα πλαίσια του σχεσιακού µοντέλου.

5.7 ΕΙ∆Η ΣΧΕΣΕΩΝ

Στην ενότητα αυτή, θα ξεχωρίσουµε µερικά από τα διαφορετικά είδη σχέσεων που µπορεί να υπάρχουν σε ένα σχεσιακό σύστηµα:

1. Μια επώνυµη σχέση είναι µια µεταβλητή σχέσης (η επικεφαλίδα της είναι σταθερή, αλλά ο κορµός της αλλάζει τιµή µε το χρόνο) που έχει οριστεί στο σύστηµα διαχείρισης βάσεων δεδοµένων (DBMS). Παραδείγµατα σύνταξης µε τις εντολή CREATE TABLE <όνοµα> ή CREATE VIEW <όνοµα> ή CREATE SNAPSHOT <όνοµα>. Παραδείγµατα επωνύµων σχέσεων είναι οι βασικές σχέσεις, οι απόψεις, και τα στιγµιότυπα.

2. Μια ανώνυµη σχέση είναι το αποτέλεσµα της εκτίµησης κάποιας σχεσιακής παράστασης' κατά κανόνα έχει πολύ πιο εφήµερη ύπαρξη από µια επώνυµη σχέση και ο κορµός της δεν αλλάζει όσο υπάρχει. Παραδείγµατα ανωνύµων σχέσεων είναι τα ενδιάµεσα και τα τελικά αποτελέσµατα των ερωτηµάτων

3. Μια βασική σχέση (base relation) είναι κάθε σχέση που έχει οριστεί στο σχεσιακό σχήµα της βάσης. Είναι µια επώνυµη σχέση που δεν είναι παράγωγη.

4. Μια παράγωγη σχέση (derived relation) είναι µια σχέση που ορίζεται µέσω κάποιας σχεσιακής παράστασης µε βάση άλλες, επώνυµες σχέσεις — σε τελική ανάλυση, µε βασικές σχέσεις όπως π.χ. το αποτέλεσµα ενός ερωτήµατος.

4. Μια άποψη (view) είναι µια επώνυµη παράγωγη σχέση. Οι απόψεις είναι επίσης εικονικές σχέσεις — αναπαριστώνται µέσα στο σύστηµα µόνο µε τον ορισµό τους, ο οποίος βασίζεται σε άλλες επώνυµες σχέσεις.

5. Ένα στιγµιότυπο (snapshot) είναι επίσης µια επώνυµη παράγωγη σχέση, όπως µια άποψη (είναι επίσης µια µεταβλητή σχέσης στην πραγµατικότητα). Όµως αντίθετα µε την άποψη, ένα στιγµιότυπο είναι πραγµατικό και όχι εικονικό — δηλαδή, δεν αναπαρίσταται µόνο µε τον ορισµό του µε βάση άλλες επώνυµες σχέσεις, αλλά και µε δικά του ξεχωριστά δεδοµένα, και δηµιουργείται κάποια δεδοµένη χρονική στιγµή.

6. Ένα αποτέλεσµα ερωτήµατος (query result) είναι η ανώνυµη παράγωγη σχέση που προκύπτει από την εκτέλεση κάποιου καθορισµένου ερωτήµατος. Τα αποτελέσµατα των ερωτηµάτων δεν έχουν µόνιµη ύπαρξη µέσα στη βάση δεδοµένων (αν και µπορούν βέβαια να αποδοθούν ως τιµή σε κάποια επώνυµη σχέση που έχει µόνιµη ύπαρξη).

Σελ. 59

Page 60: Βάσεις δεδομένων

ΣΧΕΣΙΑΚΟ ΜΟΝΤΈΛΟ

5.8 ∆ΟΜΙΚΟΙ ΠΕΡΙΟΡΙΣΜΟΙ ΣΤΟ ΣΧΕΣΙΑΚΟ ΜΟΝΤΕΛΟ

Μία βάση δεδοµένων πρέπει να "αντανακλά την πραγµατικότητα" — δηλαδή, πρέπει να είναι ένα µοντέλο ή µια αναπαράσταση κάποιου συγκεκριµένου τµήµατος του πραγµατικού κόσµου. Έτσι η βάση δεδοµένων χρειάζεται να συµπεριλάβει ορισµένους κανόνες ακεραιότητας που έχουν σκοπό να πληροφορούν το DBMS για κάποιους περιορισµούς.

Οποιοσδήποτε δεδοµένος κανόνας ακεραιότητας µπορεί να είναι ειδικός για τη βάση δεδοµένων, µε την έννοια ότι ισχύει µόνο για µία συγκεκριµένη βάση δεδοµένων. Όµως, εκτός από την υποστήριξη που παρέχει το σχεσιακό µοντέλο για κανόνες ειδικούς (ρητοί περιορισµοί) για τη βάση δεδοµένων, περιλαµβάνει επίσης γενικούς κανόνες ακεραιότητας (έµφυτοι περιορισµοί)— δηλαδή, περιορισµούς που αφορούν την ακεραιότητα κάθε βάσης δεδοµένων.

Στο Σχεσιακό Μοντέλο λοιπόν υπάρχουν έµφυτοι και ρητοί περιορισµοί: Οι έµφυτοι περιορισµοί αφορούν

1. τους περιορισµούς των κλειδιών,

2. την ακεραιότητα οντότητας και

3. την αναφορική ακεραιότητα.

Ας τους δούµε παρακάτω αναλυτικά:

5.8.1 Περιορισµοί Κλειδιών Τα διαφορετικά είδη κλειδιών, όπως ορίστηκαν στο Μοντέλο E-R, ισχύουν και

στο Σχεσιακό Μοντέλο. Το σχεσιακό µοντέλο κατά παράδοση απαιτεί να επιλεχθεί ακριβώς ένα πρωτεύον κλειδί (primary key) για κάθε βασική σχέση.

Φορµαλισµός. Ένα σύνολο γνωρισµάτων SK σχέσης R για το οποίο κάθε πλειάδα σε στιγµιότυπο r(R) πρέπει να έχει µοναδιαία τιµή είναι ένα υπερ-κλειδί (super-key). ∆ηλαδή, για διαφορετικές πλειάδες t1 και t2, ισχύει ότι t1[SK] ≠ t2[SK]. Ένα υποψήφιο κλειδί (candidate key) είναι ένα ελάχιστο υπερ-κλειδί (δηλαδή, δεν υπάρχει υποσύνολο του Κ που να είναι και αυτό υπερ-κλειδί). Ένα πρωτεύον κλειδί (primary key) PK, είναι ένα από τα υποψήφια κλειδιά που αποφασίζεται να παίξει το ρόλο του προσδιοριστή (αναγνωριστικού) για τις πλειάδες της σχέσης. Στον ορισµό του σχήµατος σχέσης R το κύριο κλειδί υπογραµµίζεται.

Για παράδειγµα στη σχέση Υποκατάστηµα

Υποκατάστηµα (Όνοµα_Υποκαταστήµατος, Πόλη, Ενεργητικό)

• το γνώρισµα Όνοµα_Υποκαταστήµατος είναι υπερ-κλειδί

• τα γνωρίσµατα Όνοµα_Υποκαταστήµατος, Πόλη είναι υπερ-κλειδί

• τα γνωρίσµατα Όνοµα_Υποκαταστήµατος, Πόλη δεν είναι υποψήφιο κλειδί, καθώς εµπεριέχει ένα υπερ-κλειδί το Όνοµα_Υποκαταστήµατος

• τα γνωρίσµατα Όνοµα_Υποκαταστήµατος, Πόλη είναι ένα υποψήφιο κλειδί

Σελ. 60

Page 61: Βάσεις δεδομένων

5.8 ∆ΟΜΙΚΟΙ ΠΕΡΙΟΡΙΣΜΟΙ ΣΤΟ ΣΧΕΣΙΑΚΟ ΜΟΝΤΕΛΟ

• το γνώρισµα Πόλη δεν είναι υπερ-κλειδί, καθώς πολλά υποκαταστήµατα µπορεί να είναι στην ίδια πόλη

• Άρα θα χρησιµοποιήσουµε το Όνοµα_Υποκαταστήµατος σαν πρωτεύον κλειδί για τη σχέση Υποκατάστηµα.

Σηµειώστε ότι κάθε σχέση έχει τουλάχιστον ένα υποψήφιο κλειδί, επειδή οι σχέσεις δεν περιέχουν επαναλαµβανόµενες συστοιχίες. ∆ηλαδή, επειδή οι συστοιχίες είναι µοναδικές, συνεπάγεται ότι τουλάχιστον ο συνδυασµός όλων των γνωρισµάτων της σχέσης έχει την ιδιότητα της µοναδικότητας' εποµένως, ισχύει ένα από τα δύο.

5.8.2 Κανόνες ξένων κλειδιών - ακεραιότητα αναφορών Αυτός ο δοµικός περιορισµός εµπλέκει δύο σχέσεις και χρησιµοποιείται για να

καταγράψει τη συνέπεια σε µια συσχέτιση µεταξύ πλειάδων των δύο σχέσεων. Η πλέον συνήθης µορφή είναι αυτή των ξένων κλειδιών.

Φορµαλισµός Ένα ξένο κλειδί (foreign key) FK, είναι ένα σύνολο γνωρισµάτων σε µια σχέση R1 που αποτελεί πρωτεύον κλειδί ΡΚ σε µια άλλη σχέση R2 οπότε πλειάδες της R1 θεωρούµε ότι αναφέρονται σε αντίστοιχες πλειάδες της R2. (Μια πλειάδα t1 στην r(R1) λέγεται ότι αναφέρεται σε µια άλλη πλειάδα t2 στην r(R2), εάν ισχύει ότι t1[FK] = t2[PK])

Μερικές παρατηρήσεις για τα Ξένα κλειδιά:

1. Εξ ορισµού, κάθε τιµή ενός δεδοµένου ξένου κλειδιού σε µια σχέση είναι απαραίτητο να εµφανίζεται ως τιµή του αντίστοιχου πρωτεύοντος κλειδιού της άλλης σχέσης. Σηµειώστε όµως ότι το αντίστροφο δεν είναι απαραίτητο.

2. Ένα δεδοµένο ξένο κλειδί θα είναι σύνθετο — δηλαδή θα αποτελείται από περισσότερα από ένα γνωρίσµατα — εάν και µόνο εάν το αντίστοιχο του υποψήφιο κλειδί είναι επίσης σύνθετο, θα είναι απλό εάν και µόνο εάν το αντίστοιχο του πρωτεύον κλειδί της άλλης σχέσης είναι επίσης απλό.

3. Καθένα από τα γνωρίσµατα που αποτελούν ένα δεδοµένο ξένο κλειδί πρέπει να ορίζεται στο ίδιο πεδίο ορισµού µε το αντίστοιχο µέρος του αντίστοιχου πρωτεύοντος κλειδιού της άλλης σχέσης.

4. ∆εν είναι απαραίτητο ένα ξένο κλειδί να είναι µέρος του πρωτεύοντος κλειδιού της σχέσης που το περιέχει.

5. Μια τιµή ξένου κλειδιού αντιπροσωπεύει µια αναφορά στη συστοιχία που περιέχει την αντίστοιχη τιµή του πρωτεύοντος κλειδιού της άλλης σχέσης — την αναφερόµενη συστοιχία (Γι' αυτόν το λόγο, το πρόβληµα να εξασφαλιστεί ότι η βάση δεδοµένων δεν περιέχει µη έγκυρες τιµές ξένων κλειδιών είναι γνωστό ως πρόβληµα ακεραιότητας των αναφορών .

Μαζί µε την έννοια του ξένου κλειδιού, το σχεσιακό µοντέλο περιλαµβάνει τον παρακάτω κανόνα ακεραιότητας των αναφορών:

• Ακεραιότητα των αναφορών (referential integrity):

Η βάση δεδοµένων δεν πρέπει να περιέχει αναντίστοιχες τιµές ξένων κλειδιών.

Σελ. 61

Page 62: Βάσεις δεδομένων

ΣΧΕΣΙΑΚΟ ΜΟΝΤΈΛΟ

Ο όρος "αναντίστοιχη τιµή ξένου κλειδιού" εδώ σηµαίνει µια τιµή ξένου κλειδιού για την οποία δεν υπάρχει αντίστοιχη ίδια τιµή του σχετικού υποψήφιου κλειδιού στη σχέση κατάληξης. Με άλλα λόγια, ο κανόνας λέει: αν το Β αναφέρεται στο Α. τότε το Α πρέπει να υπάρχει.

Οι δύο έννοιες, "ξένο κλειδί" και "ακεραιότητα αναφορών", ορίζονται η µία µε βάση την άλλη. ∆ηλαδή, δεν είναι δυνατό να εξηγήσουµε τι είναι ξένο κλειδί χωρίς να αναφερθούµε στην έννοια της ακεραιότητας αναφορών και, αντίστοιχα, δεν είναι δυνατό να εξηγήσουµε τι είναι η ακεραιότητα αναφορών χωρίς να αναφερθούµε στην έννοια του ξένου κλειδιού.

Για κάθε ξένο κλειδί, υπάρχουν δύο γενικά ζητήµατα που πρέπει να απαντηθούν:

Πρώτον. Τι θα πρέπει να γίνεται σε περίπτωση απόπειρας να διαγραφεί (DELETE) η συστοιχία κατάληξης µιας αναφοράς ξένου κλειδιού — για παράδειγµα, αν γίνει απόπειρα να διαγραφεί ένας προµηθευτής για τον οποίο υπάρχει τουλάχιστον µία αντίστοιχη αποστολή. Για να είµαστε συγκεκριµένοι, ας εξετάσουµε ειδικά αυτή την περίπτωση. Γενικά, υπάρχουν τουλάχιστον δύο δυνατότητες:

RESTRICTED (περιορισµός διάδοσης) — η πράξη διαγραφής "περιορίζεται" µόνο στην περίπτωση που δεν υπάρχουν αντίστοιχες αποστολές (αλλιώς, η διαγραφή απορρίπτεται).

CASCADES (αλυσιδωτή διάδοση) - η πράξη διαγραφής "διαδίδεται αλυσιδωτά", ώστε να διαγραφούν επίσης οι αντίστοιχες αποστολές.

∆εύτερον. Τι θα πρέπει να γίνεται σε περίπτωση απόπειρας να ενηµερωθεί ένα υποψήφιο κλειδί που είναι η κατάληξη µιας αναφοράς ξένου κλειδιού — για παράδειγµα, αν γίνει απόπειρα να ενηµερωθεί ο κωδικός ενός προµηθευτή για τον οποίο υπάρχει τουλάχιστον µία αντίστοιχη αποστολή. Για να είµαστε πάλι συγκεκριµένοι, ας εξετάσουµε ειδικά αυτή την περίπτωση. Γενικά, υπάρχουν οι ίδιες δυνατότητες όπως στη διαγραφή:

• RESTRICTED (περιορισµός διάδοσης) — η πράξη ενηµέρωσης "περιορίζεται" µόνο στην περίπτωση που δεν υπάρχουν αντίστοιχες αποστολές (αλλιώς, η διαγραφή απορρίπτεται).

• CASCADES (αλυσιδωτή διάδοση) — η πράξη διαγραφής "διαδίδεται αλυσιδωτά", ώστε να ενηµερωθεί επίσης το ξένο κλειδί στις αντίστοιχες αποστολές.

Στη σχεδίαση, για κάθε ξένο κλειδί ο σχεδιαστής της βάσης δεδοµένων θα πρέπει λοιπόν να καθορίσει όχι µόνο το γνώρισµα ή το συνδυασµό γνωρισµάτων που αποτελούν το ξένο κλειδί και την αντίστοιχη σχέση κατάληξης, αλλά και τις απαντήσεις στις παραπάνω ερωτήσεις (δηλαδή, τους συγκεκριµένους κανόνες ξένων κλειδιών που θα ισχύουν γι' αυτό το ξένο κλειδί).

5.8.3 Null Έχουµε εξηγήσει τώρα τις βασικές ιδέες στις οποίες βασίζονται οι έννοιες του

υποψήφιου και του ξένου κλειδιού στο σχεσιακό µοντέλο. ∆υστυχώς, υπάρχει ένας

Σελ. 62

Page 63: Βάσεις δεδομένων

5.8 ∆ΟΜΙΚΟΙ ΠΕΡΙΟΡΙΣΜΟΙ ΣΤΟ ΣΧΕΣΙΑΚΟ ΜΟΝΤΕΛΟ

σηµαντικός παράγοντας που περιπλέκει τα πράγµατα, τον οποίο σκόπιµα αγνοήσαµε µέχρι τώρα — και συγκεκριµένα, οι "µη τιµές" ή null.

Βασικά, ο προορισµός των null είναι να αποτελέσουν µια βάση για την αντιµετώπιση του προβλήµατος των ελλιπών πληροφοριών. Το πρόβληµα αυτό το συναντάµε συχνά στον πραγµατικό κόσµο. Για παράδειγµα, οι ιστορικές καταγραφές µερικές φορές περιλαµβάνουν καταχωρίσεις όπως "ηµεροµηνία γέννησης άγνωστη", οι ηµερήσιες διατάξεις των συνεδρίων συχνά αναφέρουν ότι ένα όνοµα οµιλητή "θα ανακοινωθεί", και τα αστυνοµικά δελτία µπορεί να περιέχουν την καταχώριση "τόπος διαµονής άγνωστος".

Γενικά, ένα δεδοµένο γνώρισµα µπορεί να επιτρέπεται ή να µην επιτρέπεται να περιέχει null. Αυτό εξαρτάται από τον ορισµό του συγκεκριµένου γνωρίσµατος, τουλάχιστον για τις βασικές σχέσεις. Με άλλα λόγια, η σύνταξη ενός "ορισµού γνωρίσµατος" θα πρέπει να επεκταθεί, ώστε να περιλαµβάνει έναν προσδιορισµό IS NULL (τα null επιτρέπονται) ή IS NOT NULL (τα null δεν επιτρέπονται). Αν ένα δεδοµένο γνώρισµα δεν επιτρέπεται να περιέχει null, το σύστηµα θα απορρίψει οποιαδήποτε απόπειρα να εισαχθεί ένα null σε αυτή τη θέση.

5.8.4 Κλειδιά και null- ακεραιότητα οντότητας Και στη συνέχεια, µαζί µε την έννοια του πρωτεύοντος κλειδιού, στο µοντέλο

συµπεριλήφθηκε ο παρακάτω κανόνας (ο κανόνας ακεραιότητας των οντοτήτων — entity integrity):

• Ακεραιότητα των οντοτήτων:

Κανένα µέρος του πρωτεύοντος κλειδιού µιας βασικής σχέσης δεν επιτρέπεται να δέχεται null.

Με άλλα λόγια, ο ορισµός κάθε γνωρίσµατος που συµµετέχει στο πρωτεύον κλειδί οποιασδήποτε βασικής σχέσης πρέπει να περιέχει, ρητά ή έµµεσα, τον προσδιορισµό δεν επιτρέπονται null.

Φορµαλισµός. Το πρωτεύον κλειδί ΡΚ- της σχέσης R, δεν µπορεί να έχει κενές (null) τιµές σε πλειάδες µιας σχέσης r(R). Φορµαλιστικά, t[ΡΚ] ≠ null , για κάθε t στην r(R). Ο λόγος πίσω από αυτό τον περιορισµό είναι ότι το πρωτεύον κλειδί χρησιµοποιείται για τον προσδιορισµό µιας πλειάδας σε µια Σχέση. (Σηµειώνεται ότι και άλλα γνωρίσµατα στην R µπορεί να περιορίζονται στο να µην έχουν null τιµές, αλλά κάτι τέτοιο είναι ρητός και όχι έµφυτος περιορισµός)

Η αιτιολογία του κανόνα είναι η εξής:

• Οι βασικές σχέσεις — για την ακρίβεια, οι συστοιχίες που περιέχονται στις βασικές σχέσεις — αντιστοιχούν σε οντότητες του πραγµατικού κόσµου (προµηθευτές, πελάτες, προϊόντα, υπάλληλοι κλπ).

• Εξ ορισµού, οι οντότητες στον πραγµατικό κόσµο είναι διακριτές — δηλαδή, έχουν κλειδιά.

Σελ. 63

Page 64: Βάσεις δεδομένων

ΣΧΕΣΙΑΚΟ ΜΟΝΤΈΛΟ

• Εποµένως, οι αναπαραστάσεις των οντοτήτων µέσα στη βάση δεδοµένων πρέπει να είναι και αυτές διακριτές (αναγνωρίσιµες).

• Τα πρωτεύοντα κλειδιά εκτελούν τη λειτουργία της µονοσήµαντης αναγνώρισης των οντοτήτων (των εγγραφών στο σχεσιακό µοντέλο) δηλαδή, είναι τα απαραίτητα αναγνωριστικά οντοτήτων.

Έτσι ο κανόνας ακεραιότητας των οντοτήτων µερικές φορές διατυπώνεται µε την εξής µορφή: Σε µια σχεσιακή βάση δεδοµένων, ποτέ δεν καταγράφουµε πληροφορίες για κάτι στο οποίο δεν µπορούµε να αποδώσουµε ταυτότητα.

5.8.5 Ρητοί περιορισµοί Είναι οι περιορισµοί που δηλώνει ο σχεδιαστής της Β∆. Έχουµε δύο βασικά είδη

ρητών περιορισµών:

Περιορισµοί πεδίου ορισµού: είναι οι κανόνες που καθορίζουν ότι η τιµή κάθε γνωρίσµατος Α πρέπει να είναι µια ατοµική τιµή από το πεδίο ορισµού dom(A) αυτού του γνωρίσµατος (π.χ. "small integers" ή "integers between 1 and 10" κλπ). Αυτοί είναι κυρίως περιορισµοί πάνω στους βασικούς τύπους δεδοµένων (data types), char, number, date κλπ.

Υλοποιούνται χρησιµοποιώντας την εντολή check στην SQL:

Π.χ. Ελάχιστο ωροµίσθιο

create domain Ωροµίσθιο numeric(5, 2)

constraint Έλεγχος-Ωροµισθίου check(Ποσό >= 4.00)

Π.χ. Να παίρνει συγκεκριµένες τιµές

create domain Τύπος-Λογαριασµού char(10) constraint Έλεγχος-Τύπος-Λογαριασµού check value in ("Όψεως”,

"Ταµιευτηρίου”)

Οι τύποι όλων των περιορισµών ακεραιότητας που εξετάσαµε µέχρι εδώ καθορίζουν τους περιορισµούς που πρέπει να ικανοποιεί µια έγκυρη κατάσταση της βάσης δεδοµένων, και πρέπει να προσδιοριστούν στο σχήµα της σχεσιακής βάσης.

Περιορισµοί οριζόµενοι από τον χρήστη (user-defined) ή Σηµασιολογικής Ακεραιότητας: Κάθε περιορισµός, πέραν αυτών που έχουν ήδη αναφερθεί. Για την υποστήριξη επιχειρηµατικών κανόνων, απαιτούνται τέτοιοι περιορισµοί µε σηµαντική πολυπλοκότητα. Π.χ. ο µισθός ενός εργαζόµενου δεν µπορεί να υπερβαίνει τον µισθό του προϊσταµένου του. Μια σειρά µηχανισµών χρησιµοποιούνται για την υποστήριξη τέτοιων κανόνων σε ένα σχεσιακό σύστηµα, όπως σκανδάλες (triggers) ή βεβαιώσεις (assertions) κλπ.

Παράδειγµα υλοποίησης στην SQL create assertion περ_µισθού check (not exists

(select * from εργαζόµενος as ε, εργαζόµενος as µ, τµήµα as τ

where ε.µισθός > µ.µισθός and ε.αριθ_τ = τ.κωδ_τµηµ and τ.διευθυντής = µ.αρ_ταυτ) )

Σελ. 64

Page 65: Βάσεις δεδομένων

5.9 ΜΕΤΑΤΡΟΠΗ ∆ΙΑΓΡΑΜΜΑΤΟΣ E-R ΣΤΟ ΣΧΕΣΙΑΚΟ ΜΟΝΤΕΛΟ

5.9 ΜΕΤΑΤΡΟΠΗ ∆ΙΑΓΡΑΜΜΑΤΟΣ E-R ΣΤΟ ΣΧΕΣΙΑΚΟ ΜΟΝΤΕΛΟ

Από τη µια πλευρά, το Μοντέλο E-R διακρίνει τύπους οντοτήτων και τύπους συσχετίσεων (µε τα γνωρίσµατα τους) ενώ, από την άλλη, το Σχεσιακό Μοντέλο υποστηρίζει µια δοµή µόνο, τις σχέσεις (που έχουν και αυτές γνωρίσµατα). Άρα η διαδικασία µετατροπής ενός διαγράµµατος E-R σε Σχεσιακό Σχήµα αφορά στην µετατροπή των τύπων οντοτήτων και συσχετίσεων (και των γνωρισµάτων τους).

Υπάρχει ο γενικός κανόνας ότι για κάθε τύπο οντοτήτων και για κάθε τύπο συσχετίσεων δηµιουργούµε µια σχέση που παίρνει το όνοµα του αντίστοιχου τύπου. Πέρα από αυτόν τον γενικό κανόνα, θα εξειδικεύσουµε παρακάτω τις περιπτώσεις για τους τύπους οντοτήτων, τους τύπους συσχετίσεων και τα γνωρίσµατα

5.9.1 Μετατροπή Τύπων Οντοτήτων

∆ιακρίνουµε τους ισχυρούς από τους αδύναµους τύπους οντοτήτων:

-Για κάθε (ισχυρό) τύπο οντοτήτων δηµιουργούµε µια σχέση R µε τα ίδια γνωρίσµατα - ένα για κάθε απλό γνώρισµα της οντότητας Αν η οντότητα έχει σύνθετα γνωρίσµατα, στη σχέση R έχουµε ένα γνώρισµα για κάθε απλό γνώρισµα που απαρτίζει το σύνθετο.

-Για κάθε αδύναµο τύπο οντοτήτων Α που εξαρτάται από τον ισχυρό τύπο οντοτήτων Β δηµιουργούµε ένα σχήµα σχέσης R µε γνωρίσµατα: (α) τα γνωρίσµατα του Α, και (β) τα γνωρίσµατα του πρωτεύοντος κλειδιού του Β.

5.9.2 Μετατροπή Τύπων Συσχετίσεων ∆ιακρίνουµε τρεις περιπτώσεις µε βάση τον λόγο πληθικότητας: Μ:Ν

συσχετίσεις, 1:1 δυαδικές συσχετίσεις, 1:Ν (και Ν:1) δυαδικές συσχετίσεις. Σχετικά µε τις 1:1 και 1:Ν συσχετίσεις, δεν ενδιαφερόµαστε για τις αδύναµες περιπτώσεις, τις συσχετίσεις δηλαδή µεταξύ ενός ισχυρού και ενός αδύναµου τύπου οντοτήτων, αφού αυτές οι περιπτώσεις καλύπτονται ήδη απ' όσα αναφέραµε παραπάνω για αυτούς.

Για κάθε Μ:Ν συσχέτιση R. µεταξύ η τύπων οντοτήτων που αντιστοιχούν στις σχέσεις S1, S2, …, Sn δηµιουργούµε µια νέα σχέση R µε γνωρίσµατα: (α) τα γνωρίσµατα της R, αν υπάρχουν, και (β) τα γνωρίσµατα του πρωτεύοντος κλειδιού κάθε συµµετέχουσας σχέσης Si, τα οποία συµµετέχουν ως ξένα κλειδιά στη σχέση R.

Για κάθε 1-1 δυαδική (µη αδύναµη) συσχέτιση R µεταξύ δύο τύπων οντοτήτων που αντιστοιχούν στις σχέσεις Τ και S, δεν δηµιουργούµε νέα σχέση R αλλά επιλέγουµε µια εκ των Τ και S, έστω την Τ. Στα ήδη υπάρχοντα γνωρίσµατα της Τ προσθέτουµε: (α) τα γνωρίσµατα της R, αν υπάρχουν, και (β) το πρωτεύον κλειδί της S, το οποίο συµµετέχει ως ξένο κλειδί στη σχέση Τ. Για την επιλογή µεταξύ Τ και S, κριτήριο είναι η ολική συµµετοχή του ενός ή του άλλου τύπου οντοτήτων στη συσχέτιση: η σχέση που αντιστοιχεί στον τύπο οντοτήτων που συµµετέχει ολικά στη συσχέτιση, είναι αυτή (η σχέση Τ, παραπάνω) που επιλέγεται να «φιλοξενήσει» ως ξένο κλειδί το πρωτεύον κλειδί της άλλης (της S). Αν δεν υπάρχει ολική συµµετοχή από καµία πλευρά, τότε προσπαθούµε να µην έχουµε πολλές null τιµές, οπότε

Σελ. 65

Page 66: Βάσεις δεδομένων

ΣΧΕΣΙΑΚΟ ΜΟΝΤΈΛΟ

επιλέγουµε να προσθέσουµε ξένο κλειδί στη σχέση που αντιστοιχεί στον τύπο οντοτήτων µε τη µεγαλύτερη συµµετοχή στη συσχέτιση.

Για κάθε 1-Ν δυαδική (µη αδύναµη) συσχέτιση R µεταξύ δύο τύπων οντοτήτων που αντιστοιχούν στις σχέσεις Τ και S, έστω S από την πλευρά 1 και Τ από την πλευρά Ν, δεν δηµιουργούµε νέα σχέση R αλλά στα ήδη υπάρχοντα γνωρίσµατα της Τ προσθέτουµε: (α) τα γνωρίσµατα της R, αν υπάρχουν, και (β) το πρωτεύον κλειδί της S, το οποίο συµµετέχει ως ξένο κλειδί στη σχέση Τ.

Για τις 1:1, 1:Ν και Ν:1 δυαδικές (µη αδύναµες) µπορούµε, εναλλακτικά, να ακολουθήσουµε τον γενικό κανόνα (δηµιουργία νέας σχέσης µε ξένα κλειδιά, τα πρωτεύοντα κλειδιά των εµπλεκόµενων σχέσεων), ειδικά όταν δεν υπάρχει ολική συµµετοχή από καµία πλευρά. Στην περίπτωση αυτή, κερδίζουµε ως προς την εννοιολογική καθαρότητα και πληρότητα αλλά χάνουµε ως προς την αποδοτικότητα χώρου και την επίδοση. Συνήθως δεν επιλέγεται αυτός ο τρόπος αλλά η ειδική αντιµετώπιση τους, όπως παρουσιάστηκε παραπάνω.

5.9.3 Γνωρίσµατα ∆ιακρίνουµε µεταξύ απλών, σύνθετων και πλειότιµων γνωρισµάτων (τύπων

οντοτήτων ή τύπων συσχετίσεων, δεν έχει σηµασία).

Ένα απλό γνώρισµα Α γίνεται γνώρισµα της αντίστοιχης σχέσης.

Ένα σύνθετο γνώρισµα Α = Α1, Α2,…, Αn µετατρέπεται σε µια οµάδα γνωρισµάτων Α1, Α2,…, Αn της αντίστοιχης σχέσης, ένα για κάθε απλό γνώρισµα που απαρτίζει το σύνθετο.

Για κάθε πλειότιµο γνώρισµα Α, κατασκευάζουµε µια σχέση R µε γνωρίσµατα: το Α (ή τα γνωρίσµατα του Α, αν το Α είναι σύνθετο) και τα γνωρίσµατα (ως ξένο κλειδί) του πρωτεύοντος κλειδιού της σχέσης που παριστάνει τον τύπο οντοτήτων η συσχετίσεων του οποίου γνώρισµα είναι το Α.

Σχήµα: Κανόνες µετατροπής από διάγραµµα E-R σε Σχήµα Σχεσιακής Β∆

Ένα παράδειγµα Βάσης δεδοµένων για µία εταιρία µπορεί να είναι:

Κάθε εργαζόµενος εργάζεται ακριβώς για ένα τµήµα και µπορεί να εργάζεται σε διάφορα έργα. Ένας εργαζόµενος µπορεί να διευθύνει το πολύ ένα τµήµα .

Σελ. 66

Page 67: Βάσεις δεδομένων

5.9 ΜΕΤΑΤΡΟΠΗ ∆ΙΑΓΡΑΜΜΑΤΟΣ E-R ΣΤΟ ΣΧΕΣΙΑΚΟ ΜΟΝΤΕΛΟ

Ένα τµήµα σχετίζεται µε έναν µόνο εργαζόµενο ο οποίος διευθύνει το τµήµα και σ' έναν αριθµό υπαλλήλων οι οποίοι δουλεύουν για το τµήµα. Ένα τµήµα µπορεί να σχετίζεται µε έναν αριθµό έργων που ελέγχει.

Ένα έργο ελέγχεται από ακριβώς ένα τµήµα και έχει αρκετούς υπάλληλους που δουλεύουν για το έργο.

Κάθε τµήµα σχετίζεται µε έναν εργαζόµενο.

Η µετατροπή του παραπάνω διαγράµµατος E-R δηµιουργεί το παρακάτω σχεσιακό σχήµα:

ΕΡΓΑΖΟΜΕΝΟΣ (Αρ_Ταυτ, Όνοµα, Αρχ_Πατ, Επίθετο, ∆ιεύθυνση, Φύλο, Ηµ_Γεν, Μισθός, Αρ_Προϊστάµ, Αρ_Τµήµ)

ΤΜΗΜΑ (Αρ_Τµήµ, Όνοµα, Αρ_Ταυτ_∆ιευθυντή, Ηµερ_Έναρξης_∆ιευθυντή)

ΤΟΠΟΘΕΣΙΕΣ_ΤΜΗΜΑΤΩΝ (Αρ_Τµήµ, ΤοποθεσίαΤµήµ)

ΕΡΓΟ (Αρ_Έργου, Όνοµα_Έργου, Τοποθεσία_Έργου, Αρ_Τµήµ)

ΑΠΑΣΧΟΛΗΣΗ (Αρ_Ταυτ_Εργαζόµενου, Αρ_Έργου, Ώρες)

ΕΞΑΡΤΩΜΕΝΟΣ (Αρ_Ταυτ_Εργαζόµενου, Όνοµα_Εξ, Φύλο, Ηµερ_Γεν, Συγγένεια

Προσοχή! Στο τέλος αυτών των βηµάτων οι σχέσεις που προέκυψαν πρέπει να ελεγχθούν σύµφωνα µε τους κανόνες της κανονικοποίησης.

Σελ. 67

Page 68: Βάσεις δεδομένων

ΘΕΩΡΙΑ ΚΑΝΟΝΙΚΟΠΟΙΗΣΗΣ

6 ΘΕΩΡΙΑ ΚΑΝΟΝΙΚΟΠΟΙΗΣΗΣ

6.1 ΕΙΣΑΓΩΓΗ

Η διαδικασία που αξιολογεί την ευστάθεια, βιωσιµότητα και τις προοπτικές που έχουν οι σχέσεις, ώστε να απαλλαγούν από κάποιες ανωµαλίες στην ενηµέρωση πλειάδων, αποκαλείται Κανονικοποίηση.

Είδαµε ότι το σχεσιακό µοντέλο αποτελείται από σχέσεις που δηµιουργούνται από γνωρίσµατα. Μία σχέση είναι ένα σύνολο από γνωρίσµατα µε τιµές για κάθε γνώρισµα τέτοιες ώστε να ισχύουν οι παρακάτω ιδιότητες

1. Κάθε όνοµα γνωρίσµατος είναι µοναδικό.

2. Όλες οι τιµές κάθε γνωρίσµατος είναι ίδιου τύπου (ή πεδίου ορισµού).

3. Κάθε τιµή γνωρίσµατος είναι ατοµική (µία τιµή και όχι οµάδα πολλών τιµών).

4. Τα γνωρίσµατα δεν έχουν διάταξη από τα αριστερά προς τα δεξιά..

5. Οι συστοιχίες (σειρές) δεν έχουν διάταξη από επάνω προς τα κάτω.

6. ∆εν υπάρχουν δύο ίδιες σειρές (συστοιχίες) σε µία σχέση.

Από τη συζήτηση της µοντελοποίησης µε το µοντέλο οντοτήτων-συσχετίσεων είδαµε ότι µία οντότητα τυπικά αντιστοιχεί σε µία σχέση και ότι τα γνωρίσµατα της οντότητας γίνονται γνωρίσµατα της σχέσης.

Η διαδικασία που ακολουθούµε είναι η ακόλουθη:

1. Συγκεντρώνουµε τις απαιτήσεις της επιχείρησης και των χρηστών.

2. Σχεδιάζουµε το µοντέλο οντοτήτων-συσχετίσεων βασιζόµενο στις παραπάνω απαιτήσεις

3. Μετατρέπουµε το διάγραµµα οντοτήτων-συσχετίσεων της επιχείρησης σε ένα σύνολο από σχέσεις (πίνακες) µε το σχεσιακό µοντέλο.

4. Κανονικοποιούµε τις σχέσεις για να αποµακρύνουµε τυχόν ανωµαλίες ενηµέρωσης-διαγραφής-εισαγωγής στοιχείων.

5. Υλοποιούµε τη βάση δεδοµένων δηµιουργώντας ένα πίνακα για κάθε κανονικοποιηµένη σχέση.

6.2 ΣΥΝΑΡΤΗΣΙΑΚΕΣ ΕΞΑΡΤΗΣΕΙΣ

Μία συναρτησιακή εξάρτηση περιγράφει τη συσχέτιση (Χ Υ) µεταξύ γνωρισµάτων της ίδιας σχέσης. Ο επίσηµος ορισµός είναι ο παρακάτω:

Ένα γνώρισµα Υ είναι συναρτησιακά εξαρτώµενο από ένα γνώρισµα Χ αν και µόνο αν κάθε τιµή του Χ σχετίζεται µε µία και µόνο µία τιµή του Υ. ∆ηλαδή ένα γνώρισµα είναι συναρτησιακά εξαρτώµενο από ένα άλλο αν µπορούµε να

Σελ. 68

Page 69: Βάσεις δεδομένων

6.3 Κλειδιά και µοναδικότητα

χρησιµοποιήσουµε την τιµή του ενός για να προσδιορίσουµε την τιµή του άλλου (να βρούµε την τιµή του µέσα στη σχέση).

Για παράδειγµα στη σχέση ΕΡΓΑΖΟΜΕΝΟΙ το Όνοµα-Εργαζοµένου είναι συναρτησιακά εξαρτώµενο από τον Αριθµό-Ταυτότητας επειδή ο Αριθµό-Ταυτότητας µπορεί να χρησιµοποιηθεί για να προσδιορισθεί µοναδικά η τιµή του Ονόµατος του Εργαζοµένου. Τότε ο Αριθµό-Ταυτότητας ονοµάζεται προσδιοριστικό (ή ορίζουσα).

Εδώ θα χρησιµοποιήσουµε λοιπόν το σύµβολο για να δείχνουµε µερικές τέτοιες συναρτησιακές εξαρτήσεις (το σύµβολο διαβάζεται "προσδιορίζει συναρτησιακά")

ΚωδΦοιτητή Κατεύθυνση-σπουδών

ΚωδΦοιτητή, Μάθηµα, Εξάµηνο Βαθµός

ΚωδΜαθήµατος, Τµήµα Καθηγητής, Αίθουσα, Αριθµός-φοιτητών

Μοντέλο, Τρόπος-Πληρωµής, φόρος Τιµή αυτοκινήτου

Τα γνωρίσµατα στα αριστερά ονοµάζονται προσδιοριστικά. Αν γενικά Χ Α σηµαίνει ότι το Χ προσδιορίζει το Α.

6.3 ΚΛΕΙ∆ΙΑ ΚΑΙ ΜΟΝΑ∆ΙΚΟΤΗΤΑ

Κλειδί ή υπερ-κλειδί: ένα ή περισσότερα γνωρίσµατα που προσδιορίζουν µοναδικά µία συστοιχία (πλειάδα ή ολοκληρωµένη εγγραφή)

Η επιλογή των κλειδιών θα εξαρτάται από τη συγκεκριµένη εφαρµογή.

Οι χρήστες της εφαρµογής µπορούν να προσφέρουν οδηγίες ως προς το ποια γνωρίσµατα θα δηµιουργήσουν ένα κατάλληλο κλειδί.

Επειδή δεν είναι δυνατόν δύο σχέσεις να έχουν ακριβώς τις ίδιες τιµές, ένα υποψήφιο κλειδί θα αποτελείται από όλα τα γνωρίσµατα µίας σχέσης.

Ένα κλειδί προσδιορίζει συναρτησιακά µία συστοιχία.

∆εν είναι όλα τα προσδιοριστικά κλειδιά.

6.4 ΠΡΟΒΛΗΜΑΤΑ ΤΡΟΠΟΠΟΙΗΣΕΩΝ

Μόλις το µοντέλο οντοτήτων-συσχετίσεων µετατραπεί σε σχέσεις µπορεί να ανακαλύψουµε ότι µερικές σχέσεις δεν καθορίζονται σωστά. Έτσι µπορεί να εµφανιστούν κάποια προβλήµατα όπως:

Ανωµαλίες διαγραφής: διαγράφοντας µία σχέση κάποιες πληροφορίες που συνδέονται µε µία άλλη σχέση χάνονται και αυτές.

Ανωµαλίες Εισαγωγής: Για να εισάγουµε µία καινούργια σχέση απαιτείται να έχουµε πληροφορίες από δύο ή περισσότερες οντότητες-αυτή η κατάσταση µπορεί να µην είναι εφαρµόσιµη.

Οι παραπάνω ανωµαλίες εισαγωγής ή διαγραφής σχέσεων προκύπτουν επειδή σε µία σχεσιακή βάση δεδοµένων δεν µπορεί να υπάρχει σχέση που δεν σχετίζεται µε καµία άλλη.

Σελ. 69

Page 70: Βάσεις δεδομένων

ΘΕΩΡΙΑ ΚΑΝΟΝΙΚΟΠΟΙΗΣΗΣ

6.5 ΚΑΝΟΝΙΚΟΠΟΙΗΣΗ-ΚΑΝΟΝΙΚΕΣ ΜΟΡΦΕΣ

Οι σχέσεις µπορούν να υπάγονται σε µία ή περισσότερες κατηγορίες (ή κλάσεις) που ονοµάζονται Κανονικές Μορφές (normal forms).

Κανονική Μορφή: Μία κλάση σχέσεων απαλλαγµένων από συγκεκριµένα προβλήµατα τροποποιήσεων.

Οι κανονικές Μορφές έχουν ονόµατα όπως:

o Πρώτη κανονική µορφή (1NF)

o ∆εύτερη κανονική µορφή (2NF)

o Τρίτη κανονική µορφή (3NF)

o Boyce-Codd κανονική µορφή (BCNF)

o Τέταρτη κανονική µορφή (4NF)

o Πέµπτη κανονική µορφή (5NF)

• Αυτές οι κανονικές µορφές είναι αθροιστικές. Μία σχέση που βρίσκεται σε Τρίτη κανονική µορφή είναι επίσης και σε δεύτερη και σε πρώτη.

Οι τρεις πρώτες κανονικές µορφές (1ΚΜ, 2ΚΜ, 3ΚΜ) ορίστηκαν από τον Codd. Όλες οι κανονικοποιηµένες σχέσεις είναι σε 1ΚΜ. Μερικές σχέσεις 1ΚΜ είναι επίσης σε 2ΚΜ, και µερικές σχέσεις 2ΚΜ είναι επίσης σε 3ΚΜ. Συνήθως η Τρίτη κανονική µορφή των σχέσεων είναι επαρκής.

Ο Fagin όρισε την τέταρτη κανονική µορφή (εξαρτήσεις πολλαπλών τιµών). Μετέπειτα και πάλι ο Fagin όρισε την κανονική µορφή προβολής–σύζευξης (projection join), που αργότερα έγινε γνωστή και ως πέµπτη κανονική µορφή (5ΚΜ). 'Όπως φαίνεται µερικές σχέσεις που είναι σε ΚΜ-BC είναι επίσης σε 4ΚΜ, και µερικές σχέσεις που είναι σε 4ΚΜ είναι επίσης σε 5ΚΜ.

6.5.1 Πρώτη κανονική µορφή (1NF) Η Πρώτη κανονική µορφή θεωρείται γενικώς να είναι µέρος του ορισµού µιας

σχέσης.

Μία σχέση βρίσκεται σε πρώτη κανονική µορφή αν ικανοποιεί όλες τις ιδιότητες του ορισµού της σχέσης:

1. Κάθε όνοµα γνωρίσµατος (στήλης) είναι µοναδικό.

2. Όλες οι τιµές κάθε γνωρίσµατος είναι ίδιου τύπου (ή πεδίου ορισµού).

3. Κάθε τιµή γνωρίσµατος είναι ατοµική (µία τιµή και όχι οµάδα πολλών τιµών).

4. Τα γνωρίσµατα δεν έχουν διάταξη από τα αριστερά προς τα δεξιά.

5. Οι συστοιχίες (σειρές) δεν έχουν διάταξη από επάνω προς τα κάτω.

6. ∆εν υπάρχουν δύο ίδιες σειρές (συστοιχίες) σε µία σχέση.

Σελ. 70

Page 71: Βάσεις δεδομένων

6.5 Κανονικοποιηση-Κανονικές µορφέσ

Εάν υπάρχει καθορισµένο κλειδί για τη σχέση τότε ικανοποιείται η απαίτηση της µοναδικότητας των συστοιχιών (γραµµών του πίνακα).

Ένας πίνακας σε πρώτη κανονική µορφή λέγεται κανονικοποιηµένος πίνακας και τότε και µόνο τότε αντιστοιχεί σε µία σχέση (οι σχέσεις του σχεσιακού µοντέλου είναι στην 1η κανονική µορφή ).

Παράδειγµα σχέσης σε πρώτη κανονική µορφή:

ΜΕΤΟΧΕΣ (Εταιρία, Σύµβολο, Ηµεροµηνία, Τιµή_Κλεισίµατος)

Εταιρία Σύµβολο Ηµεροµηνία Τιµή_Κλεισίµατος

IBM IBM 01/05/99 101.00

IBM IBM 01/06/99 100.50

IBM IBM 01/07/99 102.00

Netscape NETS 01/05/99 33.00

Netscape NETS 01/06/99 112.00

6.5.2 ∆εύτερη κανονική µορφή (2NF) Μία σχέση βρίσκεται σε δεύτερη κανονική µορφή εάν κάθε ένα από τα

γνωρίσµατά της που δεν είναι κλειδιά εξαρτώνται από ολόκληρο το πρωτεύων κλειδί και όχι µόνο από ένα τµήµα του (αφορά σχέσεις µε σύνθετα πρωτεύοντα κλειδιά).

Οι σχέσεις που έχουν µόνο ένα γνώρισµα σαν πρωτεύων κλειδί βρίσκονται αυτόµατα και στη δεύτερη κανονική µορφή.

Αυτός είναι ένας λόγος για τον οποίο χρησιµοποιούµε συχνά τεχνητά αναγνωριστικά σαν κλειδιά.

Το παρακάτω παράδειγµα σχέσης δεν είναι σε δεύτερη κανονική µορφή: η Τιµή_Κλεισίµατος εξαρτάται από την Εταιρία, από τα Σύµβολο της εταιρίας και Ηµεροµηνία, και από την Ηµεροµηνία

• ΜΕΤΟΧΕΣ (Εταιρία, Σύµβολο, Κεντρικά_Γραφεία, Ηµεροµηνία, Τιµή_Κλεισίµατος)

Εταιρία Σύµβολο Κεντρικά_Γραφεία Ηµεροµηνία Τιµή_Κλεισίµατος IBM IBM Armonk, NY 01/05/99 101.00 IBM IBM Armonk, NY 01/06/99 100.50 IBM IBM Armonk, NY 01/07/99 102.00 Netscape NETS Sunyvale, CA 01/05/99 33.00 Netscape NETS Sunyvale, CA 01/06/99 112.00

Σελ. 71

Page 72: Βάσεις δεδομένων

ΘΕΩΡΙΑ ΚΑΝΟΝΙΚΟΠΟΙΗΣΗΣ

• Εταιρία, Ηµεροµηνία Τιµή_Κλεισίµατος

• Σύµβολο, Ηµεροµηνία Τιµή_Κλεισίµατος

• Εταιρία Σύµβολο, Κεντρικά_Γραφεία

• Σύµβολο Εταιρία, Κεντρικά_Γραφεία

Θεωρήστε ότι ισχύει η εξάρτηση Εταιρία, Ηµεροµηνία Τιµή_Κλεισίµατος. Άρα θα πρέπει να χρησιµοποιήσουµε τα Εταιρία, Ηµεροµηνία σαν πρωτεύων κλειδί. Όµως το τµήµα του κλειδιού Εταιρία προσδιορίζει συναρτησιακά το γνώρισµα Σύµβολο (Εταιρία Σύµβολο) όπως και το γνώρισµα Κεντρικά_Γραφεία (Εταιρία Κεντρικά_Γραφεία). Αυτό παραβιάζει τον κανόνα για τη δεύτερη κανονική µορφή.

• Μία λύση: ∆ιαχωρισµός σε δύο σχέσεις: ΕΤΑΙΡΙΑ (Εταιρία, Σύµβολο, Κεντρικά_Γραφεία) ΜΕΤΟΧΕΣ (Σύµβολο, Ηµεροµηνία, Τιµή_Κλεισίµατος)

Εταιρία Σύµβολο Κεντρικά_Γραφεία IBM IBM Armonk, NY Netscape NETS Sunyvale, CA

Εταιρία Σύµβολο, Κεντρικά_Γραφεία

Σύµβολο Εταιρία, Κεντρικά_Γραφεία

Σύµβολο Ηµεροµηνία Τιµή_Κλεισίµατος IBM 01/05/99 101.00 IBM 01/06/99 100.50 IBM 01/07/99 102.00 NETS 01/05/99 33.00 NETS 01/06/99 112.00

Σύµβολο, Ηµεροµηνία Τιµή_Κλεισίµατος

6.5.3 Τρίτη κανονική µορφή (3NF) Μία σχέση βρίσκεται σε Τρίτη κανονική µορφή εάν είναι σε δεύτερη και δεν

περιέχει µεταβατικές εξαρτήσεις.

∆ηλαδή κάθε γνώρισµα της που δεν είναι κλειδί πρέπει να είναι µη µεταβατικά εξαρτηµένο από το πρωτεύον κλειδί

δηλαδή κάθε γνώρισµα που δεν είναι κλειδί πρέπει να περιέχει πληροφορίες µόνο για την οντότητα που καθορίζεται από το πρωτεύον κλειδί

Σελ. 72

Page 73: Βάσεις δεδομένων

6.5 Κανονικοποιηση-Κανονικές µορφέσ

Θεωρήστε για παράδειγµα τη σχέση R που έχει γνωρίσµατα τα Α, Β και Γ. Εάν Α Β και Β Γ τότε θα ισχύει και Α Γ. Π.χ. Σε µία πανεπιστηµιακή σχολή θα ισχύει: Κωδικός_Μαθήµατος ∆ιδασκαλία_Μαθήµατος Τάξη, Καθηγητής

Μεταβατική εξάρτηση: Τρία γνωρίσµατα µε τις παραπάνω εξαρτήσεις.

Άρα οι σχέσεις που έχουν µόνο δύο γνωρίσµατα βρίσκονται αυτόµατα και σε Τρίτη κανονική µορφή.

Στο παρακάτω παράδειγµα η σχέση έχει ένα γνώρισµα για πρωτεύων κλειδί και συνεπώς βρίσκεται στη δεύτερη κανονική µορφή:

Εταιρία Πολιτεία Ποσοστό_Φορολογίας

IBM Putnam 28%

AT&T Bergen 26%

Κάθε εταιρία έχει την έδρα της σε µία πολιτεία αλλά το ποσοστό φορολογίας εξαρτάται από τη συγκεκριµένη πολιτεία

• Εταιρία Πολιτεία

• και

• Πολιτεία Ποσοστό_Φορολογίας

• άρα θα ισχύει και

• Εταιρία Ποσοστό_Φορολογίας

Τι θα γίνει αν διαγράψουµε την εγγραφή για την εταιρία AT&T ? Θα χάσουµε πληροφορίες για 2 διαφορετικά θέµατα (την εταιρία και το Ποσοστό φορολογίας στην πολιτεία Bergen).

Λύση: ∆ιαχωρισµός σε δύο σχέσεις:

Εταιρία Πολιτεία

IBM Putnam

AT&T Bergen

Πολιτεία Ποσοστό_Φορολογίας

Putnam 28%

Bergen 26%

Εταιρία Πολιτεία Πολιτεία Ποσοστό_Φορολογίας

Σελ. 73

Page 74: Βάσεις δεδομένων

ΣΧΕΣΙΑΚΗ ΑΛΓΕΒΡΑ

7 ΣΧΕΣΙΑΚΗ ΑΛΓΕΒΡΑ

Είδαµε ότι το σχεσιακό µοντέλο δεδοµένων έχει δοµές, τις σχέσεις, (που είναι σύνολα γραµµών και στηλών), δοµικούς περιορισµούς πάνω στις δοµές (π.χ. κλειδιά) και πράξεις πάνω στις σχέσεις που παράγουν άλλες σχέσεις. Η σχεσιακή άλγεβρα (relational algebra) είναι η µαθηµατική θεµελίωση των πράξεων του σχεσιακού µοντέλου δεδοµένων. Η σχεσιακή άλγεβρα αποτελείται από µια συλλογή σχεσιακών τελεστών ή σχεσιακών πράξεων, οι οποίοι δέχονται τελεστέους που είναι σχέσεις και επιστρέφουν αποτελέσµατα που είναι επίσης σχέσεις.

Πριν από την περιγραφή των σχεσιακών πράξεων, πρέπει να σηµειωθεί ότι έχουν δύο χαρακτηριστικά:

Πρώτον, όταν εκτελούνται καταλήγουν σε σχεσιακούς πίνακες (σύνολα), δηλαδή γίνεται επεξεργασία συνόλων σε αντιδιαστολή µε τη συµβατική επεξεργασία εγγραφή-προς-εγγραφή (π.χ. τελεστές READ/WRITE). Η επεξεργασία συνόλων έχει την ιδιότητα της κλειστότητας επειδή µία σχεσιακή πράξη επί ενός ή περισσοτέρων σχεσιακών πινάκων θα παράγει πάντοτε έναν σχεσιακό πίνακα, ακόµη και αν το αποτέλεσµα είναι µόνο µία γραµµή (ή και στήλη). Η κλειστότητα συνεπάγεται ότι οι σχεσιακές πράξεις µπορεί να εκτελεστούν σε αποτελέσµατα προηγούµενων σχεσιακών πράξεων. Έτσι οι χρήστες µπορούν να εκτελούν εµφωλιασµένες σειρές σχεσιακών πράξεων.

Το δεύτερο χαρακτηριστικό είναι ότι οι σχεσιακές πράξεις δεν επηρεάζονται από τον τρόπο που αποθηκεύονται τα δεδοµένα στα φυσικά µέσα αποθήκευσης του υπολογιστή. Έτσι οι χρήστες εκτελούν τις σχεσιακές πράξεις χωρίς να ενδιαφέρονται για τις τεχνικές αποθήκευσης και προσπέλασης των δεδοµένων.

7.1 ΠΡΩΤΟΤΥΠΗ ΣΧΕΣΙΑΚΗ ΑΛΓΕΒΡΑ

Η σχεσιακή άλγεβρα είναι µία διαδικαστική γλώσσα ερωτήσεων.

Η "πρωτότυπη" σχεσιακή άλγεβρα, όπως ορίστηκε από τον Codd, αποτελούνταν από οκτώ τελεστές, σε δύο οµάδες, που ήταν οι εξής:

1. Οι παραδοσιακές πράξεις της θεωρίας των συνόλων, ένωση, τοµή, διαφορά, και καρτεσιανό γινόµενο (όλες κάπως τροποποιηµένες ώστε να λαµβάνεται υπόψη το γεγονός ότι οι τελεστέοι τους είναι σχέσεις και όχι τυχαία σύνολα).

2. Οι ειδικές σχεσιακές πράξεις περιορισµός (restrict), προβολή (project), σύζευξη (join), και διαίρεση (divide).

Σελ. 74

Page 75: Βάσεις δεδομένων

7.1 Πρωτότυπη σχεσιακή άλγεβρα

Εικόνα. Οι κυριότερες σχεσιακές πράξεις

Σελ. 75

Page 76: Βάσεις δεδομένων

ΣΧΕΣΙΑΚΗ ΑΛΓΕΒΡΑ

7.2 ΣΥΝΟΨΗ ΤΩΝ ΟΚΤΩ ΚΥΡΙΟΤΕΡΩΝ ΠΡΑΞΕΩΝ:

1. Περιορισµός ή Επιλογή (selection) σC (R). Επιλέγει συστοιχίες (πλειάδες) της σχέσης R που ικανοποιούν την συνθήκη C. Επιστρέφει µια σχέση που αποτελείται από όλες τις συστοιχίες µιας καθορισµένης σχέσης οι οποίες ικανοποιούν µια καθορισµένη συνθήκη. (Το αρχικό όνοµα αυτής της πράξης ήταν περιορισµός (restrict) αλλά σήµερα η πράξη λέγεται πιο συχνά επιλογή (select).

2. Προβολή (projection) πAL(R). Επιλέγει τις συγκεκριµένες στήλες AL (attribute list) από τη σχέση R. Επιστρέφει µια σχέση που αποτελείται από τα καθορισµένα γνωρίσµατα.

3. Καρτεσιανό γινόµενο (cartesian product) R1×R2. Επιστρέφει µια νέα σχέση που προέρχεται από την συνένωση των R1 και R2 έτσι ώστε οι συστοιχίες (πλειάδες) της να είναι κάθε δυνατό ζεύγος δύο πλειάδων, µία από την R1 και µία από την R2.

4. Ένωση (set union) R1 ∪ R2 . Έστω R1(A1 ,A2 , ... An), και R2(A1 ,A2 , ... An), οι δύο σχέσεις έχουν δηλαδή ακριβώς τα ίδια γνωρίσµατα και στην ίδια διάταξη. Η πράξη R1 ∪ R2 επιστρέφει µια νέα σχέση που προέρχεται από την ένωση των R1 και R2 και αποτελείται από όλες τις συστοιχίες που εµφανίζονται σε µία από τις δύο ή και στις δύο καθορισµένες σχέσεις.

5. ∆ιαφορά (difference) R1 − R2 . Έστω R1(A1 ,A2 , ... An), και R2(A1 ,A2 , ... An), οι δύο σχέσεις έχουν δηλαδή ακριβώς τα ίδια γνωρίσµατα και στην ίδια διάταξη. Η πράξη R1 − R2 επιστρέφει µια νέα σχέση που περιέχει τις πλειάδες της R1 που δεν έχει η R2 . ∆ηλαδή επιστρέφει µια σχέση που αποτελείται από όλες τις συστοιχίες που εµφανίζονται στην πρώτη και όχι στη δεύτερη από τις δύο καθορισµένες σχέσεις.

6. Τοµή (intersection) R1 ∩ R2 . Έστω R1(A1 ,A2 , ... An), και R2(A1 ,A2 , ... An), οι δύο σχέσεις έχουν δηλαδή ακριβώς τα ίδια γνωρίσµατα και στην ίδια διάταξη. Η πράξη R1 ∩ R2 επιστρέφει µια νέα σχέση που προέρχεται από την τοµή των R1 και R2 και αποτελείται από όλες τις συστοιχίες που εµφανίζονται και στις δύο σχέσεις

7. Σύζευξη ή Συνένωση (join) R1 <> c R2 Επιστρέφει τις πλειάδες του R1×R2 που ικανοποιούν τη συνθήκη σύζευξης C. Συνήθως, αλλά όχι απαραίτητα, η συνθήκη C είναι η συνθήκη ισότητας ('=') πάνω στο πρωτεύον κλειδί της µιας σχέσης και στο ξένο κλειδί της άλλης σχέσης, οπότε στην περίπτωση αυτή, ονοµάζεται φυσική σύζευξη (natural join) και δηλώνεται R1 <> R2 (πολύ χρήσιµη πράξη αλλά όχι βασική, αφού αποτελεί συνδυασµό καρτεσιανού γινοµένου, επιλογής και προβολής)

8. ∆ιαίρεση (division) R1 ÷ R2 . Έστω R1(A1 ,A2 , ... An), R2(A1 ,A2 , ... An), οι δύο σχέσεις και T= πA1, …, An(R1) η προβολή. Η πράξη R1 ÷ R2 επιστρέφει πλειάδες της Τ των οποίων η ένωση µε όλες τις πλειάδες της R1 βρίσκεται στην R2 . Για παράδειγµα παίρνει δύο σχέσεις, µία δυαδική και µία µοναδιαία, και επιστρέφει µια σχέση που αποτελείται από όλες τις τιµές ενός γνωρίσµατος της δυαδικής σχέσης που ταυτίζονται (στο άλλο γνώρισµα) µε όλες τις τιµές της µοναδιαίας σχέσης.

Σελ. 76

Page 77: Βάσεις δεδομένων

7.3 Οι Πρωτογενείς τελεστές

7.3 ΟΙ ΠΡΩΤΟΓΕΝΕΙΣ ΤΕΛΕΣΤΕΣ

Οι τελεστές των βασικών πράξεων -ένωση, διαφορά, γινόµενο, επιλογή και προβολή είναι πρωτογενείς, µε την έννοια ότι κανένας από αυτούς δεν µπορεί να εκφραστεί µε βάση τους άλλους τέσσερις

Το γινόµενο είναι ο µόνος τελεστής που αυξάνει το πλήθος των γνωρισµάτων, και έτσι δεν µπορεί να προσοµοιωθεί µε κανένα συνδυασµό άλλων τελεστών.

Η προβολή είναι ο µόνος τελεστής που µειώνει το πλήθος των γνωρισµάτων, και έτσι δεν µπορεί να προσοµοιωθεί µε κανένα συνδυασµό άλλων τελεστών.

Η ένωση είναι ο µόνος τελεστής που αυξάνει το πλήθος των συστοιχιών, εκτός από το γινόµενο, και το γινόµενο αυξάνει επίσης το πλήθος των γνωρισµάτων. Έστω ότι οι δύο σχέσεις στις οποίες εφαρµόζεται η ένωση είναι οι Α και Β. Προσέξτε ότι οι Α και Β πρέπει να έχουν συµβατότητα τύπου και ότι η ένωση τους έχει ακριβώς τα ίδια γνωρίσµατα µε την κάθε µία από αυτές. Αν σχηµατίσουµε το γινόµενο των Α και Β και µετά χρησιµοποιήσουµε προβολή για να µειώσουµε το σύνολο των γνωρισµάτων του γινοµένου µόνο στο σύνολο των γνωρισµάτων της Α (ή της Β), απλώς θα ξαναγυρίσουµε στην αρχική σχέση Α (ή Β). Εποµένως, το γινόµενο δεν µπορεί να χρησιµοποιηθεί για προσοµοίωση της ένωσης, και η ένωση είναι πρωτογενής.

Η διαφορά δεν µπορεί να προσοµοιωθεί µε το γινόµενο (επειδή το γινόµενο αυξάνει το πλήθος των συστοιχιών), ούτε µε την ένωση (για τον ίδιο λόγο), ούτε µε την προβολή (επειδή η προβολή µειώνει το πλήθος των γνωρισµάτων). ∆εν µπορεί να προσοµοιωθεί ούτε µε την επιλογή, επειδή η διαφορά επηρεάζεται από τις τιµές που εµφανίζονται στη δεύτερη σχέση ενώ η επιλογή όχι (λόγω της φύσης µιας συνθήκης επιλογής). Εποµένως, η διαφορά είναι πρωτογενής.

Η επιλογή είναι ο µόνος τελεστής που επιτρέπει να συγκρίνονται τιµές γνωρισµάτων µε κυριολεκτικές τιµές που καθορίζονται από έξω (δηλαδή, τιµές οι οποίες δεν είναι ήδη µέρος κάποιας σχέσης).

7.4 ΚΛΕΙΣΤΟΤΗΤΑ

Η έξοδος µιας σχεσιακής πράξης είναι µια άλλη σχέση. Αυτή είναι η σχεσιακή ιδιότητα της κλειστότητας. Επειδή η έξοδος οποιασδήποτε πράξης είναι ένα αντικείµενο του ίδιου τύπου µε την είσοδο της (είναι και τα δύο σχέσεις), η έξοδος µίας πράξης µπορεί να γίνει είσοδος για µία άλλη πράξη. Έτσι, είναι δυνατό, για παράδειγµα, να πάρουµε µια προβολή µιας ένωσης, ή µια σύζευξη δύο περιορισµών, ή την ένωση µιας σύζευξης και µιας τοµής, κ.ο.κ. Με άλλα λόγια, είναι δυνατό να γράφουµε παραστάσεις µε ένθετες υποπαραστάσεις (nested expressions) — δηλαδή, παραστάσεις που οι τελεστέοι τους είναι και οι ίδιοι παραστάσεις, και όχι απλώς ονόµατα σχέσεων.

Σελ. 77

Page 78: Βάσεις δεδομένων

ΣΧΕΣΙΑΚΗ ΑΛΓΕΒΡΑ

7.5 ΠΡΟΤΕΡΑΙΟΤΗΤΑ ΤΩΝ ΤΕΛΕΣΤΩΝ

Η προτεραιότητα των τελεστών της σχεσιακής άλγεβρας:

1. καθορίζει τη σειρά εφαρµογής τελεστών σε µια έκφραση της Σχεσιακής Άλγεβρας χωρίς παρενθέσεις

2. παρενθέσεις χρησιµοποιούνται για να µεταβληθεί η σειρά προτεραιότητας : οι εκφράσεις µέσα σε παρενθέσεις υπολογίζονται πρώτα

∪, ∩Ένωση, ΤοµήΧαµηλότερη−∆ιαφορά↓

, ÷Σύζευξη, ∆ιαίρεση↓

×Καρτεσιανό Γινόµενο↓

σΕπιλογή↓

πΠροβολήΥψηλότερηΣύµβολοΤελεστήςΠροτεραιότητα

∪, ∩Ένωση, ΤοµήΧαµηλότερη−∆ιαφορά↓

, ÷Σύζευξη, ∆ιαίρεση↓

×Καρτεσιανό Γινόµενο↓

σΕπιλογή↓

πΠροβολήΥψηλότερηΣύµβολοΤελεστήςΠροτεραιότητα

Πριν δούµε αναλυτικά όλες τις πράξεις της σχεσιακής άλγεβρας ας θυµηθούµε τον φορµαλισµό του Σχεσιακού Μοντέλου:

Ένα Σχεσιακό Σχήµα σχέσης R συµβολίζεται µε R(A1 ,A2 , ... An).

Μια συστοιχία (tuple) t µιας Σχέσης R(A1 ,A2 , ... An). είναι µια (διατεταγµένη) λίστα τιµών t = <v1 , v2 , ... vn >, όπου κάθε τιµή v, είναι ένα στοιχείο του πεδίου τιµών D(Ai).

7.6 ΣΧΕΣΙΑΚΗ ΆΛΓΕΒΡΑ - ΠΡΑΞΕΙΣ

Η σχεσιακή άλγεβρα είναι µία διαδικαστική γλώσσα ερωτήσεων

Έχει έξι βασικές σχεσιακές πράξεις (δηλαδή πρωτογενείς)

• προβολή (project, unary)

• επιλογή (select, unary)

• καρτεσιανό γινόµενο συνόλων (cartesian product, binary)

• µετονοµασία (rename, unary)

• ένωση συνόλων (union, binary)

• διαφορά συνόλων (set-difference, binary)

Σελ. 78

Page 79: Βάσεις δεδομένων

7.7 Τελεστής Προβολής

Οι τελεστές χρησιµοποιούν σχέσεις ως είσοδο και δίνουν µια νέα σχέση ως αποτέλεσµα.

Αρκετές επιπρόσθετες πράξεις που ορίζονται στα πλαίσια των βασικών δεν προσθέτουν δύναµη στη σχεσιακή άλγεβρα, αλλά απλοποιούν τις πιο συνηθισµένες ερωτήσεις.

• Τοµή συνόλων (set-intersection)

• Συνένωση (natural join)

• ∆ιαίρεση (division)

• Ανάθεση (assignment)

• Γενικευµένη Προβολή (generalized projection)

• Συναθροιστικές Συναρτήσεις (Aggregate functions)

• Εξωτερική Συνένωση (outer join)

Οι συνολοθεωρητικές πράξεις ένωση, τοµή, διαφορά, και καρτεσιανό γινόµενο θεωρούν τις σχέσεις ως σύνολα από συστοιχίες

Οι καθαρές (γηγενής) σχεσιακές πράξεις επιλογή , προβολή, σύζευξη , και διαίρεση εστιάζουν στη δοµή των συστοιχιών.

7.7 ΤΕΛΕΣΤΗΣ ΠΡΟΒΟΛΗΣ

Ο τελεστής προβολής προβάλει µόνο τα συγκεκριµένα γνωρίσµατα (στήλες) από την σχέση που καθορίζουµε.

Αφού µία σχέση είναι ένα σύνολο οι διπλότυπες σειρές απαλείφονται.

Η πράξη της προβολής συµβολίζεται µε το κεφαλαίο ελληνικό γράµµα πι (Π). Οι στήλες που προβάλλονται φαίνονται σαν δείκτες του πι (Π). Το όνοµα της σχέσης στην οποία εφαρµόζεται η πράξη της προβολής δίνεται στην παρένθεση που ακολουθεί

Συµβολισµός

ΠΑ1,Α2,…, Αk(R) όπου Α1, Α2 είναι ονόµατα γνωρισµάτων και R είναι το όνοµα της σχέσης.

Το αποτέλεσµα καθορίζεται ως η σχέση των k στηλών που υπολείπονται από τη διαγραφή των στηλών που δεν αναφέρονται στη λίστα.

Οι διπλές γραµµές (διπλότυπα) διαγράφονται από το αποτέλεσµα επειδή οι σχέσεις είναι σύνολα.

Σελ. 79

Page 80: Βάσεις δεδομένων

ΣΧΕΣΙΑΚΗ ΑΛΓΕΒΡΑ

Π.χ. για να προβάλουµε µόνο τις στήλες αριθµός-λογαριασµού και υπόλοιπο και από τον πίνακα λογαριασµός:

Παριθµός-λογαριασµού,υπόλοιπο(λογαριασµός) Παράδειγµα Προβολής

240β

130β

120α

110α

ΓΒΑ

240β

130β

120α

110α

ΓΒΑ

ΓΑ

ΓΑ

ΓΑ

ΓΑ

=

Σχέση R

ΠΑ,Γ(R)

Παράδειγµα υλοποίησης στην SQL: SELECT DISTINCT Α, Γ FROM R

(επειδή η SQL επιτρέπει διπλές εµφανίσεις συστοιχιών (διπλότυπα) ενώ η σχεσιακή άλγεβρα δεν επιτρέπει χρησιµοποιείται η λέξη DISTINCT για να τα απαλείψει)

7.8 ΤΕΛΕΣΤΗΣ ΕΠΙΛΟΓΗΣ

Ο τελεστή Επιλογής επιλέγει πλειάδες µε βάσει κάποια κριτήρια.

Η πράξη της επιλογής συµβολίζεται µε το µικρό ελληνικό γράµµα σίγµα (σ), µε το κατηγόρηµα (τελεστής επιλογής) να φαίνεται σαν δείκτης του σίγµα (σ). Το όνοµα της σχέσης στην οποία εφαρµόζεται η πράξη της επιλογής δίνεται στην παρένθεση που ακολουθεί το σίγµα (σ).

Συµβολισµός :

σP(r) Ορίζεται ως:

σP(r) = t|t∈r and p(t) σP(r) επιστρέφει εκείνες τις πλειάδες (συστοιχίες) της σχέσης r που

ικανοποιούν το P (κατηγόρηµα) το οποίο αποτελείται από µία ή περισσότερες συνθήκες επιλογής πλειάδων που συνδέονται µε τους λογικούς τελεστές: ∧ (and), ∨ (or), ¬ (not)

Σελ. 80

Page 81: Βάσεις δεδομένων

7.9 Τελεστής Καρτεσιανού Γινοµένου

Οι τελεστές σύγκρισης στις συνθήκες επιλογής είναι οι =, ≠, <, ≤, >, ≥

Οι συνθήκες επιλογής συνδέονται στο κατηγόρηµα P µε τους λογικούς τελεστές ∧ (and), ∨ (or), ¬ (not)

Για τις λογικές εκφράσεις χρησιµοποιούνται οι πίνακες αληθείας

T F

T T F

F F F

T F

T T T

F T F

T F

F T

Παράδειγµα επιλογής:

σΌνοµα-Υποκαταστήµατος='Βενιζέλου' (λογαριασµός) Παράδειγµα επιλογής

1023ββ

312ββ

75βα

71αα∆∆ΓΓΒΒΑΑ

1023ββ

312ββ

75βα

71αα∆∆ΓΓΒΒΑΑ

1023ββ

71αα∆∆ΓΓΒΒΑΑ

1023ββ

71αα∆∆ΓΓΒΒΑΑ

• Σχέση R

• σΑ=Β^∆>5 (R)

Παράδειγµα υλοποίησης στην SQL: SELECT DISTINCT Α, Γ FROM R WHERE Α=Β AND ∆>5

7.9 ΤΕΛΕΣΤΗΣ ΚΑΡΤΕΣΙΑΝΟΥ ΓΙΝΟΜΕΝΟΥ

Ο τελεστής του καρτεσιανού γινοµένου συµβολίζεται µε ×.

Ορισµός: έστω σχέσεις r και s, όπου r έχει n πλειάδες και s έχει m πλειάδες. Το καρτεσιανό γινόµενο r ×s θα έχει n × m πλειάδες.

Συµβολισµός

r × s

Σελ. 81

Page 82: Βάσεις δεδομένων

ΣΧΕΣΙΑΚΗ ΑΛΓΕΒΡΑ

Ορίζεται ως:

r × s = tq | t∈r και q∈s Υποθέτουµε ότι οι ιδιότητες των r(R) και s(S) είναι ασύνδετες (δηλαδή R∩S=∅)

Αν οι ιδιότητες των r(R) και s(S) δεν είναι ασύνδετες, τότε πρέπει να χρησιµοποιηθεί µετονοµασία.

Παράδειγµα Καρτεσιανού Γινοµένου

ΒΑ

ΒΑ

b10r

b20β

c10β

c10a

Ε∆Γ

b10r

b20β

c10β

c10a

Ε∆Γ

b10r2β

b20β2β

c10β2β

c10α2β

b10r1α

b20β1α

c10β1α

c10α1α

Ε∆ΓBA

b10r2β

b20β2β

c10β2β

c10α2β

b10r1α

b20β1α

c10β1α

c10α1α

Ε∆ΓBA

Οι σχέσεις R, S

Η σχέση R x S

Παράδειγµα υλοποίησης στην SQL: SELECT * FROM R, S

7.10 ΤΕΛΕΣΤΗΣ ΜΕΤΟΝΟΜΑΣΙΑΣ

Ο τελεστής µετονοµασίας συµβολίζεται µε το µικρό ελληνικό γράµµα ρο (ρ). Το ψευδώνυµο που δίνουµε στη σχέση φαίνεται σαν δείκτης του ρο (ρ). Το όνοµα της σχέσης στην οποία εφαρµόζεται η πράξη της µετονοµασίας δίνεται στην παρένθεση που ακολουθεί το ρ. Μας επιτρέπει να ονοµάσουµε, και συνεπώς να αναφερθούµε, στα αποτελέσµατα των εκφράσεων της σχεσιακής άλγεβρας.

Μας επιτρέπει να αναφερθούµε σε µια σχέση µε περισσότερα από ένα ονόµατα

Συµβολισµός:

ρΧ(R)

επιστρέφει τη σχέση R µε το νέο όνοµα Χ

Σελ. 82

Page 83: Βάσεις δεδομένων

7.10 Τελεστής µετονοµασίας

Παράδειγµα υλοποίησης στην SQL: SELECT * FROM R AS X

Αν η σχέση R της άλγεβρας έχει βαθµό n, τότε η ρχ(Α1, Α2, …, Αn)(R) επιστρέφει το αποτέλεσµα της σχεσιακής έκφρασης R µε το όνοµα Χ, και µε τα γνωρίσµατα µετονοµασµένα σε Α1, Α2, … , Αn.

Παράδειγµα υλοποίησης στην SQL: SELECT * FROM R AS X(Α1, Α2, …, Αn)

Η πράξη της µετονοµασίας λύνει το πρόβληµα που εµφανίζεται µε τα ονόµατα όταν θέλουµε να εκτελέσουµε την πράξη του καρτεσιανού γινοµένου µιας σχέσης µε τον εαυτό της.

Π.χ. Θεωρήστε τη σχέση Πελάτης (όνοµα-πελάτη, οδός, πόλη) και βρείτε τα ονόµατα των πελατών που µένουν στην ίδια οδό και πόλη µε τον πελάτη "Smith". (Μία λύση είναι να περιορίσουµε την σχέση Πελάτης επιλέγοντας την οδό και πόλη του "Smith", έπειτα να πάρουµε το καρτεσιανό γινόµενο µε την αρχική σχέση και τέλος να περιορίσουµε το καρτεσιανό γινόµενο επιλέγοντας εκείνες τις σειρές για τις οποίες οι τιµές στα γνωρίσµατα οδός και πόλη είναι ίδια)

1. Βρίσκουµε πρώτα την οδό και πόλη του "Smith" γράφοντας

Ποδός,πόλη (σόνοµα-πελάτη="Smith" (Πελάτης))

(στην SQL: SELECT οδός, πόλη FROM Πελάτης WHERE όνοµα-πελάτη="Smith")

2. Για να βρούµε τώρα άλλους πελάτες µε την ίδια οδό και πόλη πρέπει να πάρουµε το καρτεσιανό γινόµενο της προηγούµενης σχέσης µε τη σχέση Πελάτης

σP(Πελάτης × (Ποδός,πόλη (σόνοµα-πελάτη="Smith" (Πελάτης)))

όπου P είναι το κατηγόρηµα επιλογής που απαιτεί οι τιµές της οδού και της πόλης να είναι ίδιες.

Το πρόβληµα είναι πως θα αναφερθούµε στα γνωρίσµατα οδός και πόλη αφού ανήκουν στην ίδια σχέση

Η λύση είναι να µετονοµάσουµε την πρώτη σχέση χρησιµοποιώντας τον τελεστή µετονοµασίας ρΧ(R)

Το καρτεσιανό γινόµενο θα είναι

(Πελάτης × (Ποδός,πόλη (σόνοµα-πελάτη="Smith" (ρΠελάτης2 (Πελάτης))))

3. Από αυτό θα προβάλλεται η στήλη όνοµα-πελάτη και θα επιλέγονται οι σειρές για τις οποίες ισχύει Πελάτης.οδός=Πελάτης2.οδός και Πελάτης.πόλη=Πελάτης2.πόλη.

Άρα τέλος θα γράψουµε

ΠΠελάτης.όνοµα-πελάτη (σ Πελάτης.οδός=Πελάτης2.οδός ∧ Πελάτης.πόλη=Πελάτης2.πόλη (Πελάτης × (Ποδός,πόλη (σόνοµα-πελάτη="Smith" (ρΠελάτης2 (Πελάτης)))) ) )

Σελ. 83

Page 84: Βάσεις δεδομένων

ΣΧΕΣΙΑΚΗ ΑΛΓΕΒΡΑ

Παράδειγµα υλοποίησης στην SQL: SELECT Πελάτης.όνοµα-πελάτη

FROM Πελάτης, Πελάτης AS Πελάτης2

WHERE Πελάτης2.όνοµα-πελάτη="Smith" AND Πελάτης.οδός=Πελάτης2.οδός AND Πελάτης.πόλη=Πελάτης2.πόλη

7.11 ΤΕΛΕΣΤΗΣ ΈΝΩΣΗΣ

Ο τελεστής ένωσης συµβολίζεται µε το κεφαλαίο αγγλικό γράµµα U όπως και στη θεωρία συνόλων. Επιστρέφει την ένωση (ένωση συνόλων) δύο συµβατών σχέσεων.

Συµβολισµός:

r ∪ s Ορίζεται ως:

r ∪ s = t | t ∈ r ή t ∈ s Για να είναι έγκυρη η πράξη της ένωσης δύο σχέσεων r και s (r ∪ s) θα πρέπει:

• οι σχέσεις r, s πρέπει να έχουν τον ίδιο αριθµό γνωρισµάτων (στηλών)

• Τα πεδία ορισµού πρέπει να είναι συµβατά (π.χ., η 2η στήλη του r να χρησιµοποιεί τον ίδιο τύπο δεδοµένων όπως και η δεύτερη στήλη του s)

∆εν µπορούµε να κάνουµε ένωση συνόλων που δεν είναι συµβατά

Όπως και στις πράξεις συνόλων τα διπλότυπα απαλείφονται στο αποτέλεσµα

Π.χ. για να βρούµε όλους τους πελάτες µε λογαριασµό ή δάνειο

Πόνοµα_πελάτη(καταθέτης) ∪ Πόνοµα-πελάτη(δανειζόµενος) Παράδειγµα Ένωσης Συνόλων:

Σχέση R

BA

BA

BA

BA

BA

BA

Σχέση R ∪ S:

Σχέση S

Σελ. 84

Page 85: Βάσεις δεδομένων

7.12 Τελεστής ∆ιαφοράς Συνόλων

Παράδειγµα υλοποίησης στην SQL: (SELECT Α, Β FROM R) UNION (SELECT Α, Β FROM S)

7.12 ΤΕΛΕΣΤΗΣ ∆ΙΑΦΟΡΑΣ ΣΥΝΟΛΩΝ

Ο τελεστής διαφοράς συνόλων συµβολίζεται µε το σύµβολο πλην (–). Βρίσκει τις πλειάδες (σειρές) που είναι στην πρώτη σχέση αλλά όχι στη δεύτερη.

(Α – Β: όλα τα στοιχεία του Α που δεν ανήκουν στον Β)

Συµβολισµός

r – s

Ορίζεται ως:

r–s = t|t∈r και t∉s Το αποτέλεσµα της πράξης r–s είναι µία σχέση που περιέχει τις πλειάδες που

βρίσκονται στη σχέση r αλλά όχι στην s.

Όπως και στις πράξεις συνόλων τα διπλότυπα απαλείφονται στο αποτέλεσµα

Για να είναι έγκυρη η πράξη της διαφοράς δύο σχέσεων r και s (r – s) θα πρέπει:

• οι σχέσεις r, s να έχουν τον ίδιο αριθµό γνωρισµάτων (στηλών)

• Τα πεδία ορισµού να είναι συµβατά (π.χ., η 2η στήλη του r να χρησιµοποιεί τον ίδιο τύπο δεδοµένων όπως και η δεύτερη στήλη του s)

Παράδειγµα ∆ιαφοράς Συνόλων

Σχέση R

BA

BA

BA

BA

Σχέση R - S:

Σχέση S

ΒΑ

ΒΑ

Σελ. 85

Page 86: Βάσεις δεδομένων

ΣΧΕΣΙΑΚΗ ΑΛΓΕΒΡΑ

Παράδειγµα υλοποίησης στην SQL2: (SELECT Α, Β FROM R) EXCEPT (SELECT Α, Β FROM S)

Παράδειγµα υλοποίησης στην SQL1: (SELECT Α, Β FROM R) MINUS (SELECT Α, Β FROM S)

Μπορούµε να κάνουµε περισσότερα µε την πράξη της διαφοράς συνόλων.

Π.χ. θεωρήστε από τη σχέση Εργαζόµενοι(Κωδ, Όνοµα, Μισθός) το σύνολο των µισθών των εργαζοµένων (χωρίς τα διπλότυπα) και βρείτε τον υψηλότερο µισθό.

Η προβολή όλων των µισθών θα δώσει (χωρίς τα διπλότυπα)

Πµισθός(Εργαζόµενοι) Μισθός

3000

5000

6000

• Πρώτα θα βρούµε µία σχέση που περιέχει που περιέχει όλους τους µισθούς εκτός από τον υψηλότερο. Βρίσκουµε το καρτεσιανό γινόµενο της σχέσης Εργαζόµενοι µε τον εαυτό της µετονοµάζοντάς την σε Ε

Εργαζόµενοι × ρΕ(Εργαζόµενοι) Εργαζόµενοι.Μισθός Ε.Μισθός

3000 3000 3000 5000 3000 6000 5000 3000 5000 5000 5000 6000 6000 3000 6000 5000 6000 6000

• Έπειτα επιλέγουµε τις πλειάδες (σειρές) για τις οποίες ισχύει

εργαζόµενοι.µισθός<Ε.µισθός

(σεργαζόµενοι.µισθός<Ε.µισθός (Εργαζόµενοι × ρΕ(Εργαζόµενοι) ) ) Εργαζόµενοι.Μισθός Ε.Μισθός

3000 5000

3000 6000

5000 6000

Σελ. 86

Page 87: Βάσεις δεδομένων

7.13 Σύνθεση των τελεστών

• Έπειτα προβάλουµε µόνο τη στήλη Εργαζόµενοι.Μισθός

Περγαζόµενοι.µισθός(σεργαζόµενοι.µισθός<Ε.µισθός (Εργαζόµενοι × ρΕ(Εργαζόµενοι) )) Εργαζόµενοι.Μισθός

3000

5000

Αυτή η σχέση περιέχει όλες τις τιµές εκτός από την υψηλότερη. Την αφαιρούµε από την αρχική σχέση

Έτσι ολοκληρώνουµε το ερώτηµα βρίσκοντας τη διαφορά των δύο συνόλων

ΠΜισθός(Εργαζόµενοι) – ΠΕργαζόµενοι.Μισθός(σΕργαζόµενοι.Μισθός<Ε.Μισθός (Εργαζόµενοι × ρΕ(Εργαζόµενοι) ) )

Εργαζόµενοι.Μισθός

6000

Στην SQL το ερώτηµα γράφεται όπως παρακάτω:

(SELECT DISTINCT Εργαζόµενοι.Μισθός, FROM Εργαζόµενοι) EXCEPT

(SELECT DISTINCT Εργαζόµενοι.Μισθός,

FROM Εργαζόµενοι, Εργαζόµενοι AS Ε WHERE Εργαζόµενοι.Μισθός<Ε.Μισθός)

7.13 ΣΥΝΘΕΣΗ ΤΩΝ ΤΕΛΕΣΤΩΝ

Μπορούν να δηµιουργηθούν εκφράσεις χρησιµοποιώντας πολλαπλούς τελεστές

π.χ. συνδυασµός καρτεσιανού γινοµένου και επιλογής σA=Γ (R × S)

b10r2β

b20β2β

c10β2β

c10α2β

b10r1α

b20β1α

c10β1α

c10α1α

Ε∆ΓBA

b10r2β

b20β2β

c10β2β

c10α2β

b10r1α

b20β1α

c10β1α

c10α1α

Ε∆ΓBA

b10β2β

c20β2β

c10α1α

Ε∆ΓBA

b10β2β

c20β2β

c10α1α

Ε∆ΓBA

σA=Γ(r x s)

r x s

Σελ. 87

Page 88: Βάσεις δεδομένων

ΣΧΕΣΙΑΚΗ ΑΛΓΕΒΡΑ

7.14 ΠΑΡΑ∆ΕΙΓΜΑΤΑ ΕΡΩΤΗΣΕΩΝ ΣΧΕΣΙΑΚΗΣ ΑΛΓΕΒΡΑΣ

Θα χρησιµοποιήσουµε το παρακάτω παράδειγµα της βάσης δεδοµένων µιας τράπεζας

ενεργητικό

πόλη

όνοµα-υποκαταστήµατος

Υποκατάστηµα

ενεργητικό

πόλη

όνοµα-υποκαταστήµατος

Υποκατάστηµα

υπόλοιπο

όνοµα-υποκαταστήµατος

αριθµός-λογαριασµού

Λογαριασµός

υπόλοιπο

όνοµα-υποκαταστήµατος

αριθµός-λογαριασµού

Λογαριασµός

αριθµός-λογαριασµού

όνοµα-πελάτη

Καταθέτης

αριθµός-λογαριασµού

όνοµα-πελάτη

Καταθέτης

πόλη

οδός

όνοµα-πελάτη

Πελάτης

πόλη

οδός

όνοµα-πελάτη

Πελάτης

ποσό

όνοµα-υποκαταστήµατος

αριθµός-δανείου

∆άνειο

ποσό

όνοµα-υποκαταστήµατος

αριθµός-δανείου

∆άνειο

αριθµός-δανείου

όνοµα-πελάτη

∆ανειζόµενος

αριθµός-δανείου

όνοµα-πελάτη

∆ανειζόµενος

υποκατάστηµα (όνοµα-υποκαταστήµατος, πόλη, ενεργητικό)

πελάτης (όνοµα-πελάτη, οδός, πόλη)

λογαριασµός (αριθµός-λογαριασµού, όνοµα-υποκαταστήµατος, υπόλοιπο)

δάνειο (αριθµός-δανείου, όνοµα-υποκαταστήµατος, ποσό)

καταθέτης (όνοµα-πελάτη, αριθµός-λογαριασµού)

δανειζόµενος (όνοµα-πελάτη, αριθµός-δανείου)

Π.χ. Βρείτε τα δάνεια άνω των 1200.

σποσό > 1200 (δάνειο)

Π.χ. Βρείτε τον αριθµό δανείου για κάθε δάνειο ποσού µεγαλύτερου από 1200.

Παριθµός-δανείου(σποσό>1200(δάνειο))

Π.χ. Βρείτε τα ονόµατα όλων των πελατών που έχουν δάνειο, ή λογαριασµό ή και τα δύο, από την τράπεζα

Πόνοµα-πελάτη(δανειζόµενος) ∪ Πόνοµα-πελάτη(καταθέτης)

Σελ. 88

Page 89: Βάσεις δεδομένων

7.14 Παραδείγµατα Ερωτήσεων σχεσιακής άλγεβρας

Π.χ. Βρείτε τα ονόµατα όλων των πελατών που έχουν πάρει δάνειο από το υποκατάστηµα Κρήνης

Πόνοµα-πελάτης (σόνοµα-υποκαταστήµατος="Κρήνης" (σδανειζόµενος.αριθµός-δανείου=

δάνειο.αριθµός-δανείου(δανειζόµενος × δάνειο)))

Π.χ. Βρείτε τα ονόµατα όλων των πελατών που έχουν πάρει δάνειο από το υποκατάστηµα Κρήνης αλλά δεν έχουν λογαριασµό σε κανένα υποκατάστηµα της τράπεζας.

Πόνοµα-πελάτης (σόνοµα-υποκαταστήµατος ="Κρήνης" (σδανειζόµενος.αριθµός-δανείου = δάνειο.αριθµός-δανείου(δανειζόµενος ×

δάνειο))) – Πόνοµα-πελάτη(Λογαριασµός)

Π.χ. Βρείτε τα ονόµατα όλων των πελατών που έχουν πάρει δάνειο από το υποκατάστηµα Βενιζέλου

Πόνοµα-πελάτη(σόνοµα-υποκαταστήµατος="Βενιζέλου"(σδανειζόµενος.αριθµός-

δανείου=δάνειο.αριθµός-δανείου(δανειζόµενος × δάνειο)))

ή αλλιώς

Πόνοµα-πελάτη(σδάνειο.αριθµός-δανείου= δανειζόµενος.αριθµός-δανείου ( (σόνοµα-υποκαταστήµατος="Βενιζέλου"(δάνειο)) × δανειζόµενος) )

Π.χ. Βρείτε το υψηλότερο υπόλοιπο λογαριασµού. Μετονοµάστε τη σχέση λογαριασµός ως d. Η ερώτηση είναι

Πυπόλοιπο(λογαριασµός) – Πλογαριασµός.υπόλοιπο(σλογαριασµός.υπόλοιπο<d.υπόλοιπο (λογαριασµός × ρd(λογαριασµός) ) )

Σελ. 89

Page 90: Βάσεις δεδομένων

ΣΧΕΣΙΑΚΗ ΑΛΓΕΒΡΑ

7.15 ΕΠΙΣΗΜΟΣ ΟΡΙΣΜΟΣ ΤΗΣ ΚΛΕΙΣΤΟΤΗΤΑΣ ΤΩΝ ΒΑΣΙΚΩΝ ΠΡΑΞΕΩΝ

Έστω Ε1 και Ε2 εκφράσεις της σχεσιακής άλγεβρας. Οι ακόλουθες είναι όλες εκφράσεις της σχεσιακής άλγεβρας:

• Ε1 ∪ Ε2

• Ε1 – Ε2

• Ε1 × Ε2

• σP(Ε1), P είναι ένα κατηγόρηµα στις ιδιότητες της Ε1

• Πs(Ε1), S είναι µια λίστα που αποτελείται από γνωρίσµατα της Ε1.

• ρχ(Ε1), όπου x είναι το νέο όνοµα για το αποτέλεσµα της Ε1

Σελ. 90

Page 91: Βάσεις δεδομένων

7.16 Επιπρόσθετοι Τελεστές πράξεων

7.16 ΕΠΙΠΡΟΣΘΕΤΟΙ ΤΕΛΕΣΤΕΣ ΠΡΑΞΕΩΝ

Έχουν ορισθεί και επιπρόσθετοι τελεστές που δεν προσθέτουν δύναµη στη σχεσιακή άλγεβρα, αλλά απλοποιούν τις πιο συνηθισµένες ερωτήσεις.

• Τοµή συνόλων

• Συνένωση

• ∆ιαίρεση

• Ανάθεση (ή απόδοση τιµής)

• Γενικευµένη Προβολή

• Συναθροιστικές Συναρτήσεις

• Εξωτερική Συνένωση

7.17 ΤΕΛΕΣΤΗΣ ΤΟΜΗΣ ΣΥΝΟΛΩΝ

Ο τελεστής τοµής συνόλων συµβολίζεται µε το σύµβολο ∩. Το αποτέλεσµα της τοµής είναι ένας νέος πίνακας που αποτελείται από τις

επικαλυπτόµενες πλειάδες (πλειάδες που είναι κοινές σε όλους τους πίνακες υπό τοµή).

Συµβολισµός:

r ∩ s

Ορίζεται ως:

r ∩ s = t | t ∈ r και t ∈ s ∆εν προσθέτει επιπλέον δύναµη στη σχεσιακή άλγεβρα καθώς:

r ∩ s = r – (r – s) Για να είναι έγκυρη η r ∩ s.

• η r, s πρέπει να έχουν τον ίδιο αριθµό γνωρισµάτων

• Τα πεδία ορισµού πρέπει να είναι συµβατά

Π.χ. Βρείτε τα ονόµατα όλων των πελατών που έχουν και δάνεια και λογαριασµούς καταθέσεων στην τράπεζα.

Π (δανειζόµενος) ∩ Πόνοµα-πελάτη(καταθέτης) όνοµα-πελάτη

Σελ. 91

Page 92: Βάσεις δεδομένων

ΣΧΕΣΙΑΚΗ ΑΛΓΕΒΡΑ

Παράδειγµα Τελεστή Τοµής Συνόλων

ΒΑ

ΒΑ

Σχέση R

BA

BA

BA

BA

Σχέση R ∩ S:

Σχέση S

Παράδειγµα υλοποίησης στην SQL: (SELECT Α, Β FROM R) INTERSECT (SELECT Α, Β FROM S)

7.18 ΤΕΛΕΣΤΗΣ (ΦΥΣΙΚΗΣ) ΣΥΝΕΝΩΣΗΣ

Ο τελεστής φυσικής σύζευξης (ή συνένωσης) συµβολίζεται µε . Η φυσική σύζευξη (συνένωση) συνδυάζει το καρτεσιανό γινόµενο µε την επιλογή και την προβολή σε µία πράξη. Επιλέγει τις συστοιχίες του καρτεσιανού γινοµένου των δύο σχέσεων για τις οποίες ισχύει η ισότητα στις τιµές εκείνων των γνωρισµάτων που είναι κοινά και στις δύο σχέσεις και προβάλει µόνο µία φορά τα κοινά γνωρίσµατα. Τα διπλότυπα απαλείφονται όπως και στις άλλες σχεσιακές πράξεις.

Συµβολισµός:

r s

Έστω r και s σχέσεις στα σχήµατα R και S αντίστοιχα. Το αποτέλεσµα είναι µια σχέση R ∪ S το οποίο αποκτάται θεωρώντας κάθε ζευγάρι πλειάδων tr της r και ts της s.

Εάν το tr και το ts έχουν την ίδια τιµή για κάθε µία από τις ιδιότητες στην R ∩ S, µια πλειάδα t προστίθεται στο αποτέλεσµα, όπου

• το t έχει την ίδια τιµή µε το tr στην r.

• το t έχει την ίδια τιµή µε το ts στην s.

Παράδειγµα:

R = (Α, Β, Γ, ∆)

S = (Ε, Β, ∆)

Το σχήµα του αποτελέσµατος είναι (Α, Β, Γ, ∆, Ε)

Σελ. 92

Page 93: Βάσεις δεδομένων

7.18 Τελεστής (Φυσικής) Συνένωσης

Η φυσική σύζευξη r s ορίζεται ως:

Πr.A,r.B,r.Γ,r.∆ ,s.Ε(σr.Β=s.B r.∆=s.∆(r × s)) ΒΗΜΑ 1: Υπολογίζουµε το καρτεσιανό γινόµενο των δυο πινάκων

(r × s) ΒΗΜΑ 2: Επάνω στο καρτεσιανό γινόµενο κάνουµε επιλογή στα κοινά

γνωρίσµατα.

σr.Β=s.B r.∆=s.∆(r × s) ΒΗΜΑ 3: Προβολή (θέλουµε τα κοινά γνωρίσµατα να προβάλλονται µόνο µια

φορά).

συµβολίζουµε τα κοινά γνωρίσµατα των r και s µε head(R)∪head(S)= επικεφαλίδα(R)∪επικεφαλίδα(S)

Πhead(R)∪head(S) (σr.Β=s.B r.∆=s.∆(r × s))

Παράδειγµα Τελεστή Φυσικής Συνένωσης

Οι σχέσεις r, s:

λβ2δ

κγ1α

λβ4γ

κγ2β

κα1α

∆ΓBA

λβ2δ

κγ1α

λβ4γ

κγ2β

κα1α

∆ΓBA

ελ3

δλ2

γκ1

βκ3

ακ1

Ε∆B

ελ3

δλ2

γκ1

βκ3

ακ1

Ε∆B

δλβ2δ

γκγ1α

ακγ1α

γκα1α

ακα1α

Ε∆ΓΒΑ

δλβ2δ

γκγ1α

ακγ1α

γκα1α

ακα1α

Ε∆ΓΒΑ

r s

r s

Παράδειγµα υλοποίησης στην SQL: SELECT r.Α, r.Β, r.Γ, r.∆, s.Ε FROM r,s WHERE r.Β= s.Β AND r.∆= s.∆

ή αλλιώς µε τον τελεστή INNER JOIN στην πρόταση FROM

SELECT r.Α, r.Β, r.Γ, r.∆, s.Ε FROM r INNER JOIN s ON r.Β= s.Β AND r.∆= s.∆

Σελ. 93

Page 94: Βάσεις δεδομένων

ΣΧΕΣΙΑΚΗ ΑΛΓΕΒΡΑ

Π.χ. Βρείτε τα ονόµατα όλων των πελατών που έχουν και δάνειο και λογαριασµό καταθέσεων στο υποκατάστηµα Κρήνης

Πόνοµα-πελάτη(σόνοµα-υποκαταστήµατος='Κρήνης'(∆ανειζόµενος Καταθέτης) Προσέξτε ότι αυτό είναι ισοδύναµο µε το παράδειγµα της τοµής

Πόνοµα-πελάτη(σόνοµα-υποκαταστήµατος='Κρήνης'(∆ανειζόµενος)) ∩ Πόνοµα-πελάτη(σόνοµα-υποκαταστήµατος='Κρήνης'(Καταθέτης))

Βλέπουµε δηλαδή ότι υπάρχουν πολλοί τρόποι γραφής ενός ερωτήµατος στη σχεσιακή άλγεβρα (όπως και στη γλώσσα SQL)

7.19 ΤΕΛΕΣΤΗΣ ∆ΙΑΙΡΕΣΗΣ

Συµβολίζεται µε r ÷ s

Είναι κατάλληλος για τις ερωτήσεις που περιλαµβάνουν τη φράση «για όλα».

Έστω r και s σχέσεις στα σχήµατα R και S αντίστοιχα, όπου

R = (A1, … , Am, B1, …, Bn) και S = (B1, …, Bn)

Το αποτέλεσµα της r ÷ s είναι µια σχέση στο σχήµα

R – S = (A1, …, Am)

r ÷ s = t | t ∈ ΠR-S (r) ∧∀u ∈ s (tu ∈ r)

Παράδειγµα Τελεστή ∆ιαίρεσης

ΒΑ

ΒΑ

2

1

Β

2

1

Β

β

α

Α

β

α

Α

Οι σχέσεις r και s:

rs

r ÷ s:

Σελ. 94

Page 95: Βάσεις δεδομένων

7.20 Τελεστής Ανάθεσης

Άλλο Παράδειγµα Τελεστή ∆ιαίρεσης

A B

αααββγγγ

aaaaaaaa

C D

αγγγγγγβ

aabababb

E

11113111

D

ab

E

11

A B

αγ

aa

C

γγ

r s

Οι σχέσεις r και s:

r ÷ s:

Ιδιότητα

Έστω q – r ÷ s

Τότε q είναι η µεγαλύτερη σχέση που ικανοποιεί την

q × s ⊆ r

Η πράξη της διαίρεσης µπορεί να ορισθεί µε τις βασικές πράξεις της σχεσιακής άλγεβρας.

Ορισµοί:Έστω r(R) και s(S) οι σχέσεις και έστω S ⊆ R

r ÷ s = ΠR-S (r) – ΠR-S((ΠR-S (r) × s) – ΠR-S,S (r))

ΠR-S,S (r) απλώς ανακατατάσσει τις ιδιότητες της r ΠR-S((ΠR-S (r) x s) - ΠR-S,S (r)) δίνει αυτές τις πλειάδες t στην ΠR-S (r) για

τις οποίες κάποια πλειάδα u ∈ s, tu ∉ r

Η διαίρεση στην SQL υλοποιείται µε την υποπρόταση EXIST:

7.20 ΤΕΛΕΣΤΗΣ ΑΝΑΘΕΣΗΣ

Ο τελεστής ανάθεσης (ή τελεστής απόδοσης τιµής) συµβολίζεται µε .

Μερικές φορές είναι χρήσιµο να µπορούµε να γράφουµε µία έκφραση στη σχεσιακή άλγεβρα χρησιµοποιώντας µία προσωρινή µεταβλητή σχέσης (όπως στο παράδειγµα της διαίρεσης)

∆εν προστίθεται επιπλέον σχέση στη βάση δεδοµένων, αλλά η µεταβλητή σχέσης που δηµιουργείται µπορεί να χρησιµοποιηθεί σε εκφράσεις που ακολουθούν.

Σελ. 95

Page 96: Βάσεις δεδομένων

ΣΧΕΣΙΑΚΗ ΑΛΓΕΒΡΑ

Η ανάθεση σε µία µόνιµη σχέση αποτελεί πράξη τροποποίησης της βάσης δεδοµένων.

Ο τελεστής ανάθεσης ( ) παρέχει έναν άνετο τρόπο για τη σύνταξη σύνθετων εκφράσεων, εγγραφή προγράµµατος ως ένα σειριακό πρόγραµµα που αποτελείται από σειρές αναθέσεων ακολουθούµενες από µια έκφραση της οποίας η τιµή εµφανίζεται ως αποτέλεσµα της ερώτησης.

Η ανάθεση πρέπει να γίνεται σε µια προσωρινή µεταβλητή σχέσης

Παράδειγµα: Γράψε r ÷ s ως

temp1 ← ∏R-S (r) temp2 ← ∏R-S ((temp1 x s) – ∏R-S,S (r)) result = temp1 – temp2

• Το αποτέλεσµα στα δεξιά του βέλους ανατίθεται στη µεταβλητή σχέσης στα αριστερά του βέλους.

• Μπορεί να χρησιµοποιηθεί µεταβλητή στις ακόλουθες εκφράσεις.

Π.χ. Βρείτε όλους τους πελάτες που έχουν έναν λογαριασµό τουλάχιστον στα υποκαταστήµατα του Βόλου και της Λάρισας.

Ερώτηση 1

∏ΟΠ(σΟΤ=“Βόλος”(καταθέτης λογαριασµός)) ∩ ∏ΟΠ(σΟΤ=“Λάρισα”(καταθέτης λογαριασµός)) όπου ΟΠ δηλώνει το όνοµα πελάτη και ΟΤ το όνοµα υποκαταστήµατος της

τράπεζας.

Ερώτηση 2

∏οπ, οτ (καταθέτης λογαριασµός) ÷ ρπροσωρ(οτ) ((“Βόλος”), (“Λάρισα”))

Π.χ. Βρείτε όλους τους πελάτες που έχουν λογαριασµό σε όλα τα υποκαταστήµατα της Θεσσαλονίκης (η πράξη της διαίρεσης).

∏όνοµα-πελάτη, όνοµα-υποκαταστήµατος (καταθέτης λογαριασµός) ÷ ∏όνοµα-υποκαταστήµατος (σπόλη-υποκαταστήµατος = “Θεσσαλονίκη” (υποκατάστηµα))

7.21 ΓΕΝΙΚΕΥΜΕΝΗ ΠΡΟΒΟΛΗ

Η γενικευµένη προβολή επεκτείνει τη λειτουργία της προβολής επιτρέποντας αριθµητικές εκφράσεις να χρησιµοποιηθούν στη λίστα προβολής των γνωρισµάτων

ΠF1, F2, …, Fn(E)

Σελ. 96

Page 97: Βάσεις δεδομένων

7.22 Συναθροιστικές Συναρτήσεις

E είναι οποιαδήποτε σχέση που έχει προκύψει σαν έκφραση της σχεσιακής άλγεβρας

Κάθε ένα από τα F1, F2, …, Fn είναι αριθµητικές εκφράσεις που αφορούν σταθερές και γνωρίσµατα στο σχήµα του Ε.

Π.χ. Θεωρήστε µια σχέση Πιστώσεις(όνοµα_πελάτη, υπόλοιπο_πίστωσης), βρείτε πόσο ακόµα µπορεί κάθε πελάτης να ξοδέψει αν το όριο πίστωσης γίνει 10000:

Πόνοµα_πελάτη, 10000 – υπόλοιπο_πίστωσης(Πιστώσεις) Παράδειγµα υλοποίησης στην SQL:

SELECT όνοµα_πελάτη, 10000–υπόλοιπο_πίστωσης FROM Πιστώσεις

7.22 ΣΥΝΑΘΡΟΙΣΤΙΚΕΣ ΣΥΝΑΡΤΗΣΕΙΣ

Η συναθροιστική συνάρτηση παίρνει ένα σύνολο τιµών και επιστρέφει µια µεµονωµένη τιµή ως αποτέλεσµα.

αριθµός τιµώνcount

άθροισµα τιµώνsum

µέγιστη τιµήmax

ελάχιστη τιµήmin

µέσος όροςavg

αριθµός τιµώνcount

άθροισµα τιµώνsum

µέγιστη τιµήmax

ελάχιστη τιµήmin

µέσος όροςavg

Συναθροιστική πράξη στη σχεσιακή άλγεβρα:

G1, G2, …, Gn g F1(A1), F2(A2), …, Fn(An) (E) όπου:

E είναι οποιαδήποτε έκφραση της σχεσιακής άλγεβρας.

Κάθε Fi είναι µια συναθροιστική συνάρτηση.

Κάθε Αi είναι όνοµα γνωρίσµατος.

G1, G2, …, Gn είναι µια λίστα από τα γνωρίσµατα στα οποία θα εφαρµόσουµε οµαδοποίηση (µπορεί να είναι και άδεια)

Σελ. 97

Page 98: Βάσεις δεδομένων

ΣΧΕΣΙΑΚΗ ΑΛΓΕΒΡΑ

Παράδειγµα Συναθροιστικής πράξης

Σχέση r

10ββ

3ββ

7βα

7αα

ΓBA

10ββ

3ββ

7βα

7αα

ΓBA

27

άθροισµα-Γ

27

άθροισµα-Γgάθροισµα(Γ)(r)

Παράδειγµα υλοποίησης στην SQL: SELECT sum(Γ) FROM r

Παράδειγµα Συναθροιστικής πράξης µε οµαδοποίηση

Όνοµα-υποκαταστήµατος Αριθµός-λογαριασµού υπόλοιποPerryridgePerryridgeBrightonBrightonRedwood

A-102A-201A-217A-215A-222

400900750750700

λογαριασµός

Η σχέση λογαριασµός οµαδοποιηµένη κατά το όνοµα-υποκαταστήµατος:

όνοµα-υποκαταστήµατοςgsum(υπόλοιπο)(λογαριασµός)

Όνοµα-υποκαταστήµατος υπόλοιποPerryridgeBrightonRedwood

13001500700

Το αποτέλεσµα της συνάθροισης δεν έχει όνοµα.

Μπορεί να χρησιµοποιηθεί η πράξη της µετονοµασίας για να δοθεί όνοµα.

Σελ. 98

Page 99: Βάσεις δεδομένων

7.22 Συναθροιστικές Συναρτήσεις

Για ευκολία, επιτρέπεται η µετονοµασία ως µέρος της συναθροιστικής συνάρτησης.

όνοµα-υποκαταστήµατοςgsum(υπόλοιπο) as άθρ-υπόλοιπο(λογαριασµός) Όνοµα-υποκαταστήµατος άθρ-υπόλοιποPerryridgeBrightonRedwood

13001500700

Παράδειγµα υλοποίησης στην SQL: SELECT όνοµα-υποκαταστήµατος , SUM(υπόλοιπο) AS άθρ-υπόλοιπο

FROM λογαριασµός

GROUP BY όνοµα-υποκαταστήµατος

Μπορεί να χρησιµοποιηθεί και σε συνδυασµό µε τον τελεστή ανάθεσης ( ).

Π.χ. Θεωρήστε τη σχέση Απασχόληση (Ε_ΑΡΤΑΥΤ, Κ_ΕΡΓΟ, ΩΡΕΣ) που χρησιµοποιείται για την παρακολούθηση των ωρών εργασίας των εργαζοµένων στα διάφορα έργα της εταιρίας. Εµφανίστε στην προσωρινή σχέση R(ΕΡΓΟ, ΜΕΣΗ_ΑΠΑΣΧ) τη µέση τιµή των ωρών απασχόλησης των εργαζοµένων σε κάθε έργο.

Η έκφραση της σχεσιακής άλγεβρας θα είναι

R(ΕΡΓΟ, ΜΕΣΗ_ΑΠΑΣΧ) Κ_ΕΡΓΟgavg(ΩΡΕΣ) (ΑΠΑΣΧΟΛΗΣΗ)

Σελ. 99

Page 100: Βάσεις δεδομένων

ΣΧΕΣΙΑΚΗ ΑΛΓΕΒΡΑ

7.23 ΕΞΩΤΕΡΙΚΗ ΣΥΝΕΝΩΣΗ (ΣΥΖΕΥΞΗ)

Μια επέκταση της συνένωσης που αποτρέπει την απώλεια πληροφοριών.

Υπολογίζει τη συνένωση και στη συνέχεια προσθέτει τις πλειάδες της µιας σχέσης που δεν συνενώνονται µε την άλλη σχέση, στη σχέση του αποτελέσµατος.

Χρησιµοποιεί τις null τιµές:

• Η τιµή null δηλώνει ότι η τιµή δεν είναι γνωστή ή ότι δεν υπάρχει.

• Όλες οι συγκρίσεις που εµπλέκουν την τιµή null επιστρέφουν άγνωστο (unknown).

Π.χ. Θεωρήστε το παρακάτω σχεσιακό σχήµα

ποσό

όνοµα-υποκαταστήµατος

αριθµός-δανείου

∆άνειο

ποσό

όνοµα-υποκαταστήµατος

αριθµός-δανείου

∆άνειο

αριθµός-δανείου

όνοµα-πελάτη

∆ανειζόµενος

αριθµός-δανείου

όνοµα-πελάτη

∆ανειζόµενος

Η σχέση ∆άνειο Η σχέση ∆ανειζόµενος

Αριθµός-δανείου ποσόL-170L-230L-260

300040001700

Όνοµα-υποκαταστήµατοςDowntownRedwoodPerryridge

Όνοµα-πελάτη Αριθµός-δανείουJonesSmithHayes

L-170L-230L-155

Η Εσωτερική συνένωση: θα δώσει σαν αποτέλεσµα

δάνειο δανειζόµενος

Αριθµός-δανείου ποσόL-170L-230

30004000

Όνοµα-πελάτηJonesSmith

Όνοµα-υποκαταστήµατοςDowntownRedwood

Παράδειγµα υλοποίησης στην SQL: SELECT δάνειο.αριθµός-δανείου, δάνειο.Όνοµα-υποκαταστήµατος,

δάνειο.ποσό, δανειζόµενος.Όνοµα-πελάτη

FROM δάνειο INNER JOIN δανειζόµενος ON δάνειο.αριθµός-δανείου= δανειζόµενος.αριθµός-δανείου

Σελ. 100

Page 101: Βάσεις δεδομένων

7.23 Εξωτερική Συνένωση (σύζευξη)

Η Αριστερά εξωτερική συνένωση:

δάνειο δανειζόµενος

L-170L-230L-260

300040001700

JonesSmithnull

DowntownRedwoodPerryridge

Αριθµός-δανείου ποσό Όνοµα-πελάτηΌνοµα-υποκαταστήµατος

Παράδειγµα υλοποίησης στην SQL: SELECT δάνειο.αριθµός-δανείου, δάνειο.Όνοµα-υποκαταστήµατος,

δάνειο.ποσό, δανειζόµενος.Όνοµα-πελάτη

FROM δάνειο LEFT JOIN δανειζόµενος ON δάνειο.αριθµός-δανείου= δανειζόµενος.αριθµός-δανείου

∆εξιά εξωτερική συνένωση:

δάνειο δανειζόµενος

L-170L-230L-155

30004000null

JonesSmithHayes

DowntownRedwoodnull

Αριθµός-δανείου ποσό Όνοµα-πελάτηΌνοµα-υποκαταστήµατος

Παράδειγµα υλοποίησης στην SQL: SELECT δάνειο.αριθµός-δανείου, δάνειο.Όνοµα-υποκαταστήµατος,

δάνειο.ποσό, δανειζόµενος.Όνοµα-πελάτη

FROM δάνειο RIGHT JOIN δανειζόµενος ON δάνειο.αριθµός-δανείου= δανειζόµενος.αριθµός-δανείου

Πλήρης εξωτερική συνένωση:

δάνειο δανειζόµενος

L-170L-230L-260L-155

300040001700null

JonesSmithnullHayes

DowntownRedwoodPerryridgenull

Αριθµός-δανείου ποσό Όνοµα-πελάτηΌνοµα-υποκαταστήµατος

Είναι η ένωση αριστερής και δεξιάς εξωτερικής συνένωσης

Σελ. 101

Page 102: Βάσεις δεδομένων

ΣΧΕΣΙΑΚΗ ΑΛΓΕΒΡΑ

7.24 NULL ΤΙΜΕΣ

Είναι πιθανό ορισµένες πλειάδες να έχουν null τιµές, δηλωµένες ως null, για ορισµένα από τα γνωρίσµατά τους.

Το null δηλώνει µια άγνωστη τιµή ή τιµή που δεν υπάρχει.

Το αποτέλεσµα οποιασδήποτε αριθµητικής έκφρασης που συµπεριλαµβάνει το null είναι null.

Οι συναθροιστικές συναρτήσεις απλώς αγνοούν το null.

Στην απαλοιφή διπλότυπων και στην οµαδοποίηση, το null χρησιµοποιείται όπως οποιαδήποτε άλλη τιµή, και δύο null θεωρούνται πως είναι το ίδιο.

7.25 Η ΛΟΓΙΚΗ ΤΡΙΩΝ ΤΙΜΩΝ (TRUE-UNKNOWN-FALSE)

Οι συγκρίσεις µε null τιµές επιστρέφουν την τιµή unknown

• Εάν χρησιµοποιούνταν η τιµή false αντί της unknown, τότε not (A < 5) δε θα ήταν ισοδύναµο µε A >= 5

Οι λογικές πράξεις χρησιµοποιώντας την τιµή αληθείας unknown:

• OR: (unknown or true) = true, (unknown or false) = unknown (unknown or unknown) = unknown

• AND: (true and unknown) = unknown, (false and unknown) = false, (unknown and unknown) = unknown

• NOT: (not unknown) = unknown

• Το αποτέλεσµα του κατηγορήµατος επιλογή P θεωρείται ως false αν αποτιµάται σε unknown

• “P is unknown” αποτιµάται ως true αν το κατηγόρηµα P θεωρηθεί ως unknown

Σελ. 102

Page 103: Βάσεις δεδομένων

7.26 Τροποποίηση της βάσης δεδοµένων

7.26 ΤΡΟΠΟΠΟΙΗΣΗ ΤΗΣ ΒΑΣΗΣ ∆Ε∆ΟΜΕΝΩΝ

Έως τώρα είδαµε πως εξάγουµε πληροφορίες από τη βάση δεδοµένων. Χρειάζεται όµως και να εισάγουµε, να διαγράφουµε ή να αλλάζουµε τις πληροφορίες. Όλες οι τροποποιήσεις (ενηµερώσεις) εκφράζονται µέσω του τελεστή ανάθεσης.

υποκατάστηµα (όνοµα-υποκαταστήµατος, πόλη, ενεργητικό) πελάτης (όνοµα-πελάτη, οδός, πόλη) λογαριασµός (αριθµός-λογαριασµού, όνοµα-υποκαταστήµατος, υπόλοιπο) δάνειο (αριθµός-δανείου, όνοµα-υποκαταστήµατος, ποσό) καταθέτης (όνοµα-πελάτη, αριθµός-λογαριασµού) δανειζόµενος (όνοµα-πελάτη, αριθµός-δανείου)

7.26.1 ∆ιαγραφή (deletion) Η διαγραφή εκφράζεται µέσω της σχεσιακής άλγεβρας περίπου σαν ένα

ερώτηµα.

Αντί όµως να προβληθούν οι πλειάδες που θα επιλέξουµε, θα διαγραφούν

Στη σχεσιακή άλγεβρα ή διαγραφή είναι της µορφής

r r – E όπου r είναι µία σχέση και Ε είναι ένα ερώτηµα της σχεσιακής άλγεβρας. Οι

πλειάδες της r για τις οποίες E βγαίνει true θα διαγραφούν.

Π.χ. διαγράψτε όλες τις εγγραφές λογαριασµών στο υποκατάστηµα Κρήνης

Λογαριασµός Λογαριασµός – σόνοµα-

υποκαταστήµατος="Κρήνης"(Λογαριασµός)

Π.χ. ∆ιαγράψτε όλες τις εγγραφές δανείων µε ποσό µεταξύ 0 και 10

∆άνειο ∆άνειο – σποσό>=0 and ποσό<10(∆άνειο)

Στην SQL υλοποιείται µε τη σύνταξη:

DELETE FROM προορισµός WHERE συνθήκη Ε

7.26.2 Εισαγωγή (insertion) Για την εισαγωγή δεδοµένων σε µία σχέση, είτε καθορίζουµε µία συστοιχία που

θα εισαχθεί, είτε γράφουµε ένα ερώτηµα το αποτέλεσµα του οποίου θα είναι το σύνολο των συστοιχιών που θα εισαχθούν. Οι τιµές των γνωρισµάτων που θα εισαχθούν πρέπει να προέρχονται από τα πεδία ορισµού του κάθε γνωρίσµατος.

Η εισαγωγή εκφράζεται στη σχεσιακή άλγεβρα µε τη µορφή

r r ∪ E όπου r είναι µία σχέση και Ε είναι ένα ερώτηµα της σχεσιακής άλγεβρας.

Σελ. 103

Page 104: Βάσεις δεδομένων

ΣΧΕΣΙΑΚΗ ΑΛΓΕΒΡΑ

Η εισαγωγή µίας µόνο συστοιχίας εκφράζεται επιτρέποντας στο Ε να είναι µία σταθερή σχέση που έχει µία συστοιχία

Π.χ. Θεωρήστε τις σχέσεις Λογαριασµός(αριθµός-λογαριασµού, όνοµα-υποκαταστήµατος, υπόλοιπο) και Καταθέτης(όνοµα-πελάτη, αριθµός-λογαριασµού) και εισάγεται τις πληροφορίες που καθορίζουν ότι ο πελάτης "Smith" έχει 12000 στον λογαριασµό Α-944 του υποκαταστήµατος Κρήνης

Λογαριασµός Λογαριασµός ∪ ( Α-944, "Smith", 12000)

Καταθέτης Καταθέτης ∪ ("Smith", Α-944)

Στην SQL υλοποιείται µε τη σύνταξη: INSERT προέλευση INTO προορισµός

7.26.3 Τροποποίηση (updating) Η τροποποίηση (ή ενηµέρωση) επιτρέπει να αλλάξουµε κάποιες τιµές σε µία

συστοιχία χωρίς να τις αλλάξουµε απαραίτητα όλες. Ο τελεστής τροποποίησης που χρησιµοποιείται συµβολίζεται µε το µικρό ελληνικό γράµµα δέλτα (δ)

Η έκφραση της τροποποίησης στη σχεσιακή άλγεβρα είναι της µορφής

δΑ Ε(r) όπου r είναι µία σχέση µε γνώρισµα Α που της ανατίθεται η τιµή της έκφρασης

Ε. Η έκφραση Ε είναι µια οποιαδήποτε αριθµητική έκφραση µε σταθερές και γνωρίσµατα της σχέσης r.

Π.χ. Αυξήστε όλα τα υπόλοιπα λογαριασµού κατά 5 τις εκατό πληρώνοντας έτσι τον τόκο

δυπόλοιπο υπόλοιπο*1,05(Λογαριασµός) Αυτή η δήλωση εφαρµόζεται σε κάθε συστοιχία της σχέσης Λογαριασµός

Π.χ. Για να δηµιουργήσετε δύο διαφορετικά ποσοστά τόκου, ανάλογα µε το υπόλοιπο,

δυπόλοιπο υπόλοιπο*1,06(συπόλοιπο>100000(Λογαριασµός) )

δυπόλοιπο υπόλοιπο*1,05(συπόλοιπο≤100000(Λογαριασµός) ) Σηµειώστε εδώ ότι η σειρά µε την οποία θα εκτελέσουµε τις δύο πράξεις έχει

σηµασία.

Στην SQL υλοποιείται µε τη σύνταξη: UPDATE προορισµός SET απόδοση-τιµών

Σελ. 104

Page 105: Βάσεις δεδομένων

8.1 Εισαγωγή

8 Η ΓΛΩΣΣΑ ΒΑΣΕΩΝ ∆Ε∆ΟΜΕΝΩΝ SQL

8.1 ΕΙΣΑΓΩΓΗ

Η SQL (Structured Query Language - ∆οµηµένη Γλώσσα Ερωτηµάτων) είναι µία σχεσιακή γλώσσα βάσεων δεδοµένων η οποία σχεδιάστηκε και υλοποιήθηκε από την IBM στα πλαίσια του ερευνητικού της προγράµµατος System R που απέβλεπε στην ανάπτυξη ενός πρότυπου σχεσιακού συστήµατος βάσεων δεδοµένων (ΣΣ∆Β∆). Αρχικά η SQL ονοµαζόταν SEQUEL (από το Structured English QUery Language, Γλώσσα Ερωτήσεων ∆οµηµένων Αγγλικών). Τα δύο πρώτα ΣΣ∆Β∆ που διατέθηκαν στο εµπόριο και βασίζονταν στην SQL ήταν το ORACLE από την Relational Software Inc. (σήµερα ORACLE Corporation) το 1979 και το SQL/DS από την IBM το 1982.

Αργότερα πολλοί άλλοι κατασκευαστές προϊόντων λογισµικού ανακοίνωσαν τη διάθεση στο εµπόριο τέτοιων ΣΣ∆Β∆ που βασίζονταν στην SQL. Σήµερα, υπάρχουν δεκάδες τέτοια εµπορικά ΣΣ∆Β∆ που λειτουργούν σε υπολογιστές και λειτουργικά συστήµατα διαφόρων δυναµικοτήτων και χαρακτηριστικών, όπως το DB2 από την IBM, το ORACLE από την ORACLE Corporation, το INGRES από την INGRES Corporation, το SYBASE από την SYBASE Inc., το INFORMIX από την INFORMIX Software, το MS-SQL Server µία συµπαραγωγή από την SYBASE Inc. και την Microsoft, το dBASE IV/SQL από την Ashton-Tate. Για τα σχεσιακά συστήµατα της αγοράς των προσωπικών υπολογιστών το λογισµικό Access (Microsoft), το Paradox (Borland), Q&A (Symantec), FileMaker Pro (Claris Corp.), Approach (Lotus). Επίσης αρκετά διατίθενται δωρεάν σαν σχεσιακά συστήµατα ανοιχτού-κώδικα (open-source) όπως τα PostgreSQL , MySQL, BerkeleyDB κλπ. Έτσι, η SQL κατέστη βιοµηχανικό πρότυπο στο χώρο των σχεσιακών βάσεων δεδοµένων.

Όµως η SQL κατέστη και επίσηµο πρότυπο. Το 1982 το Αµερικάνικο Εθνικό Ινστιτούτο Τυποποίησης (American National Standards Institute - ANSI) και ο ∆ιεθνής Οργανισµός Προτύπων (International Standards Organization -ISO) ανέθεσαν στη µόνιµη επιτροπή του X3H2 να συντάξει µία πρόταση για µία πρότυπη σχεσιακή γλώσσα. Η πρόταση της επιτροπής βασίστηκε στην έκδοση της SQL και επικυρώθηκε από το ANSI το 1986 οδηγώντας σε µια τυποποιηµένη έκδοση της SQL (ANSI 1986), που λέγεται SQL-86 ή SQL. Το 1992 αναπτύχθηκε ένα αναθεωρηµένο και πολύ πιο εκτεταµένο πρότυπο µε το όνοµα SQL2 (αναφέρεται και ως SQL-92) και το 1999 η SQL3, που αποτελεί µια περαιτέρω επέκταση της SQL µε αντικειµενοστρεφή χαρακτηριστικά. Εδώ θα ακολουθήσουµε το πρότυπο της SQL2.

Μέχρι σήµερα υπάρχουν µερικές διαφορές µεταξύ της πρότυπης SQL και των υλοποιήσεών της στα διαθέσιµα στο εµπόριο ΣΣ∆Β∆. Πάντως οι περισσότερες αποκλίνουν ελάχιστα, γεγονός που έχει θετικό αντίκτυπο στη γενική αποδοχή της SQL ως σχεσιακής γλώσσας.

Αν και το όνοµα της δηλώνει ότι η SQL χρησιµοποιείται για την υποβολή ερωτηµάτων (σχεσιακών πράξεων) προς µία σχεσιακή βάση δεδοµένων, η SQL είναι κάτι πολύ ευρύτερο. Η SQL έχει σαν συστατικά στοιχεία της µια γλώσσα ορισµού δεδοµένων (Data Definition Language, DDL) και όψεων και µια γλώσσα χειρισµού

Σελ. 105

Page 106: Βάσεις δεδομένων

Η ΓΛΏΣΣΑ ΒΆΣΕΩΝ ∆Ε∆ΟΜΈΝΩΝ SQL

δεδοµένων (Data Manipulation Language, DML) καθώς και εντολών για καθορισµό περιορισµών και εξέλιξης του σχήµατος.

Η SQL είναι ανεξάρτητη από την δοµή της βάσης δεδοµένων. Η ροή των πληροφοριών µεταξύ του χρήστη και της βάσης δεδοµένων είναι όµοια µε την παρακάτω εικόνα

Το DBMS έχει τον έλεγχο της διαχείρισης της βάσης δεδοµένων. Οι αιτήσεις στέλνονται στο DBMS όπου επεξεργάζονται και αλλάζουν σε εντολές ανάγνωσης/εγγραφής προς το διαχειριστή των αρχείων της βάσης.

Η SQL µπορεί να ελέγχει όλες τις λειτουργίες για:

• Ορισµό δεδοµένων

• Ανάκτηση δεδοµένων

• Χειρισµό δεδοµένων

• Έλεγχο πρόσβασης (Εξουσιοδότηση)

• Ακεραιότητα δεδοµένων

• Κοινή χρήση δεδοµένων και Έλεγχο Συναλλαγών

Τα κύρια πλεονεκτήµατα της SQL είναι:

• Ανεξαρτησία κατασκευαστή. Αλλάζοντας ΣΣ∆Β∆ συνήθως δεν χρειάζεται να ξαναγραφεί ο κώδικας SQL.

• Υψηλού-επιπέδου γλωσσική δοµή (English like), που κάνει εύκολη τη χρήση της γλώσσας.

• Τυποποίηση. Η τυποποίηση επικυρώθηκε από το ANSI και τον ISO.

• ∆υναµική διαχείριση δεδοµένων. Προσφέρει προχωρηµένες εντολές επεξεργασίας που επιτρέπουν την ενσωµάτωσή της καθώς και τα ερωτήµατα πολλαπλών επιπέδων.

Σελ. 106

Page 107: Βάσεις δεδομένων

8.1 Εισαγωγή

H SQL έχει διάφορα τµήµατα: Γλώσσα Ορισµού ∆εδοµένων (DDL)

CREATE | DROP | ALTER TABLE (base table) CREATE | DROP | ALTER VIEW (virtual table) CREATE | DROP | ALTER INDEX (index table) CREATE TABLE SUPPLIERS ( S_No NUMBER(4) NOT NULL, S_Name CHAR(25), S_City CHAR(20) ); CREATE INDEX Supplier_Name ON SUPPLIERS(S_Name);

Γλώσσα Χειρισµού ∆εδοµένων (DML)

SELECT αναζήτηση SELECT * FROM SUPPLIERS WHERE S_City='Athens'; INSERT εισαγωγή εγγραφής INSERT INTO SUPPLIERS VALUES ( 043, 'John', 'Athens'); DELETE διαγραφή εγγραφής DELETE FROM SUPPLIERS WHERE S_No=043; UPDATE τροποποίηση εγγραφής UPDATE SUPPLIERS SET S_City='Patra' WHERE S_No=043;

Ενσωµατωµένη Γλώσσα Χειρισµού ∆εδοµένων (Static SQL) (Dynamic SQL)

EXEC SQL DECLARE Sinfo CURSOR FOR SELECT S_name, S_sity FROM SUPPLIERS ORDER BY S_name; do EXEC SQL FETCH sinfo INTO : sname, : ssity; ……………….. EXEC SQL CLOSE sinfo; CString CDataSourceSet::GetDefaultConnect() return ODBC;DSN=DataSource;"; CString CDataSourceSet::GetDefaultSQL() return "SELECT * FROM SUPPLIERS ORDER BY S_Name";

Ορισµό Όψεων CREATE VIEW ATHENS_SUPPLIERS AS SELECT S_No, S_Name, S_City FROM SUPPLIERS WHERE S_City="ATHENS";

Εξουσιοδότηση (authentication)

CREATE | DROP | ALTER User CREATE USER John IDENTIFIED BY Johns-password; GRANT CONNECT TO John; GRANT SELECT, UPDATE ON SUPPLIERS TO John; REVOKE SELECT ON SUPPLIERS FROM John;

Ακεραιότητα CREATE DOMAIN S_No AS INTEGER CONSTRAINT Έλεγχος-Αριθµού-Προµηθευτή CHECK (S_No >0); CREATE ASSERTION <Όνοµα-δήλωσης> CHECK <Κατηγόρηµα>; DEFINE TRIGGER <όνοµα> ON UPDATE OF SUPPLIERS (…)

Έλεγχο Συναλλαγών SQL> SET TRANSACTION; INSERT INTO CUSTOMERS VALUES ('SMITH', 'JOHN'); SQL> COMMIT;

Σελ. 107

Page 108: Βάσεις δεδομένων

Η ΓΛΏΣΣΑ ΒΆΣΕΩΝ ∆Ε∆ΟΜΈΝΩΝ SQL

Παρακάτω θα αναλύσουµε περισσότερο τα τµήµατα των:

Γλώσσα Ορισµού ∆εδοµένων (Data Definition Language -DDL) - ορισµός, δηµιουργία, τροποποίηση και διαγραφή σχήµατος.

Γλώσσα Χειρισµού ∆εδοµένων (Data Manipulation Language -DML) - ορισµός, δηµιουργία, τροποποίηση, διαγραφή και επιλογή δεδοµένων (γλώσσα ερωτήσεων).

8.2 ΒΑΣΙΚΗ ΣΥΝΤΑΞΗ ΓΛΩΣΣΑΣ ΧΕΙΡΙΣΜΟΥ ∆Ε∆ΟΜΕΝΩΝ (ΕΡΩΤΗΣΕΩΝ)

8.2.1 Βασική ∆οµή Η SQL βασίζεται σε πράξεις συνόλου και σχέσεων µε συγκεκριµένες αλλαγές

και επεκτάσεις. Το αποτέλεσµα µιας ερώτησης SQL είναι µια άλλη σχέση.

Μια συνηθισµένη ερώτηση της SQL έχει τη µορφή:

ονόµατα γνωρισµάτων

select Α1, Α2, .., Αn

from R1, R2, … Rm ονόµατα σχέσεων

συνθήκη where P

Αi: αναπαριστά γνωρίσµατα, Ri: αναπαριστά σχέσεις, P: είναι το κατηγόρηµα

Αυτό το ερώτηµα είναι ισοδύναµο µε την έκφραση της σχεσιακής άλγεβρας

π A1, A2, .., An (σ P (R1 x R2 x … Rm))

• select αντιστοιχεί στην πράξη της προβολής της σχεσιακής άλγεβρας. Τα γνωρίσµατα που θέλουµε να υπάρχουν στο αποτέλεσµα της ερώτησης.

• from αντιστοιχεί στην πράξη του καρτεσιανού γινοµένου της σχεσιακής άλγεβρας. Ποιες σχέσεις θα χρησιµοποιηθούν για τον υπολογισµό του αποτελέσµατος.

• where αντιστοιχεί στη συνθήκη της πράξης της επιλογής στη σχεσιακή άλγεβρα. Το κατηγόρηµα P έχει γνωρίσµατα των σχέσεων που εµφανίζονται στο from.

• Όταν δεν υπάρχει το where, το κατηγόρηµα P θεωρείται ότι ισχύει. Π.χ.

select Α1, Α2, .., Αn

from R1, R2, … Rm

• ΠΡΟΣΟΧΗ: ∆ε γίνεται απαλοιφή των διπλών εµφανίσεων (διπλότυπα).

Η SQL επιτρέπει και πολλαπλές εµφανίσεις της ίδιας συστοιχίας σε µια σχέση. Μια σχέση στην SQL είναι ένα πολυσύνολο (multiset)

Η σηµασιολογία των διπλότυπων στην SQL:

Σελ. 108

Page 109: Βάσεις δεδομένων

8.2 Βασική Σύνταξη Γλώσσας Χειρισµού ∆εδοµένων (ερωτήσεων)

select Α1, Α2, .., Αn

from R1, R2, … Rm

where P

είναι ισότιµο µε την εκδοχή πολλαπλών συνόλων της έκφρασης:

π A1, A2, .., An (σ P (R1 x R2 x … Rm))

Για την Απαλοιφή διπλών εµφανίσεων (διπλότυπα) χρησιµοποιούµε το distinct . Π.χ.

select distinct Α1, Α2, .., Αn from R1, R2, … Rm

Παρακάτω θα χρησιµοποιήσουµε δύο σχεσιακά σχήµατα βάσεων δεδοµένων. Το πρώτο σχεσιακό σχήµα αναπαριστά µία τράπεζα

Λογαριασµός

Υποκατάστηµα

Πελάτης

Καταθέτης

∆άνειο

Όνοµα-Υποκαταστήµατος Αριθµός-Λογαριασµού ΥπόλοιποΌνοµα-Υποκαταστήµατος Αριθµός-Λογαριασµού Υπόλοιπο

Όνοµα-Πελάτη Αριθµός-ΛογαριασµούΌνοµα-Πελάτη Αριθµός-Λογαριασµού

Όνοµα-Πελάτη Οδός ΠόληΌνοµα-Πελάτη Οδός Πόλη

Όνοµα-Υποκαταστήµατος Πόλη Ενεργητικό

Όνοµα-Πελάτη Αριθµός-∆ανείουΌνοµα-Πελάτη Αριθµός-∆ανείου

Όνοµα-Υποκαταστήµατος Αριθµός-∆ανείου Ποσό

∆ανειζόµενος

Οι υπογραµµίσεις δείχνουν τα πρωτεύοντα κλειδιά. Τα βέλη δείχνουν που αναφέρονται τα ξένα κλειδιά.

ενεργητικό

πόλη

όνοµα-υποκαταστήµατος

Υποκατάστηµα

ενεργητικό

πόλη

όνοµα-υποκαταστήµατος

Υποκατάστηµα

υπόλοιπο

όνοµα-υποκαταστήµατος

αριθµός-λογαριασµού

Λογαριασµός

υπόλοιπο

όνοµα-υποκαταστήµατος

αριθµός-λογαριασµού

Λογαριασµός

αριθµός-λογαριασµού

όνοµα-πελάτη

Καταθέτης

αριθµός-λογαριασµού

όνοµα-πελάτη

Καταθέτης

πόλη

οδός

όνοµα-πελάτη

Πελάτης

πόλη

οδός

όνοµα-πελάτη

Πελάτης

ποσό

όνοµα-υποκαταστήµατος

αριθµός-δανείου

∆άνειο

ποσό

όνοµα-υποκαταστήµατος

αριθµός-δανείου

∆άνειο

αριθµός-δανείου

όνοµα-πελάτη

∆ανειζόµενος

αριθµός-δανείου

όνοµα-πελάτη

∆ανειζόµενος

Σελ. 109

Page 110: Βάσεις δεδομένων

Η ΓΛΏΣΣΑ ΒΆΣΕΩΝ ∆Ε∆ΟΜΈΝΩΝ SQL

Εναλλακτικός τρόπος γραφής του σχήµατος είναι ο παρακάτω:

Υποκατάστηµα (Όνοµα-Υποκαταστήµατος, Πόλη, Ενεργητικό)

Λογαριασµός (Όνοµα-Υποκαταστήµατος, Αριθµός-λογαριασµού, Υπόλοιπο)

∆άνειο (Όνοµα-Υποκαταστήµατος, Αριθµός-∆ανείου, Ποσό)

∆ανειζόµενος (Όνοµα-Πελάτη, Αριθµός-∆ανείου)

Πελάτης (Όνοµα-Πελάτη, Οδός, Πόλη)

Καταθέτης (Όνοµα-Πελάτη, Αριθµός-Λογαριασµού)

Το δεύτερο σχεσιακό σχήµα είναι πιο απλό και θα το χρησιµοποιήσουµε για τα πρώτα παραδείγµατα ερωτήσεων:

Ταινία Τίτλος Έτος ∆ιάρκεια Είδος

Παίζει Όνοµα Τίτλος Έτος

Όνοµα ∆ιεύθυνση Έτος-Γέννησης Σύζυγος-Ηθοποιού

Ηθοποιός

Οι υπογραµµίσεις δείχνουν τα πρωτεύοντα κλειδιά. Τα βέλη δείχνουν που αναφέρονται τα ξένα κλειδιά. Εναλλακτικός τρόπος γραφής του σχήµατος είναι ο παρακάτω:

Ταινία (Τίτλος, Έτος, ∆ιάρκεια, Είδος)

Παίζει (Όνοµα, Τίτλος, Έτος)

Ηθοποιός (Όνοµα, ∆ιεύθυνση, Έτος-Γέννησης, Σύζυγος-Ηθοποιού)

Προσέξτε ότι και στα δύο παραδείγµατα σχηµάτων υποθέσαµε χάριν απλότητας ότι τα ονόµατα γενικά είναι µοναδικά γι' αυτό και στους πίνακες δεν χρησιµοποιούνται κωδικοί σαν πρωτεύοντα κλειδιά. Επίσης η SQL δεν επιτρέπει τον χαρακτήρα ‘-’ (πλην) στα ονόµατα, εποµένως στην πραγµατικότητα θα πρέπει να χρησιµοποιείται το «όνοµα_πελάτη» αντί για «όνοµα-πελάτη».

Στις επόµενες παραγράφους θα αναλύσουµε:

• Βασική δοµή της select-from-where

• Πράξεις µε Συµβολοσειρές

• ∆ιάταξη Πλειάδων

• Η Πράξη της Μετονοµασίας

• Μεταβλητές Πλειάδων

• Πράξεις και τελεστές Συνόλων

• Η τιµή null

Σελ. 110

Page 111: Βάσεις δεδομένων

8.2 Βασική Σύνταξη Γλώσσας Χειρισµού ∆εδοµένων (ερωτήσεων)

8.2.2 Η Πρόταση SELECT -βασική δοµή Η πρόταση select αντιστοιχεί στην πράξη της προβολής της σχεσιακής

άλγεβρας. Χρησιµοποιείται για να δηλώσει τη λίστα των γνωρισµάτων που είναι επιθυµητά στο αποτέλεσµα της ερώτησης.

Π.χ. Βρείτε τα ονόµατα όλων των υποκαταστηµάτων στη σχέση δάνειο

select όνοµα-Υποκαταστήµατος

from δάνειο

Στην σχεσιακή άλγεβρα, το παραπάνω ερώτηµα θα ήταν:

Πόνοµα-Υποκαταστήµατος(δάνειο) Π.χ. Βρείτε τα ονόµατα όλων των ηθοποιών που έχουν παίξει σε ταινίες (αυτά

δηλαδή που είναι καταχωρηµένα στον πίνακα Παίζει)

select Όνοµα

from Παίζει

Ένας αστερίσκος στην πρόταση select δηλώνει προβολή όλων των γνωρισµάτων

Π.χ. Να εµφανίσετε όλα τα γνωρίσµατα από τη σχέση δάνειο

select *

from δάνειο

Π.χ. Να εµφανίσετε όλα τα γνωρίσµατα από τη σχέση Παίζει

select *

from Παίζει

Σηµείωση: Η SQL δεν επιτρέπει τον χαρακτήρα ‘-’ στα ονόµατα, εποµένως στην πραγµατικότητα θα πρέπει να χρησιµοποιείται το «όνοµα_υποκαταστήµατος» αντί για «όνοµα-υποκαταστήµατος».

Σηµείωση: Τα ονόµατα στην SQL µπορούν να γραφούν είτε µε µικρά είτε µε κεφαλαία (case insensitive)

8.2.3 Η Πρόταση SELECT DISTINCT -απαλοιφή διπλοτύπων Η SQL επιτρέπει διπλότυπα τόσο στις σχέσεις όσο και στα αποτελέσµατα των

ερωτήσεων. Όπως τονίσαµε προηγουµένως, η SQL συνήθως δεν αντιµετωπίζει έναν πίνακα ως σύνολο αλλά µάλλον ως πολυσύνολο· διπλότυπες (δηλ. ίδιες) πλειάδες µπορεί να εµφανιστούν περισσότερες από µία φορές σ' έναν πίνακα και στο αποτέλεσµα µιας ερώτησης. Η SQL δεν απαλείφει αυτόµατα τις διπλότυπες πλειάδες από το αποτέλεσµα µιας ερώτησης για τους ακόλουθους λόγους:

• Η εξάλειψη των διπλοτύπων είναι µια δαπανηρή πράξη. Ένας τρόπος να υλοποιηθεί είναι να ταξινοµηθούν πρώτα οι πλειάδες και στη συνέχεια να απαλειφθούν οι διπλότυπες.

Σελ. 111

Page 112: Βάσεις δεδομένων

Η ΓΛΏΣΣΑ ΒΆΣΕΩΝ ∆Ε∆ΟΜΈΝΩΝ SQL

• Ο χρήστης µπορεί να θέλει να δει τις διπλότυπες πλειάδες στο αποτέλεσµα µιας ερώτησης.

• Όταν µια συναθροιστική συνάρτηση εφαρµόζεται σε πλειάδες, στις περισσότερες περιπτώσεις δεν θέλουµε να απαλείψουµε τις διπλότυπες.

Βέβαια ένας πίνακας SQL µε κλειδί περιορίζεται σε σύνολο, αφού η τιµή του κλειδιού είναι διαφορετική για κάθε πλειάδα.

Για να πραγµατοποιηθεί η διαγραφή των διπλοτύπων, χρησιµοποιείται η λέξη κλειδί distinct µετά τη select.

Π.χ. Εµφανίστε τα ονόµατα όλων των υποκαταστηµάτων στη σχέση δάνειο, και αφαιρέστε τα διπλότυπα

select distinct όνοµα-Υποκαταστήµατος

from δάνειο

Π.χ. Εµφανίστε µοναδικά τα ονόµατα των ηθοποιών στη σχέση Παίζει (ένας ηθοποιός µπορεί να έχει παίξει σε πολλές ταινίες και το όνοµά του να έχει καταχωρηθεί πολλές φορές)

select distinct Όνοµα from Παίζει

Η λέξη κλειδί all καθορίζει ότι δεν θα διαγραφούν τα διπλότυπα (είναι προαιρετική όµως επειδή εξ' ορισµού η SQL επιτρέπει διπλότυπα).

select all όνοµα- Υποκαταστήµατος

from δάνειο

8.2.4 Η Πρόταση SELECT - αριθµητικές εκφράσεις Η πρόταση select µπορεί να περιέχει αριθµητικές εκφράσεις που σχετίζονται µε

τις αριθµητικές πράξεις +, -, *, / και λειτουργούν σε σταθερές, ή γνωρίσµατα των πλειάδων.

Π.χ. Η ερώτηση:

select αριθµός-δανείου, όνοµα-Υποκαταστήµατος, ποσό*100

from δάνειο

θα επέστρεφε µια σχέση η οποία είναι ίδια µε τις σχέσεις δάνειο, εκτός από το ότι η ιδιότητα ποσό πολλαπλασιάζεται επί 1000.

Π.χ. το παρακάτω ερώτηµα

select Τίτλος, Έτος, ∆ιάρκεια / 60, Είδος from Ταινία

Σελ. 112

Page 113: Βάσεις δεδομένων

8.2 Βασική Σύνταξη Γλώσσας Χειρισµού ∆εδοµένων (ερωτήσεων)

θα επέστρεφε µια σχέση ίδια µε τη σχέση Ταινία µόνο που το γνώρισµα διάρκεια µας δίνει τις ώρες (έχει διαιρεθεί µε το 60)

8.2.5 Η Πρόταση where Η πρόταση where αντιστοιχεί στο κατηγόρηµα επιλογής της σχεσιακής

άλγεβρας. Αποτελείται από ένα κατηγόρηµα που περιλαµβάνει γνωρίσµατα των σχέσεων που εµφανίζονται στην πρόταση from. Το κατηγόρηµα δέχεται συνθήκες επιλογής και συνθήκες συνένωσης.

Στις συνθήκες χρησιµοποιούνται οι γνωστοί τελεστές σύγκρισης: <, <=, >, >=, =, ≠.

Π.χ. Εντοπίστε όλους τους αριθµούς δανείων για δάνεια µε ποσό του δανείου µεγαλύτερο από 1200.

select αριθµός-δανείου

from δάνειο

where ποσό>1200

Τα αποτελέσµατα των συγκρίσεων µπορούν να συνδυαστούν χρησιµοποιώντας τους γνωστούς λογικούς τελεστές NOT , AND , OR.

Συγκρίσεις µπορούν να εφαρµοστούν στα αποτελέσµατα των αριθµητικών εκφράσεων.

Π.χ. Να βρεθεί ο τίτλος όλων των ταινιών που γυρίστηκαν µετά το 1995 και είναι ασπρόµαυρες

select Τίτλος

from Ταινία

where Έτος > 1995 and Είδος = 'Ασπρόµαυρη'

Σηµειώστε ότι η SQL χρησιµοποιεί απλά εισαγωγικά για να περικλείσει την τιµή του κειµένου που θα χρησιµοποιηθεί στη σύγκριση. Όπως για τη σύγκριση µε τη συµβολοσειρά 'Ασπρόµαυρη'. Τα περισσότερα συστήµατα βάσεων δεδοµένων δέχονται και τα διπλά εισαγωγικά για τις τιµές κειµένου ή γενικά συµβολοσειρών, που δηλώνουν ότι δεν είναι αριθµητικές τιµές.

8.2.6 Η Πρόταση where -τελεστής between .. and.. Η SQL περιλαµβάνει µια πράξη σύγκρισης between προκειµένου να

απλοποιηθούν οι προτάσεις where που καθορίζουν ότι µια τιµή είναι µικρότερη ή ίση προς κάποια τιµή και µεγαλύτερη ή ίση από κάποια άλλη τιµή.

between, not between Χρησιµοποιείται ανάµεσα σε αριθµητικές εκφράσεις, συµβολοσειρές (strings), και ειδικούς τύπους.

Παράδειγµα χρήσης του between :

select Τίτλος

Σελ. 113

Page 114: Βάσεις δεδομένων

Η ΓΛΏΣΣΑ ΒΆΣΕΩΝ ∆Ε∆ΟΜΈΝΩΝ SQL

from Ταινία

where Έτος between 1990 and 1995

αντί του

select Τίτλος

from Ταινία

where Έτος >= 1990 and Έτος <= 1995

Π.χ. Εντοπίστε τον αριθµό δανείου από εκείνα τα δάνεια µε ποσό δανείου µεταξύ 90.000 και 100.000.

select αριθµός-δανείου

from δάνειο

where ποσό between 90000 and 100000

Σηµείωση: Γενικά ο τελεστής between .. and.. µεταφράζεται Μεταξύ (και συµπεριλαµβανοµένης) της τιµής Α και (και συµπεριλαµβανοµένης) της τιµής Β. Όµως ο τελεστής between .. and.. συµπεριφέρεται διαφορετικά σε διαφορετικά Σχεσιακά Συστήµατα ∆ιαχείρισης Βάσεων ∆εδοµένων (ΣΣ∆Β∆). Για παράδειγµα θεωρήστε το ερώτηµα:

select *

from Παίζει

where Όνοµα between “Robert De Niro” and "Sharon Stone"

Σε κάποια ΣΣ∆Β∆ θα επιλεγούν όλα τα ονόµατα µεταξύ αυτών των δύο τιµών και αυτά τα δύο (inclusive). Σε άλλα που δεν ακολουθούν το πρότυπο της SQL θα επιλεγούν όλα τα ονόµατα µεταξύ αυτών των δύο τιµών µαζί µε την πρώτη τιµή αλλά δίχως την τελευταία. Κάντε ένα τεστ στη δική σας βάση για να δείτε τον τρόπο λειτουργίας του between .. and..

8.2.7 Η Πρόταση from Η πρόταση from αντιστοιχεί στην πράξη του καρτεσιανού γινοµένου της

σχεσιακής άλγεβρας. ∆ίνει τη λίστα των σχέσεων που πρέπει να σαρωθούν κατά την αξιολόγηση της έκφρασης.

Π.χ. Βρείτε το καρτεσιανό γινόµενο: ∆ανειζόµενος x δάνειο

select *

from ∆ανειζόµενος, δάνειο

Όταν το ίδιο όνοµα γνωρίσµατος εµφανίζεται στο σχήµα περισσότερων από µια σχέσεων, τότε γίνεται διάκριση βάση του συµβολισµού:

Σελ. 114

Page 115: Βάσεις δεδομένων

8.2 Βασική Σύνταξη Γλώσσας Χειρισµού ∆εδοµένων (ερωτήσεων)

όνοµα-σχέσης.όνοµα-γνωρίσµατος

Το καρτεσιανό γινόµενο στην πρόταση from µαζί µε µία συνθήκη σύζευξης (ή συνένωσης) στην πρόταση where αντιστοιχεί στην σχεσιακή πράξη της σύζευξης δύο σχέσεων µε χρήση του κοινού τους γνωρίσµατος (το πρωτεύον κλειδί της µιας που είναι ξένο κλειδί στην άλλη)

Π.χ. Εντοπίστε το όνοµα, τον αριθµό του δανείου και το ποσό του δανείου όλων των πελατών που έχουν ένα δάνειο από το Υποκατάστηµα Κρήνης.

select όνοµα-πελάτη, ∆ανειζόµενος.αριθµός-δανείου, ποσό

from ∆ανειζόµενος, δάνειο

where ∆ανειζόµενος.αριθµός-δανείου =δάνειο.αριθµός-δανείου and όνοµα-υποκαταστήµατος=‘Κρήνης’

Π.χ. Βρείτε τους ηθοποιούς που παίζουν σε ασπρόµαυρες ταινίες select distinct Παίζει.Όνοµα from Παίζει, Ταινία where Παίζει.Τίτλος = Ταινία.Τίτλος and Παίζει.Έτος = Ταινία.Έτος

and Είδος = “Ασπρόµαυρη”

Θυµηθείτε ότι πρωτεύον κλειδί της σχέσης Ταινία είναι και τα δύο γνωρίσµατα Τίτλος και Έτος τα οποία είναι ξένο κλειδί στη σχέση Παίζει και τµήµα του πρωτεύοντός της κλειδιού.

Ταινία (Τίτλος, Έτος, ∆ιάρκεια, Είδος) Παίζει (Όνοµα, Τίτλος, Έτος) Ηθοποιός (Όνοµα, ∆ιεύθυνση, Έτος-Γέννησης, Σύζυγος-Ηθοποιού)

Παραδείγµατα

• Έγχρωµες ταινίες µε διάρκεια µέχρι 80 λεπτά

• Οι ηθοποιοί που γεννήθηκαν µετά το 1935 και έπαιξαν σε ασπρόµαυρες ταινίες πριν το 1945

• Ηθοποιοί που γεννήθηκαν µετά το 1967

• Οι ηθοποιοί που γεννήθηκαν µετά το 1967 και έπαιξαν στην ταινία «ΑΙ»

Σελ. 115

Page 116: Βάσεις δεδομένων

Η ΓΛΏΣΣΑ ΒΆΣΕΩΝ ∆Ε∆ΟΜΈΝΩΝ SQL

8.2.8 Πράξεις µε Συµβολοσειρές (αλφαριθµητικά) Η SQL περιλαµβάνει έναν τελεστή ταύτισης συµβολοσειρών για συγκρίσεις

αλφαριθµητικών χαρακτήρων. Τα πρότυπα περιγράφονται χρησιµοποιώντας δύο ειδικούς χαρακτήρες:

Ποσοστό (%): Ο χαρακτήρας % αντιστοιχεί σε οποιαδήποτε συµβολοσειρά.

Η κάτω παύλα (_): Η κάτω παύλα αντιστοιχεί σε οποιονδήποτε χαρακτήρα.

Στις συγκρίσεις γίνεται διάκριση ανάµεσα σε κεφαλαία και µικρά. Η σύγκριση γίνεται χρησιµοποιώντας το like, not like

Π.χ. Βρείτε τα ονόµατα όλων των πελατών των οποίων η οδός αρχίζει από Κ.

select όνοµα-πελάτη

from πελάτης

where οδός-πελάτη like ‘Κ%’

Π.χ. Βρείτε τους τίτλους όλων των ταινιών που περιέχουν τη λέξη Θάλασσα

select distinct Τίτλος

from Ταινία

where Τίτλος like “%Θάλασσα%”

Η SQL υποστηρίζει µια ποικιλία τελεστών αλφαριθµητικών όπως

• σύνδεση (concatenation) (χρησιµοποιώντας || ή + ή &)

• µετατροπή από κεφαλαία σε µικρά γράµµατα (και αντιστρόφως)

• εύρεση του µήκους του αλφαριθµητικού, εξαγωγή του µέρους του αλφαριθµητικού κ.ό.κ.

8.2.9 ∆ιάταξη των Πλειάδων- order by Χρήση του order by ώστε οι πλειάδες (συστοιχίες) στο αποτέλεσµα να είναι

ταξινοµηµένες µε βάση το αντίστοιχο γνώρισµα

Π.χ. ∆ώστε σε λίστα µε αλφαβητική σειρά τα ονόµατα όλων των πελατών που έχουν δάνειο στο Υποκατάστηµα Κρήνης.

select distinct όνοµα-πελάτη

from ∆ανειζόµενος, δάνειο

where ∆ανειζόµενος.αριθµός-δανείου=δάνειο.αριθµός-δανείου

and όνοµα-υποκαταστήµατος=‘Κρήνης’

order by όνοµα-πελάτη

Σελ. 116

Page 117: Βάσεις δεδομένων

8.2 Βασική Σύνταξη Γλώσσας Χειρισµού ∆εδοµένων (ερωτήσεων)

Εξ ορισµού χρησιµοποιείται η αύξουσα διάταξη (από το µικρότερο στο µεγαλύτερο)

Μπορεί να καθορίσουµε τον όρο desc για φθίνουσα διάταξη ή asc για αύξουσα διάταξη, για κάθε γνώρισµα.

Π.χ. order by όνοµα-πελάτη desc

Η αύξουσα διάταξη είναι εξορισµού και το asc συνήθως παραλείπετε.

Επίσης µπορεί να γίνει ταξινόµηση µε βάση πολλά γνωρίσµατα. Παράδειγµα:

select *

from Ταινία

order by Έτος desc, Τίτλος

Π.χ. Θεωρήστε τη σχέση Ταινία (Τίτλος, Έτος, ∆ιάρκεια, Είδος) και προβάλλετε τον Τίτλο και Έτος των ταινιών που αρχίζουν από Κ ή Α, γυρίστηκαν µετά το Έτος 1990 και δεν έχουν ∆ιάρκεια µεταξύ 60 και 80 λεπτών, ταξινοµηµένες κατά Έτος από το µεγαλύτερο στο µικρότερο, µε τις Ταινίες του ίδιου Έτους ταξινοµηµένες αλφαβητικά κατά Τίτλο µε αύξουσα σειρά

select Τίτλος, Έτος from Ταινία

where Τίτλος like "K%" or Τίτλος like "A%" and Έτος>1990

and ∆ιάρκεια not between 60 and 80

order by Έτος desc, Τίτλος;

Η ταξινόµηση γενικά είναι δαπανηρή λειτουργία.

8.2.10 Η Πράξη της Μετονοµασίας Τα ονόµατα των γνωρισµάτων στο αποτέλεσµα είναι αυτά των σχέσεων στην

ερώτηση. Υπάρχει η δυνατότητα αλλαγής του ονόµατος τόσο µιας σχέσης όσο και ενός γνωρίσµατος: Η SQL επιτρέπει τη µετονοµασία σχέσεων και γνωρισµάτων χρησιµοποιώντας την πρόταση as:

παλιό-όνοµα as νέο-όνοµα

Το as µπορεί να εµφανίζεται στο select για την µετονοµασία γνωρίσµατος ή στο from για την µετονοµασία σχέσης

Π.χ. Βρείτε το όνοµα, τον αριθµό δανείου και το ποσό δανείου όλων των πελατών. Μετονοµάστε τον αριθµό δανείου ως κωδ-δανείου.

select όνοµα-πελάτη, ∆ανειζόµενος.αριθµός-δανείου as κωδ-δανείου, ποσό

from δάνειο, ∆ανειζόµενος

where ∆ανειζόµενος.αριθµός-δανείου=δάνειο.αριθµός-δανείου

Σελ. 117

Page 118: Βάσεις δεδομένων

Η ΓΛΏΣΣΑ ΒΆΣΕΩΝ ∆Ε∆ΟΜΈΝΩΝ SQL

Η µετονοµασία είναι χρήσιµη όταν

(α) έχουµε αριθµητικές εκφράσεις στο select και δεν έχουν όνοµα,

(β) θέλουµε να αλλάξουµε το όνοµα του γνωρίσµατος στο αποτέλεσµα.

(γ) δυο σχέσεις του from έχουν γνωρίσµατα µε το ίδιο όνοµα

Για παράδειγµα:

select Τίτλος, Είδος, Έτος, ∆ιάρκεια / 60 as Ώρες-∆ιάρκεια

from Ταινία

8.2.11 Μεταβλητές Πλειάδων Οι µεταβλητές πλειάδων (συστοιχιών) ορίζονται στην πρόταση from

χρησιµοποιώντας την πρόταση as. Μια µεταβλητή πλειάδας µπορεί να χρησιµοποιηθεί σαν συντοµογραφία του ονόµατος µιας σχέσης.

Π.χ. Βρείτε τους ηθοποιούς που παίζουν σε ασπρόµαυρες ταινίες

select distinct Π.Όνοµα

from Παίζει as Π, Ταινία as Τ

where Π.Τίτλος = Τ.Τίτλος and Π.Έτος = Τ.Έτος

and Είδος = “Ασπρόµαυρη”

Π.χ. Βρείτε τα ονόµατα των πελατών και τους αριθµούς δανείων για όλους τους πελάτες που έχουν δάνειο σε κάποιο Υποκατάστηµα.

select όνοµα-πελάτη, Τ.αριθµός-δανείου, S.ποσό

from ∆ανειζόµενος as Τ, δάνειο as S

where T.αριθµός-δανείου=S.αριθµός-δανείου

Οι µεταβλητές πλειάδων είναι ιδιαίτερα χρήσιµες όταν θέλουµε να συγκρίνουµε δυο πλειάδες της ίδιας σχέσης.

Π.χ. Βρείτε τα ονόµατα όλων των ταινιών που έχουν διάρκεια µεγαλύτερη τουλάχιστον από µία ταινία που γυρίστηκε το 1995

select distinct Τ.Τίτλος

from Ταινία as S, Ταινία as T

where T.∆ιάρκεια > S. ∆ιάρκεια and S.Έτος = 1995

Π.χ. Βρείτε τα ονόµατα όλων των υποκαταστηµάτων που έχουν µεγαλύτερο ενεργητικό από κάποιο Υποκατάστηµα που βρίσκεται στο Βόλο.

select distinct T.όνοµα-Υποκαταστήµατος

from Υποκατάστηµα as T, Υποκατάστηµα as S

where T.ενεργητικό>S.ενεργητικό and

S.πόλη-Υποκαταστήµατος='Βόλος'

Σελ. 118

Page 119: Βάσεις δεδομένων

8.2 Βασική Σύνταξη Γλώσσας Χειρισµού ∆εδοµένων (ερωτήσεων)

8.2.12 Συνολοθεωρητικές Πράξεις και Τελεστές Συνόλων Οι τελεστές συνόλων ένωση (union), τοµή (intersection) και διαφορά

(except) στις σχέσεις αντιστοιχούν στους τελεστές της σχεσιακής άλγεβρας ∩, ∪, -.

Οι πράξεις συνόλων:

• union ένωση

• intersection τοµή

• except διαφορά

εφαρµόζονται σε συµβατές σχέσεις.

Η Γενική Σύνταξη είναι: ( select-from-where ) union/intersect/except ( select-from-where)

Καθένας από τους παραπάνω τελεστές αυτόµατα διαγράφει τα διπλότυπα. Για την τήρηση των διπλοτύπων χρησιµοποιείται η αντίστοιχη εκδοχή πολλαπλών συνόλων union all, intersect all και except all.

Υποθέστε ότι µια πλειάδα εµφανίζεται m φορές στην R και n φορές στην S, τότε:

• m+n φορές στην R union all S

• min(m, n) φορές στην R intersect all S.

• max(0, m-n) φορές στην R except all S.

Παράδειγµα ένωσης. Βρείτε τα ονόµατα όλων των πελατών που έχουν δάνειο, λογαριασµό ή και τα δύο

(select όνοµα-πελάτη from καταθέτης)

union

(select όνοµα-πελάτη from ∆ανειζόµενος)

Γίνεται επιλογή µοναδικών τιµών µε απαλοιφή διπλών εµφανίσεων (χωρίς διπλότυπα). Για να εµφανίζονται και τα διπλότυπα χρησιµοποιείται το union all.

Παράδειγµα τοµής. Βρείτε τα ονόµατα όλων των πελατών που έχουν πάρει δάνειο και έχουν λογαριασµό

(select όνοµα-πελάτη from καταθέτης)

intersect

(select όνοµα-πελάτη from ∆ανειζόµενος)

Αντίστοιχα υπάρχει το intersect all για την εµφάνιση των διπλοτύπων

Σελ. 119

Page 120: Βάσεις δεδομένων

Η ΓΛΏΣΣΑ ΒΆΣΕΩΝ ∆Ε∆ΟΜΈΝΩΝ SQL

Παράδειγµα διαφοράς. Βρείτε τα ονόµατα όλων των πελατών που έχουν λογαριασµό αλλά δεν έχουν δάνειο

(select όνοµα-πελάτη from καταθέτης)

except

(select όνοµα-πελάτη from ∆ανειζόµενος)

Αντίστοιχα υπάρχει το except all για την εµφάνιση των διπλοτύπων

ΣΗΜΕΙΩΣΗ

• ∆εν υποστηρίζονται οι τελεστές union/intersect/except από όλες οι υλοποιήσεις της SQL

• Το except της SQL-92 λεγόταν minus στην SQL-86. Σε µερικές εφαρµογές χρησιµοποιείται ακόµη.

• Στην SQL είναι δυνατό να εκφραστούν και διαφορετικά τα ερωτήµατα τοµής και διαφοράς χρησιµοποιώντας άλλες πράξεις (µε τους τελεστές in, not in, exists, not exists).

8.2.13 Null Τιµές Είναι πιθανό για τις πλειάδες να έχουν τιµή null (κενό) για µερικά από τα

γνωρίσµατα.

Η τιµή null δηλώνει µια άγνωστη τιµή ή τιµή που δεν υπάρχει.

H λέξη κλειδί is null (is not null) µπορεί να χρησιµοποιηθεί σε µια συνθήκη για να ελέγξουµε αν µια τιµή είναι null.

Π.χ. Βρείτε τους ηθοποιούς που δεν έχουν δώσει στοιχεία για το έτος γέννησής τους

select Όνοµα

from Ηθοποιός

where Έτος-Γέννησης is null Π.χ. Βρείτε όλους τους αριθµούς δανείων που εµφανίζονται στη σχέση δάνειο µε

κενή τιµή για το γνώρισµα ποσό.

select αριθµός-δανείου

from δάνειο

where ποσό is null

Επίσης το αποτέλεσµα οποιασδήποτε αριθµητικής έκφρασης είναι null όταν κάποια τιµή που περιλαµβάνει είναι null.

Π.χ. 5+null επιστρέφει null

Οι συναθροιστικές συναρτήσεις ωστόσο αγνοούν τις τιµές null.

Σελ. 120

Page 121: Βάσεις δεδομένων

8.2 Βασική Σύνταξη Γλώσσας Χειρισµού ∆εδοµένων (ερωτήσεων)

8.2.14 Τιµές Null και η Λογική Τριών Τιµών Οποιαδήποτε σύγκριση µε το null επιστρέφει unknown.

Π.χ. 5<null, null<>null ή 10>=null

Η λογική τριών-τιµών (true-unknown-false) χρησιµοποιώντας την τιµή αλήθειας unknown:

OR: (unknown or true) = true, (unknown or false) = unknown (unknown or unknown) = unknown

AND: (true and unknown) = unknown, (false and unknown) = false, (unknown and unknown) = unknown

NOT: (not unknown) = unknown

Το αποτέλεσµα του κατηγορήµατος P της πρότασης where θεωρείται ως false αν επιστρέφει τιµή unknown.

“P is unknown” επιστέφει τιµή true αν το κατηγόρηµα P επιστρέφει τιµή unknown

8.2.15 Τιµές Null και συναθροιστικές συναρτήσεις Οι συναθροιστικές συναρτήσεις εκτός του count(*) αγνοούν τις συστοιχίες µε

null τιµές στο συναθροισµένο γνώρισµα.

Π.χ. Υπολόγισε το σύνολο όλων των ποσών των δανείων

select sum (ποσό)

from δάνειο

Η παραπάνω δήλωση αγνοεί τα µηδενικά ποσά.

8.2.16 Συναθροιστικές Συναρτήσεις Η SQL έχει 5 built-in συναθροιστικές συναρτήσεις που εφαρµόζονται στο

σύνολο των τιµών µιας στήλης µιας σχέσης, και επιστρέφουν µία τιµή:

avg(A) Μέση τιµή (µόνο σε αριθµούς) A γνώρισµα

min(A) Ελάχιστη τιµή

max(A) Μέγιστη τιµή

sum(A) Άθροισµα τιµών (µόνο σε αριθµούς)

count(A) Πλήθος

Περιορισµοί:

• η συνάρτηση count µπορεί να εφαρµοστεί σε γνωρίσµατα οποιουδήποτε τύπου

Σελ. 121

Page 122: Βάσεις δεδομένων

Η ΓΛΏΣΣΑ ΒΆΣΕΩΝ ∆Ε∆ΟΜΈΝΩΝ SQL

• οι συναρτήσεις avg και sum εφαρµόζονται µόνο σε γνωρίσµατα αριθµητικών τύπων

• οι συναρτήσεις min και max εφαρµόζονται σε γνωρίσµατα αριθµητικών ή αλφαριθµητικών τύπων

Π.χ. Υπολογίστε τη µέση τιµή του υπολοίπου των λογαριασµών στο υποκατάστηµα Βενιζέλου.

select avg(υπόλοιπο)

from λογαριασµός

where όνοµα-Υποκαταστήµατος= ‘Βενιζέλου’

Για να µετρήσουµε πόσες συστοιχίες έχει µια σχέση:

select count (*)

from Πελάτης

Το αποτέλεσµα είναι µια σχέση µε ένα γνώρισµα και µια γραµµή. Μπορούµε να δώσουµε όνοµα στο γνώρισµα χρησιµοποιώντας το as

Π.χ. Υπολογίστε τη µέση τιµή, ελάχιστη τιµή, µέγιστη τιµή και το άθροισµα του υπολοίπου των λογαριασµών

select avg(υπόλοιπο) as µέσό_υπόλοιπο, min(υπόλοιπο) as Ελάχιστο_υπόλοιπο, max(υπόλοιπο) as µέγιστο_υπόλοιπο, sum(υπόλοιπο) as συνολικό_υπόλοιπο

from λογαριασµός

Αν θέλουµε να απαλείψουµε διπλές εµφανίσεις χρησιµοποιούµε τη λέξη-κλειδί distinct στην αντίστοιχη έκφραση.

Π.χ. Υπολογίστε τον αριθµό των καταθετών στην τράπεζα

select count(distinct Όνοµα-πελάτη)

from καταθέτης

Σηµείωση. ∆ε µπορούµε να χρησιµοποιήσουµε το distinct µε το count (*) που µετρά το πλήθος των σειρών.

Σηµείωση. Ο συνδυασµός του distinct µε το count υποστηρίζεται από την ORACLE και τον MS SQL Server αλλά όχι από την MS Access.

select count(distinct όνοµα-στήλης)

from όνοµα-πίνακα

Αν στην πρόταση Select υπάρχει συναθροιστική συνάρτηση τότε δεν επιτρέπονται γνωρίσµατα παρά µόνο συναθροιστικές συναρτήσεις εκτός αν υπάρχει ο όρος group by

Σελ. 122

Page 123: Βάσεις δεδομένων

8.2 Βασική Σύνταξη Γλώσσας Χειρισµού ∆εδοµένων (ερωτήσεων)

Π.χ. Μέγιστο ποσό όλων των λογαριασµών στο υποκατάστηµα Εθνικής Βενιζελου και τον αριθµό του λογαριασµού!

select Αριθµός-Λογαριασµού, max(Ποσό) from Λογαριασµός where Όνοµα-Υποκαταστήµατος = “Βενιζέλου” Το παραπάνω ερώτηµα θα βγάλει µήνυµα λάθους.

8.2.17 Συναθροιστικές Συναρτήσεις-Οµαδοποίηση (group by) Τα αποτελέσµατα ενός SQL ερωτήµατος µπορούν να οµαδοποιηθούν µε τη

χρήση της φράση οµαδοποίησης group by <A1, A2, …, An> - και για κάθε οµάδα ίδιων εγγραφών να προκύψει ΜΙΑ εγγραφή.

Τα πεδία A1, A2, …, An πρέπει να εµφανίζονται και στην πρόταση select.

Έτσι µπορούµε να εφαρµόσουµε τις συναθροιστικές συναρτήσεις όχι µόνο σε ένα σύνολο από πλειάδες, αλλά σε οµάδες από σύνολα πλειάδων. Οι οµάδες προσδιορίζονται χρησιµοποιώντας την πρόταση group byΗ πρόταση group by προστέθηκε στην SQL επειδή οι συναθροιστικές συναρτήσεις (όπως η SUM) από µόνες τους επιστρέφουν µία τιµή από όλες τις τιµές της στήλης.Όταν µια συνάρτηση συνάθροισης εµφανίζεται σε µια εντολή select η οποία περιέχει group by, η συνάρτηση εφαρµόζεται σε τιµές µιας οµάδας (δηλαδή όλες τις πλειάδες οι οποίες έχουν την ίδια τιµή στα γνωρίσµατα για τα οποία γίνεται η οµαδοποίηση) και επιστρέφεται µια τιµή για κάθε οµάδα.

Π.χ. Βρείτε το µέσο υπόλοιπο των λογαριασµών σε κάθε υποκατάστηµα (οµαδοποίηση ανά υποκατάστηµα)

select Όνοµα-Υποκαταστήµατος, avg(υπόλοιπο)

from Λογαριασµός

group by Όνοµα-Υποκαταστήµατος

Σηµείωση: τα γνωρίσµατα στην πρόταση select που εµφανίζονται εκτός των συναθροιστικών συναρτήσεων πρέπει να εµφανίζονται και στη λίστα της πρότασης group by.

Π.χ. Βρείτε τον αριθµό των καταθετών σε κάθε υποκατάστηµα (οµαδοποίηση ανά υποκατάστηµα)

select Όνοµα-Υποκαταστήµατος, count(distinct Όνοµα-Πελάτη)

from Καταθέτης, Λογαριασµός

where Καταθέτης.Αριθµός-Λογαριασµού = Λογαριασµός.Αριθµός-Λογαριασµού

group by Όνοµα-Υποκαταστήµατος

Σελ. 123

Page 124: Βάσεις δεδομένων

Η ΓΛΏΣΣΑ ΒΆΣΕΩΝ ∆Ε∆ΟΜΈΝΩΝ SQL

Η οµαδοποίηση µπορεί να γίνει ως προς περισσότερα του ενός πεδία.

Π.χ. Βρείτε το µέσος όρο καταθέσεων ανά πελάτη και ανά υποκατάστηµα

select Όνοµα-Υποκαταστήµατος, Όνοµα-Πελάτη, avg(υπόλοιπο)

from Καταθέτης as K, Λογαριασµός as Λ

where Κ.Αριθµός-Λογαριασµού = Λ.Αριθµός-Λογαριασµού

group by Όνοµα-Υποκαταστήµατος, Όνοµα-Πελάτη

Οµαδοποίηση γίνεται πρώτα ως προς το Υποκατάστηµα. Στην συνέχεια δηµιουργούνται υποoµάδες ως προς το Όνοµα_Πελάτη

8.2.18 Συναθροιστικές Συναρτήσεις –Πρόταση having HAVING. Μπορούµε να εφαρµόσουµε µια συνθήκη σε µια συγκεκριµένη οµάδα

από πλειάδες χρησιµοποιώντας το having. Η συνθήκη του having εφαρµόζεται αφού σχηµατιστούν οι οµάδες (group by) και υπολογιστούν οι συναθροιστικές συναρτήσεις.

Η πρόταση having περιορίζει τις γραµµές που επιστρέφονται από µία πρόταση group by µε τον ίδιο τρόπο που η πρόταση where περιορίζει τις γραµµές που επιστέφονται από την πρόταση select. Τόσο η where όσο και η having µπορούν να συµπεριληφθούν στην ίδια πρόταση select. Η where εφαρµόζεται πριν την οµαδοποίηση και η having εφαρµόζεται µετά.

Επίσης η πρόταση having προστέθηκε στην SQL επειδή η πρόταση where δεν µπορεί να χρησιµοποιηθεί για συγκρίσεις µε αποτελέσµατα συναθροιστικών συναρτήσεων. Η φράση where avg(υπόλοιπο) > 1200 θα βγάλει µήνυµα λάθους.

Η σύνταξη της πρότασης having είναι πανοµοιότυπη µε της where, µε µόνη εξαίρεση το ότι η πρόταση having µπορεί να περιλαµβάνει µία από τις συναθροιστικές συναρτήσεις. Πρέπει όµως να επαναλάβετε τη συνάρτηση γιατί δεν µπορείτε να χρησιµοποιήσετε το ψευδώνυµο της. Π.χ. Η έκφραση select στήλη1, avg(στήλη2) as ψευδώνυµο1 from πίνακα1 group by στήλη1 having ψευδώνυµο1> 1200 είναι λάθος.

Π.χ. Θεωρήστε τη σχέση Λογαριασµός(Όνοµα-Υποκαταστήµατος, Αριθµός-λογαριασµού, Υπόλοιπο) και βρείτε τα ονόµατα υποκαταστηµάτων µε µέσο υπόλοιπο καταθέσεων µεγαλύτερο των 1200 (οµαδοποίηση κατά Όνοµα-Υποκαταστήµατος)

select Όνοµα-Υποκαταστήµατος, avg(υπόλοιπο) as µέσο-υπόλοιπο

from Λογαριασµός

group by Όνοµα-Υποκαταστήµατος

having avg(υπόλοιπο) > 1200

Σελ. 124

Page 125: Βάσεις δεδομένων

8.2 Βασική Σύνταξη Γλώσσας Χειρισµού ∆εδοµένων (ερωτήσεων)

Π.χ. Θεωρήστε τη σχέση Προϊόντα (ΚωδικόςΠροϊόντος, Όνοµα, Τιµή, Κατηγορία) και προβάλετε τις κατηγορίες Προϊόντων µε µέση Τιµή µεγαλύτερη από 1000 (θα γίνει πρώτα οµαδοποίηση κατά κατηγορία)

select Κατηγορία

from Προϊόντα

group by Κατηγορία

having avg(Τιµή)>1000

Π.χ. Θεωρήστε τη σχέση Υπάλληλοι (ΚωδΥπαλλήλου, Όνοµατεπώνυµο, Μισθός, Τµήµα) και προβάλετε τα Τµήµατα µε µέγιστο Μισθό Υπαλλήλων µεγαλύτερο του 1200

select Τµήµα from Υπάλληλοι

group by Τµήµα having max(Μισθός)>1200;

Σηµείωση: τα κατηγορήµατα στην πρόταση having εφαρµόζονται αφού σχηµατιστούν οι οµάδες και υπολογιστούν οι συναθροιστικές συναρτήσεις ενώ τα κατηγορήµατα στην πρόταση where εφαρµόζονται πριν από τον σχηµατισµό των οµάδων.

Όταν εµφανίζονται και το where και το having:

• η συνθήκη του where εφαρµόζεται πρώτα,

• οι πλειάδες που ικανοποιούν αυτή τη συνθήκη τοποθετούνται σε οµάδες µε βάση το group by και µετά αν υπάρχει συνθήκη στο having εφαρµόζεται στις οµάδες.

Π.χ. Το µέσο ποσό για κάθε πελάτη που ζει στα Ιωάννινα και έχει τουλάχιστον τρεις λογαριασµούς καταθέσεων

select Καταθέτης.Όνοµα-Πελάτη, avg(Ποσό)

from Καταθέτης, Λογαριασµός, Πελάτης

where Καταθέτης.Αριθµός-Λογαριασµού = Λογαριασµός.Αριθµός-Λογαριασµού and Καταθέτης.Όνοµα-Πελάτη = Πελάτης.Όνοµα-Πελάτη and Πόλη = “Ιωάννινα”

1

2

group by Καταθέτης.Όνοµα-Πελάτη

having count (distinct Καταθέτης.Αριθµός-Λογαριασµού) >= 3

4

Αν δεν υπάρχει group by αλλά υπάρθεωρείται ως µια οµάδα.

Σελ. 125

3

χει having, τότε το σύνολο των πλειάδων

Page 126: Βάσεις δεδομένων

Η ΓΛΏΣΣΑ ΒΆΣΕΩΝ ∆Ε∆ΟΜΈΝΩΝ SQL

Οι συνθήκες που εκφράζονται στο having µπορούν να περιλαµβάνουν µόνο γνωρίσµατα τα οποία έχουν µοναδική τιµή για την κάθε οµάδα (τα γνωρίσµατα στα οποία έχει νόηµα η οµαδοποίηση).

Π.χ. Θεωρήστε τη σχέση Εργαζόµενοι (Κωδικός, Όνοµα, Επώνυµο, Μισθός, Τµήµα). Το παρακάτω ερώτηµα δεν έχει νόηµα

select Τµήµα

from Εργαζόµενοι

group by Τµήµα

having max(Μισθός)>1200 and Όνοµα like "Κ*"

Αντίθετα η σωστή σύνταξη θα ήταν η εξής

select Εργαζόµενοι.Τµήµα

from Εργαζόµενοι

where Όνοµα like "Κ*"

group by Τµήµα

having max(Μισθός)>1200

Τα προηγούµενα παραδείγµατα δείχνουν πώς µπορούν να χρησιµοποιηθούν οι συναρτήσεις για την ανάκτηση "συνοπτικών" τιµών από τη βάση δεδοµένων. Τι γίνεται όταν θέλουµε να εµφανίσουµε και τα στοιχεία των κατόχων αυτών των τιµών (π.χ. ποιος ο εργαζόµενος µε το µεγαλύτερο µισθό). Τότε χρησιµοποιούµε τη συναθροιστική συνάρτηση σαν τιµή σύγκρισης σε εµφωλιασµένη υποερώτηση

Π.χ. Θεωρήστε τη σχέση ΕΡΓΑΖΟΜΕΝΟΣ (Κωδ, Όνοµα, Επίθετο, Μισθός) και βρείτε τα στοιχεία του εργαζοµένου µε το µεγαλύτερο µισθό

select Όνοµα, Επίθετο, Μισθός

from ΕΡΓΑΖΟΜΕΝΟΣ

where Μισθός = (select MAX(Μισθός) from ΕΡΓΑΖΟΜΕΝΟΣ);

Σελ. 126

Page 127: Βάσεις δεδομένων

8.2 Βασική Σύνταξη Γλώσσας Χειρισµού ∆εδοµένων (ερωτήσεων)

8.2.19 Εµφωλιασµένα Υποερωτήµατα

Η SQL επιτρέπει τον εµφωλιασµό υποερωτήσεων.

Τα εµφωλιασµένα υποερωτήµατα χρησιµοποιούνται σε προτάσεις where ή having.

Ένα υποερώτηµα είναι µια έκφραση select-from-where που είναι εµφωλιασµένη (ένθετη) µέσα σε µια άλλη ερώτηση. Τότε το πρώτο ονοµάζεται εξωτερικό ερώτηµα και το δεύτερο εσωτερικό ερώτηµα.

Συνήθως υπολογίζεται πρώτα το εσωτερικό ερώτηµα και κατόπιν το εξωτερικό εφαρµόζοντας σε αυτό το αποτέλεσµα του εσωτερικού ερωτήµατος. Εξαίρεση αποτελεί η περίπτωση των συσχετιζόµενων υποερωτηµάτων όπου το εσωτερικό ερώτηµα θα υπολογιστεί για κάθε γραµµή (συστοιχία) του εξωτερικού ερωτήµατος.

Συσχετιζόµενο υποερώτηµα ονοµάζεται εκείνο του οποίου η τιµή εξαρτάται από κάποια µεταβλητή που παίρνει την τιµή της σε κάποιο εξωτερικό ερώτηµα. Έτσι ένα τέτοιο υποερώτηµα πρέπει να εκτελείται κατ' επανάληψη (µία φορά για κάθε τιµή της µεταβλητής), αντί µία µόνο φορά.

Μια συνήθης χρήση των εµφωλιασµένων υποερωτηµάτων είναι η εκτέλεση ελέγχων για:

• τη συµµετοχή σε κάποιο σύνολο (set membership)

• τη σύγκριση συνόλων (set comparisons)

• το µέγεθος των συνόλων (set cardinality)

Οι τελεστές που χρησιµοποιούνται για τους ελέγχους είναι

• in/not in (συµµετοχή σε σύνολο)

• (>, <, =, κλπ) some/any/all (σύγκριση συνόλων)

• exists/not exists (έλεγχος για κενά σύνολα)

• unique/not unique (έλεγχος για διπλότυπα)

Η γενική σύνταξη των εµφωλιασµένων υποερωτηµάτων είναι η

select * from table1

where table1.somecolumn <σύγκριση>

(select someothercolumn

from table2

where someothercolumn = somevalue)

Σελ. 127

Page 128: Βάσεις δεδομένων

Η ΓΛΏΣΣΑ ΒΆΣΕΩΝ ∆Ε∆ΟΜΈΝΩΝ SQL

8.2.20 Εµφωλιασµένα Υποερωτήµατα - τελεστής in (not in)

Ο τελεστής in , not in ελέγχει αν µια πλειάδα ανήκει (δεν ανήκει) σε ένα σύνολο από πλειάδες που έχουν προκύψει από µια έκφραση select-from-where.

Π.χ. Βρείτε τα ονόµατα όλων των πελατών που έχουν και λογαριασµό όσο και δάνειο στην τράπεζα.

select distinct όνοµα-πελάτη

from ∆ανειζόµενος

where όνοµα-πελάτη in (select όνοµα-πελάτη from καταθέτης)

Π.χ. Βρείτε τα ονόµατα όλων των πελατών που έχουν δάνειο στην τράπεζα αλλά όχι λογαριασµό

select distinct όνοµα-πελάτη

from ∆ανειζόµενος

where όνοµα-πελάτη not in (select όνοµα-πελάτη from καταθέτης)

Μπορούµε επίσης να χρησιµοποιήσουµε το in (not in) για να ελέγξουµε ταυτόχρονα παραπάνω από ένα γνώρισµα

Π.χ. Βρείτε τα ονόµατα όλων των πελατών που έχουν πάρει δάνειο και έχουν και λογαριασµό στο υποκατάστηµα Βενιζέλου (δύο γνωρίσµατα).

select distinct όνοµα-πελάτη

from ∆ανειζόµενος, ∆άνειο

where ∆ανειζόµενος.αριθµός-δανείου = δάνειο.αριθµός-δανείου and όνοµα-Υποκαταστήµατος = “Βενιζέλου” and (Όνοµα-Υποκαταστήµατος, Όνοµα-πελάτη) in (select Όνοµα-Υποκαταστήµατος, Όνοµα-πελάτη

from καταθέτης, λογαριασµός

where καταθέτης.αριθµός-λογαριασµού =

λογαριασµός.αριθµός-λογαριασµού)

Σελ. 128

Page 129: Βάσεις δεδομένων

8.2 Βασική Σύνταξη Γλώσσας Χειρισµού ∆εδοµένων (ερωτήσεων)

Για να βρούµε τα ονόµατα όλων των πελατών που έχουν πάρει δάνειο αλλά δεν έχουν και λογαριασµό στο υποκατάστηµα Βενιζέλου µπορούµε να χρησιµοποιήσουµε το not in.

Σηµείωση: Είδαµε ότι το παραπάνω ερώτηµα µπορεί να γραφεί µε πιο απλό τρόπο. (intersect) Ο παραπάνω σχηµατισµός χρησιµοποιείται για να δείξει τα χαρακτηριστικά της SQL.

Ας δούµε ακόµη ένα παράδειγµα από τη βάση:

Ταινία (Τίτλος, Έτος, ∆ιάρκεια, Είδος)

Παίζει(Όνοµα, Τίτλος, Έτος)

Ηθοποιός(Όνοµα, ∆ιεύθυνση, Έτος-Γέννησης)

Π.χ. Βρείτε τα ονόµατα όλων των ηθοποιών που έπαιξαν σε ασπρόµαυρη ταινία

select distinct Ηθοποιός.Όνοµα

from Παίζει

where ( Παίζει.Τίτλος, Παίζει.Έτος) in (select Ταινία.Τίτλος, Ταινία.Έτος

from Ταινία

where Είδος = “Ασπρόµαυρη”)

Ο τελεστής in, not in µπορεί να χρησιµοποιηθεί και µε µη διατεταγµένα σύνολα

Π.χ. Βρείτε τα ονόµατα όλων των πελατών που έχουν πάρει δάνειο και δε λέγονται “Παπαδόπουλος” ή “Πέτρου”.

select distinct Όνοµα-Πελάτη

from ∆ανειζόµενος

where Όνοµα-Πελάτη not in (“Παπαδόπουλος” , “Πέτρου”)

Π.χ. Θεωρήστε µία βάση που αποτελείται από τους παρακάτω πίνακες

Υπάλληλοι (ΚωδΥπαλλήλου, Όνοµατεπώνυµο, Μισθός, ΚωδΤµήµατος)

Τµήµατα (ΚωδΤµήµατος, Τµήµα, Τοποθεσία)

και απλουστεύσετε το παρακάτω ερώτηµα SQL χρησιµοποιώντας τον τελεστή in

select Επώνυµο, Όνοµα, Τµήµα from Υπάλληλοι, Τµήµατα

where Υπάλληλοι.ΚωδΤµήµατος = Τµήµατα.ΚωδΤµήµατος AND

(Τµήµα = 'Μάρκετινγκ' OR Τµήµα = 'Πωλήσεων' OR Τµήµα = 'Έρευνας')

Απάντηση select Επώνυµο, Όνοµα, Τµήµα from Υπάλληλοι, Τµήµατα

where Υπάλληλοι.ΚωδΤµήµατος = Τµήµατα.ΚωδΤµήµατος AND

Τµήµα in ('Μάρκετινγκ', 'Πωλήσεων', 'Έρευνας');

Σελ. 129

Page 130: Βάσεις δεδομένων

Η ΓΛΏΣΣΑ ΒΆΣΕΩΝ ∆Ε∆ΟΜΈΝΩΝ SQL

8.2.21 Εµφωλιασµένα Υποερωτήµατα - τελεστής some (any)

Ο τελεστής some (any) χρησιµοποιείται για τη σύγκριση συνόλων.

Ο τελεστής some (any) έχει τη σηµασία του τουλάχιστον ένα από ένα σύνολο

Π.χ. Θεωρήστε τη σχέση Ηθοποιός (Όνοµα, ∆ιεύθυνση, Έτος-Γέννησης) και βρείτε τα Ονόµατα των Ηθοποιών µε Έτος-Γέννησης µικρότερο από το Έτος-Γέννησης ενός τουλάχιστον ηθοποιού της πόλης της Αθήνας

select Όνοµα

from Ηθοποιός where Έτος-Γέννησης <some (select Έτος-Γέννησης from Ηθοποιός

where Πόλη='Αθήνα');

Π.χ. Θεωρήστε τη σχέση Υποκατάστηµα (Όνοµα-Υποκαταστήµατος, Πόλη, Ενεργητικό) και βρείτε τα ονόµατα υποκαταστηµάτων µε Ενεργητικό µικρότερο από το Ενεργητικό ενός τουλάχιστον υποκαταστήµατος της πόλης των Σερρών.

select Όνοµα-Υποκαταστήµατος

from Υποκατάστηµα

where Ενεργητικό <some (select Ενεργητικό

from Υποκατάστηµα

where Πόλη='Σέρρες');

056

056

(5< some ) = true

050

) = false

5

05(5 ≠ some ) = true (εφόσον 0 ≠ 5)

(5< some

) = true(5 = some

(δηλαδή, 5 < some πλειάδα στη σχέση)

Επίσης ισχύει (= some) ισοδύναµο. του in

Ωστόσο (≠some) όχι ισοδύναµο του not in

Π.χ. Θεωρήστε τη σχέση Υποκατάστηµα (Όνοµα-Υποκαταστήµατος, Πόλη, Ενεργητικό) και βρείτε τα υποκαταστήµατα που έχουν ενεργητικό µεγαλύτερο από κάποιο (τουλάχιστον ένα) Υποκατάστηµα που βρίσκεται στην Αθήνα.

Σελ. 130

Page 131: Βάσεις δεδομένων

8.2 Βασική Σύνταξη Γλώσσας Χειρισµού ∆εδοµένων (ερωτήσεων)

select distinct Τ.όνοµα-Υποκαταστήµατος

from Υποκατάστηµα as Τ, Υποκατάστηµα as S

where Τ.ενεργητικό>S.ενεργητικό and S.πόλη =‘Αθήνα’

Η ίδια ερώτηση χρησιµοποιώντας την πρόταση >some select όνοµα-Υποκαταστήµατος

from Υποκατάστηµα

where ενεργητικό > some (select ενεργητικό

from Υποκατάστηµα

where πόλη =‘Αθήνα’)

8.2.22 Εµφωλιασµένα Υποερωτήµατα - τελεστής all

Ο τελεστής all χρησιµοποιείται για τη σύγκριση συνόλων.

Ο τελεστής all έχει τη σηµασία από όλα τα στοιχεία ενός συνόλου.

Π.χ. Θεωρήστε τη σχέση Υποκατάστηµα (Όνοµα-Υποκαταστήµατος, Πόλη, Ενεργητικό) και βρείτε τα ονόµατα όλων των υποκαταστηµάτων που έχουν ενεργητικό µεγαλύτερο από το ενεργητικό όλων των υποκαταστηµάτων της πόλης των Σερρών.

select distinct όνοµα-Υποκαταστήµατος

from Υποκατάστηµα

where ενεργητικό > all (select ενεργητικό

from Υποκατάστηµα

where πόλη = “Σέρρες”)

056

056

(5< all ) = false

6104

) = true

5

46(5 ≠ all ) = true (εφόσον 5 ≠ 4 και 5 ≠ 6)

(5< all

) = false(5 = all

Επίσης ισχύει (≠ all) ισοδύναµο του not in

Το (= all) ελέγχει αν το υποερώτηµα έχει µόνο µία τιµή άρα δεν είναι ισοδύναµο του in.

Σελ. 131

Page 132: Βάσεις δεδομένων

Η ΓΛΏΣΣΑ ΒΆΣΕΩΝ ∆Ε∆ΟΜΈΝΩΝ SQL

Π.χ. Θεωρήστε τη σχέση Λογαριασµός (Όνοµα-Υποκαταστήµατος, Αριθµός-λογαριασµού, Υπόλοιπο) και βρείτε το υποκατάστηµα µε το µεγαλύτερο µέσο ποσό καταθέσεων.

select distinct Όνοµα-Υποκαταστήµατος

from Λογαριασµός

group by Όνοµα-Υποκαταστήµατος

having avg (Ποσό) > = all (select avg(Ποσό)

from Λογαριασµός

group by Όνοµα-Υποκαταστήµατος)

Π.χ. Βρείτε τον πιο ηλικιωµένο ηθοποιό (µικρότερο Έτος-Γέννησης) που έπαιξε στην ταινία "Μανταλένα" (βρίσκουµε πρώτα το Έτος-Γέννησης των ηθοποιών που έπαιξαν στην ταινία)

select distinct Όνοµα

from Ηθοποιός

where Έτος-Γέννησης <= all (select Έτος-Γέννησης

from Παίζει, Ηθοποιός

where Παίζει.Όνοµα = Ηθοποιός.Όνοµα and Τίτλος = "Μανταλένα");

Σελ. 132

Page 133: Βάσεις δεδομένων

8.2 Βασική Σύνταξη Γλώσσας Χειρισµού ∆εδοµένων (ερωτήσεων)

8.2.23 Εµφωλιασµένα Υποερωτήµατα - τελεστής exists (not exists)

Ο τελεστής exists χρησιµοποιείται στον έλεγχο για κενά σύνολα (κενές σχέσεις).

Ο τελεστής exists επιστρέφει true αν η υποερώτηση δεν είναι κενή

exists r ⇔ r ≠ Ø

not exists r ⇔ r = Ø

Π.χ. Θεωρήστε τις σχέσεις ∆ανειζόµενος (Όνοµα-Πελάτη, Αριθµός-∆ανείου) και Καταθέτης (Όνοµα-Πελάτη, Αριθµός-Λογαριασµού) και βρείτε τους πελάτες που έχουν καταθέσεις και έχουν πάρει δάνειο (δηλαδή Καταθέτης που είναι και ∆ανειζόµενος).

select Όνοµα-Πελάτη

from ∆ανειζόµενος

where exists (select *

from Καταθέτης

where Καταθέτης.Όνοµα-Πελάτη = ∆ανειζόµενος.Όνοµα-Πελάτη)

Προσέξτε ότι είναι συσχετιζόµενο υποερώτηµα. Θα υπολογιστεί για κάθε τιµή της µεταβλητής ∆ανειζόµενος.Όνοµα-Πελάτη που παίρνει από το εξωτερικό ερώτηµα.

Εννοιολογικά η διαδικασία εκτέλεσης ακολουθεί τα παρακάτω βήµατα:

Το σύστηµα εξετάζει στο εξωτερικό ερώτηµα κάποια γραµµή του πίνακα ∆ανειζόµενος, έστω αυτή µε Όνοµα-Πελάτη ='Smith'. Τότε η µεταβλητή ∆ανειζόµενος.Όνοµα-Πελάτη παίρνει την τιµή'Smith', οπότε το σύστηµα εκτελεί το υποερώτηµα

(select * from Καταθέτης

where Καταθέτης.Όνοµα-Πελάτη = 'Smith')

και επιστρέφεται το σύνολο τιµών µιας γραµµής αν υπάρχει καταθέτης µε όνοµα 'Smith' ή καµίας γραµµής (κενό σύνολο) αν δεν υπάρχει καταθέτης µε όνοµα 'Smith'. Τώρα το σύστηµα µπορεί να ολοκληρώσει την επεξεργασία της γραµµής µε Όνοµα-Πελάτη ='Smith' του πίνακα ∆ανειζόµενος. Επιλέγει τη γραµµή αν το σύνολο που επιστρέφεται από το υποερώτηµα δεν είναι κενό (η πρόταση where βγάζει true και η γραµµή επιλέγεται)

Κατόπιν το σύστηµα συνεχίζει επαναλαµβάνοντας την ίδια διαδικασία για άλλη γραµµή του πίνακα ∆ανειζόµενος µέχρι να εξεταστούν όλες οι γραµµές του.

Προσέξτε επίσης ότι το παραπάνω υποερώτηµα αντιστοιχεί στην πράξη της τοµής της σχεσιακής άλγεβρας

(select όνοµα-πελάτη from ∆ανειζόµενος)

Σελ. 133

Page 134: Βάσεις δεδομένων

Η ΓΛΏΣΣΑ ΒΆΣΕΩΝ ∆Ε∆ΟΜΈΝΩΝ SQL

intersect

(select όνοµα-πελάτη from καταθέτης)

Ο τελεστής not exists: επιστρέφει true αν η υποερώτηση είναι κενή

Π.χ. Θεωρήστε τις σχέσεις ∆ανειζόµενος (Όνοµα-Πελάτη, Αριθµός-∆ανείου) και Καταθέτης (Όνοµα-Πελάτη, Αριθµός-Λογαριασµού) και βρείτε τα ονόµατα των πελατών που έχουν πάρει δάνειο και δεν έχουν καταθέσεις (δηλαδή ∆ανειζόµενος που δεν είναι Καταθέτης)

select Όνοµα-Πελάτη

from ∆ανειζόµενος

where not exists ( select *

from Καταθέτης

where Καταθέτης.Όνοµα-Πελάτη = ∆ανειζόµενος.Όνοµα-Πελάτη )

Προσέξτε ότι είναι και αυτό συσχετιζόµενο υποερώτηµα.

Το συγκεκριµένο αντιστοιχεί στην πράξη της διαφοράς της σχεσιακής άλγεβρας

(select όνοµα-πελάτη from ∆ανειζόµενος)

except

(select όνοµα-πελάτη from Καταθέτης)

Αντίθετα δείτε το παράδειγµα που ζητά τους Καταθέτες που δεν είναι ∆ανειζόµενοι

Π.χ. Θεωρήστε τις σχέσεις ∆ανειζόµενος (Όνοµα-Πελάτη, Αριθµός-∆ανείου) και Καταθέτης (Όνοµα-Πελάτη, Αριθµός-Λογαριασµού) και βρείτε τα ονόµατα των πελατών που έχουν καταθέσεις και δεν έχουν πάρει δάνειο.

select Όνοµα-Πελάτη

from Καταθέτης

where not exists ( select *

from ∆ανειζόµενος

where Καταθέτης.Όνοµα-Πελάτη = ∆ανειζόµενος.Όνοµα-Πελάτη )

Το υποερώτηµα συσχετίζεται µε το εξωτερικό ερώτηµα, όπως και τα προηγούµενα.

Σελ. 134

Page 135: Βάσεις δεδομένων

8.2 Βασική Σύνταξη Γλώσσας Χειρισµού ∆εδοµένων (ερωτήσεων)

Αφού ο τελεστής not exists: επιστρέφει true αν η υποερώτηση είναι κενή, µπορεί να χρησιµοποιηθεί για έλεγχο αν η σχέση A περιέχει όλη τη σχέση B

A BA B

Άρα B except A null

Τότε not exists (Β except Α) trueΧρησιµοποιείται στην πράξη της διαίρεσης της σχεσιακής άλγεβρας. Συνήθως αναγνωρίζουµε ότι πρόκειται για διαίρεση από τη λέξη όλα, ή για όλα στην ερώτηση.

Π.χ. Βρείτε τα ονόµατα των ηθοποιών που έχουν παίξει σε όλες τις ταινίες της Βουγιουκλάκη

select distinct S.Όνοµα

from Παίζει as S

where not exists ( (select Τίτλος, Έτος from Παίζει

where Όνοµα = "Βουγιουκλά

except (select Τίτλος, Έτος from Παίζει as R

where R.Όνοµα = S.Όνοµα

Π.χ. Θεωρήστε το παρακάτω παράδειγµα σχεσια

ενεργητικό

πόλη

όνοµα-υποκαταστήµατος

Υποκατάστηµα

ενεργητικό

πόλη

όνοµα-υποκαταστήµατος

Υποκατάστηµα

υπόλοιπο

όνοµα-υποκαταστήµατος

αριθµός-λογαριασµού

Λογαριασµός

υπόλοιπο

όνοµα-υποκαταστήµατος

αριθµός-λογαριασµού

Λογαριασµός

και βρείτε τα ονόµατα των πελατών που υποκαταστήµατα της πόλης της Πάτρας.

select distinct S.Όνοµα-Πελάτη

from Καταθέτης as S

where not exists ( (select Όνοµα-Υποκαταστή

from Υποκατάστηµα

where Πόλη = "Πάτρα")

Σελ. 135

not exists (Β except Α)

uπολογισµός γιακάθε S

κη")

) )

κού σχήµατος

αριθµός-λογαριασµού

όνοµα-πελάτη

καταθέτης

αριθµός-λογαριασµού

όνοµα-πελάτη

καταθέτης

έχουν καταθέσεις σε όλα τα

µατος

Page 136: Βάσεις δεδομένων

Η ΓΛΏΣΣΑ ΒΆΣΕΩΝ ∆Ε∆ΟΜΈΝΩΝ SQL

except (select R. Όνοµα-Υποκαταστήµατος

from Καταθέτης as T, Λογαριασµός as R

where T.Όνοµα-Πελάτη = S.Όνοµα-Πελάτη and T.Αριθµός-Λογαριασµού = R. Αριθµός-Λογαριασµού ) )

T.Αριθµός-Λογαριασµού = R. Αριθµός-Λογαριασµού ) )

8.2.24 Εµφωλιασµένες Υποερωτήσεις - τελεστής unique (not unique)

Ο τελεστής unique (not unique) ελέγχει αν ένα υποερώτηµα περιέχει διπλότυπες πλειάδες στο αποτέλεσµά του (έλεγχος για διπλότυπα).

Ο τελεστής unique: επιστρέφει true αν η υποερώτηση δεν έχει διπλότυπες πλειάδες.

Π.χ. Θεωρήστε τη σχέση Παίζει(Όνοµα, Τίτλος, Έτος) και βρείτε τα ονόµατα ηθοποιών που έχουν παίξει το πολύ σε µια ταινία

select Όνοµα

from Παίζει ας T

where unique (select Τ.Όνοµα

from Παίζει ας R

where T.Όνοµα = R.Όνοµα)

αντί του

select Όνοµα

from Παίζει

group by Όνοµα

having count(*) < = 1

Π.χ. Βρείτε τα ονόµατα των πελατών που έχουν ακριβώς (το πολύ) έναν λογαριασµό στο υποκατάστηµα “Ψηλά Αλώνια”

ενεργητικόπόληόνοµα-υποκαταστήµατος

Υποκατάστηµα

ενεργητικόπόληόνοµα-υποκαταστήµατος

Υποκατάστηµα

υπόλοιποόνοµα- υποκαταστήµατοςαριθµός-λογαριασµού

Λογαριασµός

υπόλοιποόνοµα- υποκαταστήµατοςαριθµός-λογαριασµού

Λογαριασµός

αριθµός-λογαριασµούόνοµα-πελάτη

Καταθέτης

αριθµός-λογαριασµούόνοµα-πελάτη

Καταθέτης

select T.Όνοµα-Πελάτη

from Καταθέτης as Τ

Σελ. 136

Page 137: Βάσεις δεδομένων

8.2 Βασική Σύνταξη Γλώσσας Χειρισµού ∆εδοµένων (ερωτήσεων)

where unique (select R.Όνοµα-Πελάτη

from Λογαριασµός, Καταθέτης as R

where T.Όνοµα-Πελάτη = R.Όνοµα-Πελάτη

and R. Αριθµός-Λογαριασµού =

Λογαριασµός. Αριθµός- Λογαριασµού

and Λογαριασµός.Όνοµα-Υποκαταστήµατος = “Ψηλά Αλώνια”)

Ο τελεστής not unique: επιστρέφει true αν η υποερώτηση έχει διπλότυπα.

Παράδειγµα: Οι πελάτες που έχουν τουλάχιστον δύο καταθέσεις στο υποκατάστηµα “Ψηλά Αλώνια”

select T.Όνοµα-Πελάτη

from Καταθέτης as Τ

where not unique (select R.Όνοµα-Πελάτη

from Λογαριασµός, Καταθέτης as R

where T.Όνοµα-Πελάτη = R.Όνοµα-Πελάτη

and R. Αριθµός-Λογαριασµού =

Λογαριασµός. Αριθµός- Λογαριασµού

and Λογαριασµός.Όνοµα-Υποκαταστήµατος = “Ψηλά Αλώνια”)

Παρατηρήσεις:

Τα Κατηγορήµατα Σύγκρισης µε Ποσοδείκτες (Quantified Comparison Predicates) χρησιµοποιούνται για τη σύγκριση της τιµής µιας έκφρασης µε το αποτέλεσµα µιας εντολης select

Το κατηγόρηµα expr = any (subselect) έχει την ίδια σηµασιολογία µε την έκφραση expr in (subselect)

Η έκφραση expr not in (subselect) δεν είναι ισοδύναµη µε το κατηγόρηµα expr ≠ any (subselect)

Είναι ισοδύναµη µε το κατηγόρηµα expr ≠ all (subselect)

Σελ. 137

Page 138: Βάσεις δεδομένων

Η ΓΛΏΣΣΑ ΒΆΣΕΩΝ ∆Ε∆ΟΜΈΝΩΝ SQL

8.2.25 Συνενώσεις Συνόλων

Συνδυάζει εγγραφές από δύο πίνακες, όταν υπάρχουν τιµές που συµφωνούν σε ένα κοινό πεδίο.

Η SQL--92 υποστηρίζει διάφορους τύπους συνενώσεων που συνήθως χρησιµοποιούνται στο from, αλλά µπορούν να χρησιµοποιηθούν οπουδήποτε µπορεί να χρησιµοποιηθεί µια σχέση.

Γενική σύνταξη:

<όνοµα-σχέσης1> <τύπος-συνένωσης> <όνοµα-σχέσης2> <συνθήκη-συνένωσης>

ή

<όνοµα-σχέσης1> natural <τύπος-συνένωσης> <όνοµα-σχέσης2>

Τύποι Συνένωσης:

inner join: εσωτερική (θήτα) συνένωση

left outer join: αριστερή εξωτερική συνένωση

right outer join

full outer join

Συνθήκες Συνένωσης:

on P

using (A1, A2, ..., An): γνωρίσµατα που πρέπει να ταιριάζουν στη συνένωση είναι τα Ai. Τα Ai πρέπει να είναι γνωρίσµατα κοινά και στις δυο σχέσεις και εµφανίζονται στο αποτέλεσµα µόνο µια φορά.

Για την εσωτερική συνένωση η συνθήκη δεν είναι υποχρεωτική, όταν λείπει ισοδυναµεί µε καρτεσιανό γινόµενο.

Οι λέξεις κλειδιά inner και outer είναι προαιρετικές.

natural: φυσική συνένωση, τα γνωρίσµατα εµφανίζονται στο αποτέλεσµα µε την εξής διάταξη: πρώτα αυτά µε τα οποία έγινε η συνένωση (δηλ., αυτά που είναι κοινά και στις δύο σχέσεις), µετά τα υπόλοιπα της πρώτης σχέσης, και τέλος τα υπόλοιπα της δεύτερης σχέσης.

Σελ. 138

Page 139: Βάσεις δεδομένων

8.2 Βασική Σύνταξη Γλώσσας Χειρισµού ∆εδοµένων (ερωτήσεων)

Παράδειγµα σύνταξης INNER JOIN

select field1, field2, field3

from first_table INNER JOIN second_table ON first_table.keyfield = second_table.foreign_keyfield

Παράδειγµα σύνταξης LEFT JOIN

select field1, field2, field3

from first_table LEFT JOIN second_table ON first_table.keyfield = second_table.foreign_keyfield

Παράδειγµα σύνταξης RIGHT JOIN

select field1, field2, field3

from first_table RIGHT JOIN second_table ON first_table.keyfield = second_table.foreign_keyfield

Π.χ. Τα ονόµατα των πελατών που είτε έχουν καταθέσεις είτε έχουν πάρει δάνεια (αλλά όχι και τα δυο)

select Όνοµα-Πελάτη

from Καταθέτης natural full outer join ∆ανειζόµενος

where Αριθµός-Λογαριασµού is null or Αριθµός-∆ανείου is null

8.2.26 Παραγόµενες Σχέσεις

• Η SQL-92 δίνει τη δυνατότητα µια υποερώτηση να χρησιµοποιηθεί στο from

• Τότε πρέπει να τις δοθεί ένα όνοµα και τα γνωρίσµατα της να µετονοµαστούν

• Αυτό γίνεται χρησιµοποιώντας το as

Η SQL-92 δίνει τη δυνατότητα χρησιµοποιώντας το as να δοθεί ένα προσωρινό όνοµα σε µία προσωρινή σχέση που προκύπτει από µια υποερώτηση.

Π.χ. Θεωρήστε τις σχέσεις Καταθέτης (Όνοµα-Πελάτη, Αριθµός-Λογαριασµού) και Λογαριασµός (Όνοµα-Υποκαταστήµατος, Αριθµός-λογαριασµού, Υπόλοιπο)

Σελ. 139

Page 140: Βάσεις δεδομένων

Η ΓΛΏΣΣΑ ΒΆΣΕΩΝ ∆Ε∆ΟΜΈΝΩΝ SQL

υπόλοιποόνοµα- υποκαταστήµατοςαριθµός-λογαριασµού

Λογαριασµός

υπόλοιποόνοµα- υποκαταστήµατοςαριθµός-λογαριασµού

Λογαριασµός

αριθµός-λογαριασµούόνοµα-πελάτη

Καταθέτης

αριθµός-λογαριασµούόνοµα-πελάτη

Καταθέτης

και βρείτε το µέσο υπόλοιπο για όλα τα υποκαταστήµατα για τα οποία το µέσο υπόλοιπο είναι µεγαλύτερο των 1200

select Όνοµα-Υποκαταστήµατος, Μέσο-υπόλοιπο

from (select Όνοµα-Υποκαταστήµατος, avg(υπόλοιπο)

from Καταθέτης

group by Όνοµα-Υποκαταστήµατος )

as Αποτέλεσµα(Όνοµα-Υποκαταστήµατος, Μέσο-υπόλοιπο)

where Μέσο-Yπόλοιπο > 1200

Σηµειώστε ότι εδώ δεν χρειάζεται να χρησιµοποιήσουµε την πρόταση having αφού υπολογίστηκε στην πρόταση from η προσωρινή σχέση Αποτέλεσµα, και τα γνωρίσµατα της σχέσης Αποτέλεσµα µπορούν να χρησιµοποιηθούν κατευθείαν στην πρόταση where.

Σελ. 140

Page 141: Βάσεις δεδομένων

8.3 Βασική Σύνταξη Γλώσσας ορισµου ∆εδοµένων

8.3 ΒΑΣΙΚΗ ΣΥΝΤΑΞΗ ΓΛΩΣΣΑΣ ΟΡΙΣΜΟΥ ∆Ε∆ΟΜΕΝΩΝ

Σχετικά µε το λογικό σχήµα, η ΓΟ∆ SQL υποστηρίζει τους ορισµούς:

• του σχήµατος κάθε σχέσης

• του πεδίου τιµών κάθε γνωρίσµατος

• των περιορισµών ακεραιότητας

create table R(A1 D1, A2 D2, ..., An Dn),

<περιορισµός-ακεραιότητας1>,

…,

<περιορισµός-ακεραιότηταςk>

όπου R είναι το όνοµα της σχέσης, Ai τα ονόµατα των γνωρισµάτων, και Di οι τύποι των αντίστοιχων πεδίων τιµών.

8.3.1 Τύποι Πεδίων Ορισµού στην SQL

Για τον ορισµό του πεδίου ορισµού, οι διαθέσιµοι built-in τύποι περιλαµβάνουν:

char(n). Αλφαριθµητικό σταθερού µήκους n που ορίζεται από τον χρήστη.

varchar(n). Αλφαριθµητικό µεταβλητού µήκους, µε µέγιστο µήκος n οριζόµενο από τον χρήστη.

int. Ακέραιος (υποσύνολο που εξαρτάται από τη µηχανή)

smallint. Μικρός ακέραιος (υποσύνολο που εξαρτάται από τη µηχανή)

numeric(p,d). Αριθµός σταθερής υποδιαστολής, µε ακρίβεια p ψηφίων όπου τα d είναι στα δεξιά της υποδιαστολής.

real, double precision. Πραγµατικοί αριθµοί, διπλής ακρίβειας, όπου η ακρίβεια εξαρτάται από τη µηχανή.

float(n). Πραγµατικοί αριθµοί κινητής υποδιαστολής, µε ακρίβεια τουλάχιστον n ψηφίων οριζόµενη από τον χρήστη.

date. Ηµεροµηνία της µορφής Π.χ. date ‘2002-10-22’

time. Ώρα της ηµέρας σε ώρες, λεπτά, δευτερόλεπτα. Π.χ. time ’09:05:32’

timestamp. Η ηµέρα συν την ώρα. Π.χ. timestamp ‘2002-10-22 09:05:32.75’

interval. Χρονικό διάστηµα. Π.χ. διάστηµα ‘1’ ηµέρας

Η αφαίρεση µιας ιδιότητας τύπου date/time/timestamp από µία άλλη όµοιου τύπου είναι τιµή τύπου Interval. Οι τιµές τύπου interval µπορούν να προστεθούν σε ιδιότητες τύπου date/time/timestamp.

Σελ. 141

Page 142: Βάσεις δεδομένων

Η ΓΛΏΣΣΑ ΒΆΣΕΩΝ ∆Ε∆ΟΜΈΝΩΝ SQL

Μπορούµε να αφαιρέσουµε τιµές από µεµονωµένα πεδία των παραπάνω πεδίων. Π.χ. extract (year from r.ώρα_έναρξης). Μπορούµε επίσης να χρησιµοποιήσουµε τον τελεστή cast ως: cast <string-valued-expression> as date.

Οι τιµές null επιτρέπονται στα πεδία ορισµού. ∆ηλώνοντας µια ιδιότητα ως not null απαγορεύει τις τιµές αυτές για την συγκεκριµένη ιδιότητα.

Η create domain δηµιουργεί πεδία ορισµού οριζόµενα από τον χρήστη

create domain όνοµα-ατόµου char(20) not null

8.3.2 Ορισµός Σχήµατος

Μια σχέση της SQL ορίζεται χρησιµοποιώντας την εντολή create table.

Η γενική δοµή είναι

create table R (A1 D1, A2 D2, ..., An Dn),

<περιορισµός-ακεραιότητας1>,

…,

<περιορισµός-ακεραιότηταςk>

όπου R είναι το όνοµα της σχέσης, Ai τα ονόµατα των γνωρισµάτων, και Di οι τύποι δεδοµένων των αντίστοιχων πεδίων τιµών.

Επιτρεπτοί περιορισµοί ακεραιότητας είναι της µορφής:

• primary key Aj1, Aj2, ..., Ajn, (δεν επιτρέπονται επαναλαµβανόµενες

τιµές και NULL τιµές)

• unique Aj1, Aj2, ..., Ajn, (δεν επιτρέπονται επαναλαµβανόµενες τιµές; NULL τιµές επιτρέπονται)

• check P

• foreign key (Ai) references Ai

Παραδείγµατα

create table Πελάτης

(Όνοµα-Πελάτη char(20) not null, Οδός char(30),

Πόλη char(30),

primary key (Όνοµα-Πελάτη) )

Σελ. 142

Page 143: Βάσεις δεδομένων

8.3 Βασική Σύνταξη Γλώσσας ορισµου ∆εδοµένων

create table Λογαριασµός

(Αριθµός-Λογαριασµού char(10) not null, Όνοµα-Υποκαταστήµατος char(15),

υπόλοιπο int, primary key (Αριθµός-Λογαριασµού)

check (Υπόλοιπο >= 0)

CREATE TABLE student

(name char(15) NOT NULL,

student_id char(15) NOT NULL,

degree_level char(15) NOT NULL,

PRIMARY KEY (student_id)

CHECK (degree_level) IN ("Bachelors","Masters","PhD");

Επίσης, πιο περίπλοκες συνθήκες, π.χ., για ξένα κλειδιά:

check (Όνοµα-Υποκαταστήµατος in select Όνοµα-Υποκαταστήµατος from Υποκατάστηµα)

8.3.3 Περιορισµοί Ακεραιότητας αναφορών

Σύνταξη:

foreign key (Ai) references Aj

Όταν µια πράξη παραβιάζει έναν περιορισµό αναφοράς απορρίπτεται εκτός αν έχει οριστεί:

on delete cascade

on update cascade

Παράδειγµα

create table

.. …..

foreign key (Όνοµα-Υποκαταστήµατος) references Υποκατάστηµα

on delete cascade

on update cascade …..

Σελ. 143

Page 144: Βάσεις δεδομένων

Η ΓΛΏΣΣΑ ΒΆΣΕΩΝ ∆Ε∆ΟΜΈΝΩΝ SQL

8.3.4 Περιορισµοί Ακεραιότητας Πεδίου ορισµού

Χρησιµοποιώντας την εντολή check:

Παραδείγµατα

(1) Ελάχιστος ωροµίσθιο

create domain Ωροµίσθιο numeric(5, 2)

constraint Έλεγχος-Ωροµισθίου check(Ποσό >= 4.00)

(2) Να µην περιέχει την τιµή null

create domain Πεδίο-Αριθµός-Λογαριασµού char(10)

constraint Έλεγχος-Αριθµός-Λογαριασµού check(value not null)

(3) Να παίρνει συγκεκριµένες τιµές

create domain Τύπος-Λογαριασµού char(10)

constraint Έλεγχος-Τύπος-Λογαριασµού check value in ("Όψεως”, "Ταµιευτηρίου”)

Σελ. 144

Page 145: Βάσεις δεδομένων

8.3 Βασική Σύνταξη Γλώσσας ορισµου ∆εδοµένων

ΠΑΡΑ∆ΕΙΓΜΑ για τη βάση δεδοµένων της τράπεζας.

create table Πελάτης (Όνοµα-Πελάτη char(20) not null, Οδός char(30), Πόλη char(30), primary key (Όνοµα-Πελάτη) ) create table υποκατάστηµα (Όνοµα-Υποκαταστήµατος char(15) not null, πόλη char(30), Ενεργητικό integer, primary key (Όνοµα-Υποκαταστήµατος), check (Ενεργητικό >=0) ); create table Λογαριασµός (Αριθµός-Λογαριασµού char(10) not null, Όνοµα-Υποκαταστήµατος char(15), υπόλοιπο integer, primary key (Αριθµός-Λογαριασµού), foreign key (Όνοµα-Υποκαταστήµατος) references

Υποκατάστηµα(Όνοµα-Υποκαταστήµατος), check (Υπόλοιπο >= 0) ) create table ∆άνειο (Αριθµός-∆ανείου char(10) not null, Όνοµα-Υποκαταστήµατος char(15), Ποσό integer, primary key (Αριθµός-∆ανείου), foreign key (Όνοµα-Υποκαταστήµατος) references

Υποκατάστηµα(Όνοµα-Υποκαταστήµατος) ) create table ∆ανειζόµενος (Όνοµα-Πελάτη char(20) not null, Αριθµός-∆ανείου char(10) not null, primary key (Όνοµα-Πελάτη , Αριθµός-∆ανείου), foreign key (Όνοµα-Πελάτη) references Πελάτης(Όνοµα-Πελάτη), foreign key (Αριθµός-∆ανείου) references ∆άνειο(Αριθµός-∆ανείου) ) create table Καταθέτης (Όνοµα-Πελάτη char(20) not null, Αριθµός-Λογαριασµού char(10) not null, primary key (Όνοµα-Πελάτη , Αριθµός-∆ανείου), foreign key (Όνοµα-Πελάτη) references Πελάτης(Όνοµα-Πελάτη), foreign key (Αριθµός-Λογαριασµού) references

Λογαριασµός(Αριθµός-Λογαριασµού) )

Σελ. 145

Page 146: Βάσεις δεδομένων

Η ΓΛΏΣΣΑ ΒΆΣΕΩΝ ∆Ε∆ΟΜΈΝΩΝ SQL

8.3.5 ∆ιαγραφή Σχήµατος

Μια καινούργια σχέση είναι αρχικά άδεια.

Για να σβηστεί ένα σχήµα σχέσης R:

drop table R

∆ιαφορετική από

delete from R

8.3.6 Τροποποίηση Σχήµατος

Η γενική σύνταξη είναι

ALTER TABLE table_name ADD column_name datatype

ALTER TABLE table_name DROP COLUMN column_name

• ADD - προσθέτει καινούργια στήλη

• DROP - διαγράφει µια στήλη

• MODIFY - τροποποιεί µια στήλη

Προσθήκη νέου γνωρίσµατος:

alter table R add A D

προσθήκη σε µια σχέση R που ήδη υπάρχει του γνωρίσµατος A µε πεδίο τιµών D, η τιµή των πλειάδων της R στο καινούργιο γνώρισµα είναι null.

∆ιαγραφή γνωρίσµατος:

alter table R drop A

alter table R modify (όνοµα_στήλης new_datatype)

modify µπορεί να τροποποιήσει µόνο τον τύπο δεδοµένων, όχι το όνοµα της στήλης Εντολή Εντολή SQL ∆ιαγραφή Πίνακα DROP TABLE <όνοµα πίνακα> Προσθήκη πεδίου ALTER TABLE <όνοµα πίνακα> ADD COLUMN <όνοµα πεδίου>

τύπος δεδοµένων ∆ιαγραφή πεδίου ALTER TABLE <όνοµα πίνακα> DROP COLUMN <όνοµα πεδίου> Αλλαγή τύπου δεδοµένων πεδίου

ALTER TABLE <όνοµα πίνακα> MODIFY COLUMN <όνοµα πεδίου> νέος τύπος δεδοµένων

Σηµείωση: Μερικά ΣΣ∆Β∆ δεν επιτρέπουν τη διαγραφή (DROP) στήλης σε έναν πίνακα της βάσης.

Σελ. 146

Page 147: Βάσεις δεδομένων

8.4 Τροποποίηση Βάσης ∆εδοµένων Γλώσσα Χειρισµού ∆εδοµένων (ΓX∆)

8.4 ΤΡΟΠΟΠΟΙΗΣΗ ΒΑΣΗΣ ∆Ε∆ΟΜΕΝΩΝ ΓΛΩΣΣΑ ΧΕΙΡΙΣΜΟΥ ∆Ε∆ΟΜΕΝΩΝ (ΓX∆)

Τροποποιήσεις

1. ∆ιαγραφή

2. Εισαγωγή

3. Ενηµέρωση

8.4.1 Εισαγωγή

Η γενική σύνταξη για την εισαγωγή δεδοµένων είναι

INSERT INTO table_name VALUES (value1, value2,....)

ή

INSERT INTO table_name (column1, column2,...) VALUES (value1, value2,....)

Για να εισάγουµε δεδοµένα σε µια σχέση είτε

(α) προσδιορίζουµε την πλειάδα, είτε

insert into R(A1, …, An) values (v1, …, vn)

(β) γράφουµε µια ερώτηση που το αποτέλεσµα της εισάγεται στη σχέση.

insert into R(A1, …, An) select-from-where

Παράδειγµα για το (α)

insert into Λογαριασµός

values (“Ψηλά-Αλώνια”, “A--9732’’, 1200)

Όταν όµως εισάγουµε δεδοµένα µε οποιαδήποτε σειρά , π.χ.,:

insert into Λογαριασµός (Αριθµός-Λογαριασµού, Όνοµα-Υποκαταστήµατος, Ποσό) values (“A--9732’’, “Ψηλά-Αλώνια”, 1200)

Παράδειγµα για το (β):

Για κάθε πελάτη που έχει πάρει δάνειο από το υποκατάστηµα Ψηλά Αλώνια προστίθεται ως δώρο ένας λογαριασµός των $200

insert into Λογαρισµός

select Όνοµα-Υποκαταστήµατος, Αριθµός-∆ανείου, 200

from ∆άνειο where Όνοµα-Υποκαταστήµατος = “Ψηλά Αλώνια”

Σελ. 147

Page 148: Βάσεις δεδομένων

Η ΓΛΏΣΣΑ ΒΆΣΕΩΝ ∆Ε∆ΟΜΈΝΩΝ SQL

Πρέπει πρώτα να υπολογιστεί το select πλήρως και µετά να γίνει η εισαγωγή.

Τι αποτέλεσµα έχει η παρακάτω εντολή αν αυτό δε συµβαίνει;

insert into Λογαριασµός

select *

from Λογαριασµός

Επίσης, εισαγωγή null τιµών:

insert into Λογαριασµός

values (null, “A--9732’’, 1200)

8.4.2 ∆ιαγραφή

Μπορούµε να σβήσουµε µόνο ολόκληρες πλειάδες και όχι συγκεκριµένα γνωρίσµατα.

delete from R where P

Σβήνει όλες τις πλειάδες της R για τις οποίες ισχύει το κατηγόρηµα P.

Όταν λείπει το where σβήνονται όλες οι πλειάδες µιας σχέσης.

Παραδείγµατα

(1) Όλους τους λογαριασµούς του Παπαδόπουλου

delete from Καταθέτης

where Όνοµα-Πελάτη = “Παπαδόπουλος”

(2) Όλους τους λογαριασµούς στα υποκαταστήµατα της Πάτρας

delete from Λογαριασµός

where Όνοµα-Υποκαταστήµατος in (select Όνοµα-Υποκαταστήµατος

from Υποκατάστηµα

where Πόλη = "Πάτρα")

Παρατήρηση: δεν υπάρχει τρόπος να διαγράψουµε τη µία από δυο ίδιες πλειάδες

Αν και µπορούµε να σβήσουµε πλειάδες µόνο από µία σχέση τη φορά µπορούµε να αναφερθούµε σε περισσότερες από µια σχέσεις στην υποερώτηση του where

(3) Όλους τους λογαριασµούς µιας τράπεζας µε υπόλοιπο µικρότερο από το µέσο υπόλοιπο στην τράπεζα.

Σελ. 148

Page 149: Βάσεις δεδομένων

8.4 Τροποποίηση Βάσης ∆εδοµένων Γλώσσα Χειρισµού ∆εδοµένων (ΓX∆)

delete from Λογαριασµός

where υπόλοιπο > (select avg(υπόλοιπο)

from Λογαριασµός)

Πρώτα γίνεται ο έλεγχος σε όλες τις πλειάδες και µετά αυτές που ικανοποιούν τη συνθήκη διαγράφονται.

Παράδειγµα: µια τράπεζα θέλει να κλείσει όλα τα υποκαταστήµατά της που βρίσκονται στην Καστοριά

delete from Υποκατάστηµα

where Όνοµα-Υποκαταστήµατος in (select Όνοµα-Υποκαταστήµατος

from Υποκατάστηµα

where Πόλη = "Kαστοριά")

Πρέπει να διαγράψουµε και όλους τους λογαριασµούς:delete from Λογαριασµός

where Όνοµα-Υποκαταστήµατος in (select Όνοµα-Υποκαταστήµατος

from Υποκατάστηµα

where Πόλη = "Kαστοριά")ΠΡΟΣΟΧΗ: όταν θέλουµε να διαγράψουµε κάποια δεδοµένα, πρέπει να διαγράψουµε όλα τα δεδοµένα που συσχετίζονται µ’ αυτά. Επίσης πρέπει να προσέξουµε την σειρά µε την οποία θα γίνουν οι διαγραφές.

υποκατάστηµα λογαριασµός

Πόλη Όνοµα_Υποκ. Όνοµα_Υποκ. Όνοµα-Πελάτη Υπόλοιπο

Καστοριά K1 K1 ΚΩΤΣΗΣ 350.000

Καστοριά K3 K2 ΑΠΟΣΤΟΛΙ∆ΗΣ 230.000

Θεσσαλονίκη Θ1 Θ1 ΣΤΕΦΑΝΟΥ 670.000

Θεσσαλονίκη Θ2 Θ2 ΠΑΠΑΝΙΚΟΛΑΟΥ 256.000

Αθήνα A1 K3 ΧΑΤΖΟΠΟΥΛΟΣ 410.000

• αν διαγράψουµε από τον πίνακα υποκατάστηµα όλα τα υποκαταστήµατα της Καστοριάς, θα έχουµε πρόβληµα ορθότητας στον πίνακα Λογαριασµός.

• πρώτα πρέπει να διαγράψουµε τους λογαριασµούς και µετά τα υποκαταστήµατα.

8.4.3 Ενηµερώσεις

Η γενική σύνταξη είναι

UPDATE όνοµα-πίνακα SET όνοµα-στήλης = νέα-τιµή

Σελ. 149

Page 150: Βάσεις δεδομένων

Η ΓΛΏΣΣΑ ΒΆΣΕΩΝ ∆Ε∆ΟΜΈΝΩΝ SQL

WHERE P

Η ενηµέρωση µπορεί να γίνει και σε περισσότερες στήλες

Π.χ. έστω ότι ένας πελάτης αλλάζει διεύθυνση

UPDATE Πελάτης SET Οδός = "Ερµού 4", Πόλη= "Σέρρες"

WHERE Όνοµα-πελάτη="Smith"

Η ενηµέρωση µπορεί να γίνει και σε όλες τις σειρές που ικανοποιούν το κατηγόρηµα Ρ

Παράδειγµα: Αύξηση όλων των καταθέσεων που είναι µεγαλύτερες των 100 κατά 5% λόγω τοκισµού

update Λογαριασµός

set Ποσό = Ποσό * 1.05

where Ποσό > 100

Παράδειγµα: στους πελάτες που έχουν υπόλοιπο < 1.000.000 η τράπεζα δίνει 5% και στους πελάτες που έχουν υπόλοιπο > 1.000.000 δίνει 9%:

update Λογαριασµός

set Ποσό = Ποσό * 1.05

where Ποσό < 1.000.000

update Λογαριασµός

set Ποσό = Ποσό * 1.09

where Ποσό > 1.000.000

Ποιο update πρέπει να τρέξουµε πρώτα;

Π.χ. Αύξηση όλων των υπολοίπων που είναι µεγαλύτερα από τον µέσο όρο κατά 5%

update Λογαριασµός

set Υπόλοιπο = Υπόλοιπο * 1.05

where Υπόλοιπο > select avg(Υπόλοιπο)

from Λογαριασµός

Σελ. 150

Page 151: Βάσεις δεδομένων

8.4 Τροποποίηση Βάσης ∆εδοµένων Γλώσσα Χειρισµού ∆εδοµένων (ΓX∆)

9 ΣΥΝΑΛΛΑΓΕΣ

Η ταυτόχρονη εκτέλεση προγραµµάτων χρηστών είναι απαραίτητη για την καλή

απόδοση ενός Σ∆Β∆. Επειδή οι προσπελάσεις στο δίσκο είναι συχνές και σχετικά

αργές, είναι σηµαντικό να κρατείται η cpu απασχοληµένη µε πολλά προγράµµατα

χρηστών. Για το λόγο αυτό και περισσότερα Σ∆Β∆ είναι Πολυχρηστικά

Στην εικόνα 1 φαίνεται ένα διαπλεγµένο µοντέλο ταυτόχρονης εκτέλεσης

συναλλαγών από δύο χρήστες Α και Β

Α ΑΑ ΑΒ ΒΒ Β

Εικόνα 1

Γενικά θα µπορούσαµε να πούµε ότι συναλλαγή (transaction) είναι η εκτέλεση

ενός προγράµµατος που προσπελαύνει ή τροποποιεί το περιεχόµενο της βάσης

δεδοµένων.

Ένα πρόγραµµα χρήστη µπορεί να εκτελεί πολλές λειτουργίες στα δεδοµένα

που ανακτεί από τη Β∆, αλλά το Σ∆Β∆ ενδιαφέρεται µόνο για τα δεδοµένα που

διαβάζονται/ γράφονται στη Β∆

Οι βασικές ενέργειες που µπορεί να εκτελέσει ένας χρήστης στη διάρκεια µιας

συναλλαγής είναι:

Ανάγνωση(Χ) - R(X)

Εγγραφή(Χ) - W(X)

Όπού Χ είναι µια πλειάδα (εγγραφή) της βάσης δεδοµένων.

Οι χρήστες υποβάλουν συναλλαγές και πρέπει να µπορούν να θεωρούν ότι

κάθε συναλλαγή εκτελείται µόνη της.

Σελ. 151

Page 152: Βάσεις δεδομένων

ΣΥΝΑΛΛΑΓΕΣ

O Ταυτοχρονισµός ή συνδροµικότητα (concurrency) αποτελεί ένα πρόβληµα

που δηµιουργείται στο Σ∆Β∆ όταν διαπλέκονται οι πράξεις (αναγνώσεις /εγγραφές)

των διαφόρων συναλλαγών

Κάθε Συναλλαγή πρέπει να αφήνει τη Β∆ σε µια συνεπή κατάσταση αν όταν

άρχισε η Συναλλαγή η Β∆ ήταν σε συνεπή κατάσταση.

Το Σ∆Β∆ επιβάλει κάποιους ΠΑ (Περιορισµούς Ακεραιότητας) µε βάση τους ΠΑ

που έχουν δηλωθεί στις εντολές CREATE TABLE

Πέρα από αυτό, το Σ∆Β∆ δεν καταλαβαίνει τη σηµασιολογία των δεδοµένων

(π.χ., δεν καταλαβαίνει πώς να υπολογίσει το επιτόκιο) .

9.1 ΠΡΑΞΕΙΣ ΣΥΝΑΛΛΑΓΩΝ

Εκτός από την ανάγνωση και εγγραφή που προαναφέραµε, σε µια συναλλαγή

µπορούν να εκτελεστούν και οι ακόλουθες πράξεις :

BEGIN έναρξη της συναλλαγής

R(X) ανάγνωση µιας συστοιχίας Χ

W(X) εγγραφή µιας συστοιχίας Χ

END τέλος της συναλλαγής

COMMIT (επικύρωση) - επιτυχία - όλες οι τροποποιήσεις επικυρώνονται και δεν

µπορούν να αναιρεθούν

ABORT ή ROLLBACK (ακύρωση ή ανάκληση) - αποτυχία - όλες οι τροποποιήσεις

πρέπει να αναιρεθούν

• Η πράξη COMMIT TRANSACTION (ή απλώς COMMIT, για συντοµία)

σηµατοδοτεί το επιτυχές τέλος της συναλλαγής: ενηµερώνει το διαχειριστή

συναλλαγών ότι µια λογική µονάδα εργασίας έχει ολοκληρωθεί µε επιτυχία, η βάση

δεδοµένων είναι (ή θα πρέπει να είναι) και πάλι σε συνεπή κατάσταση, και όλες οι

ενηµερώσεις που έγιναν από αυτή τη µονάδα εργασίας µπορούν τώρα να

"επικυρωθούν" (commit), δηλαδή να µονιµοποιηθούν.

• Αντίθετα, η πράξη ROLLBACK TRANSACTION (ή απλώς ROLLBACK, για

συντοµία) σηµατοδοτεί το ανεπιτυχές τέλος της συναλλαγής: ενηµερώνει το

διαχειριστή συναλλαγών ότι κάτι πήγε στραβά, ότι η βάση δεδοµένων ίσως είναι σε

ασυνεπή κατάσταση, και ότι όλες οι ενηµερώσεις που έγιναν µέχρι εκείνο το σηµείο

Σελ. 152

Page 153: Βάσεις δεδομένων

9.1 Πράξεις Συναλλαγών

από τη λογική µονάδα εργασίας πρέπει να "ανασκευαστούν" (roll back), δηλαδή να

αναιρεθούν.

Μια Συναλλαγή µπορεί να να επικυρωθεί (commit) αφού ολοκληρώσει όλες τις

πράξεις της ενώ µπορεί να ακυρωθεί (abort- ROLLBACK ) αφού εκτελέσει κάποιες

από τις πράξεις της.

Το Σ∆Β∆ καταγράφει (logs) όλες τις πράξεις έτσι ώστε να µπορεί να αναιρέσει

(undo) τις πράξεις µιας ακυρωµένης (aborted) συναλλαγής.

R / W

ABORT

COMMIT

ABORT

END

Εικόνα 2

Για να είναι δυνατή η ανάκαµψη από αποτυχίες, καταχωρούνται πληροφορίες

για τις πράξεις των Συναλλαγών οι οποίες και αποθηκεύονται στο δίσκο

Τύποι πληροφορίας που αποθηκεύονται στα αρχεία καταγραφής ή logs είναι:

• έναρξη Συναλλαγής

• εγγραφή στοιχείου (παλιά, νέα τιµή)

• ανάγνωση στοιχείου

• επικύρωση/ ακύρωση

Εάν είναι γνωστά τα παραπάνω τότε είναι δυνατή η αναίρεση (undo) ή η

επανάληψη (redo) µιας συναλλαγής

(Στην πραγµατικότητα, τα παραπάνω είναι κάπως υπεραπλουστευµένα. Στην

πράξη, το αρχείο καταγραφής ή αλλιώς βιβλίο πεπραγµένων αποτελείται από δύο

µέρη, ένα ενεργό ή online µέρος και ένα αρχειακό ή offline µέρος. Το ενεργό µέρος

Σελ. 153

Page 154: Βάσεις δεδομένων

ΣΥΝΑΛΛΑΓΕΣ

είναι το µέρος που χρησιµοποιείται κατά την κανονική λειτουργία του συστήµατος, για

να καταγράφονται οι λεπτοµέρειες των ενηµερώσεων καθώς εκτελούνται, και

συνήθως τηρείται σε δίσκο. Όταν το ενεργό µέρος γεµίσει, τα περιεχόµενα του

µεταφέρονται στο αρχειακό µέρος, το οποίο - επειδή η επεξεργασία του γίνεται πάντα

σειριακά - συνήθως τηρείται σε ταινίες dat.)

9.2 ΟΙ Ι∆ΙΟΤΗΤΕΣ ACID ΜΙΑΣ ΣΥΝΑΛΛΑΓΗΣ

Οοι συναλλαγές έχουν τέσσερις σηµαντικές ιδιότητες — την ατοµικότητα

(atomicity), τη συνέπεια (consistency), την αποµόνωση (isolation), και την

ανθεκτικότητα (durability), που όλες µαζί λέγονται "ιδιότητες ACID".

Αtomicity (ατοµικότητα) -οι συναλλαγές είναι ατοµικές, είτε όλες οι πράξεις είτε

καµία.

Consistency (συνέπεια) - διατήρηση συνέπειας της Β∆ (µετασχηµατίζει µια

συνεπή κατάσταση της βάσης δεδοµένων σε µια άλλη συνεπή κατάσταση, χωρίς κατ’

ανάγκη να διατηρεί τη συνέπεια σε όλα τα ενδιάµεσα σηµεία)

Isolation (αποµόνωση) - δεν αποκαλύπτει ενδιάµεσα αποτελέσµατα. Οι

ενηµερώσεις οποιασδήποτε δεδοµένης συναλλαγής παραµένουν κρυφές από όλες τις

υπόλοιπες, µέχρι να επικυρωθεί η συναλλαγή.

Durability (µονιµότητα ή διάρκεια) - µετά την επικύρωση µιας Συναλλαγής οι

αλλαγές δεν είναι δυνατόν να χαθούν. Αφού επικυρωθεί µια συναλλαγή, οι

ενηµερώσεις της επιβιώνουν ακόµα και αν επακολουθήσει κατάρρευση του

συστήµατος

Το σύστηµα πρέπει να εγγυάται ότι οι µεµονωµένες εντολές είναι και οι ίδιες

ατοµικές (όλα ή τίποτα). Αυτό το ζήτηµα γίνεται ιδιαίτερα σηµαντικό σε ένα σχεσιακό

σύστηµα, όπου οι εντολές είναι εντολές σε επίπεδο συνόλου και κατά κανόνα

επενεργούν σε πολλές συστοιχίες µαζί. ∆εν πρέπει να επιτρέπεται να αστοχήσει µια

τέτοια εντολή στη µέση της εκτέλεσης της και να αφήσει τη βάση δεδοµένων σε

ασυνεπή κατάσταση (π.χ., µε άλλες συστοιχίες στο σύνολο προορισµού

ενηµερωµένες και άλλες όχι). Με άλλα λόγια, αν συµβεί ένα σφάλµα στη µέση της

εκτέλεσης µιας τέτοιας εντολής, τότε η βάση δεδοµένων πρέπει να παραµείνει

εντελώς αµετάβλητη. Ακόµα, το ίδιο ισχύει ακόµα και αν η εντολή προκαλεί την

εκτέλεση πρόσθετων πράξεων π.χ., εξαιτίας ενός κανόνα αλυσιδωτής (cascade)

διαγραφής ξένου κλειδιού

Σελ. 154

Page 155: Βάσεις δεδομένων

9.3 Ορισµός Συναλλαγής

9.3 ΟΡΙΣΜΟΣ ΣΥΝΑΛΛΑΓΗΣ

Μια Συναλλαγή είναι µια ακολουθία από πράξεις εγγραφής και ανάγνωσης που

τελειώνει µε µια πράξη επικύρωσης (commit) ή µε µια πράξη ακύρωσης (abort -

rollback)

Θεωρείστε τις δύο συναλλαγές (Xacts) του παραδείγµατος:

T1: BEGIN R(X), X=Χ-N, W(X), R(Y), Y=Y+N, W(Y), END

T2: BEGIN R(X) X=X+M, W(X) END

Οι παραπάνω συναλλαγές θα µπορούσαν πιο γενικά να γραφούν όπως

παρακάτω χωρίς να χάσουν το νόηµά τους.

Τ1: R(X) W(X) R(Y) W(Y) C

T2: R(X) W(X) C

Αυτή η ακολουθία πράξεων εκφράζει µια συγκεκριµένη εκτέλεση ενός συνόλου

Συναλλαγών

Οι πράξεις των Συναλλαγών εµφανίζονται σε ένα χρονοπρόγραµµα µε τη σειρά

που εκτελούνται.

9.4 ΧΡΟΝΟΠΡΟΓΡΑΜΜΑ Ένα χρονοπρόγραµµα (schedule) S των Συναλλαγών T1, T2, .., Tn είναι µια

διάταξη των πράξεων τους µε τον περιορισµό ότι για κάθε Συναλλαγή Ti που

συµµετέχει στο S οι πράξεις της Ti στο S πρέπει να εµφανίζονται µε την ίδια σειρά

που εµφανίζονται στην Ti

Στη συνέχεια θα χρησιµοποιούµε δείκτη στις πράξεις ώστε να φαίνεται καθαρά

σε ποια συναλλαγή αναφέρονται.

Έστω Τ1 και Τ2 δύο διαφορετικές συναλλαγές που η κάθε µία κάνει τις

ακόλουθες πράξεις:

Σελ. 155

Page 156: Βάσεις δεδομένων

ΣΥΝΑΛΛΑΓΕΣ

T1 T2

W1(X)

W1(Y)

R1(X)

R1(Y)

C1

R2(X)

W2(X)

C2

Οι παραπάνω πράξεις γράφονται σε χρονοπρόγραµµα ως εξής

:

S: R1(X) W1(X) R1(Y) W1(Y) C1 R2(X) W2(X) C2

Υπάρχουν όπως φαίνεται τόσα διαφορετικά χρονοπρογράµµατα όσες και οι

πιθανές εκτελέσεις

S: R1(X) R2(X) W1(X) R1(Y) W2(X) C2 W1(Y) C1

R1(X)

W2(X)C2

T1 T2

W1(X) R1(Y)

R2(X)

W1(Y) C1

R1(X)

W2(X)C2

T1 T2

W1(X) R1(Y)

R2(X)

W1(Y) C1

Σελ. 156

Page 157: Βάσεις δεδομένων

9.5 Σύγκρουση πράξεων σε χρονοπρόγραµµα

9.5 ΣΥΓΚΡΟΥΣΗ ΠΡΑΞΕΩΝ ΣΕ ΧΡΟΝΟΠΡΟΓΡΑΜΜΑ

∆ύο πράξεις σε ένα χρονοπρόγραµµα συγκρούονται αν

(α) ανήκουν σε διαφορετικές Συναλλαγές,

(β) προσπελαύνουν το ίδιο στοιχείο, και

(γ) µια από αυτές είναι πράξη εγγραφής (W)

Ποια είναι η σχέση των χρονοπρογραµµάτων S1 και S2;

S1: R1(X) R2(X) W1(X) R1(Y) W2(X) C2 W1(Y) C1

S1: R1(X) R2(X) W1(X) R1(Y) W2(X) C2 W1(Y) C1

Σηµασία έχει η σχετική θέση (διάταξη) των πράξεων που συγκρούονται

S1: R1(X) R2(X) W1(X) R1(Y) W2(X) C2 W1(Y) C1

S2: R2(X) R1(X) W1(X) R1(Y) W2(X) C2 W1(Y) C1

Τα S1 και S2 είναι ισοδύναµα γιατί διαφέρουν µόνο στη διάταξη πράξεων που

δε συγκρούονται. Σε αυτή την περίπτωση υπάρχει µερική διάταξη.

9.6 ΠΛΗΡΕΣ ΧΡΟΝΟΠΡΟΓΡΑΜΜΑ

Αυτό που ζητάµε από ένα χρονοπρόγραµµα επίσης είναι να µην περιέχει

ενεργές συναλλαγές. Σε αυτή την περίπτωση το ονοµάζουµε πλήρες.

Ένα πλήρες χρονοπρόγραµµα (schedule) S των Συναλλαγών T1, T2, .., Tn είναι

ένα σύνολο από πράξεις και µια µερική διάταξη των πράξεων αυτών µε τους

ακόλουθους περιορισµούς:

Σελ. 157

Page 158: Βάσεις δεδομένων

ΣΥΝΑΛΛΑΓΕΣ

(i) οι πράξεις του S είναι ακριβώς οι πράξεις των T1, T2, .., Tn

συµπεριλαµβανοµένης µιας πράξης ακύρωσης ή επικύρωσης ως τελευταίας πράξης

σε κάθε Συναλλαγή στο χρονοπρόγραµµα

(ii) για κάθε Συναλλαγή Ti που συµµετέχει στο S οι πράξεις της Ti στο S πρέπει

να εµφανίζονται µε την ίδια σειρά που εµφανίζονται στην Ti

(iii) Για κάθε ζεύγος συγκρουόµενων πράξεων, µια από τις δύο πρέπει να

προηγείται της άλλης στο χρονοπρόγραµµα

Επικυρωµένη προβολή C(S) ενός χρονοπρογράµµατος S είναι εκείνη που

περιλαµβάνει µόνο τις πράξεις του S που ανήκουν σε επικυρωµένες συναλλαγές

Γενικά τα βήµατα που ακολουθούνται ώστε µία συναλλαγή να είναι πλήρης είναι

καταρχήν:

1. Συναλλαγή

2. ∆ιαπεπλεγµένη εκτέλεση Συναλλαγών (χρονοπρόγραµµα)

3. Σωστό - αποδεκτό χρονοπρόγραµµα ισοδυναµεί µε σειριακό

χρονοπρόγραµµα

9.7 ΣΕΙΡΙΑΚΑ ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΑ

Είναι τα χρονοπρογράµµατα που δεν διαπλέκουν πράξεις διαφορετικών

συναλλαγών. Οι πράξεις κάθε Συναλλαγής εκτελούνται διαδοχικά, χωρίς παρεµβολή

πράξεων από άλλη συναλλαγή.

Παρατήρηση: Αν κάθε Συναλλαγή διατηρεί τη συνέπεια, τότε κάθε σειριακό

χρονοπρόγραµµα διατηρεί τη συνέπεια.

Ένα σειριακό χρονοπρόγραµµα είναι σωστό

S: R1(X) W1(X) R1(Y) W1(Y) C1 R2(X) W2(X) C2

9.7.1 Ισοδύναµα Χρονοπρογράµµατα :

Για κάθε κατάσταση της Β∆, το αποτέλεσµα της εκτέλεσης του πρώτου

χρονοπρογράµµατος όταν είναι το ίδιο µε το αποτέλεσµα του δεύτερου

χρονοπρογράµµατος τότε τα χρονοπρογράµµατα τα ονοµάζουµε ισοδύναµα.

Σελ. 158

Page 159: Βάσεις δεδομένων

9.8 Ισοδύναµα Χρονοπρογράµµατα βάσει Συγκρούσεων

Ένα χρονοπρόγραµµα ισοδύναµο µε ένα σειριακό είναι σωστό.

Όταν για κάθε κατάσταση της Β∆, το αποτέλεσµα της εκτέλεσης του πρώτου

χρονοπρογράµµατος είναι το ίδιο µε το αποτέλεσµα του δεύτερου

χρονοπρογράµµατος τότε λέµε ότι έχουµε Ισοδύναµα Χρονοπρογράµµατα.

9.7.2 Σειριοποιήσιµο Χρονοπρόγραµµα

Ένα χρονοπρόγραµµα που είναι ισοδύναµο µε κάποιο σειριακό ονοµάζεται

σειριοποιήσιµο χρονοπρόγραµµα

9.8 ΙΣΟ∆ΥΝΑΜΑ ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΑ ΒΑΣΕΙ ΣΥΓΚΡΟΥΣΕΩΝ

∆υο χρονοπρογράµµατα είναι ισοδύναµα βάσει συγκρούσεων αν η διάταξη κάθε

ζεύγους συγκρουόµενων πράξεων είναι ίδια και στα δυο χρονοπρογράµµατα.

S1: R1(X) R2(X) W1(X) R1(Y) W2(X) C2 W1(Y) C1

Παραδείγµατα

S2: R2(X) R1(X) W1(X) R1(Y) W2(X) C2 W1(Y) C1

S3: R2(X) W2(X) C2 R1(X) W1(X) R1(Y) W1(Y) C1

S4: R2(X) R1(X) W1(X) R1(Y) W1(Y) C1 W2(X) C2

9.8.1 Σειριοποιησιµότητα βάσει Συγκρούσεων:

Ένα χρονοπρόγραµµα S είναι σειριοποιήσιµο βάσει συγκρούσεων αν είναι

ισοδύναµο βάσει συγκρούσεων µε κάποιο σειριακό χρονοπρόγραµµα S’.

Σε αυτήν την περίπτωση µπορούµε να αναδιατάξουµε τις µη συγκρουόµενες

πράξεις στο S µέχρι να σχηµατίσουµε ένα ισοδύναµο σειριακό χρονοπρόγραµµα.

S1: R1(X) R2(X) W1(X) R1(Y) W2(X) C2 W1(Y) C1

S2: R2(X) R1(X) W1(X) R1(Y) W2(X) C2 W1(Y) C1

Σελ. 159

Page 160: Βάσεις δεδομένων

ΣΥΝΑΛΛΑΓΕΣ

Σειριοποιήσιµα

Sα: R1(X) W1(X) R1(Y) W1(Y) C1 R2(X) W2(X) C2

Sβ: R2(X) W2(X) C2 R1(X) W1(X) R1(Y) W1(Y) C1

9.8.2 Σειριοποιησιµότητα Βάσει Όψεων

Ένας άλλος, λιγότερο περιοριστικός, ορισµός της ισοδυναµίας

χρονοπρογραµµάτων ονοµάζεται ισοδυναµία όψεων. Αυτός οδηγεί σε ένα

διαφορετικό ορισµό της σειριοποιησιµότητας που καλείται σειριοποιησιµότητα βάσει

όψεων. ∆ύο χρονοπρογράµµατα καλούνται ισοδυνάµων όψεων αν ισχύουν οι εξής

συνθήκες:

1. Το ίδιο σύνολο συναλλαγών συµµετέχει και στο χρονοπρόγραµµα S

και στο S’ και τα S και S’ περιλαµβάνουν τις ίδιες πράξεις των συγκεκριµένων

συναλλαγών.

2. Για κάθε πράξη Rі(X) της Ti στο S, αν η τιµή της Χ που διαβάζεται από

την πράξη έχει γραφεί από µια πράξη Wj (X) της Tj (ή αν είναι η αρχική τιµή του Χ

πριν την έναρξη του χρονοπρογράµµατος), η ίδια συνθήκη πρέπει να ισχύει για την

τιµή του Χ που διαβάζεται από την πράξη Ri(X) της Ti στοS’.

3. Αν η πράξη Wk(Y) της Tk είναι η τελευταία πράξη που τροποποιεί το

στοιχείο Υ στο S, τότε η Wk(Y) της Tk πρέπει να είναι η τελευταία πράξη που

τροποποιεί το Y στο S’.

Σελ. 160

Page 161: Βάσεις δεδομένων

10.1 Είδη Αποτυχιών

10 ΑΝΑΚΑΜΨΗ

Όταν µια Συναλλαγή υποβάλλεται στο Σ∆Β∆ το σύστηµα πρέπει να εξασφαλίσει

ότι

(α) είτε όλες οι πράξεις της θα ολοκληρωθούν είτε

(β) καµία δε θα εκτελεστεί - δηλαδή δε θα έχει καµία επίδραση στη Β∆ - ακόµα

και αν συµβούν αποτυχίες

Αυτή είναι µια σηµαντική ιδιότητα που πρέπει να εξασφαλίσει το Σ∆Β∆. Ο

χρήστης πρέπει να µπορεί να θεωρεί ότι όλο το πρόγραµµα (πράξεις) εκτελείται σε

ένα βήµα είτε καµία πράξη δεν εκτελείται δηλαδή να τηρείται η ατοµικότητα των

συναλλαγών.

10.1 ΕΙ∆Η ΑΠΟΤΥΧΙΩΝ

∆υο είναι οι κατηγορίες αποτυχίας που συνοψίζονται στην καταστροφή ή όχι της

µόνιµης αποθήκευσης των δεδοµένων, δηλαδή του δίσκου.

Παραδείγµατα αποτυχιών

Αστοχίες συστήµατος (διακοπή ρεύµατος) οι οποίες επηρεάζουν όλες τις

συναλλαγές που είναι σε εξέλιξη, αλλά δεν προκαλούν φυσική βλάβη στη βάση

δεδοµένων. Μια αστοχία συστήµατος λέγεται µερικές φορές κατάρρευση λογισµικού

(soft crash).

Αστοχίες µέσων (καταστροφή δίσκου) οι οποίες προκαλούν βλάβη στη βάση

δεδοµένων ή σε κάποιο µέρος της, και επηρεάζουν τουλάχιστον τις συναλλαγές που

χρησιµοποιούν αυτό το µέρος της βάσης δεδοµένων. Μια αστοχία µέσου λέγεται

µερικές φορές κατάρρευση υλικού (hard crash).

Πώς θα ξέρει όµως το σύστηµα κατά την επανεκκίνηση ποιες συναλλαγές

πρέπει να αναιρέσει και ποιες να επανεκτελέσει;

Σελ. 161

Page 162: Βάσεις δεδομένων

ΑΝΑΚΑΜΨΗ

10.2 ΣΗΜΕΙΟ ΕΛΕΓΧΟΥ

Η απάντηση είναι η εξής:

Σε κάποια προκαθορισµένα χρονικά διαστήµατα - κατά κανόνα, όποτε έχει

γραφεί ένας προκαθορισµένος αριθµός καταχωρίσεων στο αρχείο πεπραγµένων log -

το σύστηµα αυτόµατα θέτει ένα σηµείο ελέγχου (checkpoint).

Η τοποθέτηση ενός σηµείου ελέγχου σηµαίνει

(α) φυσική καταγραφή ("καταναγκαστική καταγραφή") των περιεχοµένων των

περιοχών προσωρινής αποθήκευσης στη φυσική βάση δεδοµένων, και

(β) φυσική καταγραφή µιας ειδικής εγγραφής σηµείου ελέγχου (checkpoint

record) στο φυσικό αρχείο πεπραγµένων.

Η εγγραφή του σηµείου ελέγχου δίνει µια λίστα όλων των συναλλαγών που ήταν

σε εξέλιξη τη στιγµή που τέθηκε το σηµείο ελέγχου

Εικόνα 3

Σελ. 162

Page 163: Βάσεις δεδομένων

10.2 Σηµείο Ελέγχου

Κατά την επανεκκίνηση λοιπόν, το σύστηµα πρώτα ακολουθεί την παρακάτω

διαδικασία, για να αναγνωρίσει όλες τις συναλλαγές των τύπων T2-T5:

1. Η διαδικασία ξεκινάει µε δύο λίστες συναλλαγών, τη λίστα αναιρέσεων (UNDO) και

τη λίστα επανεκτελέσεων (REDO). Αρχικά, η λίστα UNDO είναι εξ ορισµού ίση µε τη

λίστα όλων των συναλλαγών στην πιο πρόσφατη εγγραφή σηµείου ελέγχου' η λίστα

REDO είναι εξ ορισµού κενή.

2. Γίνεται αναζήτηση προς τα εµπρός µέσα στο αρχείο πεπραγµένων,

ξεκινώντας από την εγγραφή του σηµείου ελέγχου.

3. Αν βρεθεί στο log µια καταχώριση BEGIN TRANSACTION για τη συναλλαγή

Τ, προστίθεται η T στη λίστα UNDO.

4. Αν βρεθεί στο αρχείο πεπραγµένων µια καταχώριση COMMIT για τη

συναλλαγή Τ, µεταφέρεται η Τ από τη λίστα UNDO στη λίστα REDO.

5. Όταν η αναζήτηση φτάσει στο τέλος του αρχείου πεπραγµένων, οι λίστες

UNDO και REDO προσδιορίζουν, αντίστοιχα, τις συναλλαγές των τύπων Τ3 και T5 και

τις συναλλαγές των τύπων T2 και Τ4.

Για την ανάκαµψη από µια τέτοια αστοχία, απαιτείται να γίνει επαναφόρτωση (ή

επαναφορά - restore) της βάσης δεδοµένων από ένα εφεδρικό αντίγραφο (database

backup)

Έπειτα να χρησιµοποιηθεί το αρχείο πεπραγµένων - τόσο το ενεργό όσο και το

αρχειακό µέρος του, για να επανεκτελεστούν όλες οι συναλλαγές που ολοκληρώθηκαν

µετά από τη στιγµή που πάρθηκε το εφεδρικό αντίγραφο.

Οι συναλλαγές που ήταν ακόµα σε εξέλιξη τη στιγµή της αστοχίας, έχουν

"αναιρεθεί" (για την ακρίβεια, έχουν χαθεί), έτσι και αλλιώς.

Προκύπτει λοιπόν η ανάγκη να έχουµε ένα βοηθητικό πρόγραµµα

αποτύπωσης/επαναφοράς (dump/restore),

ή εκφόρτωσης/ επαναφόρτωσης (unload/reload) εφεδρικών αντιγράφων.

Το µέρος αυτού του βοηθητικού προγράµµατος που ασχολείται µε την

αποτύπωση (dump) χρησιµοποιείται για τη δηµιουργία εφεδρικών αντιγράφων της

βάσης δεδοµένων(µπορεί να τηρούνται σε ταινία ή σε κάποιο άλλο αρχειακό µέσο

αποθήκευσης' δεν είναι απαραίτητο να βρίσκονται σε ένα µέσο άµεσης

προσπέλασης.)

Σελ. 163

Page 164: Βάσεις δεδομένων

ΑΝΑΚΑΜΨΗ

Μετά από µια αστοχία µέσου, το µέρος του βοηθητικού προγράµµατος που

ασχολείται µε την επαναφορά (restore) χρησιµοποιείται για να ξαναδηµιουργηθεί η

βάση δεδοµένων από ένα καθορισµένο εφεδρικό αντίγραφο.

10.3 ΕΠΙΚΥΡΩΣΗ ∆ΥΟ ΦΑΣΕΩΝ

Η επικύρωση ή αλλιώς ανασκευή της βάσης σε περίπτωση αστοχίας

συστήµατος ή µέσου, ονοµάζεται επικύρωση δύο φάσεων (two-phase commit). Η

επικύρωση δύο φάσεων είναι σηµαντική όταν µια δεδοµένη συναλλαγή µπορεί να

αλληλεπιδρά µε πολλούς ανεξάρτητους "διαχειριστές πόρων", που ο καθένας

διαχειρίζεται το δικό του σύνολο ανακάµψιµων πόρων (recoverable resources) και

συντηρεί το δικό του αρχείο πεπραγµένων για την ανάκαµψη

Στην πρώτη φάση γίνεται καταναγκαστική καταγραφή όλων των

καταχωρίσεων πεπραγµένων της συναλλαγής σε µόνιµο µέσο αποθήκευσης.

Ότι και αν συµβεί µετά, ο διαχειριστής πόρων θα έχει µια µόνιµη εγγραφή της

εργασίας που έκανε για λογαριασµό της συναλλαγής, και έτσι θα µπορεί να

επικυρώσει τις ενηµερώσεις της ή να τις ανασκευάσει, ανάλογα µε την περίπτωση

Στην δεύτερη φάση γίνετε η επικύρωση ή ανασκευή τη συναλλαγής τοπικά,

ανάλογα µε την τελική υπόδειξη (commit, abort)

10.4 ΥΠΟΣΤΗΡΙΞΗ ΑΠΟ ΤΗΝ SQL

·Η SQL υποστηρίζει τις συνηθισµένες εντολές COMMIT και ROLLBACK που

αφορούν τις συναλλαγές και, εποµένως, και την ανάκαµψη µε βάση τις συναλλαγές.

Ισχύουν τα εξής:

• σειριοποιήσιµο είναι ένα χρονοπρόγραµµα εξορισµού

• επαναλαµβανόµενη ανάγνωση – µόνο οι επικυρωµένες εγγραφές µπορούν

να διαβαστούν, οι επαναλαµβανόµενες εγγραφές της ίδιας εγγραφής πρέπει

να επιστρέψουν την ίδια τιµή. Ωστόσο, µια δοσοληψία ίσως να µην είναι

σειριοποιήσιµη – µπορεί να βρει µερικές εγγραφές που έχουν εισαχθεί από την

δοσοληψία, αλλά ίσως να µην τις βρει όλες.

• επικύρωση ανάγνωσης – µόνο εγγραφές που έχουν επικυρωθεί µπορούν να

αναγνωστούν, αλλά διαδοχικές αναγνώσεις µιας εγγραφής µπορεί να

επιστρέψει διαφορετικά (αλλά επικυρωµένες) τιµές

Σελ. 164

Page 165: Βάσεις δεδομένων

10.4 Υποστήριξη από την SQL

• ακύρωση ανάγνωσης – ακόµη και οι εγγραφές που δεν έχουν επικυρωθεί

µπορούν να αναγνωστούν.

Χαµηλότεροι βαθµοί συνέπειας είναι χρήσιµοι για τη συλλογή στατιστικών

στοιχείων από τη βάση δεδοµένων.

Μια διαφορά µεταξύ της υποστήριξης των συναλλαγών από την SQL και των

γενικών εννοιών που σκιαγραφήσαµε είναι ότι η SQL δε διαθέτει ρητή εντολή έναρξης

συναλλαγής BEGIN TRANSACTION. Αντίθετα, η έναρξη µιας συναλλαγής υπονοείται,

κάθε φορά που το πρόγραµµα εκτελεί µια εντολή "έναρξης συναλλαγής" και δεν είναι

ήδη σε εξέλιξη µια συναλλαγή. Οι λεπτοµέρειες για το ποιες ακριβώς εντολές της SQL

είναι εντολές "έναρξης συναλλαγής" δεν έχουν θέση εδώ, θα αρκεστούµε να πούµε ότι

όλες οι εντολές ορισµού δεδοµένων και χειρισµού δεδοµένων που εξετάστηκαν στο

κεφάλαιο της SQL είναι εντολές έναρξης συναλλαγής. Μια ειδική εντολή που

ονοµάζεται SET TRANSACTION χρησιµοποιείται για να ορίσει κάποια χαρακτηριστικά

της νέας συναλλαγής που θα ξεκινήσει (η SET TRANSACTION µπορεί να εκτελεστεί

µόνο όταν καµία συναλλαγή δεν είναι σε εξέλιξη, και η ίδια δεν είναι εντολή έναρξης

συναλλαγής). Τα µόνα από αυτά τα χαρακτηριστικά που θα εξετάσουµε εδώ είναι ο

τρόπος προσπέλασης και το επίπεδο αποµόνωσης.

Η σύνταξη της εντολής είναι:

SET TRANSACTION λίστα-επιλόγων ;

όπου η λίστα-επιλογών πρέπει να περιέχει τουλάχιστον µία επιλογή.

• Η επιλογή για τον τρόπο προσπέλασης (access mode) µπορεί να είναι είτε

READ ONLY (µόνο ανάγνωση) είτε READ WRITE (ανάγνωση και εγγραφή). Αν δεν

καθοριστεί κανένα από τα δύο, ο τρόπος προσπέλασης θεωρείται READ WRITE,

εκτός αν έχει καθοριστεί επίπεδο αποµόνωσης READ UNCOMMITTED (ανάγνωση

ανεπικύρωτων), οπότε ο τρόπος προσπέλασης θεωρείται ότι είναι READ ONLY. Αν

καθοριστεί τρόπος προσπέλασης READ WRITE, το επίπεδο αποµόνωσης δεν πρέπει

να είναι READ UNCOMMITTED.

Η επιλογή για το επίπεδο αποµόνωσης (isolation level) έχει τη µορφή

ISOLATION LEVEL αποµόνωση, όπου αποµόνωση µπορεί να είναι µία από τις

φράσεις READ UNCOMMITTED (ανάγνωση ανεπικύρωτων), READ COMMITTED

(ανάγνωση επικυρωµένων), REPEATABLE READ (επαναλήψιµη ανάγνωση), ή

SERIALIZABLE (σειροποιήσιµο).

Σελ. 165

Page 166: Βάσεις δεδομένων

ΤΑΥΤΟΧΡΟΝΙΣΜΟΣ

11 ΤΑΥΤΟΧΡΟΝΙΣΜΟΣ

Τα θέµατα του ταυτοχρονισµού και της ανάκαµψης πηγαίνουν µαζί, καθώς είναι

και τα δύο µέρη του γενικότερου θέµατος της επεξεργασίας συναλλαγών. Θα

στρέψουµε τώρα την προσοχή µας ειδικά στον ταυτοχρονισµό. Ο όρος

ταυτοχρονισµός ή συνδροµικότητα (concurrency) αναφέρεται στο γεγονός ότι τα

DBMS κατά κανόνα επιτρέπουν σε πολλές συναλλαγές να προσπελάζουν τα ίδια

δεδοµένα την ίδια στιγµή - και σε ένα τέτοιο σύστηµα, όπως είναι γνωστό, χρειάζεται

ένας µηχανισµός ελέγχου ταυτοχρονισµού κάποιου είδους, για να εξασφαλίζει ότι οι

ταυτόχρονες συναλλαγές δε θα παρεµβάλλονται η µία στη λειτουργία της άλλης.

Επιτρέπεται σε πολλαπλές συναλλάγές να εκτελούνται ταυτόχρονα στο

σύστηµα. Τα πλεονεκτήµατα είναι:

• ·αυξηµένη χρήση του επεξεργαστή και του δίσκου, οδηγεί σε καλύτερη

συνολική απόδοση του συστήµατος: µια δοσοληψία µπορεί να χρησιµοποιήσει

την Κ.Μ.Ε την ώρα που κάποια άλλη δοσοληψία διαβάζει ή γράφει στοιχεία

στο δίσκο.

• ·µειωµένος συνολικός µέσος χρόνος απόκρισης για τις δοσοληψίες: οι µικρές

δοσοληψίες δεν χρειάζεται να περιµένουν τις δοσοληψίες που αργούν να

τελειώσουν.

Θεωρείστε δύο συναλλαγές (Xacts):

T1: BEGIN R(X), X=Χ-N, W(X), R(Y), Y=Y+N, W(Y), END

T2: BEGIN R(X) X=X+M, W(X) END

∆ιαισθητικά, η T1 µεταφέρει Ν κρατήσεις θέσεων από µια πτήση (Χ) και τις

µεταφέρει σε µία άλλη (Y). Η T2 απλώς κρατά Μ θέσεις στην πρώτη πτήση (τη Χ )

Σελ. 166

Page 167: Βάσεις δεδομένων

10.4 Υποστήριξη από την SQL

∆εν υπάρχει καµία εγγύηση ότι η T1 θα εκτελεστεί πριν την T2 η το ανάποδο, αν

και η δύο υποβληθούν ταυτόχρονα. Ωστόσο, το συνολικό αποτέλεσµα πρέπει να είναι

ισοδύναµο µε τη µία ή την άλλη περίπτωση (δηλαδή, µε κάποια σειριακή εκτέλεση των

δύο Συναλλαγών)

BEGINR(X)X=Χ-NW(X) R(Y)Y=Y+N W(Y) END

BEGINR(X) X=Χ+MW(X)END

T1 T2

σειριακή εκτέλεση

Τ1 → Τ2 BEGINR(X)X=Χ-NW(X) R(Y)Y=Y+N W(Y) END

BEGINR(X) X=Χ+MW(X) END

T1 T2

σειριακή εκτέλεση

Τ2 → Τ1

BEGINR(X)X=Χ-NW(X) R(Y)Y=Y+N W(Y) END

BEGINR(X) X=Χ+MW(X)END

T1 T2

σειριακή εκτέλεση

Τ1 → Τ2 BEGINR(X)X=Χ-NW(X) R(Y)Y=Y+N W(Y) END

BEGINR(X) X=Χ+MW(X) END

T1 T2

σειριακή εκτέλεση

Τ2 → Τ1

Σε περίπτωση όµως που δεν εκτελεστούν σειριακά οι συναλλαγές θα προκύψει

πρόβληµα όπως φαίνεται.

T1 T2

BEGINR(X)X=Χ-N

END

Απώλεια ΕνηµερώσεωνR(Y)

BEGINR(X) X=Χ+M

Y=Y+N W(Y) END

Η τιµή του X είναι λανθασµένη

T1 T2

BEGINR(X)X=Χ-N

END

Απώλεια ΕνηµερώσεωνR(Y)

BEGINR(X) X=Χ+M

Y=Y+N W(Y) END

Η τιµή του X είναι λανθασµένη

BEGINR(X)X=Χ-N

END

Απώλεια ΕνηµερώσεωνR(Y)

BEGINR(X) X=Χ+M

Y=Y+N W(Y) END

Η τιµή του X είναι λανθασµένη

W(X)

W(X)

W(X)

W(X)

W(X)

W(X)

Τα τρία προβλήµατα του ταυτοχρονισµού είναι:

1. Το πρόβληµα της χαµένης ενηµέρωσης (lost update)

2. Το πρόβληµα της εξάρτησης από ανεπικύρωτη µεταβολή (uncommitted

dependency)

3. Το πρόβληµα της ασυνεπούς ανάλυσης (inconsistent analysis)

Σελ. 167

Page 168: Βάσεις δεδομένων

ΤΑΥΤΟΧΡΟΝΙΣΜΟΣ

11.1 ΧΑΜΕΝΗ ΕΝΗΜΕΡΩΣΗ

Στην περίπτωση αυτή όπως φαίνεται από το παρακάτω σχήµα (Εικόνα 4) η

συναλλαγή Α την χρονική στιγµή t1 κάνει ανάγνωση µιας συστοιχίας Χ, η συναλλαγή

Β την χρονική στιγµή t2 κάνει ανάγνωση της ίδιας συστοιχίας Χ, η συναλλαγή Α την

χρονική στιγµή t3 κάνει ενηµέρωση της συστοιχίας Χ, η συναλλαγή Β την χρονική

στιγµή t4 κάνει ενηµέρωση της ίδιας συστοιχίας Χ. Η ενηµέρωση της συναλλαγής Α

χάνεται τη χρονική στιγµή t4, επειδή η συναλλαγή Β την αντικαθιστά χωρίς ούτε καν

να την κοιτάξει.

Α Β

-----------------------------------------------------------

R(X) t1 -

- t2 R(X)

W(X) t3 -

- t4 W(X)

Εικόνα 4

11.2 ΕΞΑΡΤΗΣΗ ΑΠΟ ΑΝΕΠΙΚΥΡΩΤΗ ΜΕΤΑΒΟΛΗ

Στην περίπτωση αυτή όπως φαίνεται από το παρακάτω σχήµα (Εικόνα 5) η

συναλλαγή Β την χρονική στιγµή t1 κάνει ενηµέρωση µιας συστοιχίας Χ, η συναλλαγή

Α την χρονική στιγµή t2 κάνει ανάγνωση της ίδιας συστοιχίας Χ, η συναλλαγή Α την

χρονική στιγµή t3 κάνει ενηµέρωση της συστοιχίας Χ, η συναλλαγή Β την χρονική

στιγµή t4 κάνει ακύρωση της ενηµέρωσης της συστοιχίας Χ. Οπότε η πρώτη

συναλλαγή θα έχει δει κάποια δεδοµένα που τώρα δεν υπάρχουν πια (και κατά µία

έννοια, "ποτέ" δεν υπήρξαν).

Σελ. 168

Page 169: Βάσεις δεδομένων

11.3 Ασυνεπής ανάλυση

Α Β

--------------------------------------------------------

t1 W(X)

W(X) t3

Εικόνα 5

Η συναλλαγή Α λειτουργεί λοιπόν µε µια εσφαλµένη παραδοχή, συγκεκριµένα,

την παραδοχή ότι η συστοιχία X έχει την τιµή που είδε τη στιγµή t2, ενώ στην

πραγµατικότητα έχει την όποια τιµή είχε πριν από τη στιγµή t1. Ως αποτέλεσµα, η

συναλλαγή Α µπορεί να δώσει λανθασµένο αποτέλεσµα. Σηµειώστε, µε την ευκαιρία,

ότι η ανασκευή (ABORT ή ROLLBACK) της συναλλαγής Β µπορεί να µην οφείλεται σε

σφάλµα της Β, µπορεί, για παράδειγµα, να οφείλεται σε µια κατάρρευση συστήµατος.

(Επίσης, η συναλλαγή Α µπορεί να έχει ήδη τερµατιστεί εκείνη τη στιγµή, οπότε η

κατάρρευση δε θα προκαλούσε ανασκευή και για την Α.)

R(X) t2 -

- t4 ABORT

11.3 ΑΣΥΝΕΠΗΣ ΑΝΑΛΥΣΗ

Ας εξετάσουµε την Εικόνα 6, που δείχνει δύο συναλλαγές, τις Α και Β, οι οποίες

επενεργούν σε συστοιχίες λογαριασµών (RecA): Η συναλλαγή Α αθροίζει υπόλοιπα

λογαριασµών, και η συναλλαγή Β µεταφέρει ένα ποσό 10 από το λογαριασµό RecA 3

στο λογαριασµό RecA 1.

Το αποτέλεσµα που παράγεται από την Α, το ποσό 410, είναι προφανώς

λανθασµένο. Aν η Α προχωρούσε στην καταγραφή αυτού του αποτελέσµατος στη

βάση δεδοµένων, η πράξη αυτή θα άφηνε τη βάση δεδοµένων σε ασυνεπή

κατάσταση. Λέµε ότι η Α είδε µια ασυνεπή κατάσταση της βάσης δεδοµένων και γι'

αυτό πραγµατοποίησε µια ασυνεπή ανάλυση. Προσέξτε τη διαφορά ανάµεσα σε αυτό

το παράδειγµα και το προηγούµενο: εδώ, δεν υπάρχει ζήτηµα εξάρτησης της Α από

µια ανεπικύρωτη µεταβολή, αφού η Β επικυρώνει (COMMIT) όλες τις ενηµερώσεις της

πριν δει η Α το λογαριασµό RecA 3.

Σελ. 169

Page 170: Βάσεις δεδομένων

ΤΑΥΤΟΧΡΟΝΙΣΜΟΣ

[RecA 1=140, RecA2=150, RecA3 =130]

Α Β

--------------------------------------------------------------

R(X) RecA1 sum=40 t1 -

R(X) RecA2 sum=290 t2 -

- t3 R(X) RecA3

- t4 W(X) RecA3 130 120

- t5 R(X) RecA1

- t6 R(X) RecA1 140 150

- t7 COMMIT

R(X) RecA3 t8 -

sum=410 και όχι 420

Εικόνα 6

11.4 ΤΕΧΝΙΚΗ ΕΛΕΓΧΟΥ ΚΛΕΙ∆ΩΜΑ (LOCKING)

Μία από τις βασικές τεχνικές που χρησιµοποιούνται για τον έλεγχο ταυτόχρονης

εκτέλεσης δοσοληψιών βασίζεται στην έννοια του κλειδώµατος δεδοµένων.

Το αποτέλεσµα του κλειδώµατος είναι να αποκλειστούν οι άλλες συναλλαγές

από την συστοιχία, και έτσι να µην µπορούν να την µεταβάλουν. Η πρώτη συναλλαγή

έχει έτσι τη δυνατότητα να πραγµατοποιήσει την επεξεργασία της, γνωρίζοντας µε

βεβαιότητα ότι το δεδοµένο αντικείµενο θα παραµείνει σε σταθερή κατάσταση για όσο

χρόνο επιθυµεί η συναλλαγή.

∆ιάφοροι τύποι κλειδωµάτων χρησιµοποιούνται στον έλεγχο του

ταυτοχρονισµού. Πρώτον υπάρχουν τα δυαδικά κλειδώµατα τα οποία είναι απλά,

αλλά κατά κάποιον τρόπο περιοριστικά στη χρήση τους. Υπάρχουν και τα

διαµοιραζόµενα και τα αποκλειστικά κλειδώµατα, τα οποία παρέχουν πιο γενικευµένες

δυνατότητες κλειδώµατος.

Σελ. 170

Page 171: Βάσεις δεδομένων

11.5 ΜΗΤΡΩΟ ΣΥΜΒΑΤΟΤΗΤΑΣ (Compatibility Matrix)

1. Πρώτον, δεχόµαστε ότι το σύστηµα υποστηρίζει δύο είδη κλειδωµάτων,

τα αποκλειστικά (exclusive locks) ή κλειδώµατα Χ, και τα µεριζόµενα (shared locks) ή

κλειδώµατα S. Σηµείωση: Τα κλειδώµατα Χ και S ονοµάζονται µερικές φορές

κλείδωµα πράξων εγγραφής (write lock) και κλείδωµα πράξεων ανάγνωσης (read

lock), αντίστοιχα. Θα θεωρήσουµε προς το παρόν ότι τα κλειδώµατα Χ και S είναι τα

µόνα είδη που υπάρχουν. Θα θεωρήσουµε επίσης ότι η συστοιχία είναι το µόνο είδος

αντικειµένου που επιδέχεται κλείδωµα.

2. Αν η συναλλαγή Α κατέχει ένα αποκλειστικό (Χ) κλείδωµα πάνω στη

συστοιχία ρ, τότε µια αίτηση από κάποια άλλη συναλλαγή Β για ένα κλείδωµα

οποιουδήποτε από τους δύο τύπους στην ρ θα απορριφθεί.

3. Αν η συναλλαγή Α κατέχει ένα µεριζόµενο (S) κλείδωµα πάνω στη

συστοιχία ρ, τότε:

• Μια αίτηση από κάποια άλλη συναλλαγή Β για ένα κλείδωµα Χ στην ρ θα

απορριφθεί.

• Μια αίτηση από κάποια άλλη συναλλαγή Β για ένα κλείδωµα S στην ρ θα γίνει

δεκτή (δηλαδή, και η Β θα διατηρεί τώρα ένα κλείδωµα S στην ρ).

11.5 ΜΗΤΡΩΟ ΣΥΜΒΑΤΟΤΗΤΑΣ (COMPATIBILITY MATRIX)

Οι κανόνες αυτοί είναι βολικό να συνοψιστούν σε ένα µητρώο συµβατότητας

(compatibility matrix - Εικόνα 7). Το µητρώο αυτό ερµηνεύεται µε τον εξής τρόπο:

Έστω µια συστοιχία ρ έστω ότι η συναλλαγή Α κατέχει αυτή τη στιγµή ένα κλείδωµα

στην ρ, όπως δείχνουν οι καταχωρίσεις στις επικεφαλίδες των στηλών (παύλα =

χωρίς κλείδωµα)', και έστω ότι κάποια άλλη συναλλαγή Β υποβάλλει αίτηση για ένα

κλείδωµα στην ρ, όπως δείχνουν οι καταχωρίσεις στην αριστερή πλευρά (για

πληρότητα, συµπεριλάβαµε πάλι την περίπτωση "χωρίς κλείδωµα").

X S -

X O O N

S O N N

- N N N

Εικόνα 7

Σελ. 171

Page 172: Βάσεις δεδομένων

ΤΑΥΤΟΧΡΟΝΙΣΜΟΣ

Το "Ο" (όχι) σηµαίνει σύγκρουση (conflict δηλαδή η αίτηση της Β δεν µπορεί να

ικανοποιηθεί και η Β περνάει σε κατάσταση αναµονής), ενώ το "Ν" (ναι) σηµαίνει

συµβατότητα (η αίτηση της Β ικανοποιείται). Το µητρώο είναι προφανώς συµµετρικό.

11.6 ΠΡΩΤΟΚΟΛΛΟ ΠΡΟΣΠΕΛΑΣΗΣ ∆Ε∆ΟΜΕΝΩΝ (DATA ACCESS PROTOCOL)

Μια συναλλαγή που θέλει να ανακαλέσει µια συστοιχία πρέπει πρώτα να

αποκτήσει ένα κλείδωµα S σε αυτή τη συστοιχία.

Μια συναλλαγή που θέλει να ενηµερώσει µια συστοιχία πρέπει πρώτα να

αποκτήσει ένα κλείδωµα Χ σε αυτή τη συστοιχία. Αν κατέχει ήδη ένα κλείδωµα S στη

συστοιχία, όπως συµβαίνει σε µια ακολουθία ανάγνωσης και ενηµέρωσης (Read-

Write), τότε θα πρέπει να προαγάγει το κλείδωµα S σε κλείδωµα επιπέδου Χ.

Αν µια αίτηση κλειδώµατος από τη συναλλαγή Β απορριφθεί επειδή έρχεται σε

σύγκρουση µε ένα κλείδωµα που κατέχει ήδη η συναλλαγή Α, τότε η συναλλαγή Β

περνάει σε κατάσταση αναµονής.

Τα κλειδώµατα Χ διατηρούνται µέχρι το τέλος της συναλλαγής (COMMIT ή

ABORT).

11.7 Α∆ΙΕΞΟ∆Ο (DEADLOCK)

Το αδιέξοδο είναι µια κατάσταση όπου δύο ή περισσότερες συναλλαγές είναι

ταυτόχρονα σε κατάσταση αναµονής, και η κάθε µία περιµένει µια από τις άλλες να

απελευθερώσει ένα κλείδωµα, πριν µπορέσει να προχωρήσει.

Επιστροφή στα τρία προβλήµατα ταυτοχρονισµού

Σελ. 172

Page 173: Βάσεις δεδομένων

11.7 Α∆ΙΕΞΟ∆Ο (DEADLOCK)

11.7.1 Το πρόβληµα της χαµένης ενηµέρωσης

Α Β

---------------------------------------------------------------

R(p) S t1 -

- t2 R(p) S

W(p) X t3 -

αναµονή t4 W(p) X

αναµονή αναµονή

Η πράξη ενηµέρωσης της συναλλαγής Α τη χρονική στιγµή t3 δε γίνεται δεκτή,

γιατί είναι έµµεση αίτηση για ένα κλείδωµα Χ στην p, και µια τέτοια αίτηση έρχεται σε

σύγκρουση µε το κλείδωµα S που ήδη κατέχει η συναλλαγή Β, έτσι, η Α περνάει σε

κατάσταση αναµονής. Για ανάλογους λόγους, η Β περνάει σε κατάσταση αναµονής τη

χρονική στιγµή t4. Τώρα, και οι δύο συναλλαγές δεν µπορούν να προχωρήσουν, και

έτσι δεν υπάρχει ζήτηµα απώλειας κάποιας ενηµέρωσης. Έτσι, το κλείδωµα λύνει το

πρόβληµα της χαµένης ενηµέρωσης, ανάγοντας το σε ένα άλλο πρόβληµα! Όµως

τουλάχιστον λύνει το αρχικό πρόβληµα. Το νέο πρόβληµα ονοµάζεται αδιέξοδο

(deadlock).

11.7.2 Το πρόβληµα Εξάρτησης από Ανεπικύρωτη Μεταβολή

Α Β

--------------------------------------------------------------------

t1 W(p) X

R(p) t2 -

ΑΝΑΜΟΝΗ

ΑΝΑΜΟΝΗ t3 Abort/ Commit

Συνέχεια R( p) S t4

Η πράξη που εκτελεί η συναλλαγή Α τη χρονική στιγµή t2 δε γίνεται δεκτή,

επειδή είναι υπονοούµενη αίτηση για ένα κλείδωµα στην p, και µια τέτοια αίτηση

Σελ. 173

Page 174: Βάσεις δεδομένων

ΤΑΥΤΟΧΡΟΝΙΣΜΟΣ

έρχεται σε σύγκρουση µε το κλείδωµα Χ που ήδη κατέχει η συναλλαγή Β, έτσι, η Α

περνάει σε κατάσταση αναµονής.

Παραµένει σε αυτή την κατάσταση αναµονής µέχρι να φτάσει η Β στον

τερµατισµό της (είτε µε COMMIT είτε µε ABORT), οπότε το κλείδωµα της Β

απελευθερώνεται και η Α µπορεί να προχωρήσει.

Σε εκείνο το σηµείο, η Α βλέπει µια επικυρωµένη τιµή (είτε την τιµή πριν από την

Β, αν η Β τερµατίστηκε µε ABORT, είτε την τιµή µετά από την Β, στην αντίθετη

περίπτωση). Και στις δύο περιπτώσεις, η Α δεν είναι πια εξαρτηµένη από την

ανεπικύρωτη ενηµέρωση

11.7.3 Το πρόβληµα Ασυνεπούς Ανάλυσης

Η πράξη Write(p) της συναλλαγής Β τη χρονική στιγµή t6 δε γίνεται δεκτή,

επειδή είναι υπονοούµενη αίτηση για ένα κλείδωµα Χ στο λογαριασµό RecA1, και µια

τέτοια αίτηση έρχεται σε σύγκρουση µε το κλείδωµα S που ήδη κατέχει η Α. Έτσι, η Β

περνάει σε κατάσταση αναµονής. Αντίστοιχα, η Write(p) της συναλλαγής Α τη χρονική

στιγµή t7 επίσης δε γίνεται αποδεκτή, επειδή είναι υπονοούµενη αίτηση για ένα

κλείδωµα S στο λογαριασµό RecA 3, και µια τέτοια αίτηση έρχεται σε σύγκρουση µε

το κλείδωµα Χ που ήδη κατέχει η Β. Έτσι, η Α περνάει και αυτή σε κατάσταση

αναµονής. Και πάλι λοιπόν, το κλείδωµα λύνει το αρχικό πρόβληµα (το πρόβληµα της

ασυνεπούς ανάλυσης, σε αυτή την περίπτωση) προκαλώντας ένα αδιέξοδο.

[RecA 1=140, RecA2=150, RecA3 =130]

Α Β

--------------------------------------------------------------

R(p) RecA1 S sum=40 t1 -

R(p) RecA2 S sum=290 t2 -

- t3 R(p) RecA3 S

- t4 W(p) RecA3 X 130 120

- t5 R(p) RecA1 S

- t6 W(p) RecA1 140 150

R(p) RecA3 t7 Αναµονή

Αναµονή t8 Αναµονή

Σελ. 174

Page 175: Βάσεις δεδομένων

11.7 Α∆ΙΕΞΟ∆Ο (DEADLOCK)

11.7.4 Γενικό Παράδειγµα Αδιεξόδου

Η παρακάτω Εικόνα 8 δείχνει ένα αδιέξοδο όπου εµπλέκονται δύο συναλλαγές,

αλλά είναι δυνατό να υπάρξουν και αδιέξοδα όπου εµπλέκονται τρεις, τέσσερις, ή

περισσότερες συναλλαγές, τουλάχιστον στη θεωρία. Στην πράξη σχεδόν ποτέ δεν

εµπλέκονται στα αδιέξοδα περισσότερες από δύο συναλλαγές.

Α Β

---------------------------------------------------------------

Lock p1 X t1 -

- t2 Lock p2 X

Lock p2 X t3 -

αναµονή t4 Lock p1 X

αναµονή αναµονή

Εικόνα 8

Αν συµβεί ένα αδιέξοδο, είναι επιθυµητό το σύστηµα να το εντοπίσει και να το

σπάσει.

Σπάσιµο του αδιεξόδου σηµαίνει να διαλέξουµε για θύµα (victim) µία από τις

συναλλαγές που βρίσκονται σε αδιέξοδο και να την ανασκευάσουµε,

απελευθερώνοντας έτσι τα κλειδώµατα της και επιτρέποντας να προχωρήσει κάποια

άλλη συναλλαγή.

Παρατηρήστε, µε την ευκαιρία, ότι η συναλλαγή-θύµα έχει "αποτύχει" και έχει

ανασκευαστεί χωρίς να φταίει η ίδια. Μερικά συστήµατα ξανά ξεκινούν αυτόµατα από

την αρχή µια τέτοια συναλλαγή, θεωρώντας ότι οι συνθήκες που προκάλεσαν το

αδιέξοδο την πρώτη φορά δε θα επαναληφθούν. Άλλα συστήµατα απλώς

επιστρέφουν έναν κωδικό "θύµατος αδιεξόδου" πίσω στην εφαρµογή' είναι τότε

δουλειά του προγράµµατος να αντιµετωπίσει την κατάσταση µε κάποιον κατάλληλο

τρόπο.

11.7.5 Χρονοσήµο ∆οσοληψίας

Οι τεχνικές αυτές χρησιµοποιούν τη έννοια του χρονοσήµου δοσοληψίας TS(T), το

οποίο είναι µια µοναδική ταυτότητα που ανατίθεται σε κάθε δοσοληψία. Τα

χρονόσηµα διατάσσονται µε βάση την σειρά που εκκινήθησαν οι δοσοληψίες,

συνεπώς αν η δοσοληψία Τ1 εκκινείτε πριν από την δοσοληψία Τ2, τότε

Σελ. 175

Page 176: Βάσεις δεδομένων

ΤΑΥΤΟΧΡΟΝΙΣΜΟΣ

TS(T1)<TS(T2). Σηµειώνουµε ότι η παλαιότερη δοσοληψία έχει το µικρότερο

χρονόσηµο. ∆ύο σχήµατα πρόληψης αδιεξόδου ονοµάζονται σχήµατα αναµονής –

θανάτωσης (wait-die) και σχήµα τραυµατισµού- αναµονής (wound-wait). Υποθέστε ότι

η δοσοληψία Ti προσπαθεί να κλειδώσει ένα στοιχείο Χ αλλά δεν µπορεί, διότι το Χ

είναι κλειδωµένο από κάποια δοσοληψία Τj µε κλείδωµα που δεν είναι συµβατό µε το

αιτούµενο. Οι κανόνες που ακολουθούνται από αυτά τα σχήµατα έχουν ως

ακολούθως :

• Αναµονή-θανάτωση: αν TS(Ti)<TS(Tj) (η Τi είναι παλαιότερη από την Τj) τότε

η Τi µπορεί να περιµένει. ∆ιαφορετικά η Τi ακυρώνεται και επανεκκινείται

αργότερα µε το ίδιο χρονόσηµο

• Τραυµατισµός-αναµονή:αν TS(T1)<TS(T2)( Τi είναι παλαιότερη από την Τj).

Τότε ακυρώνεται η Τj (η Τi τραυµατίζει την Tj) και επανεκκινείται αργότερα µε

το ίδιο χρονόσηµο. ∆ιαφορετικά η Ti µπορεί να περιµένει

11.7.6 Επιφυλακτική αναµονή

Mία άλλη οµάδα πρωτοκόλλων που προλαµβάνουν τα αδιέξοδα δεν απαιτεί

χρονόσηµα. Αυτά τα πρωτόκολλα περιλαµβάνουν τους αλγόριθµους άνευ αναµονής

(no waiting (NW)) και επιφυλακτικής αναµονής (cautious waiting (CW)). Στον

αλγόριθµο άνευ αναµονής, αν µια δοσοληψία δεν µπορεί να κλειδώσει ένα στοιχείο

ακυρώνεται αµέσως και επανεκκινήται µετά από κάποιο χρονικό διάστηµα, χωρίς να

ελεγχθεί αν στην πραγµατικότητα θα προκύψει ή όχι αδιέξοδο.

Οι κανόνες της επιφυλακτικής αναµονής έχουν ως ακολούθως

• Αν η Tj δεν έχει ανασταλεί (δεν περιµένει για κάποιο άλλο κλειδωµένο

στοιχείο).

• Τότε η Ti αναστέλλεται και της επιτρέπεται να περιµένει.

• ∆ιαφορετικά η Ti ακυρώνεται.

Στην πράξη, δεν εντοπίζουν όλα τα συστήµατα τα αδιέξοδα — µερικά

χρησιµοποιούν απλώς ένα µηχανισµό χρονικού ορίου (timeout) και θεωρούν ότι µια

συναλλαγή που δεν έχει κάνει καµία δουλειά για ένα προκαθορισµένο χρονικό

διάστηµα είναι σε αδιέξοδο.

Σελ. 176

Page 177: Βάσεις δεδομένων

11.8 Σειροποιησιµότητα (Serialiability)

11.8 ΣΕΙΡΟΠΟΙΗΣΙΜΟΤΗΤΑ (SERIALIABILITY)

Είναι ένα κριτήριο ορθότητας για έλεγχο συναλλαγών.

Με δεδοµένο ένα σύνολο συναλλαγών, οποιαδήποτε εκτέλεση αυτών των

συναλλαγών (πλεκτή ή όχι) ονοµάζεται χρονοδιάγραµµα (schedule). Η εκτέλεση των

συναλλαγών µίας προς µία, χωρίς διαπλοκή, αποτελεί ένα σειριακό χρονοδιάγραµµα.

Ένα χρονοδιάγραµµα που δεν είναι σειριακό είναι ένα πλεκτό χρονοδιάγραµµα

(interleaved schedule) (ή, απλώς, ένα µη σειριακό χρονοδιάγραµµα).

∆ύο χρονοδιαγράµµατα λέγονται ισοδύναµα αν είναι εγγυηµένο ότι δίνουν το

ίδιο αποτέλεσµα, ανεξάρτητα από την αρχική κατάσταση της βάσης δεδοµένων. Έτσι,

ένα χρονοδιάγραµµα είναι σωστό (δηλαδή σειροποιήσιµο) αν είναι ισοδύναµο µε

κάποιο σειριακό χρονοδιάγραµµα.

Αξίζει να επισηµάνουµε ότι δύο διαφορετικά σειριακά χρονοδιαγράµµατα που

περιλαµβάνουν το ίδιο σύνολο συναλλαγών θα µπορούσαν κάλλιστα να δίνουν

διαφορετικό αποτέλεσµα και, εποµένως, δύο διαφορετικά πλεκτά χρονοδιαγράµµατα

που περιλαµβάνουν αυτές τις συναλλαγές µπορεί επίσης να δίνουν διαφορετικό

αποτέλεσµα και, παρόλα αυτά, να θεωρούνται και τα δύο σωστά.

Αν όλες οι συναλλαγές υπακούουν στο «πρωτόκολλο κλειδώµατος δύο

φάσεων» τότε όλα τα δυνατά πλεκτά χρονοδιαγράµµατα είναι σειροποιήσιµα.

11.9 ΠΡΩΤΟΚΟΛΛΟ ΚΛΕΙ∆ΩΜΑΤΟΣ ∆ΥΟ ΦΑΣΕΩΝ

1. Πριν επενεργήσει σε οποιοδήποτε αντικείµενο (π.χ., σε µια συστοιχία

βάσης δεδοµένων), µια συναλλαγή πρέπει να αποκτήσει ένα κλείδωµα σε

αυτό το αντικείµενο.

2. Αφού απελευθερώσει ένα κλείδωµα, µια συναλλαγή δεν πρέπει ποτέ να

προχωρήσει στην απόκτηση και άλλων κλειδωµάτων.

Μια συναλλαγή που υπακούει σε αυτό το πρωτόκολλο έχει λοιπόν δύο φάσεις,

µια φάση απόκτησης κλειδώµατος και µια φάση απελευθέρωσης κλειδώµατος

Ένα πρωτόκολλο πρόληψης αδιεξόδων, το οποίο χρησιµοποιείται στο

συντηρητικό κλείδωµα δύο φάσεων, ορίζει ότι κάθε δοσοληψία πρέπει να κλειδώνει τα

στοιχεία που χρειάζεται, πριν ξεκινήσει. Αν κάποιο στοιχείο δεν µπορεί να κλειδωθεί,

κανένα δεν κλειδώνεται.

Σελ. 177

Page 178: Βάσεις δεδομένων

ΤΑΥΤΟΧΡΟΝΙΣΜΟΣ

11.10 ΠΡΟΤΙΘΕΜΕΝΟ ΚΛΕΙ∆ΩΜΑ Αναφέραµε ήδη ότι τα κλειδώµατα Χ και S έχουν νόηµα και για ολόκληρες σχέσεις και

για µεµονωµένες συστοιχίες.

Εισάγουµε τρία νέα είδη κλειδωµάτων, που ονοµάζονται προτιθέµενα κλειδώµατα

(intent locks), τα οποία έχουν επίσης νόηµα για τις σχέσεις αλλά όχι για τις

µεµονωµένες συστοιχίες.

προτιθέµενο µεριζόµενο κλείδωµα (intent shared — IS),

προτιθέµενο αποκλειστικό κλείδωµα (intent exclusive — IX)

µεριζόµενο και προτιθέµενο αποκλειστικό κλείδωµα (shared intent exclusive — SIX).

IS :Η συναλλαγή Τ σκοπεύει να θέσει κλειδώµατα S σε µεµονωµένες συστοιχίες

της R, για να εξασφαλιστεί η σταθερότητα αυτών των συστοιχιών ενώ γίνεται η

επεξεργασία τους.

IX :Το ίδιο µε το IS, και επιπλέον η Τ µπορεί να χρειαστεί να ενηµερώνει

µεµονωµένες συστοιχίες της R, γι' αυτό θέτει κλειδώµατα Χ σε αυτές τις

συστοιχίες.

S :Η T ανέχεται ταυτόχρονες αναγνώσεις, αλλά όχι ταυτόχρονες ενηµερώσεις

της R. Η ίδια η T δεν ενηµερώνει συστοιχίες της R.

SIX :Συνδυάζει τα S και IX, δηλαδή, η T ανέχεται ταυτόχρονες αναγνώσεις,

αλλά όχι ταυτόχρονες ενηµερώσεις της R, και επιπλέον η T µπορεί να χρειαστεί

να ενηµερώνει µεµονωµένες συστοιχίες της R, γι' αυτό θέτει κλειδώµατα Χ σε

αυτές τις συστοιχίες.

Χ :Η Τ δεν ανέχεται καµία απολύτως ταυτόχρονη προσπέλαση της R, η ίδια η T

µπορεί να ενηµερώνει ή να µην ενηµερώνει µεµονωµένες συστοιχίες της R.

Μητρώο συµβατότητας, διευρυµένο ώστε να περιλαµβάνει τα προτιθέµενα

κλειδώµατα

Χ SIX IX S IS -

X 0 0 0 0 0 Ν

SIX 0 0 0 0 Ν Ν

IX 0 0 Ν 0 Ν Ν

S 0 0 0 Ν Ν Ν

IS 0 Ν Ν Ν Ν Ν

- Ν Ν Ν Ν Ν Ν

Χ SIX IX S IS -

X 0 0 0 0 0 Ν

SIX 0 0 0 0 Ν Ν

IX 0 0 Ν 0 Ν Ν

S 0 0 0 Ν Ν Ν

IS 0 Ν Ν Ν Ν Ν

- Ν Ν Ν Ν Ν Ν

ΧΧΧ SIX SIX SIX IX IX IX S S S ISISIS ---

XXX 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ΝΝΝ

SIX SIX SIX 0 0 0 0 0 0 0 0 0 0 0 0 ΝΝΝ ΝΝΝ

IXIXIX 0 0 0 0 0 0 ΝΝΝ 0 0 0 ΝΝΝ ΝΝΝ

SSS 0 0 0 0 0 0 0 0 0 ΝΝΝ ΝΝΝ ΝΝΝ

ISISIS 0 0 0 ΝΝΝ ΝΝΝ ΝΝΝ ΝΝΝ ΝΝΝ

--- ΝΝΝ ΝΝΝ ΝΝΝ ΝΝΝ ΝΝΝ ΝΝΝ

Σελ. 178

Page 179: Βάσεις δεδομένων

12.1 Εισαγωγή

12 ΑΣΦΑΛΕΙΑ

12.1 ΕΙΣΑΓΩΓΗ

Οι όροι ασφάλεια και ακεραιότητα ακούγονται συχνά µαζί όταν γίνεται αναφορά

σε βάσεις δεδοµένων, αν και οι δύο έννοιες είναι στην πραγµατικότητα εντελώς

διαφορετικές.

Η ασφάλεια (security) αναφέρεται στην προστασία δεδοµένων από τη

γνωστοποίηση, την αλλοίωση, ή την καταστροφή από µη εξουσιοδοτηµένα άτοµα

H ακεραιότητα αναφέρεται στην ακρίβεια ή την εγκυρότητα των δεδοµένων. Με

άλλα λόγια:

Ασφάλεια σηµαίνει να εξασφαλίζεται ότι οι χρήστες επιτρέπεται να κάνουν αυτά

που επιχειρούν να κάνουν.

Ακεραιότητα (integrity) σηµαίνει να εξασφαλίζεται ότι αυτά που επιχειρούν να

κάνουν οι χρήστες είναι σωστά και δεν θα πρέπει να µπορούν να τροποποιούν

πράγµατα που δεν πρέπει. π.χ., ένας φοιτητής δεν µπορεί να βάλει βαθµούς

Μυστικότητα (secrecy) οι χρήστες θα πρέπει να µπορούν να δουν µόνο ότι

πρέπει π.χ., ένας φοιτητής δεν θα πρέπει να µπορεί να δει τους βαθµούς άλλων

φοιτητών

∆ιαθεσιµότητα (availability) Οι χρήστες θα πρέπει να µπορούν να δούν και να

αλλάξουν τα πράγµατα που τους επιτρέπεται

Υπάρχουν βέβαια και µερικές οµοιότητες: Και σε αυτές τις περιπτώσεις, το

σύστηµα χρειάζεται να είναι ενήµερο για ορισµένους κανόνες που δεν πρέπει να

παραβιάζουν οι χρήστες, οι κανόνες αυτοί πρέπει να καθορίζονται (κατά κανόνα,

από τον υπεύθυνο διαχείρισης βάσεων δεδοµένων — DBA) σε κάποια κατάλληλη

γλώσσα, και να τηρούνται στον κατάλογο του συστήµατος. Το DBMS πρέπει να

παρακολουθεί τις πράξεις των χρηστών µε κάποιον τρόπο, για να εξασφαλίζει την

τήρηση των κανόνων.

12.2 ΠΡΟΒΛΗΜΑΤΑ Το πρόβληµα της ασφάλειας (security) έχει πολλές πλευρές, µεταξύ των

οποίων οι παρακάτω:

Σελ. 179

Page 180: Βάσεις δεδομένων

ΑΣΦΑΛΕΙΑ

• Νοµικές, κοινωνικές, και ηθικές πλευρές (για παράδειγµα, το άτοµο που

υποβάλλει την αίτηση, π.χ., για την πίστωση ενός πελάτη, έχει νοµικό

δικαίωµα για πρόσβαση στις πληροφορίες που ζητάει;)

• Φυσικοί έλεγχοι (για παράδειγµα, είναι η αίθουσα του υπολογιστή ή του

τερµατικού κλειδωµένη ή ασφαλισµένη µε κάποιον άλλον τρόπο;)

• Ζητήµατα πολιτικής (για παράδειγµα, πώς αποφασίζει η επιχείρηση στην

οποία ανήκει το σύστηµα σε ποιον θα επιτρέπεται πρόσβαση σε τι;)

• Λειτουργικά προβλήµατα (για παράδειγµα, αν χρησιµοποιείται ένας

µηχανισµός µε συνθηµατικά, πώς διατηρούνται κρυφά τα ίδια τα

συνθηµατικά και πόσο συχνά αλλάζουν;)

• Έλεγχοι µέσω του υλικού (για παράδειγµα, παρέχει η µονάδα επεξεργασίας

υπηρεσίες ασφάλειας, όπως κλειδιά προστασίας της µνήµης ή έναν

προνοµιακό τρόπο λειτουργίας;)

• Ασφάλεια µέσω του λειτουργικού συστήµατος (για παράδειγµα, το

υποκείµενο λειτουργικό σύστηµα σβήνει τα περιεχόµενα της µνήµης και τα

αρχεία δεδοµένων όταν τελειώσει την εργασία µε αυτά;)

Και τέλος:

• Ζητήµατα που αφορούν ειδικά το ίδιο το σύστηµα βάσης δεδοµένων (για

παράδειγµα, διαθέτει το σύστηµα βάσης δεδοµένων κάποια έννοια

ιδιοκτησίας δεδοµένων;)

Θα ασχοληθούµε κυρίως µε ζητήµατα αυτής της τελευταίας κατηγορίας µόνο.

12.3 ΠΟΛΙΤΙΚΗ ΑΣΦΑΛΕΙΑΣ Μια πολιτική ασφάλειας καθoρίζει ποιος έχει τη δικαιοδοσία να κάνει τι

Τα αποτελέσµατα αυτών των αποφάσεων πολιτικής (α) πρέπει να

γνωστοποιηθούν στο σύστηµα (αυτό γίνεται µε εντολές γραµµένες σε κάποια

κατάλληλη γλώσσα ορισµών), και (β) το σύστηµα πρέπει να τα θυµάται (αυτό γίνεται

µε την αποθήκευση τους στον κατάλογο, µε τη µορφή κανόνων ασφάλειας (security

rule), που είναι γνωστοί και ως κανόνες εξουσιοδότησης (authorization)).

Για τα αποτελέσµατα αυτών των αποφάσεων πολιτικής πρέπει να υπάρχει ένα

µέσο για τον έλεγχο µιας δεδοµένης αίτησης πρόσβασης µε βάση τους ισχύοντες

κανόνες ασφάλειας. (Με τον όρο "αίτηση πρόσβασης" εδώ εννοούµε γενικά το

συνδυασµό αιτούµενη πράξη συν αιτούµενο αντικείµενο συν αιτών χρήστης.) Ο

Σελ. 180

Page 181: Βάσεις δεδομένων

12.4 Μηχανισµός Ασφάλειας

έλεγχος αυτός γίνεται από το υποσύστηµα ασφάλειας του DBMS, που είναι γνωστό

και ως υποσύστηµα εξουσιοδοτήσεων.

Το DBMS για να µπορεί να αποφασίζει ποιοι κανόνες ασφάλειας ισχύουν για µια

δεδοµένη αίτηση πρόσβασης, πρέπει να έχει τη δυνατότητα να αναγνωρίζει την

προέλευση αυτής της αίτησης — δηλαδή, τον αιτούντα χρήστη. Γι' αυτόν το λόγο,

όταν οι χρήστες εισέρχονται (sign on) στο σύστηµα, συνήθως απαιτείται να δίνουν όχι

µόνο την ταυτότητα τους (user ID — για να δηλώσουν ποιοι είναι) αλλά και ένα

συνθηµατικό (password — για να αποδείξουν ότι είναι αυτοί που ισχυρίζονται ότι

είναι). Το συνθηµατικό υποτίθεται ότι είναι γνωστό µόνο στο σύστηµα και στους

νόµιµους χρήστες που έχουν τη συγκεκριµένη ταυτότητα χρήστη.

12.4 ΜΗΧΑΝΙΣΜΟΣ ΑΣΦΑΛΕΙΑΣ

Ένας µηχανισµός ασφάλειας µας επιτρέπει την εφαρµογή µιας συγκεκριµένης

πολιτικής

Στο επίπεδο του Σ∆Β∆ δύο βασικοί µηχανισµοί

Α. Επιλεκτικός µηχανισµός ασφάλειας ή Περιπτωσιακός έλεγχος.

(discretionary access control): εκχώρηση προνοµίων στους χρήστες. Κάθε χρήστης

έχει διαφορετικά δικαιώµατα πρόσβασης (προνόµια-privileges, εξουσίες-authorities).

Οι µηχανισµοι αυτού του τύπου είναι πολύ ευέλικτοι και οι συνηθέστεροι στα

περισσότερα ΣΣ∆Β∆.

Β. Υποχρεωτικός µηχανισµός ασφάλειας ή Κανονιστικός έλεγχος.

(manadatory access control): επιβολή ασφάλειας πολλών επιπέδων - διαχωρισµός

των χρηστών σε διάφορα επίπεδα (κλάσεις) ασφάλειας. Κάθε αντικείµενο

χαρακτηρίζεται µε επίπεδο βαθµού ασφαλείας (classification) και κάθε χρήστης έχει

ορισµένο επίπεδο δικαιοδοσίας (clearance). Μηχανισµοί ελέγχου άκαµπτοι.

12.5 Ο ∆ΙΑΧΕΙΡΙΣΤΗΣ Β∆ Ο ∆Β∆ αποτελεί την κεντρική αρχή για την διαχείριση ενός συστήµατος βάσεων

δεδοµένων. Στα καθήκοντα του ∆Β∆ περιλαµβάνεται και η εκχώρηση δικαιωµάτων

στους χρήστες που πρέπει να χρησιµοποιήσουν στο σύστηµα, καθώς και η ένταξη

Σελ. 181

Page 182: Βάσεις δεδομένων

ΑΣΦΑΛΕΙΑ

των χρηστών και των δεδοµένων σε επίπεδα ασφάλειας, σύµφωνα µε την πολιτική

του οργανισµού. Ο ∆Β∆ έχει ένα προνοµιακό λογαριασµό στον Σ∆Β∆, ο οποίος

µερικές φορές ονοµάζεται λογαριασµός συστήµατος και παρέχει αυξηµένες

δυνατότητες οι οποίες δεν είναι διαθέσιµες στους κοινούς λογαριασµούς και χρήστες

της βάσης δεδοµένων. Ο λογαριασµός αυτός είναι παρόµοιος µε τον λογαριασµό

υπερχρήστη (ή root) που έχουν οι διαχειριστές υπολογιστικών συστηµάτων και που

επιτρέπει προσπέλαση σε διαβαθµισµένες εντολές του λειτουργικού συστήµατος. Οι

προνοµιακές εντολές του ∆Β∆ περιλαµβάνουν εντολές για εκχώρηση και αφαίρεση

δικαιωµάτων σε µεµονωµένους λογαριασµούς , χρήστες ή οµάδες χρηστών, καθώς

και για την εκτέλεση των παρακάτω λειτουργιών:

1. ∆ηµιουργία λογαριασµού : η λειτουργία αυτή δηµιουργεί ένα νέο

λογαριασµό και ένα συνθηµατικό για ένα χρήστη ή για µια οµάδα χρηστών,

επιτρέποντας τους την προσπέλαση στο Σ∆Β∆

2. Εκχώρηση προνοµίων: η λειτουργία αυτή επιτρέπει στο ∆Β∆ να

εκχωρήσει διάφορα προνόµια σε συγκεκριµένους λογαριασµούς

3. Αφαίρεση προνοµίων : η λειτουργία αυτή επιτρέπει στο ∆Β∆ να

αφαιρέσει (ακυρώσει) διάφορα προνόµια που είχαν δοθεί προηγουµένως σε

συγκεκριµένους λογαριασµούς

4. Καθορισµός επιπέδου ασφάλειας : η λειτουργία αυτή συνιστάται στην

αντιστοίχηση λογαριασµών των χρηστών στα κατάλληλα επίπεδα ασφάλειας

User ID

Password

User Groups ---> διαφορετικά προνόµια

Ο ∆Β∆ είναι υπεύθυνος για την συνολική ασφάλεια του συστήµατος της βάσης

δεδοµένων. Η λειτουργία 1 στην παραπάνω λίστα χρησιµοποιείτε για να ελέγχεται η

προσπέλαση στο Σ∆Β∆ συνολικά, ενώ οι λειτουργίες 2 και 3 χρησιµοποιούνται για τον

έλεγχο της επιλεκτικής ασφάλειας στην βάση δεδοµένων και η λειτουργία 4

χρησιµοποιείται για τον έλεγχο των υποχρεωτικών δικαιοδοσιών.

Σελ. 182

Page 183: Βάσεις δεδομένων

12.6 Προστασία Προσπέλασης, Λογαριασµοί Χρηστών και Επιθεωρήσεις Βάσεων ∆εδοµένων.

12.6 ΠΡΟΣΤΑΣΙΑ ΠΡΟΣΠΕΛΑΣΗΣ, ΛΟΓΑΡΙΑΣΜΟΙ ΧΡΗΣΤΩΝ ΚΑΙ ΕΠΙΘΕΩΡΗΣΕΙΣ ΒΑΣΕΩΝ ∆Ε∆ΟΜΕΝΩΝ.

Όταν ένα άτοµο ή µια οµάδα ατόµων πρέπει να αποκτήσει προσπέλαση σε

ένα σύστηµα βάσεων δεδοµένων, πρέπει πρώτα να ζητήσει ένα λογαριασµό χρήστη.

Ο ∆Β∆, αν υπάρχει δικαιολογηµένη ανάγκη για προσπέλαση στην βάση δεδοµένων,

θα δηµιουργήσει έναν νέο αριθµό λογαριασµού και ένα συνθηµατικό για τον χρήστη.

Ο χρήστης κάθε φορά που επιθυµεί να προσπελάσει την βάση δεδοµένων, πρέπει

να συνδεθεί (log –in) στο Σ∆Β∆ εισάγοντας τον αριθµό λογαριασµού και το

συνθηµατικό. Το Σ∆Β∆ ελέγχει την εγκυρότητα του λογαριασµού και του

συνθηµατικού και, αν είναι έγκυρα, επιτρέπεται στον χρήστη να χρησιµοποιήσει το

Σ∆Β∆ και να προσπελάσει τη βάση δεδοµένων. Τα προγράµµατα εφαρµογών

µπορούν επίσης να θεωρηθούν χρήστες και είναι δυνατόν να απαιτείται από αυτά να

δίνουν συνθηµατικά.

Είναι εύκολη η παρακολούθηση των χρηστών της βάσης δεδοµένων, των

λογαριασµών και των συνθηµατικών τους µε την δηµιουργία ενός κρυπτογραφηµένου

πίνακα ή αρχείου µε δύο πεδία, τα Αριθ_Λογαριασµού και Συνθηµατικό. Ο πίνακας

αυτός µπορεί εύκολα να συντηρηθεί από το Σ∆Β∆. Όταν δηµιουργείται ένας νέος

λογαριασµός, µια νέα εγγραφή εισάγεται στον πίνακα. Όταν ακυρώνεται ένας

λογαριασµός, πρέπει να διαγραφεί από τον πίνακα η αντίστοιχη εγγραφή.

Το σύστηµα της βάσης δεδοµένων πρέπει επίσης να παρακολουθεί όλες τις

πράξεις που εφαρµόζονται από ένα χρήστη στην βάση δεδοµένων κατά την διάρκεια

µιας συνόδου σύνδεσης (log –in session), η οποία αποτελείται από την ακολουθία των

αλληλεπιδράσεων µε την βάση δεδοµένων που εκτελεί ο χρήστης από την στιγµή της

σύνδεσης του µέχρι την στιγµή αποσύνδεσης (log off). Όταν ένας χρήστης συνδέεται

µε το σύστηµα, το Σ∆Β∆ µπορεί να καταγράψει τον αριθµό λογαριασµού του χρήστη

και να τον αντιστοιχίσει µε το τερµατικό από το οποίο ο χρήστης συνδέθηκε. Όλες οι

πράξεις που γίνονται από το τερµατικό αυτό αποδίδονται στον λογαριασµό του

χρήστη, µέχρι ο χρήστης να αποσυνδεθεί. Είναι ιδιαίτερα σηµαντικό να

παρακολουθούνται οι πράξεις ενηµέρωσης που εφαρµόζονται στην βάση δεδοµένων,

έτσι ώστε αν προκληθεί βλάβη στην βάση δεδοµένων να έχει ο ∆Β∆ την δυνατότητα

να ανακαλύψει ποιος την προξένησε.

Για την καταγραφή όλων των ενηµερώσεων που εφαρµόζονται στην βάση

δεδοµένων, καθώς και του χρήστη που εκτέλεσε κάθε ενηµέρωση, µπορούµε να

τροποποιήσουµε τον κατάλογο του συστήµατος. Υπενθυµίζουµε ότι το ηµερολόγιο

Σελ. 183

Page 184: Βάσεις δεδομένων

ΑΣΦΑΛΕΙΑ

συστήµατος περιλαµβάνει µία καταχώρηση για κάθε πράξη που εφαρµόζεται στην

βάση δεδοµένων και που είναι δυνατόν να χρειασθεί (για αναίρεση ή επανάληψη)

κατά την διαδικασία ανάκαµψης από αποτυχία δοσοληψίας ή κατάρρευσης

συστήµατος. Μπορούµε να επεκτείνουµε τις καταχωρήσεις του ηµερολογίου ώστε να

περιλάβουν τον αριθµό λογαριασµού του χρήστη και την ταυτότητα του τερµατικού

άµεσης πρόσβασης που εκτέλεσε κάθε πράξη που έχει καταγραφεί στο ηµερολόγιο.

Αν υπάρχει υποψία βλάβης στη βάση δεδοµένων διενεργείται επιθεώρηση της βάσης

δεδοµένων (database audit), η οποία συνίσταται στην επιθεώρηση του ηµερολογίου

προκειµένου να ελεγχθούν όλες οι πράξεις που εφαρµόστηκαν στην βάση δεδοµένων

κατά την διάρκεια µιας συγκεκριµένης χρονικής στιγµής. Όταν βρεθεί µια µη

επιτρεπόµενη ή παράνοµη πράξη, ο ∆Β∆ µπορεί να εντοπίσει τον αριθµό

λογαριασµού που εκτέλεσε την πράξη αυτή. Οι επιθεωρήσεις των βάσεων δεδοµένων

είναι ιδιαίτερα σηµαντικές σε ευαίσθητες βάσεις δεδοµένων οι οποίες ενηµερώνονται

από πολλές δοσοληψίες και χρήστες, όπως οι τραπεζικές βάσεις δεδοµένων που

ενηµερώνονται από πολλούς υπαλλήλους της τράπεζας. Ένα ηµερολόγιο βάσης

δεδοµένων που χρησιµοποιείται κυρίως για λόγους ασφαλείας ονοµάζεται µερικές

φορές αρχείο επιθεώρησης ή ίχνος ελέγχου (audit trail).

12.7 ΊΧΝΗ ΕΛΕΓΧΟΥ

Είναι σηµαντικό να µη θεωρούµε ότι το σύστηµα ασφάλειας είναι τέλειο. Ένας

επίδοξος εισβολέας που είναι αρκετά αποφασισµένος θα βρει συνήθως έναν τρόπο

να ξεπεράσει τους ελέγχους, ιδιαίτερα αν η ανταµοιβή του θα είναι αρκετά µεγάλη. Γι'

αυτό, σε περιπτώσεις που τα δεδοµένα είναι αρκετά εµπιστευτικά ή η επεξεργασία

τους έχει αρκετά κρίσιµη σηµασία, ένα ίχνος ελέγχου (audit trail) είναι απαραίτητο. Αν,

για παράδειγµα, κάποιες ασυνέπειες των δεδοµένων οδηγούν στην υποψία ότι

κάποιος έχει πειράξει τη βάση δεδοµένων, το ίχνος ελέγχου µπορεί να χρησιµοποιηθεί

για να εξεταστεί τι έχει συµβεί και να εξακριβωθεί αν τα πράγµατα είναι υπό έλεγχο —

ή τουλάχιστον, στην περίπτωση που δεν είναι υπό έλεγχο, να βοηθήσει στον

εντοπισµό του ενόχου. Ένα ίχνος ελέγχου είναι ουσιαστικά ένα ειδικό αρχείο ή βάση

δεδοµένων, µέσα στο οποίο το σύστηµα παρακολουθεί αυτόµατα όλες τις πράξεις

που γίνονται από τους χρήστες στη βάση δεδοµένων. Μια τυπική καταχώριση στο

ίχνος ελέγχου µπορεί να περιέχει τις παρακάτω πληροφορίες:

• αίτηση (πηγαίος κώδικας)

Σελ. 184

Page 185: Βάσεις δεδομένων

12.8 Επιλεκτικός ή Περιπτωσιακός Έλεγχος Προσπέλασης

• τερµατικό από το οποίο κλήθηκε η πράξη

• χρήστης που κάλεσε την πράξη

• ηµεροµηνία και ώρα της πράξης

• βασικές σχέσεις, συστοιχίες και γνωρίσµατα που επηρεάστηκαν

• παλιές τιµές

• νέες τιµές

Όπως αναφέραµε πιο πάνω, το ίδιο το γεγονός ότι υπάρχει ένα ίχνος ελέγχου µπορεί

να είναι αρκετό από µόνο του για να αποτρέψει έναν επίδοξο εισβολέα σε µερικές

περιπτώσεις.

12.8 ΕΠΙΛΕΚΤΙΚΟΣ Η ΠΕΡΙΠΤΩΣΙΑΚΟΣ ΈΛΕΓΧΟΣ ΠΡΟΣΠΕΛΑΣΗΣ

Βασίζεται στην έννοια των δικαιωµάτων προσπέλασης ή προνοµίων πάνω

σε αντικείµενα (όπως πίνακες ή όψεις) και µηχανισµούς εκχώρησης και αφαίρεσης

προνοµίων στους χρήστες

12.8.1 Επιλεκτικός ή Περιπτωσιακός Έλεγχος Προσπέλασης βάσει Όψεων

∆υο επίπεδα δικαιωµάτων:

Επίπεδο λογαριασµού (γίνεται από αυτούς που υλοποιούν το Σ∆Β∆)

Παραδείγµατα προνοµίων: create schema, create table, create view, alter, drop,

modify, select

Επίπεδο σχέσης (ορίζονται ως τµήµα της SQL) Προσδιορίζουν για κάθε χρήστη

τις σχέσεις στις οποίες µπορεί να εφαρµοστεί κάθε τύπος εντολής

12.8.2 Μοντέλο Πίνακα Προσπέλασης (Access Matrix Model)

Πίνακας προσπέλασης M(i, j) ::

i: υποκείµενο (π.χ, χρήστης, λογαριασµός, πρόγραµµα)

j: αντικείµενο (σχέση, εγγραφή (πλειάδα), στήλη (γνώρισµα), όψη, πράξη)

Σελ. 185

Page 186: Βάσεις δεδομένων

ΑΣΦΑΛΕΙΑ

αναπαριστά τον τύπο των προνοµίων (εγγραφή, ανάγνωση, τροποποίηση) που

έχει το υποκείµενο i στο αντικείµενο j

Εφαρµόζοντας το παραπάνω µοντέλο πίνακα προσπέλασης στην SQL

µπορούµε να πούµε ότι για κάθε συναλλαγή M(i, j) :

i: υποκείµενο (π.χ, χρήστης, λογαριασµός, πρόγραµµα)

j: µόνο σχέση, όψη, στήλη (γνώρισµα)

Ο δηµιουργός ενός πίνακα ή µιας όψης παίρνει αυτόµατα όλα τα προνόµια σε

αυτόν και καλείται ιδιοκτήτης.

Το Σ∆Β∆ διατηρεί πληροφορίες σχετικά µε το ποιος παίρνει ή χάνει προνόµια

και επιτρέπει µόνο αιτήσεις από χρήστες που έχουν τα απαραίτητα προνοµία όταν

γίνεται η αίτηση

12.8.3 Η εντολή GRANT

Σύνταξη

GRANT privileges ON object TO users [WITH GRANT OPTION]

Επιτέπονται τα παρακάτω προνόµια-privileges :

SELECT: Μπορεί να διαβάσει όλες τις στήλες (συµπεριλαµβανοµένων αυτών

που µπορεί να προστεθούν αργότερα µε την εντολή ALTER TABLE).

INSERT (όνοµα στήλης Α): Μπορεί να εισάγει πλειάδες µε non-null ή non-default

τιµές στη στήλη Α.

INSERT σηµαίνει το ίδιο για όλες τις στήλες.

DELETE: Μπορεί να διαγράφει πλειάδες.

UPDATE(όνοµα στήλης Α)

REFERENCES (όνοµα στήλης Α): Μπορεί να ορίσει ξένα κλειδιά (σε άλλους

πίνακες) που αναφέρονται στην στήλη Α.

Σελ. 186

Page 187: Βάσεις δεδομένων

12.8 Επιλεκτικός ή Περιπτωσιακός Έλεγχος Προσπέλασης

Αν ένας χρήστης έχει ένα προνόµιο µε το GRANT OPTION µπορεί να δώσει

αυτό το προνόµιο σε άλλους χρήστες (µπορεί να δώσει ή να µη δώσει το GRANT

OPTION).

Αν και δεν έχουν ακόµα υλοποιηθεί υπάρχουν µηχανισµοί για τον περιορι-σµό

της διάδοσης προνοµίων

Τα προνόµια CREATE, ALTER, και DROP µπορεί να εκτελεστούν µόνο από

τον ιδιοκτήτη.

12.8.4 Η εντολή REVOKE

Σύνταξη

REVOKE privileges ON object FROM users

Με την εντολή αυτή γίνετε αφαίρεση προνοµίου από έναν χρήστη

Όταν αφαιρεθεί ένα προνόµιο από το χρήστη Χ αφαιρείται και από όλους τους

χρήστες που πήραν αυτό το προνόµιο αποκλειστικά από αυτόν

12.8.5 Παραδείγµατα

GRANT INSERT, SELECT ON Student TO Alex

Ο χρήστης Alex µπορεί να κάνει ερωτήσεις και να εισάγει πλειάδες στη σχέση

Student

GRANT DELETE ON Student TO Grammateia WITH GRANT OPTION

Ο χρήστης Grammateia µπορεί να διαγράφει πλειάδες από τη σχέση Student και

µπορεί να εξουσιοδοτήσει και άλλους για αυτό.

GRANT UPDATE (THL) ON Student TO User1

Ο χρήστης User1 µπορεί να τροποποιεί (µόνο) το γνώρισµα THL της σχέσης

Student .

Σελ. 187

Page 188: Βάσεις δεδομένων

ΑΣΦΑΛΕΙΑ

12.8.6 Επιλεκτικός Έλεγχος Προσπέλασης στις Όψεις

Οι όψεις µπορεί να χρησιµοποιηθούν για να δώσουν µόνο την απαραίτητη

πληροφορία. Οι όψεις µαζί µε τις εντολές GRANT/ REVOKΕ αποτελούν ένα πολύ

ισχυρό εργαλείο για τον έλεγχο προσπέλασης

Ο δηµιουργός µιας όψης έχει ένα προνόµιο πάνω στην όψη µόνο αν έχει το

προνόµιο σε όλες τις σχέσεις που περιλαµβάνονται στον ορισµό της όψης

Για την δηµιουργία της όψης απαιτείται το προνόµιο SELECT σε όλες τις

σχέσεις που περιλαµβάνονται στον ορισµό της όψης

Πως µπορούµε να ορίσουµε προνόµια στο επίπεδο του ενός γνωρίσµατος µιας

πλειάδας

Η SQL-92, δίνει προνόµια σε authorization ids, που µπορεί να αναφέρονται σε

ένα χρήστη ή σε µια οµάδα χρηστών

Η SQL:1999 (και σε αρκετά συστήµατα), δίνει προνόµια σε ρόλους.

Στη συνέχεια µπορεί να ανατεθούν ρόλοι σε χρήστες ή σε άλλους ρόλους

12.8.7 SECURITY RULE

Σύνταξη

CREATE SECURITY RULE κανόνας GRANT λίστα-προνοµίων ON

παράσταση ΤΟ λίστα-χρηστών [ ON ATTEMPTED VIOLATION ενέργεια ;

Επεξήγηση:

Ο κανόνας είναι το όνοµα του νέου κανόνα ασφάλειας.

Κάθε προνόµιο είναι ένα από τα εξής:

RETRIEVE [ ( λίστα-γνωρισµάτων ) ]

INSERT

UPDATE [ ( λίστα-γνωρισµάτων ) ]

DELETE

ALL

Φυσικά, χρειαζόµαστε και έναν τρόπο για να καταργούµε υπάρχοντες κανόνες:

Σελ. 188

Page 189: Βάσεις δεδομένων

12.9 Υποχρεωτικός ή Κανονιστικός Έλεγχος Προσπέλασης

Σύνταξη

DESTROY SECURITY RULE κανόνας ;

12.9 ΥΠΟΧΡΕΩΤΙΚΟΣ Η ΚΑΝΟΝΙΣΤΙΚΟΣ ΈΛΕΓΧΟΣ ΠΡΟΣΠΕΛΑΣΗΣ

Οι έλεγχοι που γίνονται από Σ∆Β∆ βασίζονται σε πολιτικές που ισχύουν για όλο

το σύστηµα και δεν µπορούν να τροποποιηθούν από συγκεκριµένους χρήστες. Σε

κάθε αντικείµενο της Β∆ ανατίθεται και µια κλάση ασφάλειας.

Σε κάθε υποκείµενο (χρήστη ή πρόγραµµα) ανατίθεται και ένα δικαίωµα για µια

κλάση ασφάλειας

Κανόνες αυτοί είναι βασιζόµενοι στις κλάσεις ασφάλειας και στα δικαιώµατα τα

οποία καθορίζουν ποιος µπορεί να διαβάσει ή να γράψει και σε ποια ακριβώς

αντικείµενα

Ο Χρήστης i µπορεί να δεί το αντικείµενο j εάν το επίπεδο δικαιοδοσίας του i

είναι µεγαλύτερο ή ίσο του επίπεδου ασφαλείας του j. Ο Χρήστης i µπορεί να

τροποποιήσει το αντικείµενο j εάν το επίπεδο δικαιοδοσίας του i είναι µεγαλύτερο ή

ίσο του επίπεδου ασφαλείας του j. Κάθε τι που γράφει ο χρήστης i έχει επίπεδο

ασφαλείας ίσο µε το επίπεδο δικαιοδοσίας του i

12.9.1 Κλάσεις Ασφάλειας

Οι προδιαγραφές ορίζουν τέσσερις κλάσεις ασφάλειας (security classes), τις D,

C, Β, και Α. µε απλά λόγια, η κλάση D είναι η λιγότερο ασφαλής, η κλάση C είναι πιο

ασφαλής από την D, κ.ο.κ. Η κλάση D λέµε ότι παρέχει ελάχιστη προστασία, η κλάση

C περιπτωσιακή προστασία, η κλάση Β κανονιστική προστασία, και η κλάση Α

βεβαιωµένη προστασία.

• Περιπτωσιακή προστασία (discretionary protection): Η κλάση ασφάλειας C

υποδιαιρείται σε δύο επιµέρους κλάσεις, τις C1 και C2 (όπου η C1 είναι λιγότερο

ασφαλής από τη C2). Η κάθε µία υποστηρίζει τον περιπτωσιακό έλεγχο πρόσβασης,

που σηµαίνει ότι ο έλεγχος πρόσβασης είναι στη διακριτική ευχέρεια του ιδιοκτήτη των

δεδοµένων.

Σελ. 189

Page 190: Βάσεις δεδομένων

ΑΣΦΑΛΕΙΑ

• Η κλάση C1 απαιτεί το διαχωρισµό των δεδοµένων και των χρηστών' δηλαδή,

υποστηρίζει την έννοια των µεριζόµενων δεδοµένων, ενώ επιτρέπει να έχουν οι

χρήστες και δικά τους ιδιωτικά δεδοµένα.

• Η κλάση C2 απαιτεί επιπλέον την υποστήριξη λογαριασµών (accountability

support), µε διαδικασίες ελέγχου εισόδου του χρήστη (sign-on), λογιστικού ελέγχου

(auditing) και αποµόνωσης πόρων.

• ∆οµηµένη προστασία (structured protection): Η κλάση ασφάλειας Β είναι η

κλάση που αναλαµβάνει τους κανονιστικούς ελέγχους. Υποδιαιρείται σε τρεις

επιµέρους κλάσεις, τις B1, B2, και Β3 (όπου η Β1 είναι η λιγότερο ασφαλής από τις

τρεις και η Β3 η περισσότερο ασφαλής). Η κλάση Β1 απαιτεί "προστασία µε ετικέτες"

(δηλαδή, απαιτεί να έχει το κάθε αντικείµενοως ετικέτα το επίπεδο βαθµού ασφαλείας

του — απόρρητο, εµπιστευτικό, κ.λπ.). Απαιτεί επίσης µια άτυπη δήλωση της

πολιτικής που εφαρµόζεται σε σχέση µε την ασφάλεια. Η κλάση Β2 απαιτεί επιπλέον

µια τυπική δήλωση της πολιτικής που εφαρµόζεται σε σχέση µε την ασφάλεια' απαιτεί

επίσης να εντοπιστούν και να εξαλειφθούν τα συγκαλυµµένα κανάλια (covert channel)'

ένα παράδειγµα συγκαλυµµένου καναλιού είναι η δυνατότητα να προκύπτει η

απάντηση ενός µη επιτρεπτού ερωτήµατος από την απάντηση ενός επιτρεπτού

ερωτήµατος.Η κλάση Β3 απαιτεί να υποστηρίζεται ο λογιστικός έλεγχος (audit) και η

ανάκαµψη, και να υπάρχει ένας διορισµένος υπεύθυνος διαχείρισης ασφάλειας

(security administrator).

• Βεβαιωµένη προστασία (verified protection): Η κλάση ασφάλειας Α, η πιο

ασφαλής, απαιτεί µια µαθηµατική απόδειξη ότι (α) ο µηχανισµός ασφάλειας είναι

συνεπής, και (β) είναι επαρκής για την υποστήριξη της καθορισµένης πολιτικής για

την ασφάλεια.

Τα DBMS που υποστηρίζουν υποχρεωτικούς ελέγχους προσπέλασης λέγονται,

συχνά, συστήµατα µε πολυεπίπεδη ασφάλεια (multilevel secure).

Τα περισσότερα εµπορικά συστήµατα δεν υποστηρίζουν τον υποχρεωτικό

έλεγχο πρόσβασης.

12.9.2 Παράδειγµα Α

Αντικείµενα (π.χ., πίνακες, όψεις, πλειάδες)

Υποκείµενα (π.χ., χρήστες, προγράµµατα)

Σελ. 190

Page 191: Βάσεις δεδομένων

12.9 Υποχρεωτικός ή Κανονιστικός Έλεγχος Προσπέλασης

Κλάσεις ασφάλειας:

Άκρως Απόρρητη (TS), Απόρρητη (S), Εµπιστευτική (C), Αδιαβάθµητη (U):

TS > S > C > U

Σε κάθε αντικείµενο και υποκείµενο ανατίθεται µια κλάση.

Το υποκείµενο S µπορεί να διαβάσει το αντικείµενο O µόνο αν class(S) >=

class(O) (Απλή Ιδιότητα Ασφάλειας)

Το υποκείµενο S µπορεί να γράψει το αντικείµενο O µόνο αν class(S) <=

class(O) (Ιδιότητα)

Η ιδέα είναι ότι πληροφορία δεν περνά ποτέ από µια υψηλή κλάση ασφάλειας

σε µια χαµηλή κλάση ασφάλειας

Η υποχρεωτική προστασία εφαρµόζεται επιπρόσθετα της επιλεκτικής

προστασίας.

12.9.3 Παράδειγµα Β

C BroM20102 S Red F16 101 class coloAirc

Αid

Χρήστες µε S και TS µπορούν να δουν και τις δυο γραµµές, χρήστες µε C

βλέπουν µόνο 2 γραµµή; ενώ χρήστες µε U δε βλέπουν καµία. η

Αν ένας χρήστης µε C προσπαθήσει να εισάγει <101,F16,Blue,C>:

Αν επιτρέψουµε την εισαγωγή, γίνετε παραβίαση του περιορισµού κλειδιού.

Αν δεν τον επιτρέψουµε αποκαλύπτουµε ότι υπάρχει ένα άλλο αντικείµενο µε

κλειδί 101 και κλάση > C. Και τελικά διαπιστώνουµε ότι η κλάση είναι µέρος του

κλειδιού ενώ δεν θα έπρεπε.

Το πρόβληµα που παρουσιάζεται το ονοµάσαµε κανάλι διαρροής (covert

channel).Η λύση σε αυτή την διαρροή πληροφόρησης σε µη εξουσιοδοτηµένα άτοµα

µπορεί να δοθεί µε την δηµιουργία πολλαπλών στιγµιότυπων

Σελ. 191

Page 192: Βάσεις δεδομένων

ΚΡΥΠΤΟΓΡΑΦΗΣΗ

13 ΚΡΥΠΤΟΓΡΑΦΗΣΗ

Κρυπτογράφηση των δεδοµένων (data encryption) ονοµάζουµε την

αποθήκευση ή την µετάδοση των εµπιστευτικών δεδοµένων σε κωδικοποιηµένη

µορφή.

Για να µπορέσουµε να εξετάσουµε µερικές από τις έννοιες της κρυπτογράφησης

δεδοµένων, χρειάζεται να εισαγάγουµε µερικούς όρους ακόµα.

Τα αρχικά πραγµατικά δεδοµένα ονοµάζονται απλό κείµενο (plaintext).

Στo απλό κείµενο που πρόκειται να κρυπτογραφηθεί εφαρµόζουµε του έναν

αλγόριθµο κρυπτογράφησης, που η είσοδος του είναι το απλό κείµενο και ένα κλειδί

κρυπτογράφησης.

Η έξοδος αυτού του αλγορίθµου - η κρυπτογραφηµένη µορφή του απλού

κειµένου - ονοµάζεται κρυπτογραφικό κείµενο (ciphertext).

Οι λεπτοµέρειες του αλγορίθµου κρυπτογράφησης γνωστοποιούνται, ή

τουλάχιστον δεν κρύβονται ιδιαίτερα, αλλά το κλειδί της κρυπτογράφησης κρατιέται

µυστικό.

Το κρυπτογραφικό κείµενο, που θα πρέπει να είναι ακατανόητο σε

οποιονδήποτε δεν έχει το κλειδί της κρυπτογράφησης, είναι εκείνο που αποθηκεύεται

στη βάση δεδοµένων ή µεταδίδεται µέσα από τη γραµµή επικοινωνίας.

13.1 ΑΠΛΟΣ ΜΗΧΑΝΙΣΜΟΣ ΚΡΥΠΤΟΓΡΑΦΗΣΗΣ Απλό κείµενο

PLAINTEXT=TMHMA GEOPLHROFORIKHS KAI TOPOGRAFIAS

ΚΛΕΙ∆Ι=TEST

Αλγόριθµος

TMHM A+GE OPLH ROFO RIKH S+KA I+TO POGR AFIA S+++

1. ∆ιαίρεση του κειµένου σε ίσα τµήµατα µε το κλειδί και αντικατάσταση του

κενού µε το σύµβολο +

Σελ. 192

Page 193: Βάσεις δεδομένων

13.2 ΤΟ ΠΡΟΤΥΠΟ DES (DATA ENCRYPTION STANDARD)

2. Αντικατάσταση χαρακτήρων µε αριθµούς από 00-26.

Κενό=00 Α=01..

Για λόγους απότητας λαµβάνουµε υπόψιν µόνο τους λατινικούς χαρακτήρες.

κείµενο 20130813 01000705 ……….

κλειδί 20051920 20051920 20051920

40182733 21132435 …………..

3. Άθροιση των παραπάνω και διαίρεση του κάθε διψήφιου αριθµού µε το 27

Αποτέλεσµα 13180006 21132408

Κρυπτογραφηµένο κείµενο

5. Αντικατάσταση κάθε αριθµού µε τον χαρακτήρα που αντιστοιχεί

ΥΠΟΚΑΤΑΣΤΑΣΗ (SUBSTITUTION) :χρησιµοποιεί ένα κλειδί κρυπτογράφησης

έτσι ώστε να προσδιοριστεί, για τον κάθε χαρακτήρα απλού κειµένου, ένας

χαρακτήρας κρυπτογραφικού κειµένου µε τον οποίο θα υποκατασταθεί αυτός ο

χαρακτήρας

ΜΕΤΑΘΕΣΗ (PERMUTATION) οι χαρακτήρες απλού κειµένου απλώς

αναδιατάσσονται µε κάποια διαφορετική σειρά.

4.Το υπόλοιπο της διαίρεσης το κρατάµε

ΜR+F UMXH ………...

13.2 ΤΟ ΠΡΟΤΥΠΟ DES (DATA ENCRYPTION STANDARD)

Σελ. 193

Page 194: Βάσεις δεδομένων

ΚΡΥΠΤΟΓΡΑΦΗΣΗ

Καµία από τις δύο αυτές προσεγγίσεις δεν είναι ιδιαίτερα ασφαλής από µόνη

της, αλλά οι αλγόριθµοι που τις συνδυάζουν και τις δύο παρέχουν έναν πολύ υψηλό

βαθµό ασφάλειας.

Ένας τέτοιος αλγόριθµος είναι το πρότυπο DES (Data Encryption Standard —

Πρότυπο Κρυπτογράφησης ∆εδοµένων), που υιοθετήθηκε για πρώτη φορά ως

οµοσπονδιακό πρότυπο των ΗΠΑ το 1977

Το απλό κείµενο υποδιαιρείται σε τµήµατα των 64 bit και το κάθε τµήµα

κρυπτογραφείται µε ένα κλειδί των 64 bit

64 56

Η υποκατάσταση στο βήµα i δεν ελέγχεται άµεσα από το αρχικό κλειδί

κρυπτογράφησης Κ, αλλά από ένα κλειδί Κi που υπολογίζεται από τις τιµές Κ και i.

To DES έχει την ιδιότητα ότι ο αλγόριθµος αποκρυπτογράφησης είναι ο ίδιος µε

τον αλγόριθµο κρυπτογράφησης, µε τη διαφορά ότι τα κλειδιά Κi εφαρµόζονται µε

αντίστροφη σειρά

13.3 ΚΡΥΠΤΟΓΡΑΦΗΣΗ ΜΕ ∆ΗΜΟΣΙΟ ΚΛΕΙ∆Ι

Στην πραγµατικότητα, το κλειδί αποτελείται από 56 bit δεδοµένων + 8 bit

ισοτιµίας, και εποµένως δεν υπάρχουν 2 αλλά µόνο 2 πιθανά κλειδιά).

Για να κρυπτογραφηθεί ένα τµήµα, πρώτα εκτελείται µια αρχική µετάθεση πάνω

σε αυτό, έπειτα το τµήµα που προκύπτει από τη µετάθεση υποβάλλεται σε µια

ακολουθία 16 βηµάτων σύνθετης υποκατάστασης, και τέλος εφαρµόζεται άλλη µία

µετάθεση, η αντίστροφη της αρχικής, στο αποτέλεσµα του προηγούµενου βήµατος.

Σε ένα µηχανισµό µε δηµόσιο κλειδί (public-key), τόσο ο αλγόριθµος

κρυπτογράφησης όσο και 'το κλειδί κρυπτογράφησης είναι διαθέσιµα σε όλους' έτσι, ο

καθένας µπορεί να µετατρέψει κάποιο απλό κείµενο σε κρυπτογραφικό κείµενο.

Tο αντίστοιχο κλειδί αποκρυπτογράφησης διατηρείται µυστικό (οι µηχανισµοί µε

δηµόσιο κλειδί έχουν δύο κλειδιά, ένα για την κρυπτογράφηση και ένα για την

αποκρυπτογράφηση).

Tο κλειδί αποκρυπτογράφησης δεν είναι δυνατό να προκύψει από το κλειδί

κρυπτογράφησης" έτσι, ακόµα και το άτοµο που κάνει την αρχική κρυπτογράφηση δεν

µπορεί να κάνει την αντίστοιχη αποκρυπτογράφηση αν δεν έχει την εξουσιοδότηση να

το κάνει.

Σελ. 194

Page 195: Βάσεις δεδομένων

13.4 Mηχανισµός RSA

13.4 MΗΧΑΝΙΣΜΟΣ RSA

Ο µηχανισµός κρυπτογράφησης αυτός πήρε το όνοµά του από τα αρχικά των

εµπνευστών της, Rivest, Shamir, και Adleman)

Bασίζεται στα εξής δύο γεγονότα:

1. Υπάρχει ένας γνωστός γρήγορος αλγόριθµος µε τον οποίο µπορεί να

προσδιοριστεί αν ένας δεδοµένος αριθµός είναι πρώτος αριθµός.

Για να προσδιοριστεί (σε έναν η/υ) αν ένας δεδοµένος αριθµός µε 130 ψηφία

είναι πρώτος αριθµός, χρειάζονται περίπου επτά λεπτά, ενώ για να βρεθούν (στο ίδιο

µηχάνηµα) οι δύο πρώτοι παράγοντες ενός αριθµού 63 ψηφίων που προκύπτει από

τον πολλαπλασιασµό δύο πρώτων αριθµών θα χρειάζονταν περίπου 40 τετράκις

εκατοµµύρια χρόνια.

13.4.1 Λειτουργία RSA

1. Επιλέγονται τυχαία δύο διαφορετικοί µεγάλοι πρώτοι αριθµοί, ρ και q, και

υπολογίζεται το γινόµενο r = p * q.

2. Επιλέγεται τυχαία ένας µεγάλος ακέραιος e που είναι σχετικά πρώτος

(relatively prime) ως προς το γινόµενο (p — 1) * (q — 1). Ο ακέραιος e είναι το κλειδί

της κρυπτογράφησης. Σηµείωση: Η επιλογή του c είναι εύκολη. Οποιοσδήποτε

πρώτος αριθµός, µεγαλύτερος και από τον ρ και από τον q, είναι κατάλληλος.

d * e = 1 modulo ( p - 1 ) * ( g - 1 )

Ο αλγόριθµος για τον υπολογισµό του d µε δεδοµένα τα e, p, και q είναι απλός

2. ∆εν υπάρχει κανένας γνωστός γρήγορος αλγόριθµος για την εύρεση των

πρώτων παραγόντων ενός δεδοµένου παραγώγου (δηλαδή, όχι πρώτου) αριθµού.

Ο µηχανισµός RSA λειτουργεί µε τον εξής τρόπο:

3. Παίρνουµε ως κλειδί αποκρυπτογράφησης d το µοναδικό "πολλαπλασιαστικό

αντίστροφο" του ακεραίου υπολοίπου της διαίρεσης του e µε το (p - 1) * (q - 1),

δηλαδή:

4. Γνωστοποιούνται οι ακέραιοι r και e, όχι όµως ο d.

Ο µηχανισµός RSA λειτουργεί µε τον εξής τρόπο:

Σελ. 195

Page 196: Βάσεις δεδομένων

ΚΡΥΠΤΟΓΡΑΦΗΣΗ

Για να κρυπτογραφηθεί ένα απόσπασµα απλού κειµένου Ρ (που θεωρούµε για

λόγους απλότητας ότι είναι ένας ακέραιος µικρότερος από τον r), αντικαθίσταται από

το κρυπτογραφικό κείµενο C που υπολογίζεται µε τον εξής τρόπο:

C = P modulo r e

6. Για να αποκρυπτογραφηθεί ένα απόσπασµα κρυπτογραφικού κειµένου

C, αντικαθίσταται από το απλό κείµενο Ρ που υπολογίζεται µε τον εξής τρόπο:

Ρ = C modulo r

H αποκρυπτογράφηση του C µε χρήση του d πραγµατικά αποκαθιστά το αρχικό

Ρ. Όµως, ο υπολογισµός του d µε γνωστά µόνο τα r και e (και όχι τα ρ και q) είναι

ανέφικτος

13.4.2 Παράδειγµα RSA

d

Έστω p= 3 και q = 5, τότε r = 15, και το γινόµενο (p -1) * (q -1) =8

Έστω e = 11

ένας πρώτος αριθµός µεγαλύτερος και από το p και από το q

Για να υπολογίσουµε το d, έχουµε

d * 11 = 1 modulo 8

από το οποίο προκύπτει d = 3.

Έστω τώρα ότι το απλό κείµενο Ρ αποτελείται από τον ακέραιο 13.

Τότε, το κρυπτογραφικό κείµενο C προκύπτει από τις πράξεις:

C = P modulo r = 13 modulo 15 = 11e

1.792.160.394.037 modulo 15 = 7

Τώρα, το αρχικό απλό κείµενο Ρ προκύπτει από τις πράξεις:

Ρ = C modulo r d

= 7 modulo 15 3

= 343 modulo 15

= 13

Σελ. 196

Page 197: Βάσεις δεδομένων

13.4 Mηχανισµός RSA

13.4.3 Παράδειγµα Αποφυγής Πλαστογράφησης

Οι µηχανισµοί κρυπτογράφησης µε δηµόσιο κλειδί επιτρέπουν τα

κρυπτογραφηµένα µηνύµατα να είναι "υπογεγραµµένα", ώστε ο παραλήπτης να

µπορεί να είναι βέβαιος ότι το µήνυµα προέρχεται από το άτοµο που υποτίθεται ότι

προέρχεται (δηλαδή, οι "υπογραφές" δεν µπορούν να πλαστογραφηθούν).

Έστω ότι οι αλγόριθµοι κρυπτογράφησης είναι οι ECA και ECB (για την

κρυπτογράφηση των µηνυµάτων που θα στέλνονται στον Α και στον Β, αντίστοιχα)

Έστω ότι οι αντίστοιχοι αλγόριθµοι αποκρυπτογράφησης είναι οι DCA και DCB,

αντίστοιχα.

Οι αλγόριθµοι ECA και DCA είναι αντίστροφοι µεταξύ τους, όπως και οι ECB και DCB.

Ο Α εφαρµόζει πρώτα τον αλγόριθµο αποκρυπτογράφησης DCA στο Ρ, και στη

συνέχεια κρυπτογραφεί το αποτέλεσµα και το µεταδίδει ως κρυπτογραφικό κείµενο C:

C = ECB ( DCA ( P ) )

Μόλις πάρει το C, ο χρήστης Β εφαρµόζει τον αλγόριθµο αποκρυπτογράφησης

DCB και στη συνέχεια τον αλγόριθµο κρυπτογράφησης ECA, ώστε να προκύψει το

τελικό αποτέλεσµα Ρ:

ECA ( DCB ( C ) )

= ECA ( DCB ( ECB ( DCA ( Ρ ) ) ) )

= ECA ( DCA ( Ρ ) ) επειδή τα DCB και ECB αναιρούνται

= Ρ επειδή τα ECA και DCA αναιρούνται

Τώρα, ο Β ξέρει ότι το µήνυµα προέρχεται πραγµατικά από τον Α, επειδή ο

αλγόριθµος ECA θα δώσει το Ρ µόνο αν χρησιµοποιήθηκε ο αλγόριθµος DCA στη

διαδικασία κρυπτογράφησης, και αυτός ο αλγόριθµος είναι γνωστός µόνο στον Α.

Κανένας, ούτε ακόµα και ο Β, δεν µπορεί να πλαστογραφήσει την υπογραφή του Α.

Σελ. 197

Page 198: Βάσεις δεδομένων

ΣΥΓΧΡΟΝΑ ΘΕΜΑΤΑ ΒΑΣΕΩΝ ∆Ε∆ΟΜΕΝΩΝ

14 ΣΥΓΧΡΟΝΑ ΘΕΜΑΤΑ ΒΑΣΕΩΝ ∆Ε∆ΟΜΕΝΩΝ

14.1 ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΈΝΝΟΙΕΣ ΤΩΝ ΧΩΡΙΚΩΝ ΒΑΣΕΩΝ ∆Ε∆ΟΜΕΝΩΝ

Οι χωρικές βάσεις δεδοµένων υποστηρίζουν έννοιες για βάσεις δεδοµένων που

καταγράφουν αντικείµενα σ' έναν πολυδιάστατο χώρο. Για παράδειγµα, χαρτογραφικές

βάσεις δεδοµένων που αποθηκεύουν χάρτες περιέχουν δισδιάστατες χωρικές

περιγραφές των αντικειµένων τους -από χώρες και πολιτείες σε ποταµούς, πόλεις

δρόµους, θάλασσες κοκ. Αυτές οι βάσεις δεδοµένων χρησιµοποιούνται σε πολλές

εφαρµογές όπως περιβαλλοντολογικές, ενεργειακές και διαχείρισης µαχών. Άλλες

βάσεις δεδοµένων, όπως µετεωρολογικές βάσεις δεδοµένων για καιρικές πληροφορίες,

είναι τρισδιάστατες, αφού οι θερµοκρασίες και οι άλλες µετεωρολογικές πληροφορίες

σχετίζονται µε τρισδιάστατα χωρικά σηµεία. Γενικά, µια χωρική βάση δεδοµένων

αποθηκεύει αντικείµενα που περιγράφονται µε χωρικά χαρακτηριστικά. Οι χωρικές

συσχετίσεις µεταξύ των αντικειµένων είναι σηµαντικές και συχνά είναι απαραίτητες όταν

γίνονται επερωτήσεις στη βάση δεδοµένων. Αν και γενικά µια χωρική βάση

δεδοµένων µπορεί να αναφέρεται σ' ένα χώρο n διαστάσεων για οποιοδήποτε η, για

απλότητα θα περιορίσουµε την εξέταση µας σε δύο διαστάσεις.

Οι κυρίες επεκτάσεις που απαιτούνται για χωρικές βάσεις δεδοµένων είναι µοντέλα

που µπορούν να ερµηνεύσουν τα χωρικά χαρακτηριστικά. Επιπλέον, για βελτίωση της

απόδοσης συχνά απαιτούνται ειδικές δοµές ευρετηρίων και αποθήκευσης. Ας

εξετάσουµε πρώτα µερικές από τις επεκτάσεις του µοντέλου για χωρικές βάσεις

δεδοµένων δύο διαστάσεων. Οι βασικές επεκτάσεις που χρειάζονται είναι να

συµπεριληφθούν γεωµετρικές έννοιες δύο διαστάσεων όπως σηµεία, γραµµές και

τµήµατα γραµµών, κύκλοι, πολύγωνα και τόξα ώστε να προσδιορίζονται τα χωρικά

χαρακτηριστικά των αντικειµένων. Επιπλέον χρειάζονται χωρικές πράξεις για να

εφαρµοσθούν στα χωρικά χαρακτηριστικά των αντικειµένων -για παράδειγµα, να

υπολογισθεί η απόσταση µεταξύ δύο αντικειµένων- καθώς και λογικές χωρικές

συνθήκες -για παράδειγµα, να ελεγχθεί αν δύο αντικείµενα επικαλύπτονται χωρικά. Για

να δειχθεί αυτό, θεωρήστε µια βάση δεδοµένων που χρησιµοποιείται για εφαρµογές

διαχείριση; έκτακτων αναγκών. Χρειάζεται µια περιγραφή των χωρικών θέσεων

πολλών τύπων αντικειµένων. Μερικά από τα αντικείµενα αυτά γενικά έχουν στατικά

χωρικά χαρακτηριστικά, όπως δρόµοι και εθνικές οδοί, αντλίες νερού (για έλεγχο

Σελ. 198

Page 199: Βάσεις δεδομένων

14.1 Εισαγωγή στις Έννοιες των Χωρικών Βάσεων ∆εδοµένων

πυρκαγιών), αστυνοµικά τµήµατα, πυροσβεστικοί σταθµοί και νοσοκοµεία. Αλλα

αντικείµενα έχουν δυναµικά χωρικά χαρακτηριστικά που αλλάζουν χρονικά, όπως

αστυνοµικά οχήµατα, ασθενοφόρα ή πυροσβεστικά οχήµατα.

14.1.1 Κατηγορίες Τυπικών Χωρικών Επερωτήσεων

Τα παρακάτω δείχνουν τρεις κατηγορίες τυπικών χωρικών

επερωτήσεων:

• Επερώτηση διαστήµατος: Βρίσκει τα αντικείµενα ενός συγκεκριµένου τύπου

που βρίσκονται µέσα σε δεδοµένη χωρική περιοχή ή σε συγκεκριµένη

απόσταση από δοθείσα θέση. (Για παράδειγµα, βρίσκει όλα τα νοσοκοµεία που

βρίσκονται στην περιοχή της πόλης του Ντάλας ή βρίσκει όλα τα ασθενοφόρα σε

απόσταση πέντε µιλίων από τη θέση ενός ατυχήµατος).

• Επερώτηση για τον κοντινότερο γείτονα: Βρίσκει ένα αντικείµενο

συγκεκριµένου τύπου που βρίσκεται πιο κοντά σε δεδοµένη θέση. (Για

παράδειγµα, βρίσκει το περιπολικό που βρίσκεται πιο κοντά σε συγκεκριµένη

θέση).

• Χωρικές συνενώσεις ή επικαλύψεις: Τυπικά συνενώνει αντικείµενα δύο

τύπων µε βάση κάποια χωρική συνθήκη, όπως αντικείµενα που τέµνονται ή

επικαλύπτονται χωρικά ή που βρίσκονται σε κάποια απόσταση το ένα από το

άλλο. (Για παράδειγµα, βρίσκει όλες τις πόλεις που βρίσκονται σ' έναν

αυτοκινητόδροµο ή βρίσκει όλα τα σπίτια που απέχουν δύο µίλια από µια

λίµνη.)

Για να απαντηθούν αποτελεσµατικά αυτοί και άλλοι τύποι χωρικών

επερωτήσεων χρειάζονται ειδικές τεχνικές για χωρικά ευρετήρια. Μια από τις πιο

γνωστές τεχνικές είναι η χρήση R-δένδρων και των παραλλαγών τους. Τα R-δένδρα

οµαδοποιούν στους ίδιους τερµατικούς κόµβους (φύλλα) ενός δοµηµένου

δενδροειδούς ευρετηρίου τα αντικείµενα που βρίσκονται φυσικά κοντά µε κάποια

χωρική προσέγγιση. Αφού ένα φύλο µπορεί να δείχνει µόνο σε κάποιο πλήθος

αντικειµένων, χρειάζονται αλγόριθµοι για τον διαχωρισµό του χώρου σε

ορθογώνιους υποχώρους που περιέχουν τα αντικείµενα. Τυπικά κριτήρια για τον

διαχωρισµό του χώρου περιλαµβάνουν την ελαχιστοποίηση των ορθογώνιων

περιοχών, αφού αυτό οδηγεί σε γρήγορη συντόµευση του χώρου αναζήτησης.

Προβλήµατα όπως η ύπαρξη αντικειµένων µε επικαλυπτόµενες χωρικές περιοχές

αντιµετωπίζονται µε διαφορετικούς τρόπους από τις πολλές διαφορετικές παραλλαγές

Σελ. 199

Page 200: Βάσεις δεδομένων

ΣΥΓΧΡΟΝΑ ΘΕΜΑΤΑ ΒΑΣΕΩΝ ∆Ε∆ΟΜΕΝΩΝ

των R-δένδρων. Οι εσωτερικοί κόµβοι των R-δένδρων αντιστοιχούν σε ορθογώνια που

η περιοχή τους καλύπτει όλα τα ορθογώνια του υποδένδρου τους. Εποµένως τα R-

δένδρα µπορουν να απαντήσουν εύκολα επερωτήσεις όπως: βρες όλα τα αντικείµενα σε

δοθείσα περιοχή, περιορίζοντας τη δενδρική αναζήτηση σε εκείνα τα υποδένδρα των

οποίων τα ορθογώνια τέµνονται µε την περιοχή που δίδεται στην επερώτηση.

Άλλες χωρικές δοµές αποθήκευσης περιλαµβάνουν τα τετραδικά δένδρα και τις παραλλαγές τους. Γενικά τα τετραδικά δένδρα χωρίζουν κάθε χώρο ή υποχώρο σε

περιοχές ίσου µεγέθους και προχωρούν µε τις υποδιαιρέσεις κάθε υποχώρου για να

προσδιορίσουν τις θέσεις των διαφόρων αντικειµένων. Πρόσφατα έχουν προταθεί

πολλές νέες δοµές χωρικής προσπέλασης και η περιοχή αυτή είναι ακόµη ανοικτή

ερευνητικά.

14.2 ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΈΝΝΟΙΕΣ ΒΑΣΕΩΝ ∆Ε∆ΟΜΕΝΩΝ ΠΟΛΥΜΕΣΩΝ

Οι βάσεις δεδοµένων πολυµέσων παρέχουν χαρακτηριστικά που επιτρέπουν

στους χρήστες να αποθηκεύουν και να κάνουν επερωτήσεις σε διαφορετικούς τύπους

πληροφοριών πολυµέσων που περιλαµβάνουν εικόνες (όπως φωτογραφίες ή σχέδια),

ακολουθίες βίντεο (ταινίες ειδήσεις κλπ), ακολουθίες ήχου (όπως τραγούδια, τηλεφωνικά

µηνύµατα, ή αγορεύσεις) και έγγραφα (όπως βιβλία και άρθρα). Οι βασικοί τύποι

επερωτήσεων βάσης δεδοµένων που απαιτούνται περιλαµβάνουν τον εντοπισµό των

πηγών πολυµέσων οι οποίες περιέχουν κάποια αντικείµενα που ενδιαφέρουν. Για

παράδειγµα, µπορεί κάποιος να θέλει να εντοπίσει από µια βάση δεδοµένων βίντεο όλες

τις ακολουθίες βίντεο που περιέχουν ένα συγκεκριµένο πρόσωπο, έστω τον Κλίντον.

Μπορεί επίσης να θέλει να ανακτήσει ακολουθίες βίντεο που να περιέχουν κάποιες

δραστηριότητες, όπως βίντεο στα οποία επιτυγχάνεται γκολ σ' ένα ποδοσφαιρικό παιγνίδι

από συγκεκριµένο παίκτη ή οµάδα.

Οι παραπάνω τύποι επερωτήσεων αναφέρονται σαν ανάκτηση µε βάση το περιεχόµενο, επειδή η. ανάκτηση από την πηγή του πολυµέσου βασίζεται στο ότι πε-

ριέχει κάποια αντικείµενα ή δραστηριότητες. Εποµένως µια βάση δεδοµένων πολυµέσων

πρέπει να χρησιµοποιεί κάποιο µοντέλο για την οργάνωση και τα ευρετήρια των πηγών

πολυµέσων που θα βασίζεται στα περιεχόµενα τους. Ο προσδιορισµός των

περιεχοµένων των πηγών πολυµέσων είναι µια δύσκολη και χρονοβόρα προσπάθεια.

Υπάρχουν δύο βασικές προσεγγίσεις. Η πρώτη βασίζεται στην αυτόµατη ανάλυση των πηγών πολυµέσων για τον προσδιορισµό κάποιων µαθηµατικών χαρακτηριστικών του

περιεχοµένου τους. Η προσέγγιση αυτή χρησιµοποιεί διαφορετικές τεχνικές ανάλογα µε

τον τύπο της πηγής του πολυµέσου (εικόνα, κείµενο, βίντεο ή ήχος). Η δεύτερη

Σελ. 200

Page 201: Βάσεις δεδομένων

14.2 Εισαγωγή στις Έννοιες Βάσεων ∆εδοµένων Πολυµέσων

προσέγγιση εξαρτάται από τον χειρονακτικό προσδιορισµό των αντικειµένων και των δραστηριοτήτων που ενδιαφέρουν σε κάθε πηγή πολυµέσων και στην χρησιµοποίηση

αυτών των πληροφοριών για τη δηµιουργία ευρετηρίων. Η προσέγγιση αυτή µπορεί να

εφαρµοσθεί σε όλες τις διαφορετικές πηγές πολυµέσων, αλλά απαιτεί µια φάση

χειρονακτικής προεπεξεργασίας όπου κάποιο άτοµο πρέπει να σαρώσει κάθε πηγή

πολυµέσου για να προσδιορίσει και να καταλογραφήσει τα αντικείµενα και τις

δραστηριότητες που περιέχει ώστε να µπορούν να χρησιµοποιηθούν για ευρετηριοποίηση

αυτών των πηγών.

Στο υπόλοιπο αυτού του εδαφίου θα περιγράψουµε πολύ περιληπτικά µερικά από

τα χαρακτηριστικά κάθε τύπου πηγής πολυµέσου -εικόνες, βίντεο, ήχος και πήγε;

κειµένων, µε τη σειρά αυτή.

14.2.1 Εικόνας

Μια εικόνα τυπικά αποθηκεύεται σε µη επεξεργασµένη µορφή σαν ένα σύνολο από

τιµές πλέγµατος η κελιών, ή σε συµπιεσµένη µορφή για εξοικονόµηση χώρου. Η

περιγραφή σχήµατος της εικόνας περιγράφει το σχήµα της µη επεξεργασµένης

εικόνας, που τυπικά είναι ένα ορθογώνιο από κελιά συγκεκριµένου πλάτους και

ύψους. Εποµένως, κάθε εικόνα µπορεί να αναπαρασταθεί από ένα m επί n πλέγµα

από κελιά. Κάθε κελί περιέχει την τιµή ενός εικονοστοιχείου που περιγράφει το

περιεχόµενο του κελιού. Στις µαυρόασπρες εικόνες, τα εικονοστοιχεία µπορεί να είναι

ένα µπιτ. Στην γκρίζα κλίµακα ή στις έγχρωµες εικόνες το εικονοστοιχείο αποτελείται

από πολλά µπιτ. Επειδή οι εικόνες µπορεί να απαιτούν µεγάλο χώρο, συχνά

αποθηκεύονται σε συµπιεσµένη µορφή. Τα πρότυπα συµπίεσης, όπως το πρότυπο

GIF, χρησιµοποιούν διάφορους µαθηµατικούς µετασχηµατισµούς για να µειώσουν το

πλήθος των κελιών που αποθηκεύονται αλλά να διατηρούν τα χαρακτηριστικά της

κύριας εικόνας. Οι µαθηµατικοί µετασχηµατισµοί που µπορούν να χρησιµοποιηθούν

περιλαµβάνουν διακριτούς µετασχηµατισµούς Fourier, διακριτούς συνηµιτονοειδείς

µετασχηµατισµούς και κυµατοειδείς µετασχηµατισµούς.

Για τον εντοπισµό των αντικειµένων που ενδιαφέρουν σε µια εικόνα, η εικόνα

τυπικά χωρίζεται σε οµογενή τµήµατα χρησιµοποιώντας ένα κατηγόρηµα οµογε-

νοποίησης. Για παράδειγµα, σε µια έγχρωµη εικόνα, διαδοχικά κελιά και µε περίπου

ίδιες τιµές εικονοστοιχείου οµαδοποιούνται σε τµήµατα. Η τµηµατοποίηση και η

συµπίεση µπορούν εποµένως να προσδιορίσουν τα βασικά χαρακτηριστικά µιας

εικόνας.

Σελ. 201

Page 202: Βάσεις δεδομένων

ΣΥΓΧΡΟΝΑ ΘΕΜΑΤΑ ΒΑΣΕΩΝ ∆Ε∆ΟΜΕΝΩΝ

Μια τυπική επερώτηση σε µια βάση δεδοµένων εικόνων θα ήταν να βρεθούν οι

εικόνες στη βάση δεδοµένων που µοιάζουν µε µια δοθείσα εικόνα. Η δοθείσα εικόνα

µπορεί να είναι ένα µεµονωµένο τµήµα που περιέχει έστω ένα πρότυπο που εν-

διαφέρει, και η επερώτηση είναι να εντοπισθούν άλλες εικόνες που περιέχουν το ίδιο

πρότυπο. Υπάρχουν δύο βασικές τεχνικές γι' αυτό τον τύπο της αναζήτησης. Η πρώτη

προσέγγιση χρησιµοποιεί µια συνάρτηση απόστασης για να συγκρίνει τη δοθείσα

εικόνα µε τις αποθηκευµένες εικόνες και τα τµήµατα τους. Αν η τιµή της απόστασης

που επιστρέφεται είναι µικρή, τότε η πιθανότητα εύρεσης του προτύπου είναι µεγάλη.

Μπορούν να δηµιουργηθούν ευρετήρια που να οµαδοποιούν τις αποθηκευµένες

εικόνες µε περίπου ίδια µετρική απόσταση έτσι που να περιορίζεται ο χώρος της

αναζήτησης. Η δεύτερη προσέγγιση, που ονοµάζεται προσέγγιση µετασχηµατισµού, µετράει την οµοιότητα των εικόνων εκτελώντας ένα µικρό αριθµό

µετασχηµατισµών που µπορούν να µετασχηµατίσουν τα κελιά µιας εικόνας για να

ταιριάζουν µε της άλλης. Οι µετασχηµατισµοί περιλαµβάνουν στροφές, µεταφράσεις

και κλιµάκωση. Αν και η τελευταία προσέγγιση είναι πιο γενική , είναι επίσης πιο

χρονοβόρα και δύσκολη.

14.2.2 Βίντεο

Μια πηγή βίντεο τυπικά αναπαριστάνεται από µια ακολουθία από καρέ, όπου

κάθε καρέ είναι µια παγωµένη εικόνα. Ωστόσο, αντί να προσδιορίζονται τα αντίκείµενα

και οι δραστηριότητες σε κάθε ξεχωριστό καρέ, το βίντεο χωρίζεται σε τµήµατα, όπου κάθε τµήµα αποτελείται από µια ακολουθία διαδοχικών καρέ που περιέχουν τα

ίδια αντικείµενα/δρστηριότητες. Κάθε τµήµα προσδιορίζεται από το αρχικό και το

τελικό καρέ. Τα αντικείµενα και οι δραστηριότητες που προσδιορίζονται σε κάθε τµήµα

βίντεο µπορούν να χρησιµοποιηθούν για την ευρετηριοποίηση των τµηµάτων. Για την

ευρετηριοποίηση των βίντεο έχει προταθεί µια τεχνική ευρετηριοποίησης που

ονοµάζεται δένδρα τµηµάτων καρέ. Το ευρετήριο περιλαµβάνει τόσο αντικείµενα,

όπως άτοµα, σπίτια, αυτοκίνητα, όσο και δραστηριότητες, όπως ένα άτοµο που κάνει

µια οµιλία ή δύο άτοµα που συζητούν.

14.2.3 Κειµένου

Μια πηγή κειµένου είναι βασικά το πλήρες κείµενο κάποιου άρθρου, βιβλίου ή

περιοδικού. Τυπικά η ευρετηριοποίηση αυτών των πηγών επιτυγχάνεται µε τον

προσδιορισµό των λέξεων-κλειδιών που εµφανίζονται στο κείµενο καθώς και των

σχετικών συχνοτήτων τους. Ωστόσο, από τη διαδικασία αυτή διαγράφονται κοινές

Σελ. 202

Page 203: Βάσεις δεδομένων

14.3 ΓΕΩΓΡΑΦΙΚΑ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ

λέξεις (και, άρθρα κλπ.). Επειδή θα µπορούσαν να υπάρχουν πάρα πολλές λέξεις-

κλειδιά στην προσπάθεια ευρετηριοποίησης εγγράφων, έχουν αναπτυχθεί τεχνικές

που ελαττώνουν το πλήθος των λέξεων-κλειδιών στις πιο σχετικές µε τη συλλογή. Για

τον σκοπό αυτό µπορεί να χρησιµοποιηθεί µια τεχνική που βασίζεται σε

µετασχηµατισµούς πινάκων και ονοµάζεται διασπάσεις µοναδικών τιµών

(singular value decopositions (SVD)). Στη συνέχεια µπορεί να χρησιµοποιηθεί µια

τεχνική ευρετηριοποίησης που ονοµάζεται δένδρα τηλεσκοπικών διανυσµάτων ή

TV-δένδρα για την οµαδοποίηση κειµένων.

14.2.4 Ήχου

Οι πηγές ήχου περιέχουν ηχογραφηµένα µηνύµατα όπως οµιλίες, παρουσιάσεις

διαλέξεων ή ακόµη καταγραφές παρακολούθησης τηλεφωνικών µηνυµάτων ή

συνδιαλέξεων που έχουν επιβληθεί από τον νόµο. Εδώ µπορούν να χρησιµοποιη-

θούν διακριτοί µετασχηµατισµοί για τον εντοπισµό των κύριων χαρακτηριστικών της

φωνής κάποιου ατόµου, ώστε να έχουµε ευρετηριοποίηση και ανάκτηση βασισµένες

στην οµοιότητα. Τα χαρακτηριστικά στοιχεία του ήχου περιλαµβάνουν ένταση, τόνο

και καθαρότητα.

14.3 ΓΕΩΓΡΑΦΙΚΑ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ

Τα γεωγραφικά συστήµατα πληροφοριών (ΓΣΠ- GIS) χρησιµοποιούνται για

συλλογή, µοντελοποίηση, αποθήκευση και ανάλυση πληροφοριών :που

περιγράφουν φυσικές ιδιότητες του γεωγραφικού κόσµου. Τα ΓΣΠ περί

περιλαµβάνουν γενικά δύο τύπους δεδοµένων: (1) χωρικά δεδοµένα,

προερχόµενα ανά από χάρτες, ψηφιακές εικόνες, διοικητικά και πολιτικά όρια.

δρόµους, δίκτυα µεταγωγών,· φυσικά δεδοµένα όπως ποτάµια, εδαφολογικά

χαρακτηριστικά. κλιµατολογικές περιοχές. λόφων και (2) µη χωρικά δεδοµένα,

όπως µετρήσεις απογραφής. οικονοµικά δεδοµένα και πληροφορίες πωλήσεων και

προώθησης προϊόντων. Το ΓΣΠ αποτελούν ένα γρήγορα αναπτυσσόµενο πεδίο

που προσφέρει πολύ πιο πρωτοποριακές προσεγγίσεις για την αντιµετώπιση

µερικών τεχνικών απαιτήσεων.

Σελ. 203

Page 204: Βάσεις δεδομένων

ΣΥΓΧΡΟΝΑ ΘΕΜΑΤΑ ΒΑΣΕΩΝ ∆Ε∆ΟΜΕΝΩΝ

Εικόνα 27.5 Μια πιθανή ταξινόµηση των εφαρµογών ΓΣΠ.

14.3.1 Εφαρµογές ΓΣΠ

Είναι δυνατόν να διαχωριστούν τα ΓΣΠ σε τρεις κατηγορίες:

(1) χαρτογραφικές εφαρµογές,

(2) εφαρµογές µοντελοποίησης της ψηφιοποίησης εδάφους και

(3) εφαρµογές γεωγραφικών αντικειµένων.

Η εικόνα 1 συνοψίζει αυτές τις κατηγορίες.

Στις εφαρµογές χαρτογράφησης και µοντελοποίησης εδάφους, συλλέγονται οι

παραλλαγές των χωρικών γνωρισµάτων -για παράδειγµα, τα εδαφολογικά

χαρακτηριστικά, η πυκνότητα των καλλιεργειών και η ποιότητα του αέρα. Στις

εφαρµογές γεωγραφικών αντικειµένων, τα αντικείµενα που ενδιαφέρουν

προσδιορίζονται από ένα φυσικό πεδίο- για παράδειγµα, εγκαταστάσεις ενέργειας,

εκλογικές περιφέρειες, ιδιοκτησίες, περιοχές διανοµής προϊόντων και όρια πόλεων.

Τα αντικείµενα αυτά σχετίζονται µε συναφή δεδοµένα εφαρµογών -που στο

συγκεκριµένο παράδειγµα µπορεί να είναι κατανάλωση ενέργειας, κατανοµές

ψήφων, όγκος πωλήσεων ιδιοκτησιών, όγκος πωλήσεων προϊόντων και πυκνότητα

κυκλοφορίας.

Σελ. 204

Page 205: Βάσεις δεδομένων

14.3 ΓΕΩΓΡΑΦΙΚΑ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ

Οι δύο πρώτες κατηγορίες εφαρµογών ΓΣΠ απαιτούν µια αναπαράσταση

βασισµένη στο συγκεκριµένο πεδίο, ενώ η τρίτη κατηγορία απαιτεί µια

αναπαράσταση που βασίζεται στα αντικείµενα. Η χαρτογραφική προσέγγιση

περιλαµβάνει ειδικές λειτουργίες που µπορεί να είναι η επικάλυψη επιπέδων

χαρτών για να συνδυασθούν δεδοµένα γνωρισµάτων που θα επιτρέπουν, για

παράδειγµα, τη µέτρηση αποστάσεων στον τρισδιάστατο χώρο και την

επαναταξινόµηση των δεδοµένων στο χάρτη. Η µοντελοποίηση ψηφιοποίησης

εδαφών απαιτεί ψηφιακή αναπαράσταση τµηµάτων της επιφάνειας της γης, µε

χρήση υψωµάτων του εδάφους σαν δειγµατοληπτικά σηµεία που συνδέονται για

να δώσουν ένα µοντέλο επιφάνειας όπως ένα τρισδιάστατο δίκτυο (συνδεδεµένες

γραµµές στις τρεις διαστάσεις) που δείχνει τη µορφολογία του εδάφους. Απαιτεί

λειτουργίες παρεµβολής µεταξύ σηµείων παρατήρησης καθώς και οπτικοποίηση.

Στις γεωγραφικές εφαρµογές που βασίζονται σε αντικείµενα χρειάζονται επιπλέον

χωρικές λειτουργίες οι οποίες ασχολούνται µε δεδοµένα που σχετίζονται µε

δρόµους, φυσικούς αγωγούς, επικοινωνιακά καλώδια, γραµµές ενέργειας, κοκ. Για

παράδειγµα, για δοθείσα περιοχή, µπορεί να χρησιµοποιηθούν συγκρίσιµοι χάρτες

για σύγκριση σε διαφορετικά χρονικά σηµεία για να δείξουν τις αλλαγές σε µερικά

δεδοµένα όπως τοποθεσίες δρόµων, καλωδίων, κτιρίων και ποταµών.

14.3.2 Απαιτήσεις ∆ιαχείρισης ∆εδοµένων από τα ΓΣΠ Οι παραπάνω λειτουργικές απαιτήσεις των εφαρµογών ΓΣΠ µεταφράζονται

στις επόµενες απαιτήσεις βάσεων δεδοµένων.

Μοντελοποίηση ∆εδοµένων και Αναπαράσταση. Τα δεδοµένα των ΓΣΠ

µπορούν να αναπαρασταθούν µε δύο µορφοποιήσεις: (1) διανυσµατική και (2)

ψηφιογραφι-κή (raster). Τα διανυσµατικά δεδοµένα παριστάνουν γεωγραφικά

αντικείµενα όπως σηµεία, γραµµές και πολύγωνα. Εποµένως µια λίµνη µπορεί να

παριστάνεται σαν πολύγωνο, ή ένας ποταµός σαν µια ακολουθία τµηµάτων γραµµών.

Τα ψηφιογρα-φικά δεδοµένα χαρακτηρίζονται σαν πίνακες από σηµεία, όπου κάθε

σηµείο παριστάνει την τιµή ενός γνωρίσµατος για µια τοποθεσία στον πραγµατικό

κόσµο. Μη αυστηρά, οι ψηφιοποιηµένες εικόνες είναι πίνακες n διαστάσεων όπου κάθε

καταχώρηση είναι µια µονάδα της εικόνας και παριστάνει ένα γνώρισµα. Οι µονάδες

δύο διαστάσεων ονοµάζονται ψηφίδες (pixels), ενώ οι µονάδες τριών διαστάσεων

ονοµάζονται voxels. Τρισδιάστατα δεδοµένα τοµής αποθηκεύονται µε τη µορφή ενός

ψηφιακού µοντέλου υψοµέτρων που βασίζεται σε ψηφιοποίηση (µοντέλο DEM).

Μια άλλη µορφή ψηφιοποίησης που ονοµάζεται τριγωνικό µη κανονικό δίκτυο (Triangular irregular network - TIN) είναι µια τοπολογική προσέγγιση βασισµένη στα

διανύσµατα που µοντελοποιεί επιφάνειες συνδέοντας δειγµατοληπτικά σηµεία σαν

Σελ. 205

Page 206: Βάσεις δεδομένων

ΣΥΓΧΡΟΝΑ ΘΕΜΑΤΑ ΒΑΣΕΩΝ ∆Ε∆ΟΜΕΝΩΝ

κορυφές τριγώνων και έχει ένα σηµείο πυκνότητας το οποίο µπορεί να µεταβάλλεται µε

την τραχύτητα του εδάφους. Τα παραλληλόγραµµα πλέγµατα (ή οι πίνακες τοµής) είναι

δοµές πινάκων δύο διαστάσεων. Στην ψηφιακή µοντελοποίηση εδάφους (DTM), το

µοντέλο µπορεί να χρησιµοποιηθεί αντικαθιστώντας το υψόµετρο µε ένα γνώρισµα

που ενδιαφέρει όπως η πυκνότητα του πληθυσµού ή η θερµοκρασία του

περιβάλλοντος. Τα δεδοµένα των ΓΣΠ συχνά περιλαµβάνουν µια χρονική δοµή εκτός

από τη χωρική δοµή. Για παράδειγµα, η πυκνότητα της κυκλοφορίας µπορεί να

µετριέται κάθε 60 δευτερόλεπτα σ' ένα σύνολο σηµείων.

Ανάλυση ∆εδοµένων. Τα δεδοµένα των ΓΣΠ υπόκεινται σε διάφορους

τύπους αναλύσεων. Για παράδειγµα, σε εφαρµογές όπως µελέτες διάβρωσης του

εδάφους, µελέτες περιβαλλοντολογικών επιπτώσεων, ή σε προσοµοιώσεις

εξαφάνισης νερών, τα DTM δεδοµένα µπορεί να υπόκεινται σε διάφορων τύπων

γαιοµοοφοµετρικές αναλύσεις-µετρήσεις τιµών κλίσης εδάφους, κλίσης (gradient)

(ρυθµός αλλαγής του υψόµετρου), προσανατολισµού (κατεύθυνση της πυξίδας της

κλίσης). κατατοµή της κυρτότητας (ο ρυθµός αλλαγής της κλίσης), σχεδίου κυρτότητας (η κυρτότητα των ισοϋψών καµπυλών και άλλων παραµέτρων). Οταν

τα δεδοµένα των ΓΣΠ χρησιµοποιούνται για εφαρµογές λήψης αποφάσεων, µπορεί να

υπόκεινται σε πράξεις συνάθροισης και επέκτασης χρησιµοποιώντας τεχνικές

αποθηκών δεδοµένων. Επιπλέον περιλαµβάνονται γεωµετρικές πράξεις (για τον

υπολογισµό αποστάσεων, εµβαδών, όγκων), τοπολογικές πράξεις (για τον

υπολογισµό επικαλύψεων, τοµών, συντοµότερων δρόµων) και χρονικές πράξεις (για

τον υπολογισµό εσωτερικών επερωτήσεων ή επερωτήσεων που βασίζονται σε

γεγονότα). Η ανάλυση περιλαµβάνει ένα πλήθος χρονικών και χωρικών δεδοµένων.

Ενοποίηση ∆εδοµένων. Τα ΓΣΠ πρέπει να ενοποιήσουν τόσο διανυσµατικά όσο

και ψηφιοποιηµένα δεδοµένα που προέρχονται από διαφορετικές πηγές. Μερικές φορές

οι ακµές και οι περιοχές συνάγονται από µια ψηφιοποιηµένη εικόνα για να σχηµατίσουν

ένα διανυσµατικό µοντέλο, ή αντίστροφα, ψηφιοποιηµένες εικόνες όπως οι

αεροφωτογραφίες χρησιµοποιούνται για την ενηµέρωση διανυσµατικών µοντέλων.

Πολλά συστήµατα συντεταγµένων όπως το Universal Transverse Mercator (UTM), το

σύστηµα γεωγραφικού πλάτους/µήκους, και τοπικά κτηµατογραφικά συστήµατα

χρησιµοποιούνται για τον εντοπισµό τοποθεσιών. ∆εδοµένα προερχόµενα από

διαφορετικά συστήµατα συντεταγµένων απαιτούν κατάλληλους µετασχηµατισµούς. Οι

βασικές δηµόσιες πηγές γεωγραφικών δεδοµένων, που περιλαµβάνουν τα αρχεία

TIGER που κρατούνται από το υπουργείο εµπορίου των ΗΠΑ, χρησιµοποιούνται για

χάρτες δρόµων από πολλά εργαλεία σχεδιασµού δρόµων του Web (πχ.

http://maps.yahoo.com). Συχνά υπάρχουν υψηλής ακρίβειας ανεπαρκείς σε

Σελ. 206

Page 207: Βάσεις δεδομένων

14.3 ΓΕΩΓΡΑΦΙΚΑ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ

γνωρίσµατα χάρτες που πρέπει να ενοποιηθούν µε χάρτες χαµηλής ακρίβειας πλούσιους

σε γνωρίσµατα. Αυτό επιτυγχάνεται µε µια διαδικασία που ονοµάζεται "rubber

banding", όπου ο χρήστης ορίζει ένα σύνολο από σηµεία ελέγχου και στους δύο χάρτες

και ο µετασχηµατισµός του χάρτη χαµηλής ακρίβειας επιτυγχάνεται µε την παράταξη των

σηµείων ελέγχου. Ένα σηµαντικό θέµα ενοποίησης είναι να δηµιουργηθούν και να

συντηρηθούν πληροφορίες γνωρισµάτων (όπως η ποιότητα της ατµόσφαιρας ή η

πυκνότητα της κυκλοφορίας) που µπορούν να σχετισθούν και να ενοποιηθούν µε

κατάλληλες γεωγραφικές χρονικές πληροφορίες καθώς αυτές εξελίσσονται.

Συλλογή ∆εδοµένων. Το πρώτο βήµα στην ανάπτυξη µιας χωρικής βάσης

δεδοµένων για χαρτογραφική µοντελοποίηση αποτελεί η συλλογή γεωγραφικών

πληροφοριών δύο ή τριών διαστάσεων σε ψηφιακή µορφή -µια διαδικασία που

µερικές φορές εµποδίζεται από τα χαρακτηριστικά των πηγαίων χαρτών όπως η

ανάλυση, το είδος της προβολής, οι κλίµακες των πινάκων, οι χαρτογραφικές άδειες

χρήσης, η ποικιλία των τεχνικών µετρήσεων και οι διαφορές των συστηµάτων

συντεταγµένων. Τα χωρικά δεδοµένα µπορούν επίσης να συλλεχθούν από

αποµακρυσµένους αισθητήρες σε δορυφόρους όπως ο Landsat, o NORA, το

Advanced Very High Resolution Radiometer (AVHRR) καθώς και το SPOT HRV

(High Resolution Visible Range Instrument), το οποίο έχει αµερόληπτη ερµηνεία και

είναι πολύ ακριβές. Για ψηφιακή µοντελοποίηση εδάφους, οι µέθοδοι συλλογής

δεδοµένων ποικίλουν από χειρωνακτικές µέχρι πλήρως αυτοµατοποιηµένες. Η

παραδοσιακή και πιο ακριβής µέθοδος είναι επί τόπου αποτυπώσεις, που όµως είναι

πολύ χρονοβόρες. Αλλες τεχνικές περιλαµβάνουν φωτοµετρική δειγµατοληψία και

ψηφιοποίηση χαρτογραφικών εγγράφων.

14.3.3 Συγκεκριµένες Πράξεις σε ∆εδοµένα ΓΣΠ

Οι εφαρµογές των ΓΣΠ εκτελούνται µε τη χρήση ειδικών τελεστών όπως οι

παρακάτω:

• Παρεµβολή: Η διαδικασία αυτή παράγει υψοµετρικά δεδοµένα από σηµεία από

τα οποία δεν υπάρχει δείγµα. Περιλαµβάνει υπολογισµό σε απλά σηµεία,

υπολογισµό σε παραλληλόγραµµο πλέγµα ή κατά µήκος µιας καµπύλης, κοκ.

Οι περισσότερες µέθοδοι παρεµβολής βασίζονται στην τριγωνοποίηση που

χρησιµοποιεί τη µέθοδο TIN για παρεµβολή υψών σ' ένα τρίγωνο µε βάση τα ύψη

των κορυφών του.

• Ερµηνεία: Η ψηφιακή µοντελοποίηση εδαφών περιλαµβάνει την ερµηνείατων

πράξεων σε εδαφολογικά δεδοµένα όπως αναθεώρηση, οµαλοποίηση,

Σελ. 207

Page 208: Βάσεις δεδομένων

ΣΥΓΧΡΟΝΑ ΘΕΜΑΤΑ ΒΑΣΕΩΝ ∆Ε∆ΟΜΕΝΩΝ

αποφυγή κάποιων λεπτοµερειών και επέκταση. Επιπλέον τελεστές

περιλαµβάνουν συµµάζεµα στα όρια των τριγώνων (TIN δεδοµένα) και

συγχώνευση που συνεπάγεται συνδυασµό µοντέλων τα οποία επικαλύπτονται

και επίλυση διαφορών µεταξύ δεδοµένων γνωρισµάτων. Η ερµηνεία των

εδαφών περιλαµβάνει µετατροπές µεταξύ µοντέλων πλεγµάτων, µοντέλων

ισοϋψών καµπυλών και TIN δεδοµένων.

• Ανάλνση προσέγγισης: Πολλές κλάσεις ανάλυσης προσέγγισης περιλαµβάνουν

υπολογισµούς "ζωνών ενδιαφέροντος" γύρω από αντικείµενα, όπως ο

προσδιορισµός µιας ζώνης προστασίας γύρα από ένα αυτοκίνητο σ' έναν

αυτοκινητόδροµο. Οι αλγόριθµοι συντοµότερης διαδροµής που χρησιµοποιούν 2D

και 3D πληροφορίες αποτελούν µια σηµαντική κλάση ανάλυσης προσέγγισης.

• Επεξεργασία ψηφιοποιηµένων εικόνων. Η διαδικασία αυτή µπορεί να

χωρισθεί σε δυο κατηγορίες (1) άλγεβρα χαρτών, που χρησιµοποιείται για

την ενοποίηση γεωγραφικών χαρακτηριστικών σε διαφορετικά στρώµατα του

χάρτη για την παραγωγή νέων χαρτών αλγεβρικά και (2) ψηφιακή ανάλυση

εικόνων, που έχει σχέση µε την ανάλυση µιας ψηφιακής εικόνας για

χαρακτηριστικά όπως ο εντοπισµός πλευρών και αντικειµένοη·. Ένα

παράδειγµα του τελευταίου αποτελεί ο εντοπισµός δρόµων στη δορυφορική

εικόνα µιας πόλης.

• Ανάλυση διχτύων. Τα δίκτυα υπάρχουν στα ΓΣΠ σε πολλές µορφές που πρέπει

να αναλυθούν και µπορεί να υποστούν τµηµατοποίηση, επικάλυψη κοκ. Η

επικάλυψη των δικτύων αναφέρεται σ' έναν τύπο χωρικής συνένωσης όπου ένα

δοθέν δίκτυο -για παράδειγµα, ένα δίκτυο αυτοκινητόδροµων- συνενώνεται µε µια

σηµειακή βάση δεδοµένων -για παράδειγµα, θέσεις ατυχηµάτων για να δώσει,

στην περίπτωση αυτή, ένα προφίλ των ατυχηµάτων σε δρόµους.

14.3.4 Άλλη Λειτουργικότητα των Βάσεων ∆εδοµένων.

Η λειτουργικότητα µιας βάσης δεδοµένων ενός ΓΣΠ υπόκειται και σε άλλες

µελέτες.

• Επεκτασιµότητα: Τα ΓΣΠ πρέπει να µπορούν να επεκταθούν για να

υποστηρίξουν µια ποικιλία από συνεχώς εξελισσόµενες εφαρµογές και τους

αντίστοιχους τύπους δεδοµένων τους. Αν χρησιµοποιείται ένα τυπικό

Σ∆Β∆, πρέπει να υποστηρίζει έναν πυρήνα από τύπους δεδοµένων µε

πρόβλεψη για τον ορισµό επιπλέον τύπων και µεθόδων γι' αυτά τα δεδοµένα.

Σελ. 208

Page 209: Βάσεις δεδομένων

14.3 ΓΕΩΓΡΑΦΙΚΑ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ

• Έλεγχος ποιότητας των δεδοµένων. Όπως και σε πολλές άλλες εφαρµογές,

η ποιότητα των πηγαίων δεδοµένων είναι σηµαντικής αξίας για την παροχή

ακριβών αποτελεσµάτων στις επερωτήσεις. Το πρόβληµα αυτό είναι ιδιαίτερα

σηµαντικό στο πλαίσιο των ΓΣΠ λόγω της ποικιλίας των δεδοµένων, των

πηγών και των τεχνικών µέτρησης που εµπλέκονται καθώς και της απόλυτης

ακρίβειας που αναµένουν οι χρήστες των εφαρµογών.

• Οπτική Αναπαράσταση: Μια σηµαντική λειτουργία στα ΓΣΠ σχετίζεται µε την

οπτική αναπαράσταση -τη γραφική παρουσίαση των εδαφολογικών πληροφοριών

και την κατάλληλη αναπαράσταση των γνωρισµάτων των εφαρµογών που τις

συνοδεύουν. Οι σηµαντικότερες τεχνικές οπτικής αναπαράστασης

περιλαµβάνουν (1) ισοϋψείς καµπύλες µε χρήση ισογοαµµών, χωρικά τµήµατα

γραµµών η καµπυλών µε ίδιες τιµές γνωρίσµατος· (2) φωτοσκίαση, µια µέθοδο

φωτισµού που χρησιµοποιείται για ποσοτική ανάγλυφη απεικόνιση µε χρήση

µεταβαλλόµενης έντασης φωτός για τα επιµέρους τµήµατα του εδαφολογικού

µοντέλου· και (3) προοπτική παρουσίαση, εικόνες τριών διαστάσεων των όψεων

του εδαφολογικού µοντέλου που χρησιµοποιούν µεθόδους προοπτικής προβολής

από τα γραφικά του υπολογιστή. Οι τεχνικές αυτές εκµεταλλεύονται τα

χαρτογραφικά δεδοµένα και άλλα αντικείµενα τριών διαστάσεων από τα

εδαφολογικά δεδοµένα παρέχοντας ζωηρή απόδοση σκηνών όπως αυτές στις

προσοµοιώσεις µαχών και τις ταινίες κινουµένων σχεδίων.

Οι απαιτήσεις αυτές δείχνουν καθαρά ότι τα τυπικά ΣΣ∆Β∆ ή τα ΑΣ∆Β∆ δεν

καλύπτουν τις ειδικές ανάγκες των ΓΣΠ. Εποµένως είναι απαραίτητο να

σχεδιασθούν συστήµατα που να υποστηρίζουν τη διανυσµατική και την

ψηφιοποιηµένη αναπαράσταση, τη χωρική λειτουργικότητα καθώς και τα απαραίτητα

χαρακτηριστικά Σ∆Β∆. Ένα δηµοφιλές ΓΣΠ που ονοµάζεται ARC-INFO και το οποίο

δεν είναι Σ∆Β∆ αλλά ενοποιεί τη λειτουργικότητα των ΣΣ∆Β∆ στο INFO τµήµα του

συστήµατος.

Σελ. 209