P. 1
Βάσεις δεδομένων

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

4.33

|Views: 5,115|Likes:
Published by kiki_d

More info:

Published by: kiki_d on Apr 01, 2009
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

03/31/2013

pdf

text

original

ΠΕΡΙΕΧΟΜΕΝΑ

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
ΒΑΣΕΙΣ ∆Ε∆ΟΜΕΝΩΝ
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
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
ΒΑΣΕΙΣ ∆Ε∆ΟΜΕΝΩΝ
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
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
ΒΑΣΕΙΣ ∆Ε∆ΟΜΕΝΩΝ
1 ΒΑΣΕΙΣ ∆Ε∆ΟΜΕΝΩΝ
1.1 ΕΙΣΑΓΩΓΗ
Οι βάσεις δεδοµένων και τα συστήµατα των βάσεων δεδοµένων αποτελούν
ένα σηµαντικό στοιχείο της καθηµερινής ζωής στη σύγχρονη κοινωνία. Για παράδειγµα,
αν πάµε στην τράπεζα για κατάθεση η ανάληψη χρηµάτων, αν κάνουµε κράτηση
ξενοδοχείου η αεροπορικού ταξιδιού, αν ψάχνουµε βιβλιογραφικά στοιχεία από έναν
κατάλογο βιβλιοθήκης η αν παραγγέλνουµε µια συνδροµή περιοδικού σ' έναν εκδότη,
υπάρχει πιθανότητα η δραστηριότητα µας να περιλαµβάνει κάποια προσπέλαση σε
βάση δεδοµένων. Ακόµη και η αγορά αντικειµένων από ένα σούπερ µάρκετ σήµερα
περιλαµβάνει σε πολλές περιπτώσεις ενηµέρωση της βάσης δεδοµένων όπου
καταχωρούνται τα αποθέµατα των προϊόντων του σούπερ µάρκετ. Αυτές οι διεπαφές
είναι παραδείγµατα αυτού που αποκαλούµε παραδοσιακές εφαρµογές των βάσεων
δεδοµένων, όπου οι περισσότερες αποθηκευµένες πληροφορίες είναι ή σε µορφή text ή
σε µορφή αριθµών. Τα τελευταία χρόνια η πρόοδος στην τεχνολογία έχει οδηγήσει σε
συναρπαστικές νέες εφαρµογές των συστηµάτων βάσεων δεδοµένων. Οι βάσεις
δεδοµένων πολυµέσων µπορούν σήµερα να αποθηκεύσουν εικόνες, video και
µηνύµατα ήχου. Τα γεωγραφικά πληροφοριακά συστήµατα (GIS) µπορούν να
αποθηκεύσουν και να αναλύσουν δεδοµένα καιρού και δορυφορικές εικόνες. Οι
αποθήκες δεδοµένων και τα on-line συστήµατα αναλυτικής επεξεργασίας (OLAP)
χρησιµοποιούνται σε πολλές εταιρείες για την εξαγωγή και ανάλυση χρήσιµων
πληροφοριών από µεγάλες βάσεις δεδοµένων για λήψη αποφάσεων. Οι τεχνικές
αναζήτησης των βάσεων δεδοµένων έχουν εφαρµοσθεί στο WEB για τη βελτίωση της
αναζήτησης πληροφοριών για τις οποίες ερευνούν οι χρήστες που περιηγούνται το
διαδύκτιο.
Είναι εύλογο να ειπωθεί ότι οι βάσεις δεδοµένων θα διαδραµατίσουν κρίσιµο
ρόλο σε όλες τις περιοχές όπου χρησιµοποιούνται υπολογιστές όπως στις
επιχειρήσεις, στη µηχανική, στην ιατρική, στα νοµικά, στην εκπαίδευση και στη
βιβλιοθηκονοµία, για να αναφέρουµε µερικές µόνο από αυτές. Η φράση βάση
δεδοµένων βρίσκεται σε τόσο κοινή χρήση που πρέπει να αρχίσουµε ορίζοντας τι
είναι µια βάση δεδοµένων.
Βάση δεδοµένων (database) είναι µια ολοκληρωµένη συλλογή από σχετιζόµενα
δεδοµένα. Με τον όρο δεδοµένα εννοούµε γνωστά γεγονότα που µπορούν να
καταγραφούν και που έχουν κάποια υπονοούµενη σηµασία.
Ο πιο πάνω ορισµός της βάσης δεδοµένων είναι αρκετά γενικός. Ωστόσο, η
συνήθης χρήση του όρου βάση δεδοµένων είναι αρκετά πιο περιορισµένη.
Μπορούµε να πούµε ότι µια Β∆ αναπαριστά ένα µικρόκοσµο. Παραδείγµατα
τέτοιων µικρόκοσµων είναι ένα πανεπιστήµιο (καθηγητές - φοιτητές - µαθήµατα -
αίθουσες κλπ.), µια εταιρία (υπάλληλοι -τµήµατα - κτίρια κλπ.), ένα κατάστηµα λιανικής
(προϊόντα - ράφια - πελάτες - προµηθευτές κλπ.), µια βιβλιοθήκη (βιβλία - θέσεις
αποθήκευσης - δανειζόµενοι κλπ.). Σηµαντικό χαρακτηριστικό των πληροφοριών που
Σελ. 6
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
ΒΑΣΕΙΣ ∆Ε∆ΟΜΕΝΩΝ
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
1.3 Σύστηµα βάσης δεδοµένων
Το Σύστηµα βάσης δεδοµένων αποτελείται από τη βάση δεδοµένων, µία ή
περισσότερες γλώσσες βάσεων δεδοµένων που επιτρέπουν την επικοινωνία µε τη
βάση και κάποια προγράµµατα εφαρµογών
1.3.1 Βάση ∆εδοµένων
Μια βάση δεδοµένων έχει τις ακόλουθες υπονοούµενες ιδιότητες:
• αναπαριστά κάποια άποψη του πραγµατικού κόσµου η οποία µερικές φορές λέγεται
µικρόκοσµος (miniworld)
• είναι µια λογικά συνεκτική συλλογή δεδοµένων που έχει κάποια εγγενή σηµασία.
Μια τυχαία διευθέτηση δεδοµένων δεν είναι σωστό να αναφέρεται ως βάση
δεδοµένων.
• σχεδιάζεται, χτίζεται και γεµίζει µε δεδοµένα για κάποιο συγκεκριµένο σκοπό.
Προορίζεται για µια συγκεκριµένη οµάδα χρηστών και για κάποιες
προκαθορισµένες εφαρµογές.
Κάθε βάση δεδοµένων έχει κάποια πηγή από την οποία παράγονται τα
δεδοµένα, αλληλεπιδρά σε κάποιο βαθµό µε γεγονότα του πραγµατικού κόσµου και
απευθύνεται σ' ένα ακροατήριο που ενδιαφέρεται ενεργά για το περιεχόµενο της.

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

Εικόνα: Βάση ∆εδοµένων είναι µία ολοκληρωµένη συλλογή σχετιζόµενων
δεδοµένων.
Αν µια πληροφορία δεν σχετίζεται µε άλλες µέσα στη βάση, τότε δεν ανήκει στη
συγκεκριµένη Βάση ∆εδοµένων
1.3.2 Συστήµατα διαχείρισης βάσεων δεδοµένων
Σε ένα τυπικό "σύστηµα επεξεργασία αρχείων" υποστηριζόµενο από ένα
συµβατικό λειτουργικό σύστηµα οι εγγραφές διατηρούνται στα µόνιµα αρχεία και τα
προγράµµατα εφαρµογών γράφονται για να διαχειριστούν τα αρχεία αυτά για να
εκτελέσουν ενέργειες εισαγωγής, διαγραφής, εύρεσης κλπ: Καθώς η ανάπτυξη και
εξέλιξη του συστήµατος θα συνεχίζεται µε την πάροδο του χρόνου νέα προγράµµατα
εφαρµογών πρέπει να γραφτούν, νέα µόνιµα αρχεία δηµιουργούνται και στη
διάρκεια µεγάλης χρονικής περιόδου τα αρχεία θα έχουν διαφορετικά format, και τα
προγράµµατα εφαρµογών θα είναι σε διαφορετικές γλώσσες προγραµµατισµού.
Έτσι τα συστήµατα διαχείρισης βάσεων δεδοµένων αναπτύχθηκαν για να
χειρίζονται και ελέγχουν τις παρακάτω δυσκολίες των τυπικών συστηµάτων διαχείρισης
αρχείων που υποστηρίζονταν από τα συµβατικά λειτουργικά συστήµατα
• Προβλήµατα Ασυνέπειας και πλεονασµού δεδοµένων (οι ίδιες
πληροφορίες µπορεί να αναπαραχθούν σε διαφορετικά αρχεία)
Σελ. 9
ΒΑΣΕΙΣ ∆Ε∆ΟΜΕΝΩΝ
• Προβλήµατα Ακεραιότητας ∆εδοµένων (τα δεδοµένα θα πρέπει να
ικανοποιούν κάποιους περιορισµούς. Π.χ. κανένα υπόλοιπο
λογαριασµού κάτω από 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
1.3 Σύστηµα βάσης δεδοµένων
η αυτοπεριγραφική φύση τους: ο οµοιογενής δηλαδή τρόπος δηµιουργίας,
πρόσβασης και ελέγχου των δεδοµένων, ανεξάρτητα εφαρµογής
το µοίρασµα (sharing) των δεδοµένων και η χρήση τους από πολλούς χρήστες,
ακόµη και ταυτόχρονα
ο κεντρικός έλεγχος λειτουργίας και διαχείρισης (database administration) από
ένα ή περισσότερα πρόσωπα που έχουν συγκεκριµένο ρόλο «∆ιαχειριστή Β∆»
(database administrator – DBA)
η υποστήριξη κανόνων ακεραιότητας (δεν µπορούν να υπάρχουν λανθασµένα
δεδοµένα, δηλαδή δεδοµένα που παραβαίνουν κάποιους κανόνες που έχουν
δηλωθεί), ασφάλειας (δεν µπορούν να πειραχτούν δεδοµένα που δεν πρέπει),
δικαιοδοσίας (το σύστηµα «γνωρίζει» ποιος έχει δικαίωµα πάνω σε ποια
δεδοµένα)
ο έλεγχος ταυτοχρονισµού (concurrency control) στις περιπτώσεις ταυτόχρονης
προσπέλασης των ίδιων δεδοµένων από περισσότερους του ενός χρήστες και
ειδικοί µηχανισµοί για ανάκαµψη (recovery) σε περιπτώσεις αθέλητης διακοπής
της λειτουργίας του Σ∆Β∆.

Εικόνα Ένα απλουστευµένο περιβάλλον συστήµατος βάσης δεδοµένων
Υπάρχουν συστήµατα βάσεων δεδοµένων για µηχανήµατα που εκτείνονται σε
όλο το φάσµα — από τους µικροϋπολογιστές (ακόµα και τα φορητά PC) µέχρι τα
µεγαλύτερα συστήµατα mainframe. Ειδικότερα, τα συστήµατα για µεγάλα µηχανήµατα
Σελ. 11
ΒΑΣΕΙΣ ∆Ε∆ΟΜΕΝΩΝ
(τα "µεγάλα συστήµατα") είναι συνήθως συστήµατα πολλών χρηστών, ενώ εκείνα των
µικρότερων µηχανηµάτων (τα "µικρά συστήµατα") είναι συνήθως συστήµατα ενός
χρήστη. Σύστηµα ενός χρήστη (single user system) είναι ένα σύστηµα στο οποίο µόνο
ένας χρήστης έχει πρόσβαση στη βάση δεδοµένων οποιαδήποτε δεδοµένη στιγµή
σύστηµα πολλών χρηστών (multiuser system) είναι ένα σύστηµα στο οποίο πολλοί
χρήστες έχουν πρόσβαση στη βάση δεδοµένων ταυτόχρονα.
1.4 ∆Ε∆ΟΜΕΝΑ
Οι πιο γνωστοί τύποι δεδοµένων που χρησιµοποιούνται στα σύγχρονα
πληροφοριακά συστήµατα, είναι:
Ονοµασία Περιγραφή Μέγεθος σε bytes
Integer Ακέραιοι αριθµοί 2
Real Πραγµατικοί αριθµοί 4
Char Χαρακτήρες 1
String Λέξεις και φράσεις Μεταβλητό
Date Ηµεροµηνία 8
Αυτοί οι στοιχειώδεις τύποι δεδοµένων συσχετίζονται µε µια και µοναδική τιµή,
και δεν µπορούν να αναλυθούν σε µικρότερες µονάδες.
Σύνθετοι τύποι δεδοµένων: Στις πιο συνηθισµένες περιπτώσεις, τα δεδοµένα
υφίστανται ευκολότερη και αποτελεσµατικότερη διαχείριση εάν οµαδοποιηθούν σε
µεγαλύτερες οντότητες, τις οποίες διαπραγµατευόµαστε όπως ακριβώς και τα απλά
δεδοµένα. Ας πάρουµε για παράδειγµα την περίπτωση µιας Εταιρίας. Εάν θελήσουµε
να δηµιουργήσουµε ένα πρόγραµµα στο οποίο θα καταχωρούµε τα στοιχεία των
υπαλλήλων, τότε τα στοιχεία εκείνα που θα κρατάµε για κάθε υπάλληλο, θα είναι το
Όνοµά του, το Επώνυµό του, η Ηµεροµηνία Γέννησής του, και ο Κωδικός του –
ας περιοριστούµε µόνο σε αυτά. Στην περίπτωση αυτή, δηµιουργούµε ένα σύνθετο
τύπο δεδοµένων – τον οποίο ας ονοµάσουµε ΥΠΑΛΛΗΛΟΣ – που θα περιέχει τα
τέσσερα πεδία που περιγράψαµε παραπάνω:

Κωδικός
Όνοµα
Επώνυµο
ΗµΓέν
ΥΠΑΛΛΗΛΟΣ
ΗµΓέν_Υπαλλήλου
Επώνυµο_Υπαλλήλου
Όνοµα_Υπαλλήλου
Κωδικός_Υπαλλήλου







Σχήµα: Περιγραφή οντότητας µε απλούς και σύνθετους τύπους δεδοµένων
Οι τέσσερις τύποι δεδοµένων που σχηµατίζουν τον σύνθετο τύπο δεδοµένων
ΥΠΑΛΛΗΛΟΣ, υφίστανται διαχείριση, σαν να ήταν ένας απλός τύπος δεδοµένων και
χρησιµοποιείται για την αποθήκευση εγγραφών (records). Όπως γίνεται και στις
Σελ. 12
1.4 ∆εδοµένα
συµβατικές γλώσσες προγραµµατισµού όπου για παράδειγµα ένα πρόγραµµα PASCAL
µπορεί να περιέχει δηλώσεις για δοµές εγγραφών, ένα πρόγραµµα C++ µπορεί να
χρησιµοποιεί δηλώσεις "struct" και "class" ενώ ένα πρόγραµµα COBOL έχει δηλώσεις στο
Data Division για τον ορισµό των αρχείων του.
Βέβαια στην παραδοσιακή επεξεργασία αρχείων, ο ορισµός των δεδοµένων
αποτελεί τµήµα των ίδιων των προγραµµάτων εφαρµογών ενώ στην προσέγγιση των
βάσεων δεδοµένων οι ορισµοί των δοµών των αρχείων, ο τύπος και η µορφή
αποθήκευσης κάθε στοιχειώδους δεδοµένου, καθώς και οι διάφοροι περιορισµοί επί
των δεδοµένων αποθηκεύονται ξεχωριστά στον κατάλογο (catalog) του συστήµατος της
βάσης δεδοµένων και λέγονται µετα-δεδοµένα (meta-data).
∆εδοµένα- ενοποίηση και µερισµός
Γενικά, τα δεδοµένα της βάσης δεδοµένων είναι ενοποιηµένα (integrated) και
µεριζόµενα (shared— δηλαδή κοινόχρηστα). Αυτές οι δύο πλευρές, η ενοποίηση και ο
µερισµός των δεδοµένων, είναι από τα µεγαλύτερα πλεονεκτήµατα των συστηµάτων
βάσεων δεδοµένων.
• Με τον όρο ενοποίηση δεδοµένων (data integration) εννοούµε ότι η βάση
δεδοµένων µπορεί να θεωρείται µια συνένωση πολλών αρχείων δεδοµένων, που από
κάθε άλλη άποψη είναι ξεχωριστά το ένα από το άλλο, ενώ κάθε πλεονασµός εξαιτίας
της επανάληψης δεδοµένων µεταξύ αυτών των αρχείων έχει εξαλειφθεί εντελώς ή κατά
ένα µέρος.
Για παράδειγµα, µια βάση δεδοµένων µπορεί να περιλαµβάνει ένα αρχείο
ΥΠΑΛΛΗΛΟΙ, που περιέχει τα ονόµατα, τις διευθύνσεις, τα τµήµατα, τους µισθούς
κ.λπ. των υπαλλήλων, και ένα αρχείο ΣΥΜΜΕΤΟΧΕΣ, που αντιπροσωπεύει τις
συµµετοχές υπαλλήλων σε κάποια εκπαιδευτικά σεµινάρια (δείτε στην παρακάτω
Εικόνα). Ας υποθέσουµε τώρα ότι, για να υποστηριχθεί η διαχείριση των εκπαιδευτικών
σεµιναρίων, πρέπει να είναι γνωστό το τµήµα στο οποίο ανήκει ο κάθε υπάλληλος που
συµµετέχει. Είναι σαφές ότι, σε αυτή την περίπτωση, δεν υπάρχει λόγος να
συµπεριληφθούν αυτές οι (πλεονάζουσες) πληροφορίες στο αρχείο ΣΥΜΜΕΤΟΧΕΣ,
επειδή µπορεί κανείς να τις βρίσκει από το αρχείο ΥΠΑΛΛΗΛΟΙ.

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

ΣΥΜΜΕΤΟΧΕΣ ΟΝΟΜΑ ΣΕΜΙΝΑΡΙΟ ……….
Εικόνα Τα αρχεία ΥΠΑΛΛΗΛΟΙ και ΣΥΜΜΕΤΟΧΕΣ
• Με τον όρο µερισµός δεδοµένων (data sharing) εννοούµε ότι τα µεµονωµένα
στοιχεία δεδοµένων της βάσης δεδοµένων µπορούν να τα µοιράζονται πολλοί
διαφορετικοί χρήστες, µε την έννοια ότι καθένας από αυτούς τους χρήστες µπορεί να
έχει πρόσβαση στο ίδιο στοιχείο δεδοµένων (και οι διάφοροι χρήστες µπορούν να το
χρησιµοποιούν για διαφορετικό σκοπό). Όπως αναφέραµε και νωρίτερα, οι διάφοροι
χρήστες µπορούν να έχουν πρόσβαση στο ίδιο στοιχείο δεδοµένων την ίδια στιγµή
("ταυτόχρονη προσπέλαση"). Αυτού του είδους ο µερισµός (ταυτόχρονος ή όχι) είναι σε
ένα βαθµό συνέπεια του γεγονότος ότι η βάση δεδοµένων είναι ενοποιηµένη. Στο
Σελ. 13
ΒΑΣΕΙΣ ∆Ε∆ΟΜΕΝΩΝ
παραπάνω παράδειγµα µας, των υπαλλήλων και των συµµετοχών τους σε σεµινάρια,
τις πληροφορίες του αρχείου ΥΠΑΛΛΗΛΟΙ για τα τµήµατα στα οποία ανήκουν οι
υπάλληλοι θα τις µοιράζονται κατά κανόνα οι χρήστες που ανήκουν στο Τµήµα
Προσωπικού και στο Τµήµα Εκπαίδευσης — και, όπως είδαµε προηγουµένως, αυτές οι
δύο κατηγορίες χρηστών θα χρησιµοποιούν κατά κανόνα αυτές τις πληροφορίες για
διαφορετικό σκοπό.
1.5 ΠΑΡΑ∆ΕΙΓΜΑΤΑ ΒΑΣΕΩΝ ∆Ε∆ΟΜΕΝΩΝ
• Μια βάση δεδοµένων αποτελείται από κάποια συλλογή µόνιµων δεδοµένων
που χρησιµοποιούνται από τα συστήµατα των εφαρµογών µιας επιχείρησης, ενός
οργανισµού ενός ιδιώτη κλπ. Μερικά παραδείγµατα είναι τα:
Τράπεζες - Νοσοκοµεία- Πανεπιστήµια- Κρατικές υπηρεσίες
Αντιπροσωπεία Αυτοκινήτων (Αγορές-Πωλήσεις-Ενοικιάσεις)
Βάση Εφαρµογών Λογισµικού (Εταιρείες, Κατηγορίες, Λογισµικά, Λειτουργικά)
Βιβλίο Εσόδων-Εξόδων (Κατηγορίες, Κινήσεις, Πελάτες, Προµηθευτές)
∆ιαχείριση εστιατορίου (Υπάλληλοι, Κινήσεις-Παραγγελίες, Τραπέζια)
∆ιαχείριση µηχανογραφικού κέντρου (Servers, Υπολογιστές, Administrators,
Χρήστες, Περιφερειακά, Λογισµικό, ∆ίκτυα)
Εµπορικό κύκλωµα (Πελάτες, Προµηθευτές, Κινήσεις, Αποθήκη)
Εταιρεία Πώλησης Software / Hardware
Ιατρείο - Λογιστικό Γραφείο - Μεσιτικό Γραφείο
Εταιρεία εύρεσης προσωπικού επιχειρήσεων (Επιχειρήσεις, Άνεργοι,
Ειδικότητες, Κινήσεις)
Πολιτικό γραφείο υπ. Βουλευτή (Ραντεβού, Ψηφοφόροι, Επαγγέλµατα, Πόλεις)
Σχολείο (Μαθητές, Καθηγητές, Τµήµατα, Μαθήµατα, Αίθουσες)
Ταµείο Επιχείρησης (Εσοδα, Εξοδα, Αξιόγραφα, Πελάτες, Προµηθευτές)
Τεχνική Βοήθεια (Ηλεκτρικά / Υδραυλικά κλπ)
Τεχνική Εταιρεία (Έργα, Υλικά, Πελάτες, Προµηθευτές, Υπεργολάβοι, Εργάτες)
Σε κάθε ένα από τα προηγούµενα παραδείγµατα πρέπει αναγκαστικά να
τηρούνται πολλά δεδοµένα που αφορούν τη λειτουργία τους.
Σήµερα επίσης, οι βάσεις δεδοµένων χρησιµοποιούνται όλο και περισσότερο και
για άλλου είδους εφαρµογές — όπως είναι οι εφαρµογές υποστήριξης αποφάσεων
(decision support). Στην πράξη µάλιστα, οι επιχειρήσεις διατηρούν στις µέρες µας δύο
ξεχωριστές βάσεις δεδοµένων, µία για τα επιχειρησιακά δεδοµένα και άλλη µία για τα
δεδοµένα υποστήριξης αποφάσεων. Η βάση δεδοµένων υποστήριξης αποφάσεων
αποτελείται συχνά από συγκεντρωτικές πληροφορίες (π.χ. πληροφορίες για συνολικές
ποσότητες και µέσους όρους), οι οποίες εξάγονται περιοδικά (για παράδειγµα,
καθηµερινά ή εβδοµαδιαία) από την επιχειρησιακή βάση δεδοµένων.
Σελ. 14
1.6 Πλεονεκτήµατα της χρήσης βάσεων δεδοµένων
1.6 ΠΛΕΟΝΕΚΤΗΜΑΤΑ ΤΗΣ ΧΡΗΣΗΣ ΒΑΣΕΩΝ ∆Ε∆ΟΜΕΝΩΝ
Υπάρχουν συγκεκριµένα πλεονεκτήµατα που προκύπτουν από τον κεντρικό
έλεγχο των δεδοµένων.
• Ο πλεονασµός (redundancy) µπορεί να µειωθεί στο ελάχιστο.
Στα συµβατικά συστήµατα η κάθε εφαρµογή έχει τα δικά της αρχεία. Αυτό το
γεγονός οδηγεί πολύ συχνά σε υψηλό βαθµό πλεονασµού (επανάληψης) για τα
αποθηκευµένα δεδοµένα, µε αποτέλεσµα τη σπατάλη αποθηκευτικού χώρου. Π.χ. µια
εφαρµογή παρακολούθησης προσωπικού και µια εφαρµογή καταγραφής
εκπαιδευτικών δραστηριοτήτων µπορεί να έχουν από ένα αρχείο µε πληροφορίες που
αφορούν τα τµήµατα της επιχείρησης στα οποία ανήκουν οι υπάλληλοι. Όπως είδαµε
όµως αυτά τα δύο αρχεία µπορούν να ενοποιηθούν ώστε να εξαλειφθεί ο πλεονασµός.
• Η ασυνέπεια µπορεί να αποφευχθεί.
Στην ουσία, αυτό είναι συνέπεια της προηγούµενης παρατήρησης. Ας
υποθέσουµε ότι ένα δεδοµένο γεγονός του πραγµατικού κόσµου — ας πούµε, το
γεγονός ότι ο υπάλληλος Υ3 εργάζεται στο τµήµα Τ8 — αναπαρίσταται στην
αποθηκευµένη βάση δεδοµένων από δύο ξεχωριστές εγγραφές. Ας υποθέσουµε
επίσης ότι το DBMS δεν είναι ενήµερο γι' αυτή τη "διπλοεγγραφή" (δηλαδή, ότι ο
πλεονασµός δεν είναι ελεγχόµενος). Τότε, είναι βέβαιο ότι θα υπάρξουν περιπτώσεις
που οι δύο καταχωρίσεις δε θα συµφωνούν µεταξύ τους — περιπτώσεις που η µία
καταχώριση θα έχει ενηµερωθεί ενώ η άλλη όχι. Σε αυτές τις περιπτώσεις, λέµε ότι η
βάση δεδοµένων είναι ασυνεπής (inconsistent). Είναι προφανές ότι µια ασυνεπής βάση
δεδοµένων µπορεί να δώσει στους χρήστες της λανθασµένες ή αντιφατικές
πληροφορίες.
• Τα δεδοµένα µπορούν να είναι κοινόχρηστα.
Ο µερισµός (κοινή χρήση) δε σηµαίνει µόνο ότι οι υπάρχουσες εφαρµογές
µπορούν να µοιράζονται τα δεδοµένα της βάσης δεδοµένων αλλά και ότι είναι δυνατή η
ανάπτυξη νέων εφαρµογών που θα µπορούν να χρησιµοποιούν τα ίδια αποθηκευµένα
δεδοµένα. Με άλλα λόγια, είναι δυνατό να ικανοποιούνται οι απαιτήσεις νέων
εφαρµογών σε ό,τι αφορά τα δεδοµένα, χωρίς να είναι αναγκαία η δηµιουργία νέων
αποθηκευµένων δεδοµένων.
• Μπορούν να επιβάλλονται πρότυπα.
Με τον κεντρικό έλεγχο της βάσης δεδοµένων, ο υπεύθυνος διαχείρισης βάσεων
δεδοµένων (DBA) µπορεί να εξασφαλίσει ότι θα τηρούνται όλα τα σχετικά πρότυπα για
την αναπαράσταση των δεδοµένων. Τα πρότυπα αυτά µπορεί να είναι πρότυπα της
επιχείρησης, του εγκατεστηµένου συστήµατος, του τµήµατος της επιχείρησης, του
τεχνολογικού τοµέα, ή εθνικά και διεθνή πρότυπα. Η τυποποίηση της αναπαράστασης
των δεδοµένων διευκολύνει ιδιαίτερα την ανταλλαγή δεδοµένων (data interchange),
δηλαδή τη µεταφορά δεδοµένων µεταξύ διαφορετικών συστηµάτων.
• Μπορούν να εφαρµόζονται περιορισµοί ασφάλειας.
Έχοντας πλήρη δικαιοδοσία πάνω στη βάση δεδοµένων, ο DBA µπορεί να
εξασφαλίσει ότι η πρόσβαση στη βάση δεδοµένων θα µπορεί να γίνεται µόνο µέσω των
Σελ. 15
ΒΑΣΕΙΣ ∆Ε∆ΟΜΕΝΩΝ
κατάλληλων καναλιών και, να ορίσει κανόνες ασφάλειας µε βάση τους οποίους θα
γίνεται έλεγχος κάθε φορά που θα υπάρχει απόπειρα προσπέλασης εµπιστευτικών
δεδοµένων. Είναι δυνατό να καθοριστούν διαφορετικοί κανόνες για το κάθε είδος
προσπέλασης (ανάκληση, εισαγωγή, διαγραφή, κ.λπ.) σε κάθε στοιχείο πληροφοριών
της βάσης δεδοµένων. Σηµειώστε, όµως, ότι χωρίς τέτοιους κανόνες η ασφάλεια των
δεδοµένων µπορεί να διατρέχει µεγαλύτερο κίνδυνο από ό,τι σε ένα παραδοσιακό
σύστηµα αρχειοθέτησης (µε γεωγραφικά αποµακρυσµένα αρχεία) δηλαδή, η κεντρική
φύση ενός συστήµατος βάσης δεδοµένων απαιτεί κατά κάποιον τρόπο την ύπαρξη
ενός καλού συστήµατος ασφάλειας.
• Μπορεί να διατηρείται η ακεραιότητα.
Το πρόβληµα της ακεραιότητας (integrity) είναι να εξασφαλίζεται ότι τα δεδοµένα
της βάσης δεδοµένων είναι ακριβή. Η ασυµφωνία µεταξύ δύο καταχωρίσεων που
υποτίθεται ότι αντιπροσωπεύουν το ίδιο "γεγονός" είναι ένα παράδειγµα έλλειψης
ακεραιότητας Ακόµη και αν δεν υπάρχει τέτοιος πλεονασµός όµως, πάλι υπάρχει
περίπτωση να περιέχει η βάση δεδοµένων λανθασµένες πληροφορίες. Για
παράδειγµα, ένας υπάλληλος µπορεί να εµφανίζεται ότι έχει δουλέψει 400 ώρες µέσα
σε µία εβδοµάδα, αντί για 40, ή ότι ανήκει στο τµήµα Τ9 ενώ δεν υπάρχει τέτοιο τµήµα.
Ο κεντρικός έλεγχος της βάσης δεδοµένων µπορεί να βοηθήσει να αποφευχθούν
τέτοιου είδους προβλήµατα επιτρέποντας στον υπεύθυνο διαχείρισης δεδοµένων να
ορίζει (και στον DBA να υλοποιεί) κανόνες ακεραιότητας µε βάση τους οποίους θα
γίνεται έλεγχος κάθε φορά που επιχειρείται κάποια πράξη εισαγωγής, διαγραφής, ή
τροποποίησης δεδοµένων.
• Οι αντικρουόµενες απαιτήσεις µπορούν να εξισορροπούνται.
Γνωρίζοντας τις συνολικές απαιτήσεις της επιχείρησης — σε αντιδιαστολή µε τις
απαιτήσεις των µεµονωµένων χρηστών — ο DBA µπορεί να δοµήσει το σύστηµα µε
τέτοιον τρόπο ώστε να παρέχει γενικές υπηρεσίες που να είναι "βέλτιστες για την
επιχείρηση". Για παράδειγµα, είναι δυνατό να επιλεχθεί µια αναπαράσταση των
αποθηκευµένων δεδοµένων που θα παρέχει γρήγορη πρόσβαση στις σηµαντικότερες
εφαρµογές (ίσως σε βάρος της απόδοσης ορισµένων άλλων εφαρµογών).
1.7 ΣΧΕΣΙΑΚΑ ΚΑΙ ΜΗ ΣΧΕΣΙΑΚΑ ΣΥΣΤΗΜΑΤΑ
Όλα σχεδόν τα προϊόντα διαχείρισης βάσεων δεδοµένων που αναπτύχθηκαν
από τα τέλη της δεκαετίας του 1970 και µετά βασίζονται στη λεγόµενη σχεσιακή
προσέγγιση (relational approach) ακόµα, η συντριπτική πλειοψηφία των ερευνών που
έγιναν για τις βάσεις δεδοµένων τα τελευταία 25 χρόνια βασίζονται επίσης σε αυτή την
προσέγγιση. Η σχεσιακή προσέγγιση αποτελεί σήµερα την κυρίαρχη τάση στην αγορά,
και ότι το "σχεσιακό µοντέλο" είναι το σηµαντικότερο επίτευγµα των βάσεων δεδοµένων
επειδή είναι το µόνο µοντέλο δεδοµένων που έχει στερεές µαθηµατικές βάσεις.
Τι εννοούµε, λοιπόν, όταν λέµε ότι ένα σύστηµα είναι σχεσιακό; Με δύο λόγια,
σχεσιακό είναι ένα σύστηµα που:
1. Ο χρήστης αντιλαµβάνεται τα δεδοµένα ως σχέσεις (κανονικοποιηµένοι
πίνακες).
Σελ. 16
1.7 Σχεσιακά και µη σχεσιακά συστήµατα
2. Οι τελεστές πράξεων που έχει στη διάθεση του ο χρήστης (για παράδειγµα, για
την ανάκληση δεδοµένων) είναι τελεστές που δηµιουργούν νέους πίνακες µε βάση
κάποιους παλιότερους. Για παράδειγµα, υπάρχει ένας τελεστής για την εξαγωγή ενός
υποσυνόλου των γραµµών ενός πίνακα, και ένας άλλος τελεστής για την εξαγωγή ενός
υποσυνόλου των στηλών του.
Ο λόγος για τον οποίο ονοµάζονται αυτά τα συστήµατα "σχεσιακά" (relational)
είναι ότι ο όρος "σχέση" (relation) είναι ουσιαστικά ένα όρος των µαθηµατικών που
αντιστοιχεί σε έναν κανονικοποιηµένο πίνακα. Στην παρακάτω εικόνα µπορείτε να δείτε
ένα παράδειγµα σχεσιακής βάσης δεδοµένων µε πίνακες που αφορούν δεδοµένα για
Φοιτητές (Student) - Μαθήµατα (Course) - ∆ιδασκαλίεςΜαθηµάτων (Section) -
ΒαθµολογίεςΦοιτητών (Grade Report) -ΠροαπαιτούµεναΜαθήµατα (Prerequisite)

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

Αναγνώστης
Συγγραφέας
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
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 Associates
International Inc.
Ιεραρχικά συστήµατα IMS της IBM Corporation
∆ικτυωτά συστήµατα CA-IDMS/DB
της Computer Associates
International Inc.
Σχεσιακά συστήµατα
που εµφανίζονται στις αρχές του
1980
DB2 της IBM Corporation
INGRES της Ingres Inc.
ORACLE της Oracle
Corporation
SYBASE της Sybase Inc.

Για τα σχεσιακά συστήµατα της αγοράς των απλών προσωπικών υπολογιστών
το λογισµικό Access (Microsoft) το Paradox (Borland), Q&A (Symantec), FileMaker Pro
(Claris Corp.), Approach (Lotus).
Μια άλλη ενδιαφέρουσα κατηγορία Σ∆Β∆ για τα σχεσιακά συστήµατα είναι τα
λεγόµενα λογισµικά ανοιχτού-κώδικα (open-source), τα οποία προσφέρονται δωρεάν
και επιπλέον µαζί µε το εκτελέσιµο πρόγραµµα διατίθεται ο πηγαίος κώδικας
ορισµένων ή ακόµη και όλων των συστατικών του Σ∆Β∆, για να µπορεί κάποιος να τα
τροποποιήσει ανάλογα µε τις ανάγκες του (συνήθως για εκπαιδευτικούς και
ερευνητικούς σκοπούς). Το µόνο µειονέκτηµα αυτής της κατηγορίας είναι ότι οι
κατασκευαστές τους προσφέρουν µικρή υποστήριξη, αφού είναι δωρεάν λογισµικό.
Παραδείγµατα της κατηγορίας αυτής είναι τα PostgreSQL , MySQL, BerkeleyDB κλπ
Σελ. 19
ΕΝΝΟΙΕΣ ΚΑΙ ΑΡΧΙΤΕΚΤΟΝΙΚΉ ΣΥΣΤΗΜΆΤΩΝ ΒΆΣΕΩΝ ∆Ε∆ΟΜΈΝΩΝ
2 ΕΝΝΟΙΕΣ ΚΑΙ ΑΡΧΙΤΕΚΤΟΝΙΚΗ
ΣΥΣΤΗΜΑΤΩΝ ΒΑΣΕΩΝ ∆Ε∆ΟΜΕΝΩΝ
2.1 ΑΦΑΙΡΕΤΙΚΗ ΑΠΟΨΗ ∆Ε∆ΟΜΕΝΩΝ
Ο σηµαντικότερος σκοπός ενός συστήµατος βάσεων δεδοµένων είναι να
παράσχει στους χρήστες µια αφαιρετική άποψη του συστήµατος. Το σύστηµα κρύβει
ορισµένες λεπτοµέρειες για το πώς τα δεδοµένα αποθηκεύονται και διατηρούνται. Η
πολυπλοκότητα λοιπόν πρέπει να κρυφτεί από τους χρήστες βάσεων δεδοµένων. Γι'
αυτό υπάρχουν τρία επίπεδα αφαίρεσης:
(α) φυσικό επίπεδο:
• είναι το χαµηλότερο επίπεδο αφαίρεσης.
• περιγράφει πώς αποθηκεύονται τα δεδοµένα. Π.χ. δείκτες, β-δέντρα,
αποκερµατισµός.
• εδώ περιγράφονται λεπτοµερώς όλες οι σύνθετες δοµές χαµηλού
επιπέδου.
(β) εννοιολογικό επίπεδο:
• το αµέσως υψηλότερο επίπεδο αφαίρεσης.
• περιγράφει τι είδους δεδοµένα αποθηκεύονται.
• περιγράφει τις συσχετίσεις µεταξύ αυτών των δεδοµένων.
(γ) Επίπεδο άποψης:
• το πιο υψηλό επίπεδο.
• περιγράφει τµήµατα της βάσης δεδοµένων για κάθε συγκεκριµένη
οµάδα χρηστών.
• µπορεί να είναι πολλές διαφορετικές απόψεις µιας βάσης δεδοµένων.
• Π.χ. οι ταµίες σε µια τράπεζα παίρνουν µια άποψη των απολογισµών
πελατών, αλλά όχι των δεδοµένων µισθοδοτικών καταστάσεων.
• • • • •





Άποψη N Άποψη 2 Άποψη 1
Εννοιολογικό επίπεδο
Φυσικό επίπεδο
Σελ. 20
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
ΕΝΝΟΙΕΣ ΚΑΙ ΑΡΧΙΤΕΚΤΟΝΙΚΉ ΣΥΣΤΗΜΆΤΩΝ ΒΆΣΕΩΝ ∆Ε∆ΟΜΈΝΩΝ
Πέρα από τις βασικές πράξεις που παρέχει το µοντέλο δεδοµένων, συνηθίζεται
όλο και περισσότερο να περιλαµβάνονται στο µοντέλο δεδοµένων δυναµικά
χαρακτηριστικά (ή συµπεριφορά) µιας εφαρµογής βάσεων δεδοµένων. Αυτό
επιτρέπει στον σχεδιαστή της βάσης δεδοµένων να ορίσει ένα σύνολο από δικές του
επιτρεπτές πράξεις στα αντικείµενα της βάσης δεδοµένων. Ένα παράδειγµα
ορισµένης από το χρήστη πράξης είναι η "ΥΠΟΛΟΓΙΣΕ_ΤΟ_ΜΕΣΟ_ΟΡΟ" που µπορεί
να εφαρµοστεί σε ένα αντικείµενο του τύπου ΦΟΙΤΗΤΗΣ. Από την άλλη µεριά, γενικές
πράξεις για εισαγωγή, διαγραφή, τροποποίηση ή ανάκτηση ενός αντικειµένου συχνά
περιλαµβάνονται στις βασικές πράξεις ενός µοντέλου δεδοµένων.
2.2.1 Κατηγορίες Μοντέλων ∆εδοµένων
Μπορούµε να ταξινοµήσουµε τα µοντέλα δεδοµένων µε βάση τους τύπους
εννοιών που παρέχουν για την περιγραφή της δοµής µιας βάσης δεδοµένων.
Τα υψηλού επιπέδου (high-level) ή εννοιολογικά (conceptual) µοντέλα
δεδοµένων παρέχουν έννοιες που βρίσκονται κοντά στον τρόπο µε τον οποίο πολλοί
χρήστες αντιλαµβάνονται τα δεδοµένα.
Τα χαµηλού επιπέδου (low-level) ή φυσικά (physical) µοντέλα δεδοµένων
παρέχουν έννοιες που περιγράφουν τις λεπτοµέρειες του τρόπου αποθήκευσης των
δεδοµένων στον υπολογιστή.
Τα παραστατικά µοντέλα δεδοµένων. Μεταξύ των δύο άκρων υπάρχει µια
κλάση παραστατικών (representational) µοντέλων ή µοντέλων υλοποίησης
(implementation), που παρέχουν έννοιες οι οποίες µπορεί να κατανοούνται από τους
τελικούς χρήστες αλλά δεν είναι τόσο αποµακρυσµένες από τον τρόπο αποθήκευσης
των δεδοµένων στον υπολογιστή. Τα παραστατικά µοντέλα δεδοµένων αποκρύπτουν
µερικές λεπτοµέρειες αποθήκευσης των δεδοµένων αλλά µπορούν να υλοποιηθούν σ'
ένα υπολογιστικό σύστηµα κατά άµεσο τρόπο.
Άρα τα µοντέλα δεδοµένων είναι µια συλλογή από εργαλεία για την περιγραφή
δοµών δεδοµένων, συσχετίσεων δεδοµένων, τη σηµασιολογία (semantics) δεδοµένων
και τους περιορισµούς δεδοµένων. Υπάρχουν τρεις διαφορετικές οµάδες που
αντιστοιχούν στις τρεις φάσεις σχεδιασµού:



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

Τα εννοιολογικά µοντέλα δεδοµένων χρησιµοποιούν έννοιες όπως οι οντότητες,
τα γνωρίσµατα και οι συσχετίσεις. Μια οντότητα (entity) αντιπροσωπεύει ένα
αντικείµενο ή µια έννοια του πραγµατικού κόσµου, όπως έναν εργαζόµενο ή ένα έργο
για το οποίο αποθηκεύονται πληροφορίες στη βάση δεδοµένων. Ένα γνώρισµα
(attribute) αντιπροσωπεύει µια ιδιότητα που περιγράφει περαιτέρω µια οντότητα, όπως
το επίθετο ενός εργαζόµενου ή το µισθό του. Μια συσχέτιση (relationship) µεταξύ δύο
ή περισσότερων οντοτήτων αντιπροσωπεύει µια αλληλεπίδραση µεταξύ των οντοτήτων
για παράδειγµα η "εργάζεται-σε" είναι µια συσχέτιση µεταξύ ενός εργαζοµένου και ενός
Σελ. 22
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
ΕΝΝΟΙΕΣ ΚΑΙ ΑΡΧΙΤΕΚΤΟΝΙΚΉ ΣΥΣΤΗΜΆΤΩΝ ΒΆΣΕΩΝ ∆Ε∆ΟΜΈΝΩΝ
• Οι πληροφορίες σε µια βάση δεδοµένων σε ένα συγκεκριµένο χρονικό
σηµείο καλούνται στιγµιότυπα (instance) της βάσης δεδοµένων.
• Κάθε αλλαγή των δεδοµένων δηµιουργεί καινούργια στιγµιότυπα της
βάσης δεδοµένων.
Η αναλογία των στιγµιότυπων και του σχήµατος µε τις έννοιες των γλωσσών
προγραµµατισµού είναι
Ορισµοί τύπων δεδοµένων σχήµα
Τιµή µιας µεταβλητής στιγµιότυπο
Η περιγραφή της βάσης δεδοµένων που λέγεται σχήµα της βάσης (database
schema) προσδιορίζεται κατά το σχεδιασµό της βάσης δεδοµένων και δεν αναµένεται
να αλλάζει συχνά. Τα περισσότερα µοντέλα δεδοµένων διαθέτουν συγκεκριµένες
συµβάσεις για τη διαγραµµατική αναπαράσταση των σχηµάτων. Ένα αναπαραστηµένο
σχήµα λέγεται διάγραµµα σχήµατος (schema diagram). Ονοµάζουµε κάθε αντικείµενο
του σχήµατος -όπως το ΦΟΙΤΗΤΗΣ ή το ΜΑΘΗΜΑ- δοµικό στοιχείο του σχήµατος.
Για παράδειγµα από ένα σχεσιακό µοντέλο δεδοµένων προκύπτει η περιγραφή
της βάσης δεδοµένων που ονοµάζεται σχεσιακό σχήµα Β∆.
Το σχήµα αφορά τη δοµή της βάσης δεδοµένων χωρίς τα στιγµιότυπα των
δεδοµένων (εγγραφές).

Εικόνα. Ένα διάγραµµα σχεσιακού σχήµατος µίας Πανεπιστηµιακής βάσης δεδοµένων
µε το σχεσιακό µοντέλο
Ένα διάγραµµα σχήµατος παρουσιάζει µόνο τα ονόµατα των τύπων εγγραφών
και των στοιχειωδών δεδοµένων, καθώς και µερικούς τύπους περιορισµών. Για
παράδειγµα, η εικόνα δεν δείχνει ούτε τον τύπο δεδοµένων, ούτε τις συσχετίσεις
ανάµεσα στα διάφορα αρχεία. Πολλοί τύποι περιορισµών δεν παριστάνονται στα
διαγράµµατα σχηµάτων. Για παράδειγµα, ένας περιορισµός όπως "οι φοιτητές της
Πληροφορικής πρέπει να περάσουν το µάθηµα COSC1310 πριν το τέλος του δεύτερου
έτους σπουδών" είναι αρκετά δύσκολο να παρασταθεί.
Τα πραγµατικά δεδοµένα σε µια βάση δεδοµένων µπορεί να αλλάζουν συχνά.
Παράδειγµα, η βάση δεδοµένων που παρουσιάζεται στην εικόνα αλλάζει κάθε φορά
που εισάγουµε ένα νέο φοιτητή ή εισάγουµε ένα νέο βαθµό για κάποιον φοιτητή. Τα
δεδοµένα που βρίσκονται στη βάση δεδοµένων σε µια συγκεκριµένη χρονική στιγµή
ονοµάζονται τρέχουσα κατάσταση (state) ή σύνολο στιγµιότυπων (set of instances)
Σελ. 24
2.2 Μοντέλα δεδοµένων, σχήµατα και στιγµιότυπα
της βάσης δεδοµένων. Το Σ∆Β∆ είναι εν µέρει υπεύθυνο να εξασφαλίζει ότι κάθε
κατάσταση της βάσης δεδοµένων είναι µια έγκυρη κατάσταση.
Η διαφοροποίηση µεταξύ του σχήµατος και της κατάστασης µιας βάσης
δεδοµένων είναι πολύ σηµαντική. Όταν ορίζουµε µια νέα βάση δεδοµένων,
προσδιορίζουµε µόνο το σχήµα της βάσης δεδοµένων στο Σ∆Β∆. Στο σηµείο αυτό, η
αντίστοιχη κατάσταση της βάσης δεδοµένων είναι η "κενή κατάσταση" χωρίς δεδοµένα.
Παίρνουµε την "αρχική κατάσταση" της βάσης δεδοµένων όταν η βάση φορτωθεί µε
αρχικά δεδοµένα.

Εικόνα: Στιγµιότυπο µίας Πανεπιστηµιακής Σχεσιακής Βάσης ∆εδοµένων
Σελ. 25
ΕΝΝΟΙΕΣ ΚΑΙ ΑΡΧΙΤΕΚΤΟΝΙΚΉ ΣΥΣΤΗΜΆΤΩΝ ΒΆΣΕΩΝ ∆Ε∆ΟΜΈΝΩΝ
2.3 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΣΥΣΤΗΜΑΤΩΝ ΒΑΣΕΩΝ ∆Ε∆ΟΜΕΝΩΝ
Η τυποποιηµένη (ANSI/SPARC) αρχιτεκτονική 3-επιπέδων ενός συστήµατος Β∆
παρουσιάζεται στο παρακάτω. ∆ιακρίνονται 3 επίπεδα - "σχήµατα": το εξωτερικό, το
εννοιολογικό και το εσωτερικό/φυσικό, καθώς και οι αντίστοιχες διαπαφές από το ένα
σχήµα στο άλλο και προς τη Β∆. Το Σ∆Β∆ είναι υπεύθυνο για τον ορισµό και την
υλοποίηση όλων των διεπαφών, ιδιότητα πολύ θετική αφού δεν αφήνεται σαν επιπλέον
εργασία στον προγραµµατιστή.
Η αρχιτεκτονική 3-επιπέδων χωρίζεται σε τρία επίπεδα: το εσωτερικό, το
εννοιολογικό, και το εξωτερικό επίπεδο:

Εικόνα. Τα τρία επίπεδα της αρχιτεκτονικής
Το εσωτερικό επίπεδο (internal level) είναι αυτό που βρίσκεται πιο κοντά
στη φυσική αποθήκευση
Το εξωτερικό επίπεδο (external level) είναι αυτό που βρίσκεται πιο
κοντά στους χρήστες (απόψεις µεµονωµένων χρηστών).
Το εννοιολογικό επίπεδο (conceptual level) είναι ένα "ενδιάµεσο
επίπεδο" που συνδέει τα δύο προηγούµενα (κοινοτική άποψη χρηστών).
Εδώ δεν έχει ιδιαίτερη σηµασία αν το σύστηµα που εξετάζουµε είναι σχεσιακό ή
όχι. Είναι όµως χρήσιµο να περιγράψουµε µε συντοµία τον τρόπο µε τον οποίο
υλοποιούνται συνήθως τα τρία επίπεδα της αρχιτεκτονικής σε ένα σχεσιακό σύστηµα:
Σελ. 26
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
ΕΝΝΟΙΕΣ ΚΑΙ ΑΡΧΙΤΕΚΤΟΝΙΚΉ ΣΥΣΤΗΜΆΤΩΝ ΒΆΣΕΩΝ ∆Ε∆ΟΜΈΝΩΝ
ΠΡΟΓΡΑΜΜΑΤΑ
ΠΕΛΑΤΩΝ
ΠΡΟΓΡΑΜΜΑΤΑ
ΠΡΟΜΗΘΕΥΤΩΝ
ΠΡΟΓΡΑΜΜΑΤΑ
ΓΕΝΙΚΗΣ
ΛΟΓΙΣΤΙΚΗΣ
ΠΡΟΓΡΑΜΜΑΤΑ
ΑΠΟΘΗΚΗΣ
ΣΥΣΤΗΜΑ ∆ΙΑΧΕΙΡΙΣΗΣ ΒΑΣΗΣ
∆Ε∆ΟΜΕΝΩΝ
ΓΕΝΙΚΗ
ΛΟΓΙΣΤΙΚΗ
ΠΕΛΑΤΕΣ
ΠΡΟΜΗΘΕΥΤΕΣ
ΑΠΟΘΗΚΗ
ΠΡΟΓΡΑΜΜΑΤΑ
ΠΕΛΑΤΩΝ
ΠΡΟΓΡΑΜΜΑΤΑ
ΠΡΟΜΗΘΕΥΤΩΝ
ΠΡΟΓΡΑΜΜΑΤΑ
ΓΕΝΙΚΗΣ
ΛΟΓΙΣΤΙΚΗΣ
ΠΡΟΓΡΑΜΜΑΤΑ
ΑΠΟΘΗΚΗΣ
ΣΥΣΤΗΜΑ ∆ΙΑΧΕΙΡΙΣΗΣ ΒΑΣΗΣ
∆Ε∆ΟΜΕΝΩΝ
ΓΕΝΙΚΗ
ΛΟΓΙΣΤΙΚΗ
ΠΕΛΑΤΕΣ
ΠΡΟΜΗΘΕΥΤΕΣ
ΑΠΟΘΗΚΗ

Εικόνα: πολλές απόψεις µίας βάσης δεδοµένων
Σύµφωνα µε την ορολογία ANSI/SPARC, η άποψη ενός µεµονωµένου χρήστη
είναι µια εξωτερική άποψη. Μια εξωτερική άποψη είναι, λοιπόν, το περιεχόµενο της
βάσης δεδοµένων όπως το βλέπει κάποιος συγκεκριµένος χρήστης (δηλαδή, γι' αυτόν
το συγκεκριµένο χρήστη, η εξωτερική άποψη είναι η βάση δεδοµένων). Για
παράδειγµα, ένας χρήστης από το Τµήµα Προσωπικού µιας εταιρείας µπορεί να
θεωρεί τη βάση δεδοµένων ως µια συλλογή από παρουσίες εγγραφών τµηµάτων συν
µια συλλογή από παρουσίες εγγραφών υπαλλήλων, και µπορεί να αγνοεί εντελώς τις
παρουσίες εγγραφών προµηθευτών και εξαρτηµάτων που βλέπουν οι χρήστες από το
Τµήµα Προµηθειών της εταιρείας.
2.5 ΤΟ ΕΝΝΟΙΟΛΟΓΙΚΟ ΕΠΙΠΕ∆Ο
Το εννοιολογικό επίπεδο είναι µια αναπαράσταση ολόκληρου του
πληροφοριακού περιεχοµένου της βάσης δεδοµένων, µε µορφή κάπως αφηρηµένη σε
σύγκριση µε τον τρόπο που γίνεται η φυσική αποθήκευση των δεδοµένων (όπως
συµβαίνει και µε µια εξωτερική άποψη). Κατά κανόνα, διαφέρει επίσης πολύ από τον
τρόπο που βλέπει τα δεδοµένα οποιοσδήποτε συγκεκριµένος χρήστης, θα
µπορούσαµε να πούµε ότι η εννοιολογική άποψη είναι µια άποψη των δεδοµένων
"όπως είναι πραγµατικά", και όχι όπως υποχρεώνονται να τα βλέπουν οι χρήστες από
τις δεσµεύσεις, π.χ., της συγκεκριµένης γλώσσας ή του υλικού που χρησιµοποιούν.
Το εννοιολογικό επίπεδο αποτελείται από πολλές παρουσίες του καθενός από
τους διάφορους τύπους εννοιολογικών εγγραφών. Για παράδειγµα, θα µπορούσε να
αποτελείται από µια συλλογή από παρουσίες εγγραφών τµηµάτων, συν µια συλλογή
από παρουσίες εγγραφών υπαλλήλων, συν µια συλλογή από παρουσίες εγγραφών
προµηθευτών, συν µια συλλογή από παρουσίες εγγραφών εξαρτηµάτων, κ.λπ..
Σελ. 28
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
ΕΝΝΟΙΕΣ ΚΑΙ ΑΡΧΙΤΕΚΤΟΝΙΚΉ ΣΥΣΤΗΜΆΤΩΝ ΒΆΣΕΩΝ ∆Ε∆ΟΜΈΝΩΝ
• η δυνατότητα να τροποποιηθεί το εννοιολογικό σχήµα (π.χ. προσθήκη ή
αλλαγή ενός πεδίου) χωρίς να χρειάζεται να αλλάξουµε τα εξωτερικά
σχήµατα ή τα προγράµµατα εφαρµογών.
• οι τροποποιήσεις σε αυτό το επίπεδο γίνονται συνήθως όταν αλλάζει η
λογική δοµή της βάσης δεδοµένων. Οι εξωτερικές απόψεις που
αναφέρονται µόνο στα υπόλοιπα δεδοµένα δεν θα πρέπει να
επηρεάζονται.
• Μόνον ο ορισµός των απόψεων που αναφέρονται στις αλλαγές που
έγιναν και οι απεικονίσεις χρειάζεται να αλλάζουν σ' ένα Σ∆Β∆ που
υποστηρίζει λογική ανεξαρτησία δεδοµένων. Προγράµµατα εφαρµογών
που αναφέρονται στις απόψεις του εξωτερικού σχήµατος πρέπει να
δουλεύουν όπως και πριν, αν γίνει κάποια λογική αναδιοργάνωση του
εννοιολογικού σχήµατος. Αλλαγές στους περιορισµούς µπορεί επίσης να
γίνουν στο εννοιολογικό σχήµα χωρίς να επηρεάζονται τα εξωτερικά
σχήµατα ή τα προγράµµατα εφαρµογών.
Φυσική ανεξαρτησία δεδοµένων
• η δυνατότητα να τροποποιηθεί το φυσικό σχήµα (η φυσική οργάνωση της
βάσης π.χ. µε προσθήκη ενός µονοπατιού προσπέλασης -access path-
που συνήθως ορίζεται σε ένα πεδίο του αρχείου που λέγεται πεδίο
ευρετηριοποίησης -indexing field-) χωρίς να αναγκάσει τα προγράµµατα
εφαρµογών να ξαναγραφούν
• οι τροποποιήσεις σε αυτό το επίπεδο γίνονται συνήθως για να βελτιωθεί η
απόδοση.
• Για παράδειγµα, η κατασκευή ενός µονοπατιού προσπέλασης για τη
βελτίωση της ανάκτησης των εγγραφών διδασκαλίας µε βάση τα πεδία
Εξάµηνο και Έτος δεν θα πρέπει να απαιτεί αλλαγή µιας ερώτησης όπως
"βρες όλες τις διδασκαλίες του χειµερινού εξαµήνου 1998". Η ερώτηση
όµως θα µπορεί να εκτελεστεί πιο γρήγορα από το Σ∆Β∆ µε αξιοποίηση
των νέων µονοπατιών προσπέλασης.
Η λογική ανεξαρτησία δεδοµένων είναι πιο δύσκολο να επιτύχει αφού τα
προγράµµατα εφαρµογών εξαρτώνται από τη λογική δοµή των δεδοµένων. Κάτι
ανάλογο γίνεται και στους αφηρηµένους τύπους δεδοµένων (abstract data types) στις
γλώσσες προγραµµατισµού.
Όποτε έχουµε ένα Σ∆Β∆ πολλών επιπέδων, ο κατάλογος του πρέπει να
επεκταθεί για να συµπεριλάβει πληροφορίες σχετικά µε το πώς απεικονίζονται τα
ερωτήµατα και τα δεδοµένα µεταξύ των διαφόρων επιπέδων. Για να πραγµατοποιήσει
τις απεικονίσεις αυτές το Σ∆Β∆ χρησιµοποιεί επιπλέον λογισµικό το οποίο αναφέρεται
στις πληροφορίες απεικόνισης του καταλόγου. Η ανεξαρτησία δεδοµένων
επιτυγχάνεται διότι όταν το σχήµα σε κάποιο επίπεδο αλλάζει, το σχήµα στο επόµενο
επίπεδο παραµένει αµετάβλητο· το µόνο που αλλάζει είναι η απεικόνιση µεταξύ των
δύο επιπέδων.
Σελ. 30
2.8 Μετα-δεδοµένα
2.8 ΜΕΤΑ-∆Ε∆ΟΜΕΝΑ
Τα µετα-δεδοµένα δηλαδή δηλ. "δεδοµένα για τα δεδοµένα" είναι ειδικές
πληροφορίες για τα δεδοµένα που υπάρχουν στη βάση.
1. Πληροφορίες για το πώς και που αποθηκεύονται τα δεδοµένα
• δοµές αρχείων
• εγγραφές
• ονόµατα των αρχείων, τύποι δεδοµένων
• µορφή (format) των τύπων δεδοµένων
2. Πληροφορίες σχετικά µε την αντιστοιχία µεταξύ των διαφορετικών σχηµάτων
Τα µετα-δεδοµένα αποθηκεύονται, στον αποκαλούµενο, κατάλογο συστήµατος
ή λεξικό δεδοµένων. Οι κατάλογοι σε ένα σχεσιακό σύστηµα αποθηκεύονται και οι ίδιοι
σαν σχέσεις
Τα µετα-δεδοµένα χρησιµοποιούνται από το Σ∆Β∆ (σύστηµα διαχείρισης βάσεων
δεδοµένων) για να απαντήσουν σε ερωτήσεις όπως:
• Ποιες πληροφορίες υπάρχουν στη βάση δεδοµένων;
• Πόσο διαφορετικά είναι τα µέρη της βάσης δεδοµένων;
• Πόσο µεγάλος είναι ο χρόνος απόκρισης για τους διάφορους τύπους
επερωτήσεων;
• Ποιος χρήστης προσπάθησε να σπάσει το σύστηµα ασφάλειας της βάσης
δεδοµένων;
• Απαιτείται βελτιστοποίηση της φυσικής οργάνωσης της βάσης δεδοµένων
σε σχέση µε τους χρόνους απόκρισης ή την αξιοποίηση της µνήµης;
2.9 ΕΥΡΕΤΗΡΙΑ
• Ένα ευρετήριο (index) είναι µια βοηθητική δοµή αρχείου που κάνει πιο
αποδοτική την αναζήτηση µιας εγγραφής σε ένα αρχείο
• Το ευρετήριο καθορίζεται (συνήθως) σε ένα γνώρισµα του αρχείου
• Συχνά αποκαλείται access path (µονοπάτι πρόσβασης) στο γνώρισµα
• Μια καταχώρηση / εγγραφή στο ευρετήριο έχει την µορφή:
Τιµή Πεδίου Ευρετηριοποίσης ∆είκτης στο block της εγγραφής
Το αρχείο ευρετηρίου καταλαµβάνει µικρότερο χώρο από το ίδιο το αρχείο
δεδοµένων (οι καταχωρήσεις είναι µικρότερες και λιγότερες)
Κάνοντας δυαδική αναζήτηση στο ευρετήριο βρίσκουµε τον δείκτη στο block
όπου είναι αποθηκευµένη η εγγραφή που θέλουµε.
Σελ. 31
ΕΝΝΟΙΕΣ ΚΑΙ ΑΡΧΙΤΕΚΤΟΝΙΚΉ ΣΥΣΤΗΜΆΤΩΝ ΒΆΣΕΩΝ ∆Ε∆ΟΜΈΝΩΝ
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
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
ΕΝΝΟΙΕΣ ΚΑΙ ΑΡΧΙΤΕΚΤΟΝΙΚΉ ΣΥΣΤΗΜΆΤΩΝ ΒΆΣΕΩΝ ∆Ε∆ΟΜΈΝΩΝ
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
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
ΜΟΝΤΕΛΟ ΟΝΤΟΤΉΤΩΝ-ΣΥΣΧΕΤΊΣΕΩΝ
3 ΜΟΝΤΕΛΟ ΟΝΤΟΤΗΤΩΝ-ΣΥΣΧΕΤΙΣΕΩΝ
3.1 ΕΙΣΑΓΩΓΗ
Το µοντέλο οντοτήτων-συσχετίσεων (entity-relationship model) προτάθηκε από
τον P.P. Chen το 1976 για να περιγράψει µε γραφικά σύµβολα τα δεδοµένα ως
οντότητες, συσχετίσεις και γνωρίσµατα. Από τότε έχει αποτελέσει το αντικείµενο
εκτεταµένων ερευνών µε αποτέλεσµα τη διαρκή ανάπτυξή του. Σήµερα θεωρείται ένα
από τα πιο σηµαντικά εργαλεία κατασκευής εννοιολογικών µοντέλων βάσεων
δεδοµένων, σε περιβάλλοντα µε ποικίλες απαιτήσεις, και αποτελεί βασική συνιστώσα
µεθοδολογιών ανάπτυξης πληροφοριακών συστηµάτων. Χρησιµοποιείται κατά το
στάδιο του λογικού ή εννοιολογικού σχεδιασµού (conceptual design) της βάσης
δεδοµένων.
Ένα εννοιολογικό µοντέλο δεδοµένων (conceptual data model) αναπαριστά µία
ολοκληρωµένη άποψη για τα δεδοµένα του οργανισµού, για τον οποίο πρόκειται να
κατασκευαστεί η βάση δεδοµένων, και είναι ανεξάρτητο από το λογισµικό διαχείρισης
βάσης δεδοµένων που θα χρησιµοποιηθεί, καθώς και από τις τεχνικές λεπτοµέρειες
υλοποίησης της βάσης δεδοµένων.
Στην ουσία το εννοιολογικό µοντέλο οντοτήτων-συσχετίσεων βασίζεται στην ιδέα
ότι ο πραγµατικός χώρος αποτελείται από οντότητες (ο ΥΠΑΛΛΗΛΟΣ "Μαρία", το
ΤΜΗΜΑ "Λογιστήριο", το ΠΡΟΪΟΝ "Βίδες", το ΜΑΘΗΜΑ "Βάσεις ∆εδοµένων" κοκ.), µε
συγκεκριµένα χαρακτηριστικά (γνωρίσµατα) και από συσχετίσεις µεταξύ των οντοτήτων
αυτών (η "Μαρία" ΕΡΓΑΖΕΤΑΙ στο "Λογιστήριο", η "Ελένη" ΠΡΟΪΣΤΑΤΑΙ της "Μαρίας",
ο "Γιάννης" ∆Ι∆ΑΣΚΕΙ "Βάσεις ∆εδοµένων" κοκ.).
Προφανώς, σε έναν πραγµατικό χώρο υπάρχουν οντότητες µε ταυτόσηµα
γνωρίσµατα (π.χ. ΟΛΟΙ οι εργαζόµενοι, ΟΛΑ τα τµήµατα, ΌΛΑ τα µαθήµατα). Αυτές οι
οντότητες οµαδοποιούνται σε τύπους οντοτήτων (entity sets / types). Αντίστοιχα,
συσχετίσεις ιδίου τύπου οµαδοποιούνται σε τύπους συσχετίσεων (relationship sets /
types).








τύποι οντοτήτων
ΑΠΑΣΧΟΛΕΙΤΑΙ ΕΡΓΑΖΟΜΕΝΟΣ ΕΡΓΟ
Τοποθεσία
Αρ Ταυτ
Όνοµα κωδικός
τύπος Συσχέτισης
γνωρίσµατα
Σελ. 36
3.2 Βασικές έννοιες και συµβολισµοί
Μοντέλο οντοτήτων-συσχετίσεων
• ΟΝΤΟΤΗΤΕΣ (entity): αντικείµενα / έννοιες του φυσικού κόσµου µε ανεξάρτητη
ύπαρξη
• ΤΥΠΟΣ ΟΝΤΟΤΗΤΩΝ (entity type) : ένα σύνολο από οντότητες που έχουν τα
ίδια γνωρίσµατα
• ΓΝΩΡΙΣΜΑΤΑ (attribute): ιδιότητες µιας οντότητας του φυσικού κόσµου, που
παίρνουν τιµές για συγκεκριµένα στιγµιότυπα της οντότητας
• ΤΥΠΟΙ ΓΝΩΡΙΣΜΑΤΩΝ: απλά, σύνθετα, µονότιµα/πλειότιµα, αποθηκευµένα,
παραγόµενα
• ΓΝΩΡΙΣΜΑΤΑ ΚΛΕΙ∆ΙΑ: :γνωρίσµατα µε µοναδικές τιµές
• ΠΕ∆ΙΑ ΟΡΙΣΜΟΥ ΓΝΩΡΙΣΜΑΤΩΝ το σύνολο των τιµών που µπορεί να πάρει
το γνώρισµα
• ΣΥΣΧΕΤΙΣΕΙΣ: Λογικές συνδέσεις µεταξύ δύο ή περισσοτέρων τύπων
οντοτήτων.
3.2 ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΚΑΙ ΣΥΜΒΟΛΙΣΜΟΙ
Στο µοντέλο οντοτήτων-συσχετίσεων χρησιµοποιούνται τρεις βασικές έννοιες:
τύποι οντοτήτων
τύποι συσχετίσεων
γνωρίσµατα
Τύπος Οντότητας (entity type) είναι ένα σύνολο από οντότητες µε τα ίδια
γνωρίσµατα - όπως προϊόντα, αυτοκίνητα, σπίτια, τµήµατα, φοιτητές ή εργαζόµενοι,
τοποθεσίες, έργα ή πανεπιστηµιακά µαθήµατα-, που µπορεί να υπάρχει ανεξάρτητα
και να προσδιορισθεί µονοσήµαντα στη Β∆. Κάθε τύπος οντότητας έχει
συγκεκριµένες ιδιότητες που λέγονται γνωρίσµατα (attributes) και την περιγράφουν.
Για παράδειγµα, µια οντότητα ΥΠΑΛΛΗΛΟΣ που αναπαριστά έναν εργαζόµενο µπορεί
να περιγράφεται από γνωρίσµατα όπως το όνοµα του εργαζοµένου, την ηλικία, τη
διεύθυνση, το µισθό και την εργασία του.
Τύπος Συσχέτισης (relationship type) ονοµάζεται ένα σύνολο από λογικές
συνδέσεις µεταξύ δύο ή περισσοτέρων τύπων οντοτήτων. Ενώ οι τύποι οντοτήτων
έχουν αυτοτελή ύπαρξη, οι τύποι συσχετίσεων ορίζονται µόνο σε συνδυασµό µε
τύπους οντοτήτων. Για παράδειγµα ο τύπος συσχέτισης µεταξύ των τύπων οντοτήτων
"προµηθευτής" και "προϊόν" µπορεί να είναι "προµηθεύει". Οι τύποι Συσχετίσεων
µπορούν να έχουν κι αυτές γνωρίσµατα (attributes), τα οποία είναι ιδιότητες που τις
χαρακτηρίζουν. Για παράδειγµα, η συσχέτιση ΕΡΓΑΖΕΤΑΙ έχει γνώρισµα ηµεροµηνία
(ενδεικτικά, η "Ελένη" ∆ΙΕΥΘΥΝΕΙ το "Λογιστήριο" από τις "20/10/2000"}. Συνήθως τα
γνωρίσµατα των Συσχετίσεων προσδιορίζουν έννοιες όπως: ποιος έκανε την
συσχέτιση, πότε έγινε αυτή, πότε παύει να ισχύει, κλπ.
∆ιαφορετικοί τύποι γνωρισµάτων εµφανίζονται στο µοντέλο ΟΣ: απλά και
σύνθετα, µονότιµα και πλειότιµα, αποθηκευµένα και παραγόµενα.
Σελ. 37
ΜΟΝΤΕΛΟ ΟΝΤΟΤΉΤΩΝ-ΣΥΣΧΕΤΊΣΕΩΝ
Έννοια Άτυπος Ορισµός Παραδείγµατα
ΤΥΠΟΣ ΟΝΤΟΤΗΤΑΣ Ένα σύνολο
διακεκριµένων
αντικειµένων
Προµηθευτής, Εξάρτηµα, Αποστολή
Υπάλληλος, Τµήµα, Πρόσωπο
Σύνδεση, Κονσέρτο
Ορχήστρα, Μαέστρος
Παραγγελία. Γραµµή παραγγελίας
ΓΝΩΡΙΣΜΑ/Ι∆ΙΟΤΗΤΑ Μια πληροφορία που
περιγράφει έναν τύπο
οντότητας
Κωδικός Προµηθευτή
Ποσότητα Αποστολής
Όνοµα υπαλλήλου
∆ιεύθυνση υπαλλήλου
Ηµεροµηνία παραγγελίας
ΤΥΠΟΣ ΣΥΣΧΕΤΙΣΗΣ Ορίζει ένα σύνολο
συνδέσεων δύο ή
περισσότερων τύπων
οντοτήτων
Αποστέλλει (προµηθευτής-εξάρτηµα)
∆ιευθύνει (Υπάλληλος-τµήµα)
Ηχογράφηση (σύνδεση-ορχήστρα –
µαέστρος)
Πίνακας βασικών εννοιολογικών εννοιών (οι δοµές)
Η λογική δοµή µιας βάσης δεδοµένων που έχει οργανωθεί κατά το µοντέλο
Οντοτήτων-Συσχετίσεων µπορεί να αναπαρασταθεί µε το σχεδιασµό ενός
∆ιαγράµµατος Οντοτήτων-Συσχετίσεων (E-R diagram). Σε ένα τέτοιο διάγραµµα
χρησιµοποιούνται γραφικά σύµβολά για την περιγραφή της δοµής της βάσης.
Ένας τύπος οντοτήτων παριστάνεται στα διαγράµµατα ΟΣ ως παραλληλόγραµµο
κουτί που περικλείει το όνοµα του τύπου. Τα ονόµατα των γνωρισµάτων περικλείονται
σε ελλείψεις και συνδέονται µε τον τύπο οντοτήτων τους µε ευθείες γραµµές. Τα σύνθετα
γνωρίσµατα συνδέονται µε τα συστατικά τους γνωρίσµατα επίσης µε ευθείες γραµµές. Τα
πλειότιµα γνωρίσµατα παρουσιάζονται µέσα σε ελλείψεις µε διπλό περίγραµµα.
όνοµα-πελάτη οδός
πόλη
αριθµός-δανείου
ποσό
πελάτης δάνειο δανειζόµενος δανειζόµενος
υπόλοιπο
αριθµός-λογαριασµού
λογαριασµός
όνοµα-
υποκαταστήµατος
πόλη
υποκατάστηµα
ενεργητικό
καταθέτης καταθέτης
λογαριασµός-
υποκαταστήµατος
δάνειο-
υποκαταστήµατος

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







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

Σελ. 39
ΕΡΓΑΖΟΜΕΝΟΣ ΑΥΤΟΚΙΝΗΤΑ


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


Πλειότιµα
Μονότιµα
ΜΟΝΤΕΛΟ ΟΝΤΟΤΉΤΩΝ-ΣΥΣΧΕΤΊΣΕΩΝ

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






Παραγόµενα γνωρίσµατα
Αριθ_Εργαζοµένων
Όνοµα
Ηµ_Γεν
Ηλικία
ΕΡΓΑΖΕΤΑΙ ΤΜΗΜΑ ΕΡΓΑΖΟΜΕΝΟΣ


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






κωδικός
γνωρίσµατα κλειδιά
Τοποθεσία
Αρ Ταυτ
Όνοµα
ΑΠΑΣΧΟΛΕΙΤΑΙ ΕΡΓΟ ΕΡΓΑΖΟΜΕΝΟΣ

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






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







ΗµΓεν
Όνοµα
ασθενής τύπος οντότητας
Φύλλο Αρ Ταυτ
Όνοµα
ΠΡΟΣΤΑΤΕΥΕΙ
ΜΕΛΗ
ΟΙΚΟΓΕΝΕΙΑΣ
ΕΡΓΑΖΟΜΕΝΟΣ

Σύνολα Τιµών (Πεδία ορισµού) των Γνωρισµάτων. Τα σύνολα τιµών δεν
παρουσιάζονται στα διαγράµµατα ΟΣ. Κάθε απλό γνώρισµα ενός τύπου οντοτήτων
συνδέεται βέβαια µε ένα σύνολο τιµών ή πεδίο ορισµού (domain), που
προσδιορίζει τις επιτρεπτές τιµές που µπορεί να πάρει το γνώρισµα αυτό.
Null τιµές. Σε µερικές περιπτώσεις µια συγκεκριµένη οντότητα µπορεί να µην
έχει καµιά δυνατή τιµή για ένα γνώρισµα. Για παράδειγµα, το γνώρισµα
Αριθµος_∆ιαµερισµατος µιας διεύθυνσης υφίσταται µόνον για διευθύνσεις κτιρίων µε
διαµερίσµατα και όχι για άλλους τύπους οικιών όπως οι µονοκατοικίες. Παρόµοια, το
γνώρισµα Πανεπιστηµιακα_Πτυχια αφορά µόνο άτοµα µε πανεπιστηµιακά πτυχία. Για
τέτοιες περιπτώσεις δηµιουργείται µια ειδική τιµή που λέγεται null. Η διεύθυνση µιας
µονοκατοικίας θα είχε την τιµή null για το γνώρισµα Αριθµος_∆ιαµερισµατος και ένα άτοµο
χωρίς πανεπιστηµιακό πτυχίο θα είχε την τιµή null για το γνώρισµα
Πανεπιστηµιακα_Πτυχια.
Σελ. 41
ΜΟΝΤΕΛΟ ΟΝΤΟΤΉΤΩΝ-ΣΥΣΧΕΤΊΣΕΩΝ
3.4 ΤΥΠΟΙ ΣΥΣΧΕΤΙΣΕΩΝ
Ένας τύπος συσχέτισης (relationship type) µεταξύ δύο τύπων οντοτήτων ορίζει
ένα σύνολο συνδέσεων -ή ένα σύνολο συσχετίσεων- µεταξύ αυτών των τύπων
οντοτήτων. Στα διαγράµµατα ΟΣ οι τύποι συσχετίσεων παρουσιάζονται ως ρόµβοι
οι οποίοι συνδέονται µε ευθείες γραµµές µε τα παραλληλόγραµµα που παριστάνουν
τους συµµετέχοντες τύπους οντοτήτων. Το όνοµα µιας συσχέτισης γράφεται µέσα στον
αντίστοιχο ρόµβο.
Π.χ. ο τύπος συσχέτισης ΕΡΓΑΖΕΤΑΙ µεταξύ των δύο τύπων οντοτήτων
ΕΡΓΑΖΟΜΕΝΟΣ και ΤΜΗΜΑ, που συνδέει κάθε εργαζόµενο µε το τµήµα του.





Τύπος Συσχέτισης
ΕΡΓΑΖΕΤΑΙ ΤΜΗΜΑ ΕΡΓΑΖΟΜΕΝΟΣ
Ιδιότητες των ΤΥΠΩΝ ΣΥΣΧΕΤΙΣΕΩΝ
–Περισσότεροι του ενός τύποι συσχετίσεων µπορεί να υπάρχουν µεταξύ των
ιδίων τύπων οντοτήτων (multiple relationships).
π,χ., Εργαζοµενος-Εργαζεται-Τµήµα, Εργαζόµενος-∆ιευθύνει-Τµήµα.
–Μια συσχέτιση µπορεί να συνδέει δύο οντότητες που ανήκουν στον ίδιο τύπο
οντοτήτων (αποκαλείται, ένας αναδροµικός τύπος συσχετίσεων - recursive
relationship type) π.χ., ο ΕΠΙΒΛΕΠΕΙ τύπος συσχετίσεων συνδέει ΕΡΓΑΖΟΜΕΝΟ
(στον ρόλο αυτού που επιβλέπεται) µε κάποιο άλλο ΕΡΓΑΖΟΜΕΝΟ (στον ρόλο του
επιβλέποντα)
.
ΕΡΓΑΖΟΜΕΝΟΣ
ΕΠΙΒΛΕΠΕΙ
1
N
ΠΡΟΣΤΑΤΕΥΕΙ
ΕΞΑΡΤΩΜΕΝΟΣ
1
N
ΕΡΓΑΖΕΤΑΙ ΣΕ
ΑΠΑΣΧΟΛΕΙΤΑΙ
∆ΙΕΥΘΥΝΕΙ
N
1
1
1
M
N
ΤΜΗΜΑ
ΕΡΓΟ
ΕΛΕΓΧΕΙ
1
N
προϊστάµενος υφιστάµενος

Σχήµα : Απλοποιηµένο ∆ιάγραµµα E-R χωρίς τα γνωρίσµατα που συµβολίζει τη Β∆
µιας εταιρίας
Σελ. 42
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
ΜΟΝΤΕΛΟ ΟΝΤΟΤΉΤΩΝ-ΣΥΣΧΕΤΊΣΕΩΝ
3.5.3 Λόγος πληθικότητας (cardinality)
Ο Λόγος πληθικότητας ενός τύπου συσχετίσεων ορίζει πόσες φορές µια
οντότητα από έναν τύπο οντοτήτων µπορεί να εµπλακεί στο συγκεκριµένο τύπο
συσχετίσεων. Έχουµε τις εξής περιπτώσεις:
1:1 : µια οντότητα από τη µια πλευρά συνδέεται το πολύ µε µια οντότητα από την
άλλη πλευρά (συσχέτιση ένα-µε-ένα)
1:Ν : µια οντότητα από την πρώτη πλευρά µπορεί να συνδέεται µε περισσότερες
από µια οντότητες από τη δεύτερη πλευρά Ν ενώ µια οντότητα από τη δεύτερη
πλευρά συνδέεται το πολύ µε µια οντότητα από την πρώτη πλευρά 1 (συσχέτιση
ένα-µε-πολλά). Ακριβώς το ανάποδο ισχύει στο λόγο πληθικότητας Ν:1.
Ν: Μ : µια οντότητα από τη µια πλευρά µπορεί να συνδέεται µε περισσότερες
από µια οντότητες από την άλλη πλευρά. (συσχέτιση πολλά-µε-πολλά)


Σελ. 44
3.5 ∆οµικοί Περιορισµοί στο Μοντέλο E-R.
Οι λόγοι πληθικότητας για τις δυαδικές σχέσεις παρουσιάζονται στα διαγράµµατα
ΟΣ µε χρήση των συµβόλων 1, Μ και Ν στους ρόµβους

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

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




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




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




Μ Ν
ΑΠΑΣΧΟΛΕΊΤΑΙ ΕΡΓΟ ΕΡΓΑΖΟΜΕΝΟΣ
3.5.4 ∆ΟΜΙΚΟΙ ΠΕΡΙΟΡΙΣΜΟΙ: Γνωρίσµατα
Βασικό χαρακτηριστικό ενός τύπου οντοτήτων ή συσχετίσεων είναι τα
γνωρίσµατα κλειδιά ή απλά κλειδιά (keys): Ένα γνώρισµα (ή σύνολο γνωρισµάτων)
που χαρακτηρίζει µοναδικά κάθε οντότητα (αντίστοιχα, συσχέτιση) µέσα στον τύπο
οντοτήτων (συσχετίσεων), δεν επιτρέπει δηλαδή δυο διαφορετικές οντότητες
(συσχετίσεις) µέσα στον ίδιο τύπο να έχουν ίδια τιµή, ονοµάζεται υπερ-κλειδί (super-
key).
Σελ. 45
ΜΟΝΤΕΛΟ ΟΝΤΟΤΉΤΩΝ-ΣΥΣΧΕΤΊΣΕΩΝ
Για παράδειγµα, στον τύπο οντοτήτων ΕΡΓΑΖΟΜΕΝΟΣ το Αρ Ταυτ (Αριθµός
ταυτότητας) του εργαζόµενου είναι υπέρ- κλειδί αφού χαρακτηρίζει µοναδικά την κάθε
οντότητα µέσα στο σύνολο των υπαλλήλων. Αλλά και το {Αρ Ταυτ, Όνοµα} είναι υπερ-
κλειδί αφού δεν µπορεί να υπάρξουν δύο οντότητες (εργαζόµενοι) µε τις ίδιες τιµές σ'
αυτόν τον συνδυασµό γνωρισµάτων, όπως επίσης και τα {Αρ Ταυτ, ΑΦΜ,
Αρ_Ασφάλισης}
Μεταξύ των (πιθανώς πολλών) υπερ-κλειδιών, τα ελάχιστα κλειδιά (αυτά δηλαδή
που κανένα υποσύνολο των γνωρισµάτων τους δεν είναι και αυτό υπερ-κλειδί) είναι
υποψήφια κλειδιά (candidate keys) ή απλά κλειδιά (keys).
Για παράδειγµα, το Αρ Ταυτ είναι υποψήφιο κλειδί αλλά το {Αρ Ταυτ, Όνοµα} δεν
είναι.
Μεταξύ των υποψηφίων κλειδιών, ορίζουµε ένα να είναι το πρωτεύον κλειδί
(primary key) του τύπου οντοτήτων ή συσχετίσεων. Το πρωτεύον κλειδί ορίζεται έτσι
ως προσδιοριστής ή αναγνωριστικό (identifier) για τον συγκεκριµένο τύπο οντοτήτων ή
συσχετίσεων. Στο παράδειγµα µας, το Αρ Ταυτ είναι µια καλή επιλογή πρωτεύοντος
κλειδιού για τον τύπο οντοτήτων ΕΡΓΑΖΟΜΕΝΟΣ.
Κάθε γνώρισµα κλειδί θα φαίνεται υπογραµµισµένο στο ∆ιάγραµµα Ο-Σ







Ορισµοί: ένα γνώρισµα (ή σύνολο γνωρισµάτων) ενός τύπου
οντοτήτων/συσχετίσεων για το οποίο κάθε οντότητα/συσχέτιση στο σύνολο πρέπει να
έχει µοναδική τιµή ονοµάζεται υπερ-κλειδί (super-key). Ένα ελάχιστο υπερ-κλειδί
(σύνολο γνωρισµάτων) που µπορεί να χαρακτηρίσει µοναδικά τις εγγραφές ονοµάζεται
υποψήφιο κλειδί (candidate key). Μεταξύ των κλειδιών ορίζουµε ένα ως τον
προσδιοριστή του τύπου οντοτήτων και το ονοµάζουµε πρωτεύον κλειδί (primary key)
ΑΠΑΣΧΟΛΕΙΤΑΙ ΕΡΓΑΖΟΜΕΝΟΣ ΕΡΓΟ
Τοποθεσία
Αρ Ταυτ
κωδικός
Όνοµα
γνωρίσµατα κλειδιά
3.6 ΓΝΩΡΙΣΜΑΤΑ ΤΥΠΩΝ ΣΥΣΧΕΤΙΣΕΩΝ
Οι τύποι συσχετίσεων µπορεί επίσης να έχουν γνωρίσµατα παρόµοια µε αυτά
των τύπων οντοτήτων. Για παράδειγµα, για να καταγράψουµε τις εβδοµαδιαίες ώρες
απασχόλησης ενός εργαζοµένου σ' ένα έργο µπορούµε να περιλάβουµε ένα γνώρισµα
Ωρες στον τύπο συσχέτισης ΑΠΑΣΧΟΛΕΙΤΑΙ. Ένα άλλο παράδειγµα είναι να
συµπεριλάβουµε την ηµεροµηνία κατά την οποία ένας διευθυντής άρχισε να διευθύνει
ένα τµήµα µέσω ενός γνωρίσµατος ΗµερΕναρ για τον τύπο συσχέτισης ∆ΙΕΥΘΥΝΕΙ.
Τα γνωρίσµατα των 1:1 ή 1:Ν τύπων συσχετίσεων µπορούν να µεταφερθούν σε
έναν από τους συµµετέχοντες τύπους οντοτήτων. Για παράδειγµα, το γνώρισµα
Σελ. 46
3.7 Μη ισχυροί τύποι οντοτήτων
ΗµερΕναρ για τη συσχέτιση ∆ΙΕΥΘΥΝΕΙ µπορεί να γίνει γνώρισµα είτε του
ΕΡΓΑΖΟΜΕΝΟΣ είτε του ΤΜΗΜΑ (εδώ θα γίνει γνώρισµα στο ΤΜΗΜΑ λόγο ολικής
συµµετοχής). Αυτό συµβαίνει διότι η ∆ΙΕΥΘΥΝΕΙ είναι µια 1:1 συσχέτιση, οπότε κάθε
οντότητα τµήµατος ή εργαζοµένου συµµετέχει το πολύ σε ένα στιγµιότυπο της
συσχέτισης.
Για έναν τύπο συσχέτισης 1:Ν, ένα γνώρισµα της συσχέτισης µπορεί να
µεταφερθεί µόνο στον τύπο οντοτήτων που συµµετέχει στη συσχέτιση από την πλευρά
του Ν. Για παράδειγµα, αν η συσχέτιση ΕΡΓΑΖΕΤΑΙ έχει και αυτή ένα γνώρισµα
ΗµερΕναρ που δηλώνει πότε ένας εργαζόµενος άρχισε να εργάζεται σ' ένα τµήµα,
αυτό το γνώρισµα µπορεί να µεταφερθεί στον τύπο οντοτήτων ΕΡΓΑΖΟΜΕΝΟΣ.
Αυτό συµβαίνει διότι η συσχέτιση είναι 1:Ν, εποµένως κάθε οντότητα εργαζόµενου
συµµετέχει το πολύ σε ένα στιγµιότυπο της συσχέτισης ΕΡΓΑΖΕΤΑΙ.
Για τους Μ:Ν τύπους συσχετίσεων, µερικά γνωρίσµατα µπορεί να προσδιορίζονται
από συνδυασµό των οντοτήτων που συµµετέχουν σ' ένα στιγµιότυπο της συσχέτισης
και όχι από µια οποιαδήποτε από τις οντότητες αυτές. Τέτοια γνωρίσµατα πρέπει να
ορίζονται ως γνωρίσµατα συσχέτισης. Ένα παράδειγµα είναι το γνώρισµα Ωρες της
Μ:Ν συσχέτισης ΑΠΑΣΧΟΛΕΙΤΑΙ, όπου ο αριθµός των ωρών που ένας εργαζόµενος
απασχολείται σ' ένα έργο προσδιορίζεται από τον συνδυασµό εργαζοµένου-έργου και
όχι ξεχωριστά από οποιαδήποτε από τις δύο οντότητες.
3.7 ΜΗ ΙΣΧΥΡΟΙ ΤΥΠΟΙ ΟΝΤΟΤΗΤΩΝ
Οι τύποι οντοτήτων που δεν έχουν γνωρίσµατα-κλειδιά από µόνοι τους λέγονται µη
ισχυροί ή ασθενής τύποι οντοτήτων (weak entity types).

ΕΡΓΑΖΟΜΕΝΟΣ
ΜΕΛΗ
ΟΙΚΟΓΕΝΕΙΑΣ
ΠΡΟΣΤΑΤΕΥΕΙ
Όνοµα
Αρ Ταυτ Φύλλο
ασθενής τύπος οντότητας
Όνοµα
ΗµΓεν





Σε αντίθεση, οι κανονικοί τύποι οντοτήτων που έχουν ένα γνώρισµα κλειδί
ονοµάζονται ισχυροί τύποι οντοτήτων. Οι οντότητες (π.χ. τα µέλη οικογένειας κάθε
εργαζοµένου) που ανήκουν σε κάποιον µη ισχυρό τύπο οντοτήτων προσδιορίζονται
από τη σχέση τους µε συγκεκριµένες οντότητες (π.χ. οι εργαζόµενοι) από έναν άλλο
τύπο οντοτήτων, σε συνδυασµό µε τις τιµές κάποιων γνωρισµάτων τους. Ονοµάζουµε
αυτόν τον άλλο τύπο οντοτήτων προσδιορίζοντα ή ιδιοκτήτη τύπο οντότητας
(owner entity type) και τον τύπο συσχέτισης που συνδέει ένα µη ισχυρό τύπο οντοτήτων
µε τον ιδιοκτήτη του προσδιορίζουσα συσχέτιση (identifying relationship).
Ένας µη ισχυρός τύπος οντοτήτων έχει πάντα περιορισµό ολικής συµµετοχής
(εξάρτηση ύπαρξης) ως προς την προσδιορίζουσα του συσχέτιση, διότι µια µη ισχυρή
οντότητα δεν µπορεί να προσδιοριστεί χωρίς µια οντότητα-ιδιοκτήτη. Για παράδειγµα, µια
οντότητα του τύπου Α∆ΕΙΑ_Ο∆ΗΓΗΣΗΣ δεν µπορεί να υπάρξει αν δεν σχετίζεται µε µια
οντότητα του τύπου ΑΤΟΜΟ, αν και έχει το δικό της κλειδί (Αρ_Αδειας_Οδηγησης) και
εποµένως δεν είναι µη ισχυρή οντότητα.
Σελ. 47
ΜΟΝΤΕΛΟ ΟΝΤΟΤΉΤΩΝ-ΣΥΣΧΕΤΊΣΕΩΝ
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
3.8 ΕΙ∆ΙΚΑ ΘΕΜΑΤΑ ΣΤΟ ΜΟΝΤΕΛΟ E-R
ΤΥΠΟΣ ΟΝΤΟΤΗΤΩΝ


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


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


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


ΓΝΩΡΙΣΜΑ


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

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



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


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

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


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

Εικόνα Σύνοψη του συµβολισµού των διαγραµµάτων Οντοτήτων-Συσχετίσεων
Σελ. 49
ΣΧΕΣΙΑΚΕΣ ΒΆΣΕΙΣ ∆Ε∆ΟΜΈΝΩΝ
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
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
ΣΧΕΣΙΑΚΟ ΜΟΝΤΈΛΟ
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
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
ΣΧΕΣΙΑΚΟ ΜΟΝΤΈΛΟ
and 10" κλπ). Αυτοί είναι κυρίως περιορισµοί πάνω στους βασικούς τύπους
δεδοµένων (data types), char, number, date κλπ.
2. Περιορισµοί οριζόµενοι από τον χρήστη (user-defined) ή
Σηµασιολογικής Ακεραιότητας: Κάθε περιορισµός, πέραν αυτών που έχουν
ήδη αναφερθεί. Για την υποστήριξη επιχειρηµατικών κανόνων, απαιτούνται
τέτοιοι περιορισµοί µε σηµαντική πολυπλοκότητα. Π.χ. ο µισθός ενός
εργαζόµενου δεν µπορεί να υπερβαίνει τον µισθό του προϊσταµένου του. Μια
σειρά µηχανισµών χρησιµοποιούνται για την υποστήριξη τέτοιων κανόνων σε
ένα σχεσιακό σύστηµα, όπως σκανδάλες (triggers) ή βεβαιώσεις (assertions)
κλπ.
• Πράξεις
Το κύριο στοιχείο αυτού του µέρους του σχεσιακού µοντέλου είναι η σχεσιακή
άλγεβρα (relational algebra), που ουσιαστικά αποτελείται από µια συλλογή τελεστών,
όπως ο τελεστής σύζευξης JOIN, οι οποίοι δέχονται τελεστέους που είναι σχέσεις και
επιστρέφουν αποτελέσµατα που είναι επίσης σχέσεις:
• Οι παραδοσιακές πράξεις των συνόλων, ένωση, τοµή, διαφορά, και καρτεσιανό
γινόµενο (όλες κάπως τροποποιηµένες ώστε να λαµβάνεται υπόψη το γεγονός
ότι οι τελεστέοι τους είναι σχέσεις και όχι τυχαία σύνολα).
• Οι ειδικές σχεσιακές πράξεις περιορισµός (restrict), προβολή (project), σύζευξη
(join), και διαίρεση (divide).
Πέρα από τις βασικές πράξεις περιλαµβάνονται και δυναµικά χαρακτηριστικά
επιπλέον πράξεων. Ένα παράδειγµα είναι η ορισµένη από το χρήστη πράξη είναι η
"ΥΠΟΛΟΓΙΣΕ_ΤΟ_ΜΕΣΟ_ΟΡΟ". Από την άλλη µεριά, γενικές πράξεις για εισαγωγή,
διαγραφή, τροποποίηση ή ανάκτηση ενός αντικειµένου συχνά περιλαµβάνονται στις
βασικές πράξεις ενός µοντέλου δεδοµένων.
Λογαριασµός
Υποκατάστηµα
Πελάτης
Καταθέτης
∆άνειο
Όνοµα-Υποκαταστήµατος Αριθµός-Λογαριασµού Υπόλοιπο Όνοµα-Υποκαταστήµατος Αριθµός-Λογαριασµού Υπόλοιπο
Όνοµα-Πελάτη Αριθµός-Λογαριασµού Όνοµα-Πελάτη Αριθµός-Λογαριασµού
Όνοµα-Πελάτη Οδός Πόλη Όνοµα-Πελάτη Οδός Πόλη
Όνοµα-Υποκαταστήµατος Πόλη Ενεργητικό
Όνοµα-Πελάτη Αριθµός-∆ανείου Όνοµα-Πελάτη Αριθµός-∆ανείου
Όνοµα-Υποκαταστήµατος Αριθµός-∆ανείου Ποσό
∆ανειζόµενος

Εικόνα. Ένα παράδειγµα µοντελοποίησης τραπεζικού συστήµατος µε το
σχεσιακό µοντέλο
Σελ. 54
5.2 Ορολογία του σχεσιακού µοντέλου
5.2 ΟΡΟΛΟΓΙΑ ΤΟΥ ΣΧΕΣΙΑΚΟΥ ΜΟΝΤΕΛΟΥ
Το σχεσιακό µοντέλο (για τον λογικό σχεδιασµό) χωρίζεται σε τρία µέρη που
αφορούν τις δοµές (structure) των δεδοµένων (οι πίνακες), την ακεραιότητα
(integrity) των δεδοµένων (δοµικοί περιορισµοί), και το χειρισµό των δεδοµένων
(Πράξεις πάνω στις δοµές). Και τα τρία µέρη έχουν δική τους ειδική ορολογία. Οι
σηµαντικότεροι από τους όρους που χρησιµοποιούνται σε σχέση µε τα "αντικείµενα
του σχεσιακού µοντέλου παρουσιάζονται παρακάτω. Οι όροι αυτοί είναι φυσικά η ίδια
η σχέση, η συστοιχία, η πληθικότητα, το γνώρισµα, ο βαθµός, το πεδίο ορισµού, και το
πρωτεύον κλειδί. Από αυτούς, τουλάχιστον οι όροι σχέση και πρωτεύον κλειδί θα
πρέπει να σας είναι ήδη σχετικά οικείοι, θα εξηγήσουµε όλους αυτούς τους όρους
πολύ άτυπα παρακάτω:
• Μια σχέση (relation) αντιστοιχεί σε έναν κανονικοποιηµένο πίνακα.
• Μια συστοιχία ή πλειάδα (tuple) αντιστοιχεί σε µία γραµµή ενός τέτοιου πίνακα,
και ένα γνώρισµα (attribute) αντιστοιχεί σε µία στήλη. Το πλήθος των συστοιχιών
ονοµάζεται πληθικότητα (cardinality) και το πλήθος των γνωρισµάτων
ονοµάζεται βαθµός (degree).
• Το πρωτεύον κλειδί (primary key) είναι ένα µοναδικό αναγνωριστικό για τον
πίνακα — δηλαδή, µια στήλη ή συνδυασµός στηλών που έχει την ιδιότητα ότι
οποιαδήποτε δεδοµένη στιγµή δεν υπάρχουν δύο γραµµές του πίνακα που να
περιέχουν την ίδια τιµή σε αυτή τη στήλη ή συνδυασµό στηλών.
• Τέλος, ένα πεδίο ορισµού (domain) είναι µια δεξαµενή τιµών από την οποία τα
συγκεκριµένα γνωρίσµατα των συγκεκριµένων σχέσεων αντλούν τις
συγκεκριµένες τιµές τους.

Σέρρες Ερµού 24 Βλάχου
Βόλος Ροζού 7 Αρµένης
Λάρισα Γαλλίας 47 Ευσταθίου
Αθήνα Όλγας 25 Κυριάκου
πόλη διεύθυνση όνοµα-πελάτη
Σέρρες Ερµού 24 Βλάχου
Βόλος Ροζού 7 Αρµένης
Λάρισα Γαλλίας 47 Ευσταθίου
Αθήνα Όλγας 25 Κυριάκου
πόλη διεύθυνση όνοµα-πελάτη
Γνωρίσµατα Γνωρίσµατα
Συστοιχίες ή Συστοιχίες ή
πλειάδες πλειάδες
Πληθικότητα Πληθικότητα
Βαθµός Βαθµός
Σχέση Σχέση
Πρωτεύον κλειδί Πρωτεύον κλειδί

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

Βέβαια οι "ισοδυναµίες" αυτές είναι όλες προσεγγιστικές, επειδή οι τυπικοί
σχεσιακοί όροι στα αριστερά έχουν ακριβείς ορισµούς ενώ οι άτυποι "ισοδύναµοι" όροι
στα δεξιά έχουν µόνο εµπειρικούς ορισµούς.
5.3 ΦΟΡΜΑΛΙΣΜΟΣ ΤΟΥ ΣΧΕΣΙΑΚΟΥ ΜΟΝΤΕΛΟΥ
Ακολουθεί ο απαραίτητος φορµαλισµός του Σχεσιακού Μοντέλου:
Ένα Σχεσιακό Σχήµα R είναι το όνοµα και τα γνωρίσµατα σε µια Σχέση, µαζί µε
τα αντίστοιχα πεδία τιµών για τα γνωρίσµατα. Όταν είναι προφανές, τα πεδία
τιµών παραλείπονται. Ένα Σχεσιακό Σχήµα συµβολίζεται µε R(A
1
,A
2
, ... A
n
).
Ένα Σχήµα Βάσης ∆εδοµένων S είναι ένα σύνολο Σχέσεων R
1
, R
2
, …,R
m
..
Ένα Σχήµα Βάσης ∆εδοµένων συµβολίζεται µε S ={R
1
, R
2
, …,R
m
}.
Μια συστοιχία ή πλειάδα (tuple) t µιας Σχέσης R(A
1
,A
2
, ... A
n
). είναι µια
(διατεταγµένη) λίστα τιµών t = <v
1
, v
2
, ... v
n
>,όπου κάθε τιµή v, είναι ένα
στοιχείο του πεδίου τιµών D(A
i
).
Ένα στιγµιότυπο σχέσης (relation instance) ή πιο απλά µια σχέση (relation)
r(R) σε δεδοµένη στιγµή είναι ένα σύνολο πλειάδων r(R) = { t
1
,t
2
, ... t
k
}.
Η πληθικότητα (cardinality) της R. είναι ο αριθµός των πλειάδων στην r(R) και
συµβολίζεται µε CARD
R
.

Οι πράξεις στο Σχεσιακό Μοντέλο είναι δύο ειδών: (α) ενηµερώσεις και (β)
ανακτήσεις. Στις ενηµερώσεις, διακρίνουµε τρεις πράξεις:
εισαγωγή συστοιχίας (insert), διαγραφή συστοιχίας (delete) και τροποποίηση
συστοιχίας (modify). Από την άλλη πλευρά, οι ανακτήσεις αποτελούν αναζητήσεις
µέσα στη Β∆ µε κατάλληλες επερωτήσεις (queries) που διατυπώνει ο χρήστης.
Σηµαντική παρατήρηση αποτελεί το γεγονός ότι το σύνολο των πράξεων στο
Σχεσιακό Μοντέλο είναι κλειστό, δηλαδή οι πράξεις ορίζονται πάνω σε Σχέσεις και
έχουν αποτέλεσµα νέες Σχέσεις.
Σελ. 56
5.4 Πεδία ορισµού
Μεταξύ Μοντέλου Οντοτήτων-Συσχετίσεων (E-R) και Σχεσιακού Μοντέλου
υπάρχουν οι εξής σαφείς αντιστοιχίες:
Μοντέλο E-R…………………Σχεσιακό Μοντέλο
Τύπος Οντοτήτων…………………Σχέση
Οντότητα…………………………...Συστοιχία ή Πλειάδα
Γνώρισµα…………………………..Γνώρισµα
Τύπος Συσχετίσεων……………….ή Σχέση ή ξένο κλειδί
5.4 ΠΕ∆ΙΑ ΟΡΙΣΜΟΥ
Οι βαθµωτές τιµές είναι "η µικρότερη εννοιολογική µονάδα δεδοµένων", µε την
έννοια ότι είναι ατοµικές τιµές. ∆εν έχουν εσωτερική δοµή (δηλαδή δεν είναι άλλες
σχέσεις).
Πεδίο ορισµού (domain) D είναι ένα σύνολο από ατοµικές τιµές, που είναι όλες
του ίδιου τύπου. Τα πεδία ορισµού είναι δεξαµενές τιµών από τις οποίες αντλούνται οι
πραγµατικές τιµές των γνωρισµάτων. Το κάθε γνώρισµα πρέπει να ορίζεται "µε βάση"
ένα και µόνο ένα πεδίο ορισµού, που σηµαίνει ότι οι τιµές αυτού του γνωρίσµατος
πρέπει να προέρχονται από αυτό το πεδίο ορισµού.
Μια κοινή πρακτική για τον προσδιορισµό ενός πεδίου ορισµού είναι να
προσδιοριστεί ένας τύπος δεδοµένων από τον οποίο επιλέγονται οι τιµές δεδοµένων
που σχηµατίζουν το πεδίο
Ένας τύπος δεδοµένων (data type) ή µορφοποίηση (format) προσδιορίζεται
επίσης για κάθε πεδίο ορισµού. Για παράδειγµα, ο τύπος δεδοµένων για το πεδίο
ορισµού Αριθµοί_τηλεφώνων µπορεί να οριστεί ως µια συµβολοσειρά της µορφής
(ddd)ddd-dddd, όπου κάθε d είναι ένα αριθµητικό (δεκαδικό) ψηφίο και τα τρία πρώτα
ψηφία σχηµατίζουν έναν έγκυρο κωδικό τηλεφώνου περιοχής. Ο τύπος δεδοµένων για
το Ηλικίες_εργαζοµένων είναι ένας ακέραιος µεταξύ 15 και 80. Για τα ονόµατα
Ακαδηµαϊκών_τµηµάτων, ο τύπος δεδοµένων είναι το σύνολο όλων των
συµβολοσειρών που παριστάνουν έγκυρα ονόµατα.
5.5 ΣΧΕΣΕΙΣ ΚΑΙ ΤΙΜΕΣ ΣΧΕΣΕΩΝ
Ας δούµε λοιπόν τον ορισµό του όρου σχέση (πίνακας):
• Μια σχέση R που ορίζεται πάνω σε µια συλλογή πεδίων ορισµού D
1
,D
2
, ...
D
n
αποτελείται από δύο µέρη: την επικεφαλίδα και τον κορµό. (Στην αναπαράσταση
µιας σχέσης µε στήλες, η επικεφαλίδα είναι η γραµµή µε τις επικεφαλίδες των στηλών
και ο κορµός είναι το σύνολο των γραµµών δεδοµένων.) Ειδικότερα:
1. Η επικεφαλίδα αποτελείται από ένα σταθερό σύνολο γνωρισµάτων ή, για
την ακρίβεια, ζευγών < όνοµα-γνωρίσµατος:όνοµα-πεδίου-ορισµού >
{ <A
1
: D
1
> , <A
2
: D
2
>, ... <A
n
: D
n
>}
έτσι ώστε το κάθε γνώρισµα A
i
να αντιστοιχεί ακριβώς στο υποκείµενο πεδίο
ορισµού D
i
.
Σελ. 57
ΣΧΕΣΙΑΚΟ ΜΟΝΤΈΛΟ
2. Ο κορµός αποτελείται από ένα σύνολο συστοιχιών (tuples).
Είναι αναµφίβολα µεγάλο πλεονέκτηµα του σχεσιακού µοντέλου ότι το βασικό
του αφηρηµένο αντικείµενο (δηλαδή η σχέση) έχει µια τόσο απλή αναπαράσταση στο
χαρτί (πίνακας). Αυτή η απλή αναπαράσταση είναι που κάνει τα σχεσιακά συστήµατα
εύχρηστα και ευνόητα και διευκολύνει τη λογική σκέψη σχετικά µε τον τρόπο που
συµπεριφέρονται αυτά.
5.6 Ι∆ΙΟΤΗΤΕΣ ΤΩΝ ΣΧΕΣΕΩΝ
Οι σχέσεις έχουν ορισµένες ιδιότητες, που είναι όλες άµεσες συνέπειες του
ορισµού της σχέσης, και είναι όλες πολύ σηµαντικές:
• ∆εν υπάρχουν επαναλαµβανόµενες συστοιχίες.
• Οι συστοιχίες δεν είναι διατεταγµένες από επάνω προς τα κάτω.
• Τα γνωρίσµατα δεν είναι διατεταγµένα από τα αριστερά προς τα δεξιά.
• Όλες οι τιµές των γνωρισµάτων είναι ατοµικές.
1. ∆εν υπάρχουν επαναλαµβανόµενες συστοιχίες
Αυτή η ιδιότητα προκύπτει από το γεγονός ότι ο κορµός της σχέσης είναι ένα
µαθηµατικό σύνολο (από συστοιχίες), και τα σύνολα στα µαθηµατικά εξ ορισµού δεν
περιέχουν επαναλαµβανόµενα στοιχεία.
Μια σηµαντική συνέπεια του γεγονότος ότι δεν υπάρχουν επαναλαµβανόµενες
συστοιχίες είναι ότι υπάρχει πάντα ένα πρωτεύον κλειδί.
2. Οι συστοιχίες δεν έχουν διάταξη (από επάνω προς τα κάτω)
Αυτή η ιδιότητα προκύπτει επίσης από το γεγονός ότι ο κορµός της σχέσης είναι
ένα µαθηµατικό σύνολο, και τα σύνολα στα µαθηµατικά δεν έχουν διάταξη. Για
παράδειγµα, οι συστοιχίες µιας σχέσης θα µπορούσαν άνετα να εµφανίζονται µε την
αντίστροφη σειρά — πάλι θα ήταν η ίδια σχέση. Έτσι, δεν υπάρχει "πέµπτη συστοιχία"
ή "97η συστοιχία" ή "πρώτη συστοιχία" µιας σχέσης, ούτε "επόµενη συστοιχία" µε
άλλα λόγια, δεν υπάρχει η έννοια της προσπέλασης µε βάση τη θέση.
3. Τα γνωρίσµατα δεν έχουν διάταξη (από τα αριστερά προς τα δεξιά)
Αυτή η ιδιότητα προκύπτει από το γεγονός ότι η επικεφαλίδα µιας σχέσης
ορίζεται επίσης ως ένα σύνολο (γνωρισµάτων). Για παράδειγµα, τα γνωρίσµατα µιας
σχέσης θα µπορούσαν να εµφανίζονται µε άλλη σειρά, π.χ. ΚωδΠελάτη, Όνοµα,
Επίθετο, Τηλ. — θα ήταν πάλι η ίδια σχέση, τουλάχιστον όσον αφορά το σχεσιακό
µοντέλο. Έτσι, δεν υπάρχει "πρώτο γνώρισµα" ή "δεύτερο γνώρισµα" (κ.λπ.), ούτε
"επόµενο γνώρισµα" µε άλλα λόγια, γίνεται πάντα αναφορά στα γνωρίσµατα µε το
όνοµα τους και ποτέ µε τη θέση τους.
4. Όλες οι τιµές των γνωρισµάτων είναι ατοµικές
Αυτή η τελευταία ιδιότητα είναι, βέβαια, συνέπεια του ότι όλα τα υποκείµενα
πεδία ορισµού περιέχουν µόνο ατοµικές τιµές (δεν είναι άλλες σχέσεις). Μπορούµε να
διατυπώσουµε την ιδιότητα διαφορετικά (µε όχι τυπικά αυστηρό τρόπο): σε κάθε θέση
Σελ. 58
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
ΣΧΕΣΙΑΚΟ ΜΟΝΤΈΛΟ
5.8 ∆ΟΜΙΚΟΙ ΠΕΡΙΟΡΙΣΜΟΙ ΣΤΟ ΣΧΕΣΙΑΚΟ ΜΟΝΤΕΛΟ
Μία βάση δεδοµένων πρέπει να "αντανακλά την πραγµατικότητα" — δηλαδή,
πρέπει να είναι ένα µοντέλο ή µια αναπαράσταση κάποιου συγκεκριµένου τµήµατος
του πραγµατικού κόσµου. Έτσι η βάση δεδοµένων χρειάζεται να συµπεριλάβει
ορισµένους κανόνες ακεραιότητας που έχουν σκοπό να πληροφορούν το DBMS για
κάποιους περιορισµούς.
Οποιοσδήποτε δεδοµένος κανόνας ακεραιότητας µπορεί να είναι ειδικός για τη
βάση δεδοµένων, µε την έννοια ότι ισχύει µόνο για µία συγκεκριµένη βάση
δεδοµένων. Όµως, εκτός από την υποστήριξη που παρέχει το σχεσιακό µοντέλο για
κανόνες ειδικούς (ρητοί περιορισµοί) για τη βάση δεδοµένων, περιλαµβάνει επίσης
γενικούς κανόνες ακεραιότητας (έµφυτοι περιορισµοί)— δηλαδή, περιορισµούς που
αφορούν την ακεραιότητα κάθε βάσης δεδοµένων.
Στο Σχεσιακό Μοντέλο λοιπόν υπάρχουν έµφυτοι και ρητοί περιορισµοί: Οι
έµφυτοι περιορισµοί αφορούν
1. τους περιορισµούς των κλειδιών,
2. την ακεραιότητα οντότητας και
3. την αναφορική ακεραιότητα.
Ας τους δούµε παρακάτω αναλυτικά:
5.8.1 Περιορισµοί Κλειδιών
Τα διαφορετικά είδη κλειδιών, όπως ορίστηκαν στο Μοντέλο E-R, ισχύουν και
στο Σχεσιακό Μοντέλο. Το σχεσιακό µοντέλο κατά παράδοση απαιτεί να επιλεχθεί
ακριβώς ένα πρωτεύον κλειδί (primary key) για κάθε βασική σχέση.
Φορµαλισµός. Ένα σύνολο γνωρισµάτων SK σχέσης R για το οποίο κάθε
πλειάδα σε στιγµιότυπο r(R) πρέπει να έχει µοναδιαία τιµή είναι ένα υπερ-κλειδί
(super-key). ∆ηλαδή, για διαφορετικές πλειάδες t
1
και t
2
, ισχύει ότι t
1
[SK] ≠ t
2
[SK]. Ένα
υποψήφιο κλειδί (candidate key) είναι ένα ελάχιστο υπερ-κλειδί (δηλαδή, δεν
υπάρχει υποσύνολο του Κ που να είναι και αυτό υπερ-κλειδί). Ένα πρωτεύον κλειδί
(primary key) PK, είναι ένα από τα υποψήφια κλειδιά που αποφασίζεται να παίξει το
ρόλο του προσδιοριστή (αναγνωριστικού) για τις πλειάδες της σχέσης. Στον ορισµό
του σχήµατος σχέσης R το κύριο κλειδί υπογραµµίζεται.
Για παράδειγµα στη σχέση Υποκατάστηµα
Υποκατάστηµα (Όνοµα_Υποκαταστήµατος, Πόλη, Ενεργητικό)
• το γνώρισµα {Όνοµα_Υποκαταστήµατος} είναι υπερ-κλειδί
• τα γνωρίσµατα {Όνοµα_Υποκαταστήµατος, Πόλη} είναι υπερ-κλειδί
• τα γνωρίσµατα {Όνοµα_Υποκαταστήµατος, Πόλη} δεν είναι υποψήφιο
κλειδί, καθώς εµπεριέχει ένα υπερ-κλειδί το {Όνοµα_Υποκαταστήµατος}
• τα γνωρίσµατα {Όνοµα_Υποκαταστήµατος, Πόλη} είναι ένα υποψήφιο
κλειδί
Σελ. 60
5.8 ∆ΟΜΙΚΟΙ ΠΕΡΙΟΡΙΣΜΟΙ ΣΤΟ ΣΧΕΣΙΑΚΟ ΜΟΝΤΕΛΟ
• το γνώρισµα {Πόλη} δεν είναι υπερ-κλειδί, καθώς πολλά
υποκαταστήµατα µπορεί να είναι στην ίδια πόλη
• Άρα θα χρησιµοποιήσουµε το {Όνοµα_Υποκαταστήµατος} σαν πρωτεύον
κλειδί για τη σχέση Υποκατάστηµα.
Σηµειώστε ότι κάθε σχέση έχει τουλάχιστον ένα υποψήφιο κλειδί, επειδή οι
σχέσεις δεν περιέχουν επαναλαµβανόµενες συστοιχίες. ∆ηλαδή, επειδή οι συστοιχίες
είναι µοναδικές, συνεπάγεται ότι τουλάχιστον ο συνδυασµός όλων των γνωρισµάτων
της σχέσης έχει την ιδιότητα της µοναδικότητας' εποµένως, ισχύει ένα από τα δύο.
5.8.2 Κανόνες ξένων κλειδιών - ακεραιότητα αναφορών
Αυτός ο δοµικός περιορισµός εµπλέκει δύο σχέσεις και χρησιµοποιείται για να
καταγράψει τη συνέπεια σε µια συσχέτιση µεταξύ πλειάδων των δύο σχέσεων. Η
πλέον συνήθης µορφή είναι αυτή των ξένων κλειδιών.
Φορµαλισµός Ένα ξένο κλειδί (foreign key) FK, είναι ένα σύνολο
γνωρισµάτων σε µια σχέση R
1
που αποτελεί πρωτεύον κλειδί ΡΚ σε µια άλλη σχέση
R
2
οπότε πλειάδες της R
1
θεωρούµε ότι αναφέρονται σε αντίστοιχες πλειάδες της R
2
.
(Μια πλειάδα t
1
στην r(R
1
) λέγεται ότι αναφέρεται σε µια άλλη πλειάδα t
2
στην r(R
2
),
εάν ισχύει ότι t
1
[FK] = t
2
[PK])
Μερικές παρατηρήσεις για τα Ξένα κλειδιά:
1. Εξ ορισµού, κάθε τιµή ενός δεδοµένου ξένου κλειδιού σε µια σχέση είναι
απαραίτητο να εµφανίζεται ως τιµή του αντίστοιχου πρωτεύοντος κλειδιού της άλλης
σχέσης. Σηµειώστε όµως ότι το αντίστροφο δεν είναι απαραίτητο.
2. Ένα δεδοµένο ξένο κλειδί θα είναι σύνθετο — δηλαδή θα αποτελείται από
περισσότερα από ένα γνωρίσµατα — εάν και µόνο εάν το αντίστοιχο του υποψήφιο
κλειδί είναι επίσης σύνθετο, θα είναι απλό εάν και µόνο εάν το αντίστοιχο του
πρωτεύον κλειδί της άλλης σχέσης είναι επίσης απλό.
3. Καθένα από τα γνωρίσµατα που αποτελούν ένα δεδοµένο ξένο κλειδί πρέπει
να ορίζεται στο ίδιο πεδίο ορισµού µε το αντίστοιχο µέρος του αντίστοιχου
πρωτεύοντος κλειδιού της άλλης σχέσης.
4. ∆εν είναι απαραίτητο ένα ξένο κλειδί να είναι µέρος του πρωτεύοντος κλειδιού
της σχέσης που το περιέχει.
5. Μια τιµή ξένου κλειδιού αντιπροσωπεύει µια αναφορά στη συστοιχία που
περιέχει την αντίστοιχη τιµή του πρωτεύοντος κλειδιού της άλλης σχέσης — την
αναφερόµενη συστοιχία (Γι' αυτόν το λόγο, το πρόβληµα να εξασφαλιστεί ότι η
βάση δεδοµένων δεν περιέχει µη έγκυρες τιµές ξένων κλειδιών είναι γνωστό ως
πρόβληµα ακεραιότητας των αναφορών .
Μαζί µε την έννοια του ξένου κλειδιού, το σχεσιακό µοντέλο περιλαµβάνει τον
παρακάτω κανόνα ακεραιότητας των αναφορών:
• Ακεραιότητα των αναφορών (referential integrity):
Η βάση δεδοµένων δεν πρέπει να περιέχει αναντίστοιχες τιµές ξένων κλειδιών.
Σελ. 61
ΣΧΕΣΙΑΚΟ ΜΟΝΤΈΛΟ
Ο όρος "αναντίστοιχη τιµή ξένου κλειδιού" εδώ σηµαίνει µια τιµή ξένου κλειδιού
για την οποία δεν υπάρχει αντίστοιχη ίδια τιµή του σχετικού υποψήφιου κλειδιού στη
σχέση κατάληξης. Με άλλα λόγια, ο κανόνας λέει: αν το Β αναφέρεται στο Α. τότε το Α
πρέπει να υπάρχει.
Οι δύο έννοιες, "ξένο κλειδί" και "ακεραιότητα αναφορών", ορίζονται η µία µε
βάση την άλλη. ∆ηλαδή, δεν είναι δυνατό να εξηγήσουµε τι είναι ξένο κλειδί χωρίς να
αναφερθούµε στην έννοια της ακεραιότητας αναφορών και, αντίστοιχα, δεν είναι
δυνατό να εξηγήσουµε τι είναι η ακεραιότητα αναφορών χωρίς να αναφερθούµε στην
έννοια του ξένου κλειδιού.

Για κάθε ξένο κλειδί, υπάρχουν δύο γενικά ζητήµατα που πρέπει να
απαντηθούν:
Πρώτον. Τι θα πρέπει να γίνεται σε περίπτωση απόπειρας να διαγραφεί
(DELETE) η συστοιχία κατάληξης µιας αναφοράς ξένου κλειδιού — για παράδειγµα,
αν γίνει απόπειρα να διαγραφεί ένας προµηθευτής για τον οποίο υπάρχει τουλάχιστον
µία αντίστοιχη αποστολή. Για να είµαστε συγκεκριµένοι, ας εξετάσουµε ειδικά αυτή την
περίπτωση. Γενικά, υπάρχουν τουλάχιστον δύο δυνατότητες:
RESTRICTED (περιορισµός διάδοσης) — η πράξη διαγραφής
"περιορίζεται" µόνο στην περίπτωση που δεν υπάρχουν αντίστοιχες
αποστολές (αλλιώς, η διαγραφή απορρίπτεται).
CASCADES (αλυσιδωτή διάδοση) - η πράξη διαγραφής "διαδίδεται
αλυσιδωτά", ώστε να διαγραφούν επίσης οι αντίστοιχες αποστολές.
∆εύτερον. Τι θα πρέπει να γίνεται σε περίπτωση απόπειρας να ενηµερωθεί ένα
υποψήφιο κλειδί που είναι η κατάληξη µιας αναφοράς ξένου κλειδιού — για
παράδειγµα, αν γίνει απόπειρα να ενηµερωθεί ο κωδικός ενός προµηθευτή για τον
οποίο υπάρχει τουλάχιστον µία αντίστοιχη αποστολή. Για να είµαστε πάλι
συγκεκριµένοι, ας εξετάσουµε ειδικά αυτή την περίπτωση. Γενικά, υπάρχουν οι ίδιες
δυνατότητες όπως στη διαγραφή:
• RESTRICTED (περιορισµός διάδοσης) — η πράξη ενηµέρωσης
"περιορίζεται" µόνο στην περίπτωση που δεν υπάρχουν αντίστοιχες αποστολές
(αλλιώς, η διαγραφή απορρίπτεται).
• CASCADES (αλυσιδωτή διάδοση) — η πράξη διαγραφής "διαδίδεται
αλυσιδωτά", ώστε να ενηµερωθεί επίσης το ξένο κλειδί στις αντίστοιχες αποστολές.
Στη σχεδίαση, για κάθε ξένο κλειδί ο σχεδιαστής της βάσης δεδοµένων θα
πρέπει λοιπόν να καθορίσει όχι µόνο το γνώρισµα ή το συνδυασµό γνωρισµάτων που
αποτελούν το ξένο κλειδί και την αντίστοιχη σχέση κατάληξης, αλλά και τις απαντήσεις
στις παραπάνω ερωτήσεις (δηλαδή, τους συγκεκριµένους κανόνες ξένων κλειδιών
που θα ισχύουν γι' αυτό το ξένο κλειδί).
5.8.3 Null
Έχουµε εξηγήσει τώρα τις βασικές ιδέες στις οποίες βασίζονται οι έννοιες του
υποψήφιου και του ξένου κλειδιού στο σχεσιακό µοντέλο. ∆υστυχώς, υπάρχει ένας
Σελ. 62
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
ΣΧΕΣΙΑΚΟ ΜΟΝΤΈΛΟ
• Εποµένως, οι αναπαραστάσεις των οντοτήτων µέσα στη βάση δεδοµένων
πρέπει να είναι και αυτές διακριτές (αναγνωρίσιµες).
• Τα πρωτεύοντα κλειδιά εκτελούν τη λειτουργία της µονοσήµαντης
αναγνώρισης των οντοτήτων (των εγγραφών στο σχεσιακό µοντέλο) δηλαδή,
είναι τα απαραίτητα αναγνωριστικά οντοτήτων.
Έτσι ο κανόνας ακεραιότητας των οντοτήτων µερικές φορές διατυπώνεται µε την
εξής µορφή: Σε µια σχεσιακή βάση δεδοµένων, ποτέ δεν καταγράφουµε
πληροφορίες για κάτι στο οποίο δεν µπορούµε να αποδώσουµε ταυτότητα.
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
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. µεταξύ η τύπων οντοτήτων που αντιστοιχούν στις
σχέσεις S
1
, S
2
, …, S
n
δηµιουργούµε µια νέα σχέση R µε γνωρίσµατα: (α) τα
γνωρίσµατα της R, αν υπάρχουν, και (β) τα γνωρίσµατα του πρωτεύοντος κλειδιού
κάθε συµµετέχουσας σχέσης S
i
, τα οποία συµµετέχουν ως ξένα κλειδιά στη σχέση R.
Για κάθε 1-1 δυαδική (µη αδύναµη) συσχέτιση R µεταξύ δύο τύπων
οντοτήτων που αντιστοιχούν στις σχέσεις Τ και S, δεν δηµιουργούµε νέα σχέση R
αλλά επιλέγουµε µια εκ των Τ και S, έστω την Τ. Στα ήδη υπάρχοντα γνωρίσµατα της
Τ προσθέτουµε: (α) τα γνωρίσµατα της R, αν υπάρχουν, και (β) το πρωτεύον κλειδί
της S, το οποίο συµµετέχει ως ξένο κλειδί στη σχέση Τ. Για την επιλογή µεταξύ Τ και
S, κριτήριο είναι η ολική συµµετοχή του ενός ή του άλλου τύπου οντοτήτων στη
συσχέτιση: η σχέση που αντιστοιχεί στον τύπο οντοτήτων που συµµετέχει ολικά στη
συσχέτιση, είναι αυτή (η σχέση Τ, παραπάνω) που επιλέγεται να «φιλοξενήσει» ως
ξένο κλειδί το πρωτεύον κλειδί της άλλης (της S). Αν δεν υπάρχει ολική συµµετοχή
από καµία πλευρά, τότε προσπαθούµε να µην έχουµε πολλές null τιµές, οπότε
Σελ. 65
ΣΧΕΣΙΑΚΟ ΜΟΝΤΈΛΟ
επιλέγουµε να προσθέσουµε ξένο κλειδί στη σχέση που αντιστοιχεί στον τύπο
οντοτήτων µε τη µεγαλύτερη συµµετοχή στη συσχέτιση.
Για κάθε 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
5.9 ΜΕΤΑΤΡΟΠΗ ∆ΙΑΓΡΑΜΜΑΤΟΣ E-R ΣΤΟ ΣΧΕΣΙΑΚΟ ΜΟΝΤΕΛΟ
Ένα τµήµα σχετίζεται µε έναν µόνο εργαζόµενο ο οποίος διευθύνει το τµήµα
και σ' έναν αριθµό υπαλλήλων οι οποίοι δουλεύουν για το τµήµα. Ένα τµήµα
µπορεί να σχετίζεται µε έναν αριθµό έργων που ελέγχει.
Ένα έργο ελέγχεται από ακριβώς ένα τµήµα και έχει αρκετούς υπάλληλους
που δουλεύουν για το έργο.
Κάθε τµήµα σχετίζεται µε έναν εργαζόµενο.

Η µετατροπή του παραπάνω διαγράµµατος E-R δηµιουργεί το παρακάτω
σχεσιακό σχήµα:
ΕΡΓΑΖΟΜΕΝΟΣ (Αρ_Ταυτ, Όνοµα, Αρχ_Πατ, Επίθετο, ∆ιεύθυνση, Φύλο, Ηµ_Γεν,
Μισθός, Αρ_Προϊστάµ, Αρ_Τµήµ)
ΤΜΗΜΑ (Αρ_Τµήµ, Όνοµα, Αρ_Ταυτ_∆ιευθυντή, Ηµερ_Έναρξης_∆ιευθυντή)
ΤΟΠΟΘΕΣΙΕΣ_ΤΜΗΜΑΤΩΝ (Αρ_Τµήµ, ΤοποθεσίαΤµήµ)
ΕΡΓΟ (Αρ_Έργου, Όνοµα_Έργου, Τοποθεσία_Έργου, Αρ_Τµήµ)
ΑΠΑΣΧΟΛΗΣΗ (Αρ_Ταυτ_Εργαζόµενου, Αρ_Έργου, Ώρες)
ΕΞΑΡΤΩΜΕΝΟΣ (Αρ_Ταυτ_Εργαζόµενου, Όνοµα_Εξ, Φύλο, Ηµερ_Γεν, Συγγένεια

Προσοχή! Στο τέλος αυτών των βηµάτων οι σχέσεις που προέκυψαν
πρέπει να ελεγχθούν σύµφωνα µε τους κανόνες της κανονικοποίησης.
Σελ. 67
ΘΕΩΡΙΑ ΚΑΝΟΝΙΚΟΠΟΙΗΣΗΣ
6 ΘΕΩΡΙΑ ΚΑΝΟΝΙΚΟΠΟΙΗΣΗΣ
6.1 ΕΙΣΑΓΩΓΗ
Η διαδικασία που αξιολογεί την ευστάθεια, βιωσιµότητα και τις προοπτικές που
έχουν οι σχέσεις, ώστε να απαλλαγούν από κάποιες ανωµαλίες στην ενηµέρωση
πλειάδων, αποκαλείται Κανονικοποίηση.
Είδαµε ότι το σχεσιακό µοντέλο αποτελείται από σχέσεις που δηµιουργούνται
από γνωρίσµατα. Μία σχέση είναι ένα σύνολο από γνωρίσµατα µε τιµές για κάθε
γνώρισµα τέτοιες ώστε να ισχύουν οι παρακάτω ιδιότητες
1. Κάθε όνοµα γνωρίσµατος είναι µοναδικό.
2. Όλες οι τιµές κάθε γνωρίσµατος είναι ίδιου τύπου (ή πεδίου ορισµού).
3. Κάθε τιµή γνωρίσµατος είναι ατοµική (µία τιµή και όχι οµάδα πολλών τιµών).
4. Τα γνωρίσµατα δεν έχουν διάταξη από τα αριστερά προς τα δεξιά..
5. Οι συστοιχίες (σειρές) δεν έχουν διάταξη από επάνω προς τα κάτω.
6. ∆εν υπάρχουν δύο ίδιες σειρές (συστοιχίες) σε µία σχέση.
Από τη συζήτηση της µοντελοποίησης µε το µοντέλο οντοτήτων-συσχετίσεων
είδαµε ότι µία οντότητα τυπικά αντιστοιχεί σε µία σχέση και ότι τα γνωρίσµατα της
οντότητας γίνονται γνωρίσµατα της σχέσης.
Η διαδικασία που ακολουθούµε είναι η ακόλουθη:
1. Συγκεντρώνουµε τις απαιτήσεις της επιχείρησης και των χρηστών.
2. Σχεδιάζουµε το µοντέλο οντοτήτων-συσχετίσεων βασιζόµενο στις
παραπάνω απαιτήσεις
3. Μετατρέπουµε το διάγραµµα οντοτήτων-συσχετίσεων της επιχείρησης σε
ένα σύνολο από σχέσεις (πίνακες) µε το σχεσιακό µοντέλο.
4. Κανονικοποιούµε τις σχέσεις για να αποµακρύνουµε τυχόν ανωµαλίες
ενηµέρωσης-διαγραφής-εισαγωγής στοιχείων.
5. Υλοποιούµε τη βάση δεδοµένων δηµιουργώντας ένα πίνακα για κάθε
κανονικοποιηµένη σχέση.
6.2 ΣΥΝΑΡΤΗΣΙΑΚΕΣ ΕΞΑΡΤΗΣΕΙΣ
Μία συναρτησιακή εξάρτηση περιγράφει τη συσχέτιση (ΧΥ) µεταξύ
γνωρισµάτων της ίδιας σχέσης. Ο επίσηµος ορισµός είναι ο παρακάτω:
Ένα γνώρισµα Υ είναι συναρτησιακά εξαρτώµενο από ένα γνώρισµα Χ αν
και µόνο αν κάθε τιµή του Χ σχετίζεται µε µία και µόνο µία τιµή του Υ. ∆ηλαδή
ένα γνώρισµα είναι συναρτησιακά εξαρτώµενο από ένα άλλο αν µπορούµε να
Σελ. 68
6.3 Κλειδιά και µοναδικότητα
χρησιµοποιήσουµε την τιµή του ενός για να προσδιορίσουµε την τιµή του άλλου (να
βρούµε την τιµή του µέσα στη σχέση).
Για παράδειγµα στη σχέση ΕΡΓΑΖΟΜΕΝΟΙ το Όνοµα-Εργαζοµένου είναι
συναρτησιακά εξαρτώµενο από τον Αριθµό-Ταυτότητας επειδή ο Αριθµό-Ταυτότητας
µπορεί να χρησιµοποιηθεί για να προσδιορισθεί µοναδικά η τιµή του Ονόµατος του
Εργαζοµένου. Τότε ο Αριθµό-Ταυτότητας ονοµάζεται προσδιοριστικό (ή ορίζουσα).
Εδώ θα χρησιµοποιήσουµε λοιπόν το σύµβολο για να δείχνουµε µερικές
τέτοιες συναρτησιακές εξαρτήσεις (το σύµβολο διαβάζεται "προσδιορίζει
συναρτησιακά")
ΚωδΦοιτητή Κατεύθυνση-σπουδών
ΚωδΦοιτητή, Μάθηµα, Εξάµηνο Βαθµός
ΚωδΜαθήµατος, Τµήµα Καθηγητής, Αίθουσα, Αριθµός-φοιτητών
Μοντέλο, Τρόπος-Πληρωµής, φόρος Τιµή αυτοκινήτου
Τα γνωρίσµατα στα αριστερά ονοµάζονται προσδιοριστικά. Αν γενικά ΧΑ
σηµαίνει ότι το Χ προσδιορίζει το Α.
6.3 ΚΛΕΙ∆ΙΑ ΚΑΙ ΜΟΝΑ∆ΙΚΟΤΗΤΑ
Κλειδί ή υπερ-κλειδί: ένα ή περισσότερα γνωρίσµατα που προσδιορίζουν
µοναδικά µία συστοιχία (πλειάδα ή ολοκληρωµένη εγγραφή)
Η επιλογή των κλειδιών θα εξαρτάται από τη συγκεκριµένη εφαρµογή.
Οι χρήστες της εφαρµογής µπορούν να προσφέρουν οδηγίες ως προς το ποια
γνωρίσµατα θα δηµιουργήσουν ένα κατάλληλο κλειδί.
Επειδή δεν είναι δυνατόν δύο σχέσεις να έχουν ακριβώς τις ίδιες τιµές, ένα
υποψήφιο κλειδί θα αποτελείται από όλα τα γνωρίσµατα µίας σχέσης.
Ένα κλειδί προσδιορίζει συναρτησιακά µία συστοιχία.
∆εν είναι όλα τα προσδιοριστικά κλειδιά.
6.4 ΠΡΟΒΛΗΜΑΤΑ ΤΡΟΠΟΠΟΙΗΣΕΩΝ
Μόλις το µοντέλο οντοτήτων-συσχετίσεων µετατραπεί σε σχέσεις µπορεί να
ανακαλύψουµε ότι µερικές σχέσεις δεν καθορίζονται σωστά. Έτσι µπορεί να
εµφανιστούν κάποια προβλήµατα όπως:
Ανωµαλίες διαγραφής: διαγράφοντας µία σχέση κάποιες πληροφορίες που
συνδέονται µε µία άλλη σχέση χάνονται και αυτές.
Ανωµαλίες Εισαγωγής: Για να εισάγουµε µία καινούργια σχέση απαιτείται να
έχουµε πληροφορίες από δύο ή περισσότερες οντότητες-αυτή η κατάσταση µπορεί να
µην είναι εφαρµόσιµη.
Οι παραπάνω ανωµαλίες εισαγωγής ή διαγραφής σχέσεων προκύπτουν επειδή
σε µία σχεσιακή βάση δεδοµένων δεν µπορεί να υπάρχει σχέση που δεν σχετίζεται µε
καµία άλλη.
Σελ. 69
ΘΕΩΡΙΑ ΚΑΝΟΝΙΚΟΠΟΙΗΣΗΣ
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
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
ΘΕΩΡΙΑ ΚΑΝΟΝΙΚΟΠΟΙΗΣΗΣ
• Εταιρία, Ηµεροµηνία Τιµή_Κλεισίµατος
• Σύµβολο, Ηµεροµηνία Τιµή_Κλεισίµατος
• Εταιρία Σύµβολο, Κεντρικά_Γραφεία
• Σύµβολο Εταιρία, Κεντρικά_Γραφεία
Θεωρήστε ότι ισχύει η εξάρτηση Εταιρία, Ηµεροµηνία Τιµή_Κλεισίµατος. Άρα
θα πρέπει να χρησιµοποιήσουµε τα Εταιρία, Ηµεροµηνία σαν πρωτεύων κλειδί. Όµως
το τµήµα του κλειδιού Εταιρία προσδιορίζει συναρτησιακά το γνώρισµα Σύµβολο
(ΕταιρίαΣύµβολο) όπως και το γνώρισµα Κεντρικά_Γραφεία (Εταιρία
Κεντρικά_Γραφεία). Αυτό παραβιάζει τον κανόνα για τη δεύτερη κανονική µορφή.
• Μία λύση: ∆ιαχωρισµός σε δύο σχέσεις:
ΕΤΑΙΡΙΑ (Εταιρία, Σύµβολο, Κεντρικά_Γραφεία)
ΜΕΤΟΧΕΣ (Σύµβολο, Ηµεροµηνία, Τιµή_Κλεισίµατος)
Εταιρία Σύµβολο Κεντρικά_Γραφεία
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
6.5 Κανονικοποιηση-Κανονικές µορφέσ
Θεωρήστε για παράδειγµα τη σχέση R που έχει γνωρίσµατα τα Α, Β και Γ. Εάν
ΑΒ και ΒΓ τότε θα ισχύει και ΑΓ. Π.χ. Σε µία πανεπιστηµιακή σχολή θα ισχύει:
Κωδικός_Μαθήµατος ∆ιδασκαλία_Μαθήµατος Τάξη, Καθηγητής
Μεταβατική εξάρτηση: Τρία γνωρίσµατα µε τις παραπάνω εξαρτήσεις.
Άρα οι σχέσεις που έχουν µόνο δύο γνωρίσµατα βρίσκονται αυτόµατα
και σε Τρίτη κανονική µορφή.
Στο παρακάτω παράδειγµα η σχέση έχει ένα γνώρισµα για πρωτεύων κλειδί και
συνεπώς βρίσκεται στη δεύτερη κανονική µορφή:
Εταιρία Πολιτεία Ποσοστό_Φορολογίας
IBM Putnam 28%
AT&T Bergen 26%
Κάθε εταιρία έχει την έδρα της σε µία πολιτεία αλλά το ποσοστό φορολογίας
εξαρτάται από τη συγκεκριµένη πολιτεία
• Εταιρία Πολιτεία
• και
• Πολιτεία Ποσοστό_Φορολογίας
• άρα θα ισχύει και
• Εταιρία Ποσοστό_Φορολογίας
Τι θα γίνει αν διαγράψουµε την εγγραφή για την εταιρία AT&T ?
Θα χάσουµε πληροφορίες για 2 διαφορετικά θέµατα (την εταιρία και το Ποσοστό
φορολογίας στην πολιτεία Bergen).
Λύση: ∆ιαχωρισµός σε δύο σχέσεις:
Εταιρία Πολιτεία
IBM Putnam
AT&T Bergen
Πολιτεία Ποσοστό_Φορολογίας
Putnam 28%
Bergen 26%

Εταιρία Πολιτεία Πολιτεία Ποσοστό_Φορολογίας

Σελ. 73
ΣΧΕΣΙΑΚΗ ΑΛΓΕΒΡΑ
7 ΣΧΕΣΙΑΚΗ ΑΛΓΕΒΡΑ
Είδαµε ότι το σχεσιακό µοντέλο δεδοµένων έχει δοµές, τις σχέσεις, (που είναι
σύνολα γραµµών και στηλών), δοµικούς περιορισµούς πάνω στις δοµές (π.χ. κλειδιά)
και πράξεις πάνω στις σχέσεις που παράγουν άλλες σχέσεις. Η σχεσιακή άλγεβρα
(relational algebra) είναι η µαθηµατική θεµελίωση των πράξεων του σχεσιακού
µοντέλου δεδοµένων. Η σχεσιακή άλγεβρα αποτελείται από µια συλλογή σχεσιακών
τελεστών ή σχεσιακών πράξεων, οι οποίοι δέχονται τελεστέους που είναι σχέσεις και
επιστρέφουν αποτελέσµατα που είναι επίσης σχέσεις.
Πριν από την περιγραφή των σχεσιακών πράξεων, πρέπει να σηµειωθεί ότι
έχουν δύο χαρακτηριστικά:
Πρώτον, όταν εκτελούνται καταλήγουν σε σχεσιακούς πίνακες (σύνολα), δηλαδή
γίνεται επεξεργασία συνόλων σε αντιδιαστολή µε τη συµβατική επεξεργασία εγγραφή-
προς-εγγραφή (π.χ. τελεστές READ/WRITE). Η επεξεργασία συνόλων έχει την
ιδιότητα της κλειστότητας επειδή µία σχεσιακή πράξη επί ενός ή περισσοτέρων
σχεσιακών πινάκων θα παράγει πάντοτε έναν σχεσιακό πίνακα, ακόµη και αν το
αποτέλεσµα είναι µόνο µία γραµµή (ή και στήλη). Η κλειστότητα συνεπάγεται ότι οι
σχεσιακές πράξεις µπορεί να εκτελεστούν σε αποτελέσµατα προηγούµενων
σχεσιακών πράξεων. Έτσι οι χρήστες µπορούν να εκτελούν εµφωλιασµένες σειρές
σχεσιακών πράξεων.
Το δεύτερο χαρακτηριστικό είναι ότι οι σχεσιακές πράξεις δεν επηρεάζονται από
τον τρόπο που αποθηκεύονται τα δεδοµένα στα φυσικά µέσα αποθήκευσης του
υπολογιστή. Έτσι οι χρήστες εκτελούν τις σχεσιακές πράξεις χωρίς να ενδιαφέρονται
για τις τεχνικές αποθήκευσης και προσπέλασης των δεδοµένων.

7.1 ΠΡΩΤΟΤΥΠΗ ΣΧΕΣΙΑΚΗ ΑΛΓΕΒΡΑ
Η σχεσιακή άλγεβρα είναι µία διαδικαστική γλώσσα ερωτήσεων.
Η "πρωτότυπη" σχεσιακή άλγεβρα, όπως ορίστηκε από τον Codd,
αποτελούνταν από οκτώ τελεστές, σε δύο οµάδες, που ήταν οι εξής:
1. Οι παραδοσιακές πράξεις της θεωρίας των συνόλων, ένωση,
τοµή, διαφορά, και καρτεσιανό γινόµενο (όλες κάπως
τροποποιηµένες ώστε να λαµβάνεται υπόψη το γεγονός ότι οι
τελεστέοι τους είναι σχέσεις και όχι τυχαία σύνολα).
2. Οι ειδικές σχεσιακές πράξεις περιορισµός (restrict), προβολή
(project), σύζευξη (join), και διαίρεση (divide).
Σελ. 74
7.1 Πρωτότυπη σχεσιακή άλγεβρα

Εικόνα. Οι κυριότερες σχεσιακές πράξεις
Σελ. 75
ΣΧΕΣΙΑΚΗ ΑΛΓΕΒΡΑ
7.2 ΣΥΝΟΨΗ ΤΩΝ ΟΚΤΩ ΚΥΡΙΟΤΕΡΩΝ ΠΡΑΞΕΩΝ:
1. Περιορισµός ή Επιλογή (selection) σ
C
(R). Επιλέγει συστοιχίες (πλειάδες) της
σχέσης R που ικανοποιούν την συνθήκη C. Επιστρέφει µια σχέση που αποτελείται
από όλες τις συστοιχίες µιας καθορισµένης σχέσης οι οποίες ικανοποιούν µια
καθορισµένη συνθήκη. (Το αρχικό όνοµα αυτής της πράξης ήταν περιορισµός
(restrict) αλλά σήµερα η πράξη λέγεται πιο συχνά επιλογή (select).
2. Προβολή (projection) π
AL
(R). Επιλέγει τις συγκεκριµένες στήλες AL (attribute list)
από τη σχέση R. Επιστρέφει µια σχέση που αποτελείται από τα καθορισµένα
γνωρίσµατα.
3. Καρτεσιανό γινόµενο (cartesian product) R
1
×R
2
. Επιστρέφει µια νέα σχέση που
προέρχεται από την συνένωση των R
1
και R
2
έτσι ώστε οι συστοιχίες (πλειάδες) της
να είναι κάθε δυνατό ζεύγος δύο πλειάδων, µία από την R
1
και µία από την R
2
.
4. Ένωση (set union) R
1
∪ R
2
. Έστω R
1
(A
1
,A
2
, ... A
n
), και R
2
(A
1
,A
2
, ... A
n
), οι δύο
σχέσεις έχουν δηλαδή ακριβώς τα ίδια γνωρίσµατα και στην ίδια διάταξη. Η πράξη
R
1
∪ R
2
επιστρέφει µια νέα σχέση που προέρχεται από την ένωση των R
1
και R
2

και αποτελείται από όλες τις συστοιχίες που εµφανίζονται σε µία από τις δύο ή και
στις δύο καθορισµένες σχέσεις.
5. ∆ιαφορά (difference) R
1
− R
2
. Έστω R
1
(A
1
,A
2
, ... A
n
), και R
2
(A
1
,A
2
, ... A
n
), οι
δύο σχέσεις έχουν δηλαδή ακριβώς τα ίδια γνωρίσµατα και στην ίδια διάταξη. Η
πράξη R
1
− R
2
επιστρέφει µια νέα σχέση που περιέχει τις πλειάδες της R
1
που δεν
έχει η R
2
. ∆ηλαδή επιστρέφει µια σχέση που αποτελείται από όλες τις συστοιχίες
που εµφανίζονται στην πρώτη και όχι στη δεύτερη από τις δύο καθορισµένες
σχέσεις.
6. Τοµή (intersection) R
1
∩ R
2
. Έστω R
1
(A
1
,A
2
, ... A
n
), και R
2
(A
1
,A
2
, ... A
n
), οι δύο
σχέσεις έχουν δηλαδή ακριβώς τα ίδια γνωρίσµατα και στην ίδια διάταξη. Η πράξη
R
1
∩ R
2
επιστρέφει µια νέα σχέση που προέρχεται από την τοµή των R
1
και R
2
και
αποτελείται από όλες τις συστοιχίες που εµφανίζονται και στις δύο σχέσεις
7. Σύζευξη ή Συνένωση (join) R
1
< >
c
R
2
Επιστρέφει τις πλειάδες του R
1
×R
2
που
ικανοποιούν τη συνθήκη σύζευξης C. Συνήθως, αλλά όχι απαραίτητα, η συνθήκη C
είναι η συνθήκη ισότητας ('=') πάνω στο πρωτεύον κλειδί της µιας σχέσης και στο
ξένο κλειδί της άλλης σχέσης, οπότε στην περίπτωση αυτή, ονοµάζεται φυσική
σύζευξη (natural join) και δηλώνεται R
1
< > R
2
(πολύ χρήσιµη πράξη αλλά όχι
βασική, αφού αποτελεί συνδυασµό καρτεσιανού γινοµένου, επιλογής και
προβολής)
8. ∆ιαίρεση (division) R
1
÷R
2
. Έστω R
1
(A
1
,A
2
, ... A
n
), R
2
(A
1
,A
2
, ... A
n
), οι δύο
σχέσεις και T= π
A1
, …,
An
(R
1
) η προβολή. Η πράξη R
1
÷R
2
επιστρέφει πλειάδες της
Τ των οποίων η ένωση µε όλες τις πλειάδες της R
1
βρίσκεται στην R
2
. Για
παράδειγµα παίρνει δύο σχέσεις, µία δυαδική και µία µοναδιαία, και επιστρέφει µια
σχέση που αποτελείται από όλες τις τιµές ενός γνωρίσµατος της δυαδικής σχέσης
που ταυτίζονται (στο άλλο γνώρισµα) µε όλες τις τιµές της µοναδιαίας σχέσης.
Σελ. 76
7.3 Οι Πρωτογενείς τελεστές
7.3 ΟΙ ΠΡΩΤΟΓΕΝΕΙΣ ΤΕΛΕΣΤΕΣ
Οι τελεστές των βασικών πράξεων -ένωση, διαφορά, γινόµενο, επιλογή και
προβολή είναι πρωτογενείς, µε την έννοια ότι κανένας από αυτούς δεν µπορεί να
εκφραστεί µε βάση τους άλλους τέσσερις
Το γινόµενο είναι ο µόνος τελεστής που αυξάνει το πλήθος των γνωρισµάτων,
και έτσι δεν µπορεί να προσοµοιωθεί µε κανένα συνδυασµό άλλων τελεστών.
Η προβολή είναι ο µόνος τελεστής που µειώνει το πλήθος των γνωρισµάτων,
και έτσι δεν µπορεί να προσοµοιωθεί µε κανένα συνδυασµό άλλων τελεστών.
Η ένωση είναι ο µόνος τελεστής που αυξάνει το πλήθος των συστοιχιών, εκτός
από το γινόµενο, και το γινόµενο αυξάνει επίσης το πλήθος των γνωρισµάτων. Έστω
ότι οι δύο σχέσεις στις οποίες εφαρµόζεται η ένωση είναι οι Α και Β. Προσέξτε ότι οι Α
και Β πρέπει να έχουν συµβατότητα τύπου και ότι η ένωση τους έχει ακριβώς τα ίδια
γνωρίσµατα µε την κάθε µία από αυτές. Αν σχηµατίσουµε το γινόµενο των Α και Β και
µετά χρησιµοποιήσουµε προβολή για να µειώσουµε το σύνολο των γνωρισµάτων του
γινοµένου µόνο στο σύνολο των γνωρισµάτων της Α (ή της Β), απλώς θα
ξαναγυρίσουµε στην αρχική σχέση Α (ή Β). Εποµένως, το γινόµενο δεν µπορεί να
χρησιµοποιηθεί για προσοµοίωση της ένωσης, και η ένωση είναι πρωτογενής.
Η διαφορά δεν µπορεί να προσοµοιωθεί µε το γινόµενο (επειδή το γινόµενο
αυξάνει το πλήθος των συστοιχιών), ούτε µε την ένωση (για τον ίδιο λόγο), ούτε µε
την προβολή (επειδή η προβολή µειώνει το πλήθος των γνωρισµάτων). ∆εν µπορεί να
προσοµοιωθεί ούτε µε την επιλογή, επειδή η διαφορά επηρεάζεται από τις τιµές που
εµφανίζονται στη δεύτερη σχέση ενώ η επιλογή όχι (λόγω της φύσης µιας συνθήκης
επιλογής). Εποµένως, η διαφορά είναι πρωτογενής.
Η επιλογή είναι ο µόνος τελεστής που επιτρέπει να συγκρίνονται τιµές
γνωρισµάτων µε κυριολεκτικές τιµές που καθορίζονται από έξω (δηλαδή, τιµές οι
οποίες δεν είναι ήδη µέρος κάποιας σχέσης).
7.4 ΚΛΕΙΣΤΟΤΗΤΑ
Η έξοδος µιας σχεσιακής πράξης είναι µια άλλη σχέση. Αυτή είναι η σχεσιακή
ιδιότητα της κλειστότητας. Επειδή η έξοδος οποιασδήποτε πράξης είναι ένα
αντικείµενο του ίδιου τύπου µε την είσοδο της (είναι και τα δύο σχέσεις), η έξοδος µίας
πράξης µπορεί να γίνει είσοδος για µία άλλη πράξη. Έτσι, είναι δυνατό, για
παράδειγµα, να πάρουµε µια προβολή µιας ένωσης, ή µια σύζευξη δύο περιορισµών,
ή την ένωση µιας σύζευξης και µιας τοµής, κ.ο.κ. Με άλλα λόγια, είναι δυνατό να
γράφουµε παραστάσεις µε ένθετες υποπαραστάσεις (nested expressions) —
δηλαδή, παραστάσεις που οι τελεστέοι τους είναι και οι ίδιοι παραστάσεις, και όχι
απλώς ονόµατα σχέσεων.
Σελ. 77
ΣΧΕΣΙΑΚΗ ΑΛΓΕΒΡΑ
7.5 ΠΡΟΤΕΡΑΙΟΤΗΤΑ ΤΩΝ ΤΕΛΕΣΤΩΝ
Η προτεραιότητα των τελεστών της σχεσιακής άλγεβρας:
1. καθορίζει τη σειρά εφαρµογής τελεστών σε µια έκφραση της Σχεσιακής
Άλγεβρας χωρίς παρενθέσεις
2. παρενθέσεις χρησιµοποιούνται για να µεταβληθεί η σειρά
προτεραιότητας : οι εκφράσεις µέσα σε παρενθέσεις υπολογίζονται
πρώτα
∪, ∩ Ένωση, Τοµή Χαµηλότερη
− ∆ιαφορά ↓
, ÷ Σύζευξη, ∆ιαίρεση ↓
× Καρτεσιανό Γινόµενο ↓
σ Επιλογή ↓
π Προβολή Υψηλότερη
Σύµβολο Τελεστής Προτεραιότητα
∪, ∩ Ένωση, Τοµή Χαµηλότερη
− ∆ιαφορά ↓
, ÷ Σύζευξη, ∆ιαίρεση ↓
× Καρτεσιανό Γινόµενο ↓
σ Επιλογή ↓
π Προβολή Υψηλότερη
Σύµβολο Τελεστής Προτεραιότητα


Πριν δούµε αναλυτικά όλες τις πράξεις της σχεσιακής άλγεβρας ας θυµηθούµε
τον φορµαλισµό του Σχεσιακού Μοντέλου:
Ένα Σχεσιακό Σχήµα σχέσης R συµβολίζεται µε R(A
1
,A
2
, ... A
n
).
Μια συστοιχία (tuple) t µιας Σχέσης R(A
1
,A
2
, ... A
n
). είναι µια (διατεταγµένη)
λίστα τιµών t = <v
1
, v
2
, ... v
n
>, όπου κάθε τιµή v, είναι ένα στοιχείο του πεδίου τιµών
D(A
i
).
7.6 ΣΧΕΣΙΑΚΗ ΆΛΓΕΒΡΑ - ΠΡΑΞΕΙΣ
Η σχεσιακή άλγεβρα είναι µία διαδικαστική γλώσσα ερωτήσεων
Έχει έξι βασικές σχεσιακές πράξεις (δηλαδή πρωτογενείς)
• προβολή (project, unary)
• επιλογή (select, unary)
• καρτεσιανό γινόµενο συνόλων (cartesian product, binary)
• µετονοµασία (rename, unary)
• ένωση συνόλων (union, binary)
• διαφορά συνόλων (set-difference, binary)
Σελ. 78
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
ΣΧΕΣΙΑΚΗ ΑΛΓΕΒΡΑ
Π.χ. για να προβάλουµε µόνο τις στήλες αριθµός-λογαριασµού και υπόλοιπο και
από τον πίνακα λογαριασµός:
Π
αριθµός-λογαριασµού,υπόλοιπο
(λογαριασµός)
Παράδειγµα Προβολής
2 40 β
1 30 β
1 20 α
1 10 α
Γ Β Α
2 40 β
1 30 β
1 20 α
1 10 α
Γ Β Α
2 β
1 β
1 α
1 α
Γ Α
2 β
1 β
1 α
1 α
Γ Α
2 β
1 β
1 α
Γ Α
2 β
1 β
1 α
Γ Α
=
Σχέση 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
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


Παράδειγµα επιλογής:
σ
Όνοµα-Υποκαταστήµατος='Βενιζέλου'
(λογαριασµός)
Παράδειγµα επιλογής
10 23 β β
3 12 β β
7 5 β α
7 1 α α
∆ ∆ Γ Γ Β Β Α Α
10 23 β β
3 12 β β
7 5 β α
7 1 α α
∆ ∆ Γ Γ Β Β Α Α
10 23 β β
7 1 α α
∆ ∆ Γ Γ Β Β Α Α
10 23 β β
7 1 α α
∆ ∆ Γ Γ Β Β Α Α
• Σχέση 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
ΣΧΕΣΙΑΚΗ ΑΛΓΕΒΡΑ
Ορίζεται ως:
r × s = {tq | t∈r και q∈s}
Υποθέτουµε ότι οι ιδιότητες των r(R) και s(S) είναι ασύνδετες (δηλαδή R∩S=∅)
Αν οι ιδιότητες των r(R) και s(S) δεν είναι ασύνδετες, τότε πρέπει να
χρησιµοποιηθεί µετονοµασία.
Παράδειγµα Καρτεσιανού Γινοµένου

2 β
1 α
Β Α
2 β
1 α
Β Α
b 10 r
b 20 β
c 10 β
c 10 a
Ε ∆ Γ
b 10 r
b 20 β
c 10 β
c 10 a
Ε ∆ Γ
b 10 r 2 β
b 20 β 2 β
c 10 β 2 β
c 10 α 2 β
b 10 r 1 α
b 20 β 1 α
c 10 β 1 α
c 10 α 1 α
Ε ∆ Γ B A
b 10 r 2 β
b 20 β 2 β
c 10 β 2 β
c 10 α 2 β
b 10 r 1 α
b 20 β 1 α
c 10 β 1 α
c 10 α 1 α
Ε ∆ Γ B A
Οι σχέσεις R, S
Η σχέση R x S


Παράδειγµα υλοποίησης στην SQL:
SELECT * FROM R, S

7.10 ΤΕΛΕΣΤΗΣ ΜΕΤΟΝΟΜΑΣΙΑΣ
Ο τελεστής µετονοµασίας συµβολίζεται µε το µικρό ελληνικό γράµµα ρο (ρ). Το
ψευδώνυµο που δίνουµε στη σχέση φαίνεται σαν δείκτης του ρο (ρ). Το όνοµα της
σχέσης στην οποία εφαρµόζεται η πράξη της µετονοµασίας δίνεται στην παρένθεση
που ακολουθεί το ρ. Μας επιτρέπει να ονοµάσουµε, και συνεπώς να αναφερθούµε,
στα αποτελέσµατα των εκφράσεων της σχεσιακής άλγεβρας.
Μας επιτρέπει να αναφερθούµε σε µια σχέση µε περισσότερα από ένα ονόµατα
Συµβολισµός:
ρ
Χ
(R)
επιστρέφει τη σχέση R µε το νέο όνοµα Χ
Σελ. 82
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
ΣΧΕΣΙΑΚΗ ΑΛΓΕΒΡΑ
Παράδειγµα υλοποίησης στην 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
1 β
2 α
1 α
B A
1 β
2 α
1 α
B A
3 β
2 α
B A
3 β
2 α
B A
1 α
3 β
1 β
2 α
B A
1 α
3 β
1 β
2 α
B A
Σχέση R ∪ S:
Σχέση S

Σελ. 84
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
1 β
2 α
1 α
B A
1 β
2 α
1 α
B A
3 β
2 α
B A
3 β
2 α
B A
Σχέση R - S:
Σχέση S
1 β
1 α
Β Α
1 β
1 α
Β Α


Σελ. 85
ΣΧΕΣΙΑΚΗ ΑΛΓΕΒΡΑ
Παράδειγµα υλοποίησης στην 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
7.13 Σύνθεση των τελεστών
• Έπειτα προβάλουµε µόνο τη στήλη Εργαζόµενοι.Μισθός
Π
εργαζόµενοι.µισθός

εργαζόµενοι.µισθός<Ε.µισθός
(Εργαζόµενοι × ρ
Ε
(Εργαζόµενοι) ))
Εργαζόµενοι.Μισθός
3000
5000
Αυτή η σχέση περιέχει όλες τις τιµές εκτός από την υψηλότερη. Την αφαιρούµε
από την αρχική σχέση
Έτσι ολοκληρώνουµε το ερώτηµα βρίσκοντας τη διαφορά των δύο συνόλων
Π
Μισθός
(Εργαζόµενοι) – Π
Εργαζόµενοι.Μισθός

Εργαζόµενοι.Μισθός<Ε.Μισθός

(Εργαζόµενοι × ρ
Ε
(Εργαζόµενοι) ) )
Εργαζόµενοι.Μισθός
6000
Στην SQL το ερώτηµα γράφεται όπως παρακάτω:
(SELECT DISTINCT Εργαζόµενοι.Μισθός, FROM Εργαζόµενοι) EXCEPT
(SELECT DISTINCT Εργαζόµενοι.Μισθός,
FROM Εργαζόµενοι, Εργαζόµενοι AS Ε WHERE
Εργαζόµενοι.Μισθός<Ε.Μισθός)
7.13 ΣΥΝΘΕΣΗ ΤΩΝ ΤΕΛΕΣΤΩΝ
Μπορούν να δηµιουργηθούν εκφράσεις χρησιµοποιώντας πολλαπλούς τελεστές
π.χ. συνδυασµός καρτεσιανού γινοµένου και επιλογής σ
A=Γ
(R × S)
b 10 r 2 β
b 20 β 2 β
c 10 β 2 β
c 10 α 2 β
b 10 r 1 α
b 20 β 1 α
c 10 β 1 α
c 10 α 1 α
Ε ∆ Γ B A
b 10 r 2 β
b 20 β 2 β
c 10 β 2 β
c 10 α 2 β
b 10 r 1 α
b 20 β 1 α
c 10 β 1 α
c 10 α 1 α
Ε ∆ Γ B A
b 10 β 2 β
c 20 β 2 β
c 10 α 1 α
Ε ∆ Γ B A
b 10 β 2 β
c 20 β 2 β
c 10 α 1 α
Ε ∆ Γ B A
σ
A=Γ
(r x s)
r x s

Σελ. 87
ΣΧΕΣΙΑΚΗ ΑΛΓΕΒΡΑ
7.14 ΠΑΡΑ∆ΕΙΓΜΑΤΑ ΕΡΩΤΗΣΕΩΝ ΣΧΕΣΙΑΚΗΣ ΑΛΓΕΒΡΑΣ
Θα χρησιµοποιήσουµε το παρακάτω παράδειγµα της βάσης δεδοµένων µιας
τράπεζας
ενεργητικό
πόλη
όνοµα-
υποκαταστήµατος
Υποκατάστηµα
ενεργητικό
πόλη
όνοµα-
υποκαταστήµατος
Υποκατάστηµα
υπόλοιπο
όνοµα-
υποκαταστήµατος
αριθµός-
λογαριασµού
Λογαριασµός
υπόλοιπο
όνοµα-
υποκαταστήµατος
αριθµός-
λογαριασµού
Λογαριασµός
αριθµός-
λογαριασµού
όνοµα-πελάτη
Καταθέτης
αριθµός-
λογαριασµού
όνοµα-πελάτη
Καταθέτης
πόλη
οδός
όνοµα-πελάτη
Πελάτης
πόλη
οδός
όνοµα-πελάτη
Πελάτης
ποσό
όνοµα-
υποκαταστήµατος
αριθµός-δανείου
∆άνειο
ποσό
όνοµα-
υποκαταστήµατος
αριθµός-δανείου
∆άνειο
αριθµός-δανείου
όνοµα-πελάτη
∆ανειζόµενος
αριθµός-δανείου
όνοµα-πελάτη
∆ανειζόµενος


υποκατάστηµα (όνοµα-υποκαταστήµατος, πόλη, ενεργητικό)
πελάτης (όνοµα-πελάτη, οδός, πόλη)
λογαριασµός (αριθµός-λογαριασµού, όνοµα-υποκαταστήµατος, υπόλοιπο)
δάνειο (αριθµός-δανείου, όνοµα-υποκαταστήµατος, ποσό)
καταθέτης (όνοµα-πελάτη, αριθµός-λογαριασµού)
δανειζόµενος (όνοµα-πελάτη, αριθµός-δανείου)


Π.χ. Βρείτε τα δάνεια άνω των 1200.
σ
ποσό > 1200
(δάνειο)

Π.χ. Βρείτε τον αριθµό δανείου για κάθε δάνειο ποσού µεγαλύτερου από 1200.
Π
αριθµός-δανείου

ποσό>1200
(δάνειο))

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

Π.χ. Βρείτε τα ονόµατα όλων των πελατών που έχουν πάρει δάνειο από το
υποκατάστηµα Κρήνης
Π
όνοµα-πελάτης

όνοµα-υποκαταστήµατος="Κρήνης"

δανειζόµενος.αριθµός-δανείου=

δάνειο.αριθµός-δανείου
(δανειζόµενος × δάνειο)))


Π.χ. Βρείτε τα ονόµατα όλων των πελατών που έχουν πάρει δάνειο από το
υποκατάστηµα Κρήνης αλλά δεν έχουν λογαριασµό σε κανένα υποκατάστηµα της
τράπεζας.
Π
όνοµα-πελάτης

όνοµα-υποκαταστήµατος ="Κρήνης"


δανειζόµενος.αριθµός-δανείου = δάνειο.αριθµός-δανείου
(δανειζόµενος ×
δάνειο))) – Π
όνοµα-πελάτη
(Λογαριασµός)


Π.χ. Βρείτε τα ονόµατα όλων των πελατών που έχουν πάρει δάνειο από το
υποκατάστηµα Βενιζέλου
Π
όνοµα-πελάτη

όνοµα-υποκαταστήµατος="Βενιζέλου"

δανειζόµενος.αριθµός-
δανείου=δάνειο.αριθµός-δανείου
(δανειζόµενος × δάνειο)))

ή αλλιώς
Π
όνοµα-πελάτη

δάνειο.αριθµός-δανείου= δανειζόµενος.αριθµός-δανείου

( (σ
όνοµα-υποκαταστήµατος="Βενιζέλου"
(δάνειο)) × δανειζόµενος) )

Π.χ. Βρείτε το υψηλότερο υπόλοιπο λογαριασµού. Μετονοµάστε τη σχέση
λογαριασµός ως d. Η ερώτηση είναι
Π
υπόλοιπο
(λογαριασµός) –
Π
λογαριασµός.υπόλοιπο

λογαριασµός.υπόλοιπο<d.υπόλοιπο
(λογαριασµός ×
ρ
d
(λογαριασµός) ) )

Σελ. 89
ΣΧΕΣΙΑΚΗ ΑΛΓΕΒΡΑ
7.15 ΕΠΙΣΗΜΟΣ ΟΡΙΣΜΟΣ ΤΗΣ ΚΛΕΙΣΤΟΤΗΤΑΣ ΤΩΝ ΒΑΣΙΚΩΝ ΠΡΑΞΕΩΝ
Έστω Ε
1
και Ε
2
εκφράσεις της σχεσιακής άλγεβρας. Οι ακόλουθες είναι όλες
εκφράσεις της σχεσιακής άλγεβρας:
• Ε1 ∪ Ε2
• Ε1 – Ε2
• Ε1 × Ε2
• σ
P
(Ε1), P είναι ένα κατηγόρηµα στις ιδιότητες της Ε1
• Π
s
(Ε1), S είναι µια λίστα που αποτελείται από γνωρίσµατα της Ε1.
• ρ
χ
(Ε1), όπου x είναι το νέο όνοµα για το αποτέλεσµα της Ε1
Σελ. 90
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
ΣΧΕΣΙΑΚΗ ΑΛΓΕΒΡΑ
Παράδειγµα Τελεστή Τοµής Συνόλων

2 α
Β Α
2 α
Β Α
Σχέση R
1 β
2 α
1 α
B A
1 β
2 α
1 α
B A
3 β
2 α
B A
3 β
2 α
B A
Σχέση R ∩ S:
Σχέση S


Παράδειγµα υλοποίησης στην SQL:
(SELECT Α, Β FROM R) INTERSECT (SELECT Α, Β FROM S)

7.18 ΤΕΛΕΣΤΗΣ (ΦΥΣΙΚΗΣ) ΣΥΝΕΝΩΣΗΣ
Ο τελεστής φυσικής σύζευξης (ή συνένωσης) συµβολίζεται µε . Η φυσική
σύζευξη (συνένωση) συνδυάζει το καρτεσιανό γινόµενο µε την επιλογή και την
προβολή σε µία πράξη. Επιλέγει τις συστοιχίες του καρτεσιανού γινοµένου των δύο
σχέσεων για τις οποίες ισχύει η ισότητα στις τιµές εκείνων των γνωρισµάτων που είναι
κοινά και στις δύο σχέσεις και προβάλει µόνο µία φορά τα κοινά γνωρίσµατα. Τα
διπλότυπα απαλείφονται όπως και στις άλλες σχεσιακές πράξεις.
Συµβολισµός:
r s
Έστω r και s σχέσεις στα σχήµατα R και S αντίστοιχα. Το αποτέλεσµα είναι µια
σχέση R ∪ S το οποίο αποκτάται θεωρώντας κάθε ζευγάρι πλειάδων t
r
της r και t
s
της
s.
Εάν το t
r
και το t
s
έχουν την ίδια τιµή για κάθε µία από τις ιδιότητες στην R ∩ S,
µια πλειάδα t προστίθεται στο αποτέλεσµα, όπου
• το t έχει την ίδια τιµή µε το t
r
στην r.
• το t έχει την ίδια τιµή µε το t
s
στην s.
Παράδειγµα:
R = (Α, Β, Γ, ∆)
S = (Ε, Β, ∆)
Το σχήµα του αποτελέσµατος είναι (Α, Β, Γ, ∆, Ε)
Σελ. 92
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 α
∆ Γ B A
λ β 2 δ
κ γ 1 α
λ β 4 γ
κ γ 2 β
κ α 1 α
∆ Γ B A
ε λ 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
ΣΧΕΣΙΑΚΗ ΑΛΓΕΒΡΑ
Π.χ. Βρείτε τα ονόµατα όλων των πελατών που έχουν και δάνειο και
λογαριασµό καταθέσεων στο υποκατάστηµα Κρήνης
Π
όνοµα-πελάτη

όνοµα-υποκαταστήµατος='Κρήνης'
(∆ανειζόµενος Καταθέτης)
Προσέξτε ότι αυτό είναι ισοδύναµο µε το παράδειγµα της τοµής
Π
όνοµα-πελάτη

όνοµα-υποκαταστήµατος='Κρήνης'
(∆ανειζόµενος)) ∩
Π
όνοµα-πελάτη

όνοµα-υποκαταστήµατος='Κρήνης'
(Καταθέτης))
Βλέπουµε δηλαδή ότι υπάρχουν πολλοί τρόποι γραφής ενός ερωτήµατος στη
σχεσιακή άλγεβρα (όπως και στη γλώσσα SQL)

7.19 ΤΕΛΕΣΤΗΣ ∆ΙΑΙΡΕΣΗΣ
Συµβολίζεται µε r ÷ s
Είναι κατάλληλος για τις ερωτήσεις που περιλαµβάνουν τη φράση «για όλα».
Έστω r και s σχέσεις στα σχήµατα R και S αντίστοιχα, όπου
R = (A
1
, … , A
m
, B
1
, …, B
n
) και S = (B
1
, …, B
n
)
Το αποτέλεσµα της r ÷ s είναι µια σχέση στο σχήµα
R – S = (A
1
, …, A
m
)
r ÷ s = {t | t ∈ Π
R-S
(r) ∧∀u ∈ s (tu ∈ r)}

Παράδειγµα Τελεστή ∆ιαίρεσης
2 β
1 ε
6 ε
4 δ
3 δ
1 δ
1 γ
1 β
3 α
2 α
1 α
Β Α
2 β
1 ε
6 ε
4 δ
3 δ
1 δ
1 γ
1 β
3 α
2 α
1 α
Β Α
2
1
Β
2
1
Β
β
α
Α
β
α
Α
Οι σχέσεις
r και s:
r
s
r ÷ s:

Σελ. 94
7.20 Τελεστής Ανάθεσης
Άλλο Παράδειγµα Τελεστή ∆ιαίρεσης

A B
α
α
α
β
β
γ
γ
γ
a
a
a
a
a
a
a
a
C D
α
γ
γ
γ
γ
γ
γ
β
a
a
b
a
b
a
b
b
E
1
1
1
1
3
1
1
1
D
a
b
E
1
1
A B
α
γ
a
a
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
ΣΧΕΣΙΑΚΗ ΑΛΓΕΒΡΑ
Η ανάθεση σε µία µόνιµη σχέση αποτελεί πράξη τροποποίησης της
βάσης δεδοµένων.
Ο τελεστής ανάθεσης () παρέχει έναν άνετο τρόπο για τη σύνταξη σύνθετων
εκφράσεων, εγγραφή προγράµµατος ως ένα σειριακό πρόγραµµα που αποτελείται
από σειρές αναθέσεων ακολουθούµενες από µια έκφραση της οποίας η τιµή
εµφανίζεται ως αποτέλεσµα της ερώτησης.
Η ανάθεση πρέπει να γίνεται σε µια προσωρινή µεταβλητή σχέσης
Παράδειγµα: Γράψε 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
7.22 Συναθροιστικές Συναρτήσεις
E είναι οποιαδήποτε σχέση που έχει προκύψει σαν έκφραση της σχεσιακής
άλγεβρας
Κάθε ένα από τα F
1
, F
2
, …, F
n
είναι αριθµητικές εκφράσεις που αφορούν
σταθερές και γνωρίσµατα στο σχήµα του Ε.
Π.χ. Θεωρήστε µια σχέση Πιστώσεις(όνοµα_πελάτη, υπόλοιπο_πίστωσης),
βρείτε πόσο ακόµα µπορεί κάθε πελάτης να ξοδέψει αν το όριο πίστωσης γίνει 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 είναι οποιαδήποτε έκφραση της σχεσιακής άλγεβρας.
Κάθε F
i
είναι µια συναθροιστική συνάρτηση.
Κάθε Α
i
είναι όνοµα γνωρίσµατος.
G
1
, G
2
, …, G
n
είναι µια λίστα από τα γνωρίσµατα στα οποία θα εφαρµόσουµε
οµαδοποίηση (µπορεί να είναι και άδεια)


Σελ. 97
ΣΧΕΣΙΑΚΗ ΑΛΓΕΒΡΑ
Παράδειγµα Συναθροιστικής πράξης

Σχέση r
10 β β
3 β β
7 β α
7 α α
Γ B A
10 β β
3 β β
7 β α
7 α α
Γ B A
27
άθροισµα-Γ
27
άθροισµα-Γ
g
άθροισµα(Γ)
(r)


Παράδειγµα υλοποίησης στην SQL:
SELECT sum(Γ) FROM r

Παράδειγµα Συναθροιστικής πράξης µε οµαδοποίηση
Όνοµα-υποκαταστήµατος Αριθµός-λογαριασµού υπόλοιπο
Perryridge
Perryridge
Brighton
Brighton
Redwood
A-102
A-201
A-217
A-215
A-222
400
900
750
750
700
λογαριασµός


Η σχέση λογαριασµός οµαδοποιηµένη κατά το όνοµα-υποκαταστήµατος:
όνοµα-υποκαταστήµατος
g
sum(υπόλοιπο)
(λογαριασµός)

Όνοµα-υποκαταστήµατος υπόλοιπο
Perryridge
Brighton
Redwood
1300
1500
700



Το αποτέλεσµα της συνάθροισης δεν έχει όνοµα.
Μπορεί να χρησιµοποιηθεί η πράξη της µετονοµασίας για να δοθεί όνοµα.
Σελ. 98
7.22 Συναθροιστικές Συναρτήσεις
Για ευκολία, επιτρέπεται η µετονοµασία ως µέρος της συναθροιστικής
συνάρτησης.
όνοµα-υποκαταστήµατος
g
sum(υπόλοιπο) as άθρ-υπόλοιπο
(λογαριασµός)
Όνοµα-υποκαταστήµατος άθρ-υπόλοιπο
Perryridge
Brighton
Redwood
1300
1500
700

Παράδειγµα υλοποίησης στην SQL:
SELECT όνοµα-υποκαταστήµατος , SUM(υπόλοιπο) AS άθρ-υπόλοιπο
FROM λογαριασµός
GROUP BY όνοµα-υποκαταστήµατος

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

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



Σελ. 99
ΣΧΕΣΙΑΚΗ ΑΛΓΕΒΡΑ
7.23 ΕΞΩΤΕΡΙΚΗ ΣΥΝΕΝΩΣΗ (ΣΥΖΕΥΞΗ)
Μια επέκταση της συνένωσης που αποτρέπει την απώλεια πληροφοριών.
Υπολογίζει τη συνένωση και στη συνέχεια προσθέτει τις πλειάδες της µιας
σχέσης που δεν συνενώνονται µε την άλλη σχέση, στη σχέση του αποτελέσµατος.
Χρησιµοποιεί τις null τιµές:
• Η τιµή null δηλώνει ότι η τιµή δεν είναι γνωστή ή ότι δεν υπάρχει.
• Όλες οι συγκρίσεις που εµπλέκουν την τιµή null επιστρέφουν άγνωστο
(unknown).

Π.χ. Θεωρήστε το παρακάτω σχεσιακό σχήµα
ποσό
όνοµα-
υποκαταστήµατος
αριθµός-δανείου
∆άνειο
ποσό
όνοµα-
υποκαταστήµατος
αριθµός-δανείου
∆άνειο
αριθµός-δανείου
όνοµα-πελάτη
∆ανειζόµενος
αριθµός-δανείου
όνοµα-πελάτη
∆ανειζόµενος


Η σχέση ∆άνειο Η σχέση ∆ανειζόµενος
Αριθµός-δανείου ποσό
L-170
L-230
L-260
3000
4000
1700
Όνοµα-υποκαταστήµατος
Downtown
Redwood
Perryridge

Όνοµα-πελάτη Αριθµός-δανείου
Jones
Smith
Hayes
L-170
L-230
L-155



Η Εσωτερική συνένωση: θα δώσει σαν αποτέλεσµα
δάνειο δανειζόµενος
Αριθµός-δανείου ποσό
L-170
L-230
3000
4000
Όνοµα-πελάτη
Jones
Smith
Όνοµα-υποκαταστήµατος
Downtown
Redwood

Παράδειγµα υλοποίησης στην SQL:
SELECT δάνειο.αριθµός-δανείου, δάνειο.Όνοµα-υποκαταστήµατος,
δάνειο.ποσό, δανειζόµενος.Όνοµα-πελάτη
FROM δάνειο INNER JOIN δανειζόµενος ON δάνειο.αριθµός-δανείου=
δανειζόµενος.αριθµός-δανείου


Σελ. 100
7.23 Εξωτερική Συνένωση (σύζευξη)

Η Αριστερά εξωτερική συνένωση:
δάνειο δανειζόµενος
L-170
L-230
L-260
3000
4000
1700
Jones
Smith
null
Downtown
Redwood
Perryridge
Αριθµός-δανείου ποσό Όνοµα-πελάτη Όνοµα-υποκαταστήµατος

Παράδειγµα υλοποίησης στην SQL:
SELECT δάνειο.αριθµός-δανείου, δάνειο.Όνοµα-υποκαταστήµατος,
δάνειο.ποσό, δανειζόµενος.Όνοµα-πελάτη
FROM δάνειο LEFT JOIN δανειζόµενος ON δάνειο.αριθµός-δανείου=
δανειζόµενος.αριθµός-δανείου

∆εξιά εξωτερική συνένωση:
δάνειο δανειζόµενος
L-170
L-230
L-155
3000
4000
null
Jones
Smith
Hayes
Downtown
Redwood
null
Αριθµός-δανείου ποσό Όνοµα-πελάτη Όνοµα-υποκαταστήµατος

Παράδειγµα υλοποίησης στην SQL:
SELECT δάνειο.αριθµός-δανείου, δάνειο.Όνοµα-υποκαταστήµατος,
δάνειο.ποσό, δανειζόµενος.Όνοµα-πελάτη
FROM δάνειο RIGHT JOIN δανειζόµενος ON δάνειο.αριθµός-δανείου=
δανειζόµενος.αριθµός-δανείου

Πλήρης εξωτερική συνένωση:
δάνειο δανειζόµενος
L-170
L-230
L-260
L-155
3000
4000
1700
null
Jones
Smith
null
Hayes
Downtown
Redwood
Perryridge
null
Αριθµός-δανείου ποσό Όνοµα-πελάτη Όνοµα-υποκαταστήµατος

Είναι η ένωση αριστερής και δεξιάς εξωτερικής συνένωσης
Σελ.
101
ΣΧΕΣΙΑΚΗ ΑΛΓΕΒΡΑ
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
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
ΣΧΕΣΙΑΚΗ ΑΛΓΕΒΡΑ
Η εισαγωγή µίας µόνο συστοιχίας εκφράζεται επιτρέποντας στο Ε να είναι µία
σταθερή σχέση που έχει µία συστοιχία
Π.χ. Θεωρήστε τις σχέσεις Λογαριασµός(αριθµός-λογαριασµού, όνοµα-
υποκαταστήµατος, υπόλοιπο) και Καταθέτης(όνοµα-πελάτη, αριθµός-λογαριασµού)
και εισάγεται τις πληροφορίες που καθορίζουν ότι ο πελάτης "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
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
Η ΓΛΏΣΣΑ ΒΆΣΕΩΝ ∆Ε∆ΟΜΈΝΩΝ SQL
δεδοµένων (Data Manipulation Language, DML) καθώς και εντολών για καθορισµό
περιορισµών και εξέλιξης του σχήµατος.
Η SQL είναι ανεξάρτητη από την δοµή της βάσης δεδοµένων. Η ροή των
πληροφοριών µεταξύ του χρήστη και της βάσης δεδοµένων είναι όµοια µε την
παρακάτω εικόνα

Το DBMS έχει τον έλεγχο της διαχείρισης της βάσης δεδοµένων. Οι αιτήσεις
στέλνονται στο DBMS όπου επεξεργάζονται και αλλάζουν σε εντολές
ανάγνωσης/εγγραφής προς το διαχειριστή των αρχείων της βάσης.
Η SQL µπορεί να ελέγχει όλες τις λειτουργίες για:
• Ορισµό δεδοµένων
• Ανάκτηση δεδοµένων
• Χειρισµό δεδοµένων
• Έλεγχο πρόσβασης (Εξουσιοδότηση)
• Ακεραιότητα δεδοµένων
• Κοινή χρήση δεδοµένων και Έλεγχο Συναλλαγών

Τα κύρια πλεονεκτήµατα της SQL είναι:
• Ανεξαρτησία κατασκευαστή. Αλλάζοντας ΣΣ∆Β∆ συνήθως δεν χρειάζεται
να ξαναγραφεί ο κώδικας SQL.
• Υψηλού-επιπέδου γλωσσική δοµή (English like), που κάνει εύκολη τη
χρήση της γλώσσας.
• Τυποποίηση. Η τυποποίηση επικυρώθηκε από το ANSI και τον ISO.
• ∆υναµική διαχείριση δεδοµένων. Προσφέρει προχωρηµένες εντολές
επεξεργασίας που επιτρέπουν την ενσωµάτωσή της καθώς και τα
ερωτήµατα πολλαπλών επιπέδων.


Σελ. 106
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
Η ΓΛΏΣΣΑ ΒΆΣΕΩΝ ∆Ε∆ΟΜΈΝΩΝ SQL
Παρακάτω θα αναλύσουµε περισσότερο τα τµήµατα των:
Γλώσσα Ορισµού ∆εδοµένων (Data Definition Language -DDL) - ορισµός,
δηµιουργία, τροποποίηση και διαγραφή σχήµατος.
Γλώσσα Χειρισµού ∆εδοµένων (Data Manipulation Language -DML) - ορισµός,
δηµιουργία, τροποποίηση, διαγραφή και επιλογή δεδοµένων (γλώσσα ερωτήσεων).
8.2 ΒΑΣΙΚΗ ΣΥΝΤΑΞΗ ΓΛΩΣΣΑΣ ΧΕΙΡΙΣΜΟΥ ∆Ε∆ΟΜΕΝΩΝ (ΕΡΩΤΗΣΕΩΝ)
8.2.1 Βασική ∆οµή
Η SQL βασίζεται σε πράξεις συνόλου και σχέσεων µε συγκεκριµένες αλλαγές
και επεκτάσεις. Το αποτέλεσµα µιας ερώτησης SQL είναι µια άλλη σχέση.
Μια συνηθισµένη ερώτηση της SQL έχει τη µορφή:
ονόµατα γνωρισµάτων

select Α
1
, Α
2
, .., Α
n

from R
1
, R
2
, … R
m

ονόµατα σχέσεων
συνθήκη
where P
Α
i
: αναπαριστά γνωρίσµατα, R
i
: αναπαριστά σχέσεις, P: είναι το κατηγόρηµα
Αυτό το ερώτηµα είναι ισοδύναµο µε την έκφραση της σχεσιακής άλγεβρας
π
A
1
, A
2
, .., A
n

P
(R
1
x R
2
x … R
m
))
• select αντιστοιχεί στην πράξη της προβολής της σχεσιακής άλγεβρας.
Τα γνωρίσµατα που θέλουµε να υπάρχουν στο αποτέλεσµα της
ερώτησης.
• from αντιστοιχεί στην πράξη του καρτεσιανού γινοµένου της σχεσιακής
άλγεβρας. Ποιες σχέσεις θα χρησιµοποιηθούν για τον υπολογισµό του
αποτελέσµατος.
• where αντιστοιχεί στη συνθήκη της πράξης της επιλογής στη σχεσιακή
άλγεβρα. Το κατηγόρηµα P έχει γνωρίσµατα των σχέσεων που
εµφανίζονται στο from.
• Όταν δεν υπάρχει το where, το κατηγόρηµα P θεωρείται ότι ισχύει. Π.χ.
select Α
1
, Α
2
, .., Α
n
from R
1
, R
2
, … R
m

• ΠΡΟΣΟΧΗ: ∆ε γίνεται απαλοιφή των διπλών εµφανίσεων (διπλότυπα).
Η SQL επιτρέπει και πολλαπλές εµφανίσεις της ίδιας συστοιχίας σε µια σχέση.
Μια σχέση στην SQL είναι ένα πολυσύνολο (multiset)
Η σηµασιολογία των διπλότυπων στην SQL:
Σελ. 108
8.2 Βασική Σύνταξη Γλώσσας Χειρισµού ∆εδοµένων (ερωτήσεων)
select Α
1
, Α
2
, .., Α
n

from R
1
, R
2
, … R
m

where P
είναι ισότιµο µε την εκδοχή πολλαπλών συνόλων της έκφρασης:
π
A
1
, A
2
, .., A
n

P
(R
1
x R
2
x … R
m
))
Για την Απαλοιφή διπλών εµφανίσεων (διπλότυπα) χρησιµοποιούµε το distinct
. Π.χ.
select distinct Α
1
, Α
2
, .., Α
n
from R
1
, R
2
, … R
m

Παρακάτω θα χρησιµοποιήσουµε δύο σχεσιακά σχήµατα βάσεων δεδοµένων.
Το πρώτο σχεσιακό σχήµα αναπαριστά µία τράπεζα
Λογαριασµός
Υποκατάστηµα
Πελάτης
Καταθέτης
∆άνειο
Όνοµα-Υποκαταστήµατος Αριθµός-Λογαριασµού Υπόλοιπο Όνοµα-Υποκαταστήµατος Αριθµός-Λογαριασµού Υπόλοιπο
Όνοµα-Πελάτη Αριθµός-Λογαριασµού Όνοµα-Πελάτη Αριθµός-Λογαριασµού
Όνοµα-Πελάτη Οδός Πόλη Όνοµα-Πελάτη Οδός Πόλη
Όνοµα-Υποκαταστήµατος Πόλη Ενεργητικό
Όνοµα-Πελάτη Αριθµός-∆ανείου Όνοµα-Πελάτη Αριθµός-∆ανείου
Όνοµα-Υποκαταστήµατος Αριθµός-∆ανείου Ποσό
∆ανειζόµενος

Οι υπογραµµίσεις δείχνουν τα πρωτεύοντα κλειδιά. Τα βέλη δείχνουν που
αναφέρονται τα ξένα κλειδιά.
ενεργητικό
πόλη
όνοµα-
υποκαταστήµατος
Υποκατάστηµα
ενεργητικό
πόλη
όνοµα-
υποκαταστήµατος
Υποκατάστηµα
υπόλοιπο
όνοµα-
υποκαταστήµατος
αριθµός-
λογαριασµού
Λογαριασµός
υπόλοιπο
όνοµα-
υποκαταστήµατος
αριθµός-
λογαριασµού
Λογαριασµός
αριθµός-
λογαριασµού
όνοµα-πελάτη
Καταθέτης
αριθµός-
λογαριασµού
όνοµα-πελάτη
Καταθέτης
πόλη
οδός
όνοµα-πελάτη
Πελάτης
πόλη
οδός
όνοµα-πελάτη
Πελάτης
ποσό
όνοµα-
υποκαταστήµατος
αριθµός-δανείου
∆άνειο
ποσό
όνοµα-
υποκαταστήµατος
αριθµός-δανείου
∆άνειο
αριθµός-δανείου
όνοµα-πελάτη
∆ανειζόµενος
αριθµός-δανείου
όνοµα-πελάτη
∆ανειζόµενος

Σελ.
109
Η ΓΛΏΣΣΑ ΒΆΣΕΩΝ ∆Ε∆ΟΜΈΝΩΝ SQL
Εναλλακτικός τρόπος γραφής του σχήµατος είναι ο παρακάτω:
Υποκατάστηµα (Όνοµα-Υποκαταστήµατος, Πόλη, Ενεργητικό)
Λογαριασµός (Όνοµα-Υποκαταστήµατος, Αριθµός-λογαριασµού, Υπόλοιπο)
∆άνειο (Όνοµα-Υποκαταστήµατος, Αριθµός-∆ανείου, Ποσό)
∆ανειζόµενος (Όνοµα-Πελάτη, Αριθµός-∆ανείου)
Πελάτης (Όνοµα-Πελάτη, Οδός, Πόλη)
Καταθέτης (Όνοµα-Πελάτη, Αριθµός-Λογαριασµού)
Το δεύτερο σχεσιακό σχήµα είναι πιο απλό και θα το χρησιµοποιήσουµε για τα
πρώτα παραδείγµατα ερωτήσεων:
Ταινία Τίτλος Έτος ∆ιάρκεια Είδος
Παίζει
Όνοµα Τίτλος Έτος
Όνοµα ∆ιεύθυνση Έτος-Γέννησης Σύζυγος-Ηθοποιού
Ηθοποιός

Οι υπογραµµίσεις δείχνουν τα πρωτεύοντα κλειδιά. Τα βέλη δείχνουν που
αναφέρονται τα ξένα κλειδιά. Εναλλακτικός τρόπος γραφής του σχήµατος είναι ο
παρακάτω:
Ταινία (Τίτλος, Έτος, ∆ιάρκεια, Είδος)
Παίζει (Όνοµα, Τίτλος, Έτος)
Ηθοποιός (Όνοµα, ∆ιεύθυνση, Έτος-Γέννησης, Σύζυγος-Ηθοποιού)
Προσέξτε ότι και στα δύο παραδείγµατα σχηµάτων υποθέσαµε χάριν απλότητας
ότι τα ονόµατα γενικά είναι µοναδικά γι' αυτό και στους πίνακες δεν χρησιµοποιούνται
κωδικοί σαν πρωτεύοντα κλειδιά. Επίσης η SQL δεν επιτρέπει τον χαρακτήρα ‘-’
(πλην) στα ονόµατα, εποµένως στην πραγµατικότητα θα πρέπει να χρησιµοποιείται το
«όνοµα_πελάτη» αντί για «όνοµα-πελάτη».
Στις επόµενες παραγράφους θα αναλύσουµε:
• Βασική δοµή της select-from-where
• Πράξεις µε Συµβολοσειρές
• ∆ιάταξη Πλειάδων
• Η Πράξη της Μετονοµασίας
• Μεταβλητές Πλειάδων
• Πράξεις και τελεστές Συνόλων
• Η τιµή null
Σελ. 110
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
Η ΓΛΏΣΣΑ ΒΆΣΕΩΝ ∆Ε∆ΟΜΈΝΩΝ 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
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
Η ΓΛΏΣΣΑ ΒΆΣΕΩΝ ∆Ε∆ΟΜΈΝΩΝ 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
8.2 Βασική Σύνταξη Γλώσσας Χειρισµού ∆εδοµένων (ερωτήσεων)
όνοµα-σχέσης.όνοµα-γνωρίσµατος
Το καρτεσιανό γινόµενο στην πρόταση from µαζί µε µία συνθήκη σύζευξης (ή
συνένωσης) στην πρόταση where αντιστοιχεί στην σχεσιακή πράξη της σύζευξης δύο
σχέσεων µε χρήση του κοινού τους γνωρίσµατος (το πρωτεύον κλειδί της µιας που
είναι ξένο κλειδί στην άλλη)
Π.χ. Εντοπίστε το όνοµα, τον αριθµό του δανείου και το ποσό του δανείου όλων
των πελατών που έχουν ένα δάνειο από το Υποκατάστηµα Κρήνης.
select όνοµα-πελάτη, ∆ανειζόµενος.αριθµός-δανείου, ποσό
from ∆ανειζόµενος, δάνειο
where ∆ανειζόµενος.αριθµός-δανείου =δάνειο.αριθµός-δανείου
and όνοµα-υποκαταστήµατος=‘Κρήνης’

Π.χ. Βρείτε τους ηθοποιούς που παίζουν σε ασπρόµαυρες ταινίες
select distinct Παίζει.Όνοµα
from Παίζει, Ταινία
where Παίζει.Τίτλος = Ταινία.Τίτλος and Παίζει.Έτος = Ταινία.Έτος
and Είδος = “Ασπρόµαυρη”

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

Παραδείγµατα
• Έγχρωµες ταινίες µε διάρκεια µέχρι 80 λεπτά
• Οι ηθοποιοί που γεννήθηκαν µετά το 1935 και έπαιξαν σε ασπρόµαυρες
ταινίες πριν το 1945
• Ηθοποιοί που γεννήθηκαν µετά το 1967
• Οι ηθοποιοί που γεννήθηκαν µετά το 1967 και έπαιξαν στην ταινία «ΑΙ»


Σελ.
115
Η ΓΛΏΣΣΑ ΒΆΣΕΩΝ ∆Ε∆ΟΜΈΝΩΝ 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
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
Η ΓΛΏΣΣΑ ΒΆΣΕΩΝ ∆Ε∆ΟΜΈΝΩΝ 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
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
Η ΓΛΏΣΣΑ ΒΆΣΕΩΝ ∆Ε∆ΟΜΈΝΩΝ 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
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
Η ΓΛΏΣΣΑ ΒΆΣΕΩΝ ∆Ε∆ΟΜΈΝΩΝ 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
8.2 Βασική Σύνταξη Γλώσσας Χειρισµού ∆εδοµένων (ερωτήσεων)
Π.χ. Μέγιστο ποσό όλων των λογαριασµών στο υποκατάστηµα Εθνικής
Βενιζελου και τον αριθµό του λογαριασµού!
select Αριθµός-Λογαριασµού, max(Ποσό)
from Λογαριασµός
where Όνοµα-Υποκαταστήµατος = “Βενιζέλου”
Το παραπάνω ερώτηµα θα βγάλει µήνυµα λάθους.

8.2.17 Συναθροιστικές Συναρτήσεις-Οµαδοποίηση (group by)
Τα αποτελέσµατα ενός SQL ερωτήµατος µπορούν να οµαδοποιηθούν µε τη
χρήση της φράση οµαδοποίησης group by <A
1
, A
2
, …, A
n
> - και για κάθε οµάδα
ίδιων εγγραφών να προκύψει ΜΙΑ εγγραφή.
Τα πεδία A
1
, A
2
, …, A
n
πρέπει να εµφανίζονται και στην πρόταση 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
Η ΓΛΏΣΣΑ ΒΆΣΕΩΝ ∆Ε∆ΟΜΈΝΩΝ 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
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(Ποσό)
3
from Καταθέτης, Λογαριασµός, Πελάτης
where Καταθέτης.Αριθµός-Λογαριασµού = Λογαριασµός.Αριθµός-Λογαριασµού
and Καταθέτης.Όνοµα-Πελάτη = Πελάτης.Όνοµα-Πελάτη
and Πόλη = “Ιωάννινα”
1
2
group by Καταθέτης.Όνοµα-Πελάτη
4
having count (distinct Καταθέτης.Αριθµός-Λογαριασµού) >= 3

Αν δεν υπάρχει group by αλλά υπάρχει having, τότε το σύνολο των πλειάδων
θεωρείται ως µια οµάδα.
Σελ.
125
Η ΓΛΏΣΣΑ ΒΆΣΕΩΝ ∆Ε∆ΟΜΈΝΩΝ 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
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
Η ΓΛΏΣΣΑ ΒΆΣΕΩΝ ∆Ε∆ΟΜΈΝΩΝ 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
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
Η ΓΛΏΣΣΑ ΒΆΣΕΩΝ ∆Ε∆ΟΜΈΝΩΝ SQL

8.2.21 Εµφωλιασµένα Υποερωτήµατα - τελεστής some (any)
Ο τελεστής some (any) χρησιµοποιείται για τη σύγκριση συνόλων.
Ο τελεστής some (any) έχει τη σηµασία του τουλάχιστον ένα από ένα σύνολο
Π.χ. Θεωρήστε τη σχέση Ηθοποιός (Όνοµα, ∆ιεύθυνση, Έτος-Γέννησης) και
βρείτε τα Ονόµατα των Ηθοποιών µε Έτος-Γέννησης µικρότερο από το Έτος-
Γέννησης ενός τουλάχιστον ηθοποιού της πόλης της Αθήνας
select Όνοµα
from Ηθοποιός
where Έτος-Γέννησης <some (select Έτος-Γέννησης
from Ηθοποιός
where Πόλη='Αθήνα');

Π.χ. Θεωρήστε τη σχέση Υποκατάστηµα (Όνοµα-Υποκαταστήµατος, Πόλη,
Ενεργητικό) και βρείτε τα ονόµατα υποκαταστηµάτων µε Ενεργητικό µικρότερο από το
Ενεργητικό ενός τουλάχιστον υποκαταστήµατος της πόλης των Σερρών.
select Όνοµα-Υποκαταστήµατος
from Υποκατάστηµα
where Ενεργητικό <some (select Ενεργητικό
from Υποκατάστηµα
where Πόλη='Σέρρες');
0
5
6
0
5
6
(5< some ) = true
0
5
0
) = false
5
0
5 (5 ≠ some ) = true (εφόσον 0 ≠ 5)
(5< some
) = true (5 = some
(δηλαδή, 5 < some πλειάδα στη σχέση)

Επίσης ισχύει (= some) ισοδύναµο. του in
Ωστόσο (≠some) όχι ισοδύναµο του not in
Π.χ. Θεωρήστε τη σχέση Υποκατάστηµα (Όνοµα-Υποκαταστήµατος, Πόλη,
Ενεργητικό) και βρείτε τα υποκαταστήµατα που έχουν ενεργητικό µεγαλύτερο από
κάποιο (τουλάχιστον ένα) Υποκατάστηµα που βρίσκεται στην Αθήνα.
Σελ. 130
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 πόλη = “Σέρρες”)
0
5
6
0
5
6
(5< all ) = false
6
10
4
) = true
5
4
6 (5 ≠ all ) = true (εφόσον 5 ≠ 4 και 5 ≠ 6)
(5< all
) = false (5 = all

Επίσης ισχύει (≠ all) ισοδύναµο του not in
Το (= all) ελέγχει αν το υποερώτηµα έχει µόνο µία τιµή άρα δεν είναι ισοδύναµο
του in.

Σελ.
131
Η ΓΛΏΣΣΑ ΒΆΣΕΩΝ ∆Ε∆ΟΜΈΝΩΝ SQL
Π.χ. Θεωρήστε τη σχέση Λογαριασµός (Όνοµα-Υποκαταστήµατος, Αριθµός-
λογαριασµού, Υπόλοιπο) και βρείτε το υποκατάστηµα µε το µεγαλύτερο µέσο ποσό
καταθέσεων.
select distinct Όνοµα-Υποκαταστήµατος
from Λογαριασµός
group by Όνοµα-Υποκαταστήµατος
having avg (Ποσό) > = all (select avg(Ποσό)
from Λογαριασµός
group by Όνοµα-Υποκαταστήµατος)

Π.χ. Βρείτε τον πιο ηλικιωµένο ηθοποιό (µικρότερο Έτος-Γέννησης) που έπαιξε
στην ταινία "Μανταλένα" (βρίσκουµε πρώτα το Έτος-Γέννησης των ηθοποιών που
έπαιξαν στην ταινία)
select distinct Όνοµα
from Ηθοποιός
where Έτος-Γέννησης <= all (select Έτος-Γέννησης
from Παίζει, Ηθοποιός
where Παίζει.Όνοµα = Ηθοποιός.Όνοµα
and Τίτλος = "Μανταλένα");

Σελ. 132
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
Η ΓΛΏΣΣΑ ΒΆΣΕΩΝ ∆Ε∆ΟΜΈΝΩΝ 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
8.2 Βασική Σύνταξη Γλώσσας Χειρισµού ∆εδοµένων (ερωτήσεων)
Αφού ο τελεστής not exists: επιστρέφει true αν η υποερώτηση είναι κενή,
µπορεί να χρησιµοποιηθεί για έλεγχο αν η σχέση A περιέχει όλη τη σχέση B
A B A B

Άρα B except A null
Τότε not exists (Β except Α) trueΧρησιµοποιείται στην πράξη της
διαίρεσης της σχεσιακής άλγεβρας. Συνήθως αναγνωρίζουµε ότι πρόκειται για
διαίρεση από τη λέξη όλα, ή για όλα στην ερώτηση.

Π.χ. Βρείτε τα ονόµατα των ηθοποιών που έχουν παίξει σε όλες τις ταινίες της
Βουγιουκλάκη
not exists (Β except Α)
select distinct S.Όνοµα
from Παίζει as S
where not exists ( (select Τίτλος, Έτος
from Παίζει
uπολογισµός για
κάθε S
where Όνοµα = "Βουγιουκλάκη")
except
(select Τίτλος, Έτος
from Παίζει as R
where R.Όνοµα = S.Όνοµα) )

Π.χ. Θεωρήστε το παρακάτω παράδειγµα σχεσιακού σχήµατος
ενεργητικό
πόλη
όνοµα-
υποκαταστήµατος
Υποκατάστηµα
ενεργητικό
πόλη
όνοµα-
υποκαταστήµατος
Υποκατάστηµα
υπόλοιπο
όνοµα-
υποκαταστήµατος
αριθµός-
λογαριασµού
Λογαριασµός
υπόλοιπο
όνοµα-
υποκαταστήµατος
αριθµός-
λογαριασµού
Λογαριασµός
αριθµός-
λογαριασµού
όνοµα-πελάτη
καταθέτης
αριθµός-
λογαριασµού
όνοµα-πελάτη
καταθέτης

και βρείτε τα ονόµατα των πελατών που έχουν καταθέσεις σε όλα τα
υποκαταστήµατα της πόλης της Πάτρας.
select distinct S.Όνοµα-Πελάτη
from Καταθέτης as S
where not exists ( (select Όνοµα-Υποκαταστήµατος
from Υποκατάστηµα
where Πόλη = "Πάτρα")
Σελ.
135
Η ΓΛΏΣΣΑ ΒΆΣΕΩΝ ∆Ε∆ΟΜΈΝΩΝ 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
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
Η ΓΛΏΣΣΑ ΒΆΣΕΩΝ ∆Ε∆ΟΜΈΝΩΝ 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 (A
1
, A
2
, ..., A
n
): γνωρίσµατα που πρέπει να ταιριάζουν στη συνένωση
είναι τα A
i
. Τα A
i
πρέπει να είναι γνωρίσµατα κοινά και στις δυο σχέσεις και
εµφανίζονται στο αποτέλεσµα µόνο µια φορά.
Για την εσωτερική συνένωση η συνθήκη δεν είναι υποχρεωτική, όταν λείπει
ισοδυναµεί µε καρτεσιανό γινόµενο.

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

Σελ. 138
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
Η ΓΛΏΣΣΑ ΒΆΣΕΩΝ ∆Ε∆ΟΜΈΝΩΝ SQL
υπόλοιπο
όνοµα- υποκαταστήµατος
αριθµός-λογαριασµού
Λογαριασµός
υπόλοιπο
όνοµα- υποκαταστήµατος
αριθµός-λογαριασµού
Λογαριασµός
αριθµός-λογαριασµού
όνοµα-πελάτη
Καταθέτης
αριθµός-λογαριασµού
όνοµα-πελάτη
Καταθέτης

και βρείτε το µέσο υπόλοιπο για όλα τα υποκαταστήµατα για τα οποία το µέσο
υπόλοιπο είναι µεγαλύτερο των 1200
select Όνοµα-Υποκαταστήµατος, Μέσο-υπόλοιπο
from (select Όνοµα-Υποκαταστήµατος, avg(υπόλοιπο)
from Καταθέτης
group by Όνοµα-Υποκαταστήµατος )
as Αποτέλεσµα(Όνοµα-Υποκαταστήµατος, Μέσο-υπόλοιπο)
where Μέσο-Yπόλοιπο > 1200
Σηµειώστε ότι εδώ δεν χρειάζεται να χρησιµοποιήσουµε την πρόταση having
αφού υπολογίστηκε στην πρόταση from η προσωρινή σχέση Αποτέλεσµα, και τα
γνωρίσµατα της σχέσης Αποτέλεσµα µπορούν να χρησιµοποιηθούν κατευθείαν στην
πρόταση where.
Σελ. 140
8.3 Βασική Σύνταξη Γλώσσας ορισµου ∆εδοµένων
8.3 ΒΑΣΙΚΗ ΣΥΝΤΑΞΗ ΓΛΩΣΣΑΣ ΟΡΙΣΜΟΥ ∆Ε∆ΟΜΕΝΩΝ
Σχετικά µε το λογικό σχήµα, η ΓΟ∆ SQL υποστηρίζει τους ορισµούς:
• του σχήµατος κάθε σχέσης
• του πεδίου τιµών κάθε γνωρίσµατος
• των περιορισµών ακεραιότητας


create table R(A
1
D
1
, A
2
D
2
, ..., A
n
D
n
),
<περιορισµός-ακεραιότητας
1
>,
…,
<περιορισµός-ακεραιότητας
k
>
όπου R είναι το όνοµα της σχέσης, A
i
τα ονόµατα των γνωρισµάτων, και D
i
οι
τύποι των αντίστοιχων πεδίων τιµών.
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
Η ΓΛΏΣΣΑ ΒΆΣΕΩΝ ∆Ε∆ΟΜΈΝΩΝ 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 (A
1
D
1
, A
2
D
2
, ..., A
n
D
n
),
<περιορισµός-ακεραιότητας
1
>,
…,
<περιορισµός-ακεραιότητας
k
>
όπου R είναι το όνοµα της σχέσης, A
i
τα ονόµατα των γνωρισµάτων, και D
i
οι
τύποι δεδοµένων των αντίστοιχων πεδίων τιµών.

Επιτρεπτοί περιορισµοί ακεραιότητας είναι της µορφής:
• primary key A
j1
, A
j
2
, ..., A
jn
, (δεν επιτρέπονται επαναλαµβανόµενες
τιµές και NULL τιµές)
• unique A
j1
, A
j
2
, ..., A
jn
, (δεν επιτρέπονται επαναλαµβανόµενες τιµές;
NULL τιµές επιτρέπονται)
• check P

foreign key (A
i
) references A
i

Παραδείγµατα
create table Πελάτης
(Όνοµα-Πελάτη char(20) not null,
Οδός char(30),
Πόλη char(30),
primary key (Όνοµα-Πελάτη) )


Σελ. 142
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 (A
i
) references A
j

Όταν µια πράξη παραβιάζει έναν περιορισµό αναφοράς απορρίπτεται εκτός αν
έχει οριστεί:
on delete cascade
on update cascade

Παράδειγµα
create table
.. …..
foreign key (Όνοµα-Υποκαταστήµατος) references Υποκατάστηµα
on delete cascade
on update cascade …..
Σελ.
143
Η ΓΛΏΣΣΑ ΒΆΣΕΩΝ ∆Ε∆ΟΜΈΝΩΝ 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
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
Η ΓΛΏΣΣΑ ΒΆΣΕΩΝ ∆Ε∆ΟΜΈΝΩΝ 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
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(A
1
, …, A
n
) values (v
1
, …, v
n
)
(β) γράφουµε µια ερώτηση που το αποτέλεσµα της εισάγεται στη σχέση.
insert into R(A
1
, …, A
n
) select-from-where

Παράδειγµα για το (α)
insert into Λογαριασµός
values (“Ψηλά-Αλώνια”, “A--9732’’, 1200)
Όταν όµως εισάγουµε δεδοµένα µε οποιαδήποτε σειρά , π.χ.,:
insert into Λογαριασµός (Αριθµός-Λογαριασµού, Όνοµα-Υποκαταστήµατος,
Ποσό) values (“A--9732’’, “Ψηλά-Αλώνια”, 1200)

Παράδειγµα για το (β):
Για κάθε πελάτη που έχει πάρει δάνειο από το υποκατάστηµα Ψηλά Αλώνια
προστίθεται ως δώρο ένας λογαριασµός των $200
insert into Λογαρισµός
select Όνοµα-Υποκαταστήµατος, Αριθµός-∆ανείου, 200
from ∆άνειο where Όνοµα-Υποκαταστήµατος = “Ψηλά Αλώνια”

Σελ.
147
Η ΓΛΏΣΣΑ ΒΆΣΕΩΝ ∆Ε∆ΟΜΈΝΩΝ 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
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
Η ΓΛΏΣΣΑ ΒΆΣΕΩΝ ∆Ε∆ΟΜΈΝΩΝ 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
8.4 Τροποποίηση Βάσης ∆εδοµένων Γλώσσα Χειρισµού ∆εδοµένων (ΓX∆)

9 ΣΥΝΑΛΛΑΓΕΣ

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

Εικόνα 1

Γενικά θα µπορούσαµε να πούµε ότι συναλλαγή (transaction) είναι η εκτέλεση
ενός προγράµµατος που προσπελαύνει ή τροποποιεί το περιεχόµενο της βάσης
δεδοµένων.
Ένα πρόγραµµα χρήστη µπορεί να εκτελεί πολλές λειτουργίες στα δεδοµένα
που ανακτεί από τη Β∆, αλλά το Σ∆Β∆ ενδιαφέρεται µόνο για τα δεδοµένα που
διαβάζονται/ γράφονται στη Β∆
Οι βασικές ενέργειες που µπορεί να εκτελέσει ένας χρήστης στη διάρκεια µιας
συναλλαγής είναι:
Ανάγνωση(Χ) - R(X)
Εγγραφή(Χ) - W(X)
Όπού Χ είναι µια πλειάδα (εγγραφή) της βάσης δεδοµένων.
Οι χρήστες υποβάλουν συναλλαγές και πρέπει να µπορούν να θεωρούν ότι
κάθε συναλλαγή εκτελείται µόνη της.
Σελ.
151
ΣΥΝΑΛΛΑΓΕΣ
O Ταυτοχρονισµός ή συνδροµικότητα (concurrency) αποτελεί ένα πρόβληµα
που δηµιουργείται στο Σ∆Β∆ όταν διαπλέκονται οι πράξεις (αναγνώσεις /εγγραφές)
των διαφόρων συναλλαγών
Κάθε Συναλλαγή πρέπει να αφήνει τη Β∆ σε µια συνεπή κατάσταση αν όταν
άρχισε η Συναλλαγή η Β∆ ήταν σε συνεπή κατάσταση.
Το Σ∆Β∆ επιβάλει κάποιους ΠΑ (Περιορισµούς Ακεραιότητας) µε βάση τους ΠΑ
που έχουν δηλωθεί στις εντολές CREATE TABLE
Πέρα από αυτό, το Σ∆Β∆ δεν καταλαβαίνει τη σηµασιολογία των δεδοµένων
(π.χ., δεν καταλαβαίνει πώς να υπολογίσει το επιτόκιο) .

9.1 ΠΡΑΞΕΙΣ ΣΥΝΑΛΛΑΓΩΝ

Εκτός από την ανάγνωση και εγγραφή που προαναφέραµε, σε µια συναλλαγή
µπορούν να εκτελεστούν και οι ακόλουθες πράξεις :
BEGIN έναρξη της συναλλαγής
R(X) ανάγνωση µιας συστοιχίας Χ
W(X) εγγραφή µιας συστοιχίας Χ
END τέλος της συναλλαγής
COMMIT (επικύρωση) - επιτυχία - όλες οι τροποποιήσεις επικυρώνονται και δεν
µπορούν να αναιρεθούν
ABORT ή ROLLBACK (ακύρωση ή ανάκληση) - αποτυχία - όλες οι τροποποιήσεις
πρέπει να αναιρεθούν
• Η πράξη COMMIT TRANSACTION (ή απλώς COMMIT, για συντοµία)
σηµατοδοτεί το επιτυχές τέλος της συναλλαγής: ενηµερώνει το διαχειριστή
συναλλαγών ότι µια λογική µονάδα εργασίας έχει ολοκληρωθεί µε επιτυχία, η βάση
δεδοµένων είναι (ή θα πρέπει να είναι) και πάλι σε συνεπή κατάσταση, και όλες οι
ενηµερώσεις που έγιναν από αυτή τη µονάδα εργασίας µπορούν τώρα να
"επικυρωθούν" (commit), δηλαδή να µονιµοποιηθούν.
• Αντίθετα, η πράξη ROLLBACK TRANSACTION (ή απλώς ROLLBACK, για
συντοµία) σηµατοδοτεί το ανεπιτυχές τέλος της συναλλαγής: ενηµερώνει το
διαχειριστή συναλλαγών ότι κάτι πήγε στραβά, ότι η βάση δεδοµένων ίσως είναι σε
ασυνεπή κατάσταση, και ότι όλες οι ενηµερώσεις που έγιναν µέχρι εκείνο το σηµείο
Σελ. 152
9.1 Πράξεις Συναλλαγών
από τη λογική µονάδα εργασίας πρέπει να "ανασκευαστούν" (roll back), δηλαδή να
αναιρεθούν.
Μια Συναλλαγή µπορεί να να επικυρωθεί (commit) αφού ολοκληρώσει όλες τις
πράξεις της ενώ µπορεί να ακυρωθεί (abort- ROLLBACK ) αφού εκτελέσει κάποιες
από τις πράξεις της.
Το Σ∆Β∆ καταγράφει (logs) όλες τις πράξεις έτσι ώστε να µπορεί να αναιρέσει
(undo) τις πράξεις µιας ακυρωµένης (aborted) συναλλαγής.

R / W
ABORT
COMMIT
ABORT
END






Εικόνα 2

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

• έναρξη Συναλλαγής
• εγγραφή στοιχείου (παλιά, νέα τιµή)
• ανάγνωση στοιχείου
• επικύρωση/ ακύρωση

Εάν είναι γνωστά τα παραπάνω τότε είναι δυνατή η αναίρεση (undo) ή η
επανάληψη (redo) µιας συναλλαγής
(Στην πραγµατικότητα, τα παραπάνω είναι κάπως υπεραπλουστευµένα. Στην
πράξη, το αρχείο καταγραφής ή αλλιώς βιβλίο πεπραγµένων αποτελείται από δύο
µέρη, ένα ενεργό ή online µέρος και ένα αρχειακό ή offline µέρος. Το ενεργό µέρος
Σελ.
153
ΣΥΝΑΛΛΑΓΕΣ
είναι το µέρος που χρησιµοποιείται κατά την κανονική λειτουργία του συστήµατος, για
να καταγράφονται οι λεπτοµέρειες των ενηµερώσεων καθώς εκτελούνται, και
συνήθως τηρείται σε δίσκο. Όταν το ενεργό µέρος γεµίσει, τα περιεχόµενα του
µεταφέρονται στο αρχειακό µέρος, το οποίο - επειδή η επεξεργασία του γίνεται πάντα
σειριακά - συνήθως τηρείται σε ταινίες dat.)
9.2 ΟΙ Ι∆ΙΟΤΗΤΕΣ ACID ΜΙΑΣ ΣΥΝΑΛΛΑΓΗΣ

Οοι συναλλαγές έχουν τέσσερις σηµαντικές ιδιότητες — την ατοµικότητα
(atomicity), τη συνέπεια (consistency), την αποµόνωση (isolation), και την
ανθεκτικότητα (durability), που όλες µαζί λέγονται "ιδιότητες ACID".
Αtomicity (ατοµικότητα) -οι συναλλαγές είναι ατοµικές, είτε όλες οι πράξεις είτε
καµία.
Consistency (συνέπεια) - διατήρηση συνέπειας της Β∆ (µετασχηµατίζει µια
συνεπή κατάσταση της βάσης δεδοµένων σε µια άλλη συνεπή κατάσταση, χωρίς κατ’
ανάγκη να διατηρεί τη συνέπεια σε όλα τα ενδιάµεσα σηµεία)
Isolation (αποµόνωση) - δεν αποκαλύπτει ενδιάµεσα αποτελέσµατα. Οι
ενηµερώσεις οποιασδήποτε δεδοµένης συναλλαγής παραµένουν κρυφές από όλες τις
υπόλοιπες, µέχρι να επικυρωθεί η συναλλαγή.
Durability (µονιµότητα ή διάρκεια) - µετά την επικύρωση µιας Συναλλαγής οι
αλλαγές δεν είναι δυνατόν να χαθούν. Αφού επικυρωθεί µια συναλλαγή, οι
ενηµερώσεις της επιβιώνουν ακόµα και αν επακολουθήσει κατάρρευση του
συστήµατος
Το σύστηµα πρέπει να εγγυάται ότι οι µεµονωµένες εντολές είναι και οι ίδιες
ατοµικές (όλα ή τίποτα). Αυτό το ζήτηµα γίνεται ιδιαίτερα σηµαντικό σε ένα σχεσιακό
σύστηµα, όπου οι εντολές είναι εντολές σε επίπεδο συνόλου και κατά κανόνα
επενεργούν σε πολλές συστοιχίες µαζί. ∆εν πρέπει να επιτρέπεται να αστοχήσει µια
τέτοια εντολή στη µέση της εκτέλεσης της και να αφήσει τη βάση δεδοµένων σε
ασυνεπή κατάσταση (π.χ., µε άλλες συστοιχίες στο σύνολο προορισµού
ενηµερωµένες και άλλες όχι). Με άλλα λόγια, αν συµβεί ένα σφάλµα στη µέση της
εκτέλεσης µιας τέτοιας εντολής, τότε η βάση δεδοµένων πρέπει να παραµείνει
εντελώς αµετάβλητη. Ακόµα, το ίδιο ισχύει ακόµα και αν η εντολή προκαλεί την
εκτέλεση πρόσθετων πράξεων π.χ., εξαιτίας ενός κανόνα αλυσιδωτής (cascade)
διαγραφής ξένου κλειδιού
Σελ. 154
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
ΣΥΝΑΛΛΑΓΕΣ

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

R
1
(X)
W
2
(X)
C
2
T1 T2
W
1
(X)
R
1
(Y)
R
2
(X)
W
1
(Y)
C
1
R
1
(X)
W
2
(X)
C
2
T1 T2
W
1
(X)
R
1
(Y)
R
2
(X)
W
1
(Y)
C
1









Σελ. 156
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
ΣΥΝΑΛΛΑΓΕΣ
(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
9.8 Ισοδύναµα Χρονοπρογράµµατα βάσει Συγκρούσεων
Ένα χρονοπρόγραµµα ισοδύναµο µε ένα σειριακό είναι σωστό.

Όταν για κάθε κατάσταση της Β∆, το αποτέλεσµα της εκτέλεσης του πρώτου
χρονοπρογράµµατος είναι το ίδιο µε το αποτέλεσµα του δεύτερου
χρονοπρογράµµατος τότε λέµε ότι έχουµε Ισοδύναµα Χρονοπρογράµµατα.

9.7.2 Σειριοποιήσιµο Χρονοπρόγραµµα

Ένα χρονοπρόγραµµα που είναι ισοδύναµο µε κάποιο σειριακό ονοµάζεται
σειριοποιήσιµο χρονοπρόγραµµα

9.8 ΙΣΟ∆ΥΝΑΜΑ ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΑ ΒΑΣΕΙ ΣΥΓΚΡΟΥΣΕΩΝ

∆υο χρονοπρογράµµατα είναι ισοδύναµα βάσει συγκρούσεων αν η διάταξη κάθε
ζεύγους συγκρουόµενων πράξεων είναι ίδια και στα δυο χρονοπρογράµµατα.
S1: R
1
(X) R
2
(X) W
1
(X) R
1
(Y) W
2
(X) C
2
W
1
(Y) C
1
Παραδείγµατα
S2: R
2
(X) R
1
(X) W
1
(X) R
1
(Y) W
2
(X) C
2
W
1
(Y) C
1
S3: R
2
(X) W
2
(X) C
2
R
1
(X) W
1
(X) R
1
(Y) W
1
(Y) C
1

S4: R
2
(X) R
1
(X) W
1
(X) R
1
(Y) W
1
(Y) C
1
W
2
(X) C
2


9.8.1 Σειριοποιησιµότητα βάσει Συγκρούσεων:

Ένα χρονοπρόγραµµα S είναι σειριοποιήσιµο βάσει συγκρούσεων αν είναι
ισοδύναµο βάσει συγκρούσεων µε κάποιο σειριακό χρονοπρόγραµµα S’.
Σε αυτήν την περίπτωση µπορούµε να αναδιατάξουµε τις µη συγκρουόµενες
πράξεις στο S µέχρι να σχηµατίσουµε ένα ισοδύναµο σειριακό χρονοπρόγραµµα.
S1: R
1
(X) R
2
(X) W
1
(X) R
1
(Y) W
2
(X) C
2
W
1
(Y) C
1
S2: R
2
(X) R
1
(X) W
1
(X) R
1
(Y) W
2
(X) C
2
W
1
(Y) C
1
Σελ.
159
ΣΥΝΑΛΛΑΓΕΣ

Σειριοποιήσιµα
Sα: R
1
(X) W
1
(X) R
1
(Y) W
1
(Y) C
1
R
2
(X) W
2
(X) C
2

Sβ: R
2
(X) W
2
(X) C
2
R
1
(X) W
1
(X) R
1
(Y) W
1
(Y) C
1
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
10.1 Είδη Αποτυχιών

10 ΑΝΑΚΑΜΨΗ

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

10.1 ΕΙ∆Η ΑΠΟΤΥΧΙΩΝ

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

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

Πώς θα ξέρει όµως το σύστηµα κατά την επανεκκίνηση ποιες συναλλαγές
πρέπει να αναιρέσει και ποιες να επανεκτελέσει;
Σελ.
161
ΑΝΑΚΑΜΨΗ

10.2 ΣΗΜΕΙΟ ΕΛΕΓΧΟΥ

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












Εικόνα 3

Σελ. 162
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
ΑΝΑΚΑΜΨΗ
Μετά από µια αστοχία µέσου, το µέρος του βοηθητικού προγράµµατος που
ασχολείται µε την επαναφορά (restore) χρησιµοποιείται για να ξαναδηµιουργηθεί η
βάση δεδοµένων από ένα καθορισµένο εφεδρικό αντίγραφο.
10.3 ΕΠΙΚΥΡΩΣΗ ∆ΥΟ ΦΑΣΕΩΝ

Η επικύρωση ή αλλιώς ανασκευή της βάσης σε περίπτωση αστοχίας
συστήµατος ή µέσου, ονοµάζεται επικύρωση δύο φάσεων (two-phase commit). Η
επικύρωση δύο φάσεων είναι σηµαντική όταν µια δεδοµένη συναλλαγή µπορεί να
αλληλεπιδρά µε πολλούς ανεξάρτητους "διαχειριστές πόρων", που ο καθένας
διαχειρίζεται το δικό του σύνολο ανακάµψιµων πόρων (recoverable resources) και
συντηρεί το δικό του αρχείο πεπραγµένων για την ανάκαµψη
Στην πρώτη φάση γίνεται καταναγκαστική καταγραφή όλων των
καταχωρίσεων πεπραγµένων της συναλλαγής σε µόνιµο µέσο αποθήκευσης.
Ότι και αν συµβεί µετά, ο διαχειριστής πόρων θα έχει µια µόνιµη εγγραφή της
εργασίας που έκανε για λογαριασµό της συναλλαγής, και έτσι θα µπορεί να
επικυρώσει τις ενηµερώσεις της ή να τις ανασκευάσει, ανάλογα µε την περίπτωση
Στην δεύτερη φάση γίνετε η επικύρωση ή ανασκευή τη συναλλαγής τοπικά,
ανάλογα µε την τελική υπόδειξη (commit, abort)
10.4 ΥΠΟΣΤΗΡΙΞΗ ΑΠΟ ΤΗΝ SQL

·Η SQL υποστηρίζει τις συνηθισµένες εντολές COMMIT και ROLLBACK που
αφορούν τις συναλλαγές και, εποµένως, και την ανάκαµψη µε βάση τις συναλλαγές.
Ισχύουν τα εξής:
• σειριοποιήσιµο είναι ένα χρονοπρόγραµµα εξορισµού
• επαναλαµβανόµενη ανάγνωση – µόνο οι επικυρωµένες εγγραφές µπορούν
να διαβαστούν, οι επαναλαµβανόµενες εγγραφές της ίδιας εγγραφής πρέπει
να επιστρέψουν την ίδια τιµή. Ωστόσο, µια δοσοληψία ίσως να µην είναι
σειριοποιήσιµη – µπορεί να βρει µερικές εγγραφές που έχουν εισαχθεί από την
δοσοληψία, αλλά ίσως να µην τις βρει όλες.
• επικύρωση ανάγνωσης – µόνο εγγραφές που έχουν επικυρωθεί µπορούν να
αναγνωστούν, αλλά διαδοχικές αναγνώσεις µιας εγγραφής µπορεί να
επιστρέψει διαφορετικά (αλλά επικυρωµένες) τιµές
Σελ. 164
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
ΤΑΥΤΟΧΡΟΝΙΣΜΟΣ

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
10.4 Υποστήριξη από την SQL
∆εν υπάρχει καµία εγγύηση ότι η T1 θα εκτελεστεί πριν την T2 η το ανάποδο, αν
και η δύο υποβληθούν ταυτόχρονα. Ωστόσο, το συνολικό αποτέλεσµα πρέπει να είναι
ισοδύναµο µε τη µία ή την άλλη περίπτωση (δηλαδή, µε κάποια σειριακή εκτέλεση των
δύο Συναλλαγών)
BEGIN
R(X)
X=Χ-N
W(X)
R(Y)
Y=Y+N
W(Y)
END
BEGIN
R(X)
X=Χ+M
W(X)
END
T1 T2
σειριακή
εκτέλεση
Τ1 → Τ2
BEGIN
R(X)
X=Χ-N
W(X)
R(Y)
Y=Y+N
W(Y)
END
BEGIN
R(X)
X=Χ+M
W(X)
END
T1 T2
σειριακή
εκτέλεση
Τ2 → Τ1
BEGIN
R(X)
X=Χ-N
W(X)
R(Y)
Y=Y+N
W(Y)
END
BEGIN
R(X)
X=Χ+M
W(X)
END
T1 T2
σειριακή
εκτέλεση
Τ1 → Τ2
BEGIN
R(X)
X=Χ-N
W(X)
R(Y)
Y=Y+N
W(Y)
END
BEGIN
R(X)
X=Χ+M
W(X)
END
T1 T2
σειριακή
εκτέλεση
Τ2 → Τ1
Σε περίπτωση όµως που δεν εκτελεστούν σειριακά οι συναλλαγές θα προκύψει
πρόβληµα όπως φαίνεται.
T1 T2
BEGIN
R(X)
X=Χ-N
END
Απώλεια
Ενηµερώσεων R(Y)
BEGIN
R(X)
X=Χ+M
Y=Y+N
W(Y)
END
Η τιµή του X είναι
λανθασµένη
T1 T2
BEGIN
R(X)
X=Χ-N
END
Απώλεια
Ενηµερώσεων R(Y)
BEGIN
R(X)
X=Χ+M
Y=Y+N
W(Y)
END
Η τιµή του X είναι
λανθασµένη
BEGIN
R(X)
X=Χ-N
END
Απώλεια
Ενηµερώσεων R(Y)
BEGIN
R(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
ΤΑΥΤΟΧΡΟΝΙΣΜΟΣ

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
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
ΤΑΥΤΟΧΡΟΝΙΣΜΟΣ

[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 130120
- t5 R(X) RecA1
- t6 R(X) RecA1 140150
- t7 COMMIT
R(X) RecA3 t8 -
sum=410 και όχι 420
Εικόνα 6

11.4 ΤΕΧΝΙΚΗ ΕΛΕΓΧΟΥ ΚΛΕΙ∆ΩΜΑ (LOCKING)

Μία από τις βασικές τεχνικές που χρησιµοποιούνται για τον έλεγχο ταυτόχρονης
εκτέλεσης δοσοληψιών βασίζεται στην έννοια του κλειδώµατος δεδοµένων.
Το αποτέλεσµα του κλειδώµατος είναι να αποκλειστούν οι άλλες συναλλαγές
από την συστοιχία, και έτσι να µην µπορούν να την µεταβάλουν. Η πρώτη συναλλαγή
έχει έτσι τη δυνατότητα να πραγµατοποιήσει την επεξεργασία της, γνωρίζοντας µε
βεβαιότητα ότι το δεδοµένο αντικείµενο θα παραµείνει σε σταθερή κατάσταση για όσο
χρόνο επιθυµεί η συναλλαγή.
∆ιάφοροι τύποι κλειδωµάτων χρησιµοποιούνται στον έλεγχο του
ταυτοχρονισµού. Πρώτον υπάρχουν τα δυαδικά κλειδώµατα τα οποία είναι απλά,
αλλά κατά κάποιον τρόπο περιοριστικά στη χρήση τους. Υπάρχουν και τα
διαµοιραζόµενα και τα αποκλειστικά κλειδώµατα, τα οποία παρέχουν πιο γενικευµένες
δυνατότητες κλειδώµατος.
Σελ. 170
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
ΤΑΥΤΟΧΡΟΝΙΣΜΟΣ
Το "Ο" (όχι) σηµαίνει σύγκρουση (conflict δηλαδή η αίτηση της Β δεν µπορεί να
ικανοποιηθεί και η Β περνάει σε κατάσταση αναµονής), ενώ το "Ν" (ναι) σηµαίνει
συµβατότητα (η αίτηση της Β ικανοποιείται). Το µητρώο είναι προφανώς συµµετρικό.

11.6 ΠΡΩΤΟΚΟΛΛΟ ΠΡΟΣΠΕΛΑΣΗΣ ∆Ε∆ΟΜΕΝΩΝ (DATA ACCESS
PROTOCOL)

Μια συναλλαγή που θέλει να ανακαλέσει µια συστοιχία πρέπει πρώτα να
αποκτήσει ένα κλείδωµα S σε αυτή τη συστοιχία.
Μια συναλλαγή που θέλει να ενηµερώσει µια συστοιχία πρέπει πρώτα να
αποκτήσει ένα κλείδωµα Χ σε αυτή τη συστοιχία. Αν κατέχει ήδη ένα κλείδωµα S στη
συστοιχία, όπως συµβαίνει σε µια ακολουθία ανάγνωσης και ενηµέρωσης (Read-
Write), τότε θα πρέπει να προαγάγει το κλείδωµα S σε κλείδωµα επιπέδου Χ.
Αν µια αίτηση κλειδώµατος από τη συναλλαγή Β απορριφθεί επειδή έρχεται σε
σύγκρουση µε ένα κλείδωµα που κατέχει ήδη η συναλλαγή Α, τότε η συναλλαγή Β
περνάει σε κατάσταση αναµονής.
Τα κλειδώµατα Χ διατηρούνται µέχρι το τέλος της συναλλαγής (COMMIT ή
ABORT).

11.7 Α∆ΙΕΞΟ∆Ο (DEADLOCK)

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





Επιστροφή στα τρία προβλήµατα ταυτοχρονισµού
Σελ. 172
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
ΤΑΥΤΟΧΡΟΝΙΣΜΟΣ
έρχεται σε σύγκρουση µε το κλείδωµα Χ που ήδη κατέχει η συναλλαγή Β, έτσι, η Α
περνάει σε κατάσταση αναµονής.
Παραµένει σε αυτή την κατάσταση αναµονής µέχρι να φτάσει η Β στον
τερµατισµό της (είτε µε 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 130120
- t5 R(p) RecA1 S
- t6 W(p) RecA1 140150
R(p) RecA3 t7 Αναµονή
Αναµονή t8 Αναµονή
Σελ. 174
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
ΤΑΥΤΟΧΡΟΝΙΣΜΟΣ
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
11.8 Σειροποιησιµότητα (Serialiability)
11.8 ΣΕΙΡΟΠΟΙΗΣΙΜΟΤΗΤΑ (SERIALIABILITY)

Είναι ένα κριτήριο ορθότητας για έλεγχο συναλλαγών.
Με δεδοµένο ένα σύνολο συναλλαγών, οποιαδήποτε εκτέλεση αυτών των
συναλλαγών (πλεκτή ή όχι) ονοµάζεται χρονοδιάγραµµα (schedule). Η εκτέλεση των
συναλλαγών µίας προς µία, χωρίς διαπλοκή, αποτελεί ένα σειριακό χρονοδιάγραµµα.
Ένα χρονοδιάγραµµα που δεν είναι σειριακό είναι ένα πλεκτό χρονοδιάγραµµα
(interleaved schedule) (ή, απλώς, ένα µη σειριακό χρονοδιάγραµµα).
∆ύο χρονοδιαγράµµατα λέγονται ισοδύναµα αν είναι εγγυηµένο ότι δίνουν το
ίδιο αποτέλεσµα, ανεξάρτητα από την αρχική κατάσταση της βάσης δεδοµένων. Έτσι,
ένα χρονοδιάγραµµα είναι σωστό (δηλαδή σειροποιήσιµο) αν είναι ισοδύναµο µε
κάποιο σειριακό χρονοδιάγραµµα.
Αξίζει να επισηµάνουµε ότι δύο διαφορετικά σειριακά χρονοδιαγράµµατα που
περιλαµβάνουν το ίδιο σύνολο συναλλαγών θα µπορούσαν κάλλιστα να δίνουν
διαφορετικό αποτέλεσµα και, εποµένως, δύο διαφορετικά πλεκτά χρονοδιαγράµµατα
που περιλαµβάνουν αυτές τις συναλλαγές µπορεί επίσης να δίνουν διαφορετικό
αποτέλεσµα και, παρόλα αυτά, να θεωρούνται και τα δύο σωστά.
Αν όλες οι συναλλαγές υπακούουν στο «πρωτόκολλο κλειδώµατος δύο
φάσεων» τότε όλα τα δυνατά πλεκτά χρονοδιαγράµµατα είναι σειροποιήσιµα.
11.9 ΠΡΩΤΟΚΟΛΛΟ ΚΛΕΙ∆ΩΜΑΤΟΣ ∆ΥΟ ΦΑΣΕΩΝ

1. Πριν επενεργήσει σε οποιοδήποτε αντικείµενο (π.χ., σε µια συστοιχία
βάσης δεδοµένων), µια συναλλαγή πρέπει να αποκτήσει ένα κλείδωµα σε
αυτό το αντικείµενο.
2. Αφού απελευθερώσει ένα κλείδωµα, µια συναλλαγή δεν πρέπει ποτέ να
προχωρήσει στην απόκτηση και άλλων κλειδωµάτων.
Μια συναλλαγή που υπακούει σε αυτό το πρωτόκολλο έχει λοιπόν δύο φάσεις,
µια φάση απόκτησης κλειδώµατος και µια φάση απελευθέρωσης κλειδώµατος
Ένα πρωτόκολλο πρόληψης αδιεξόδων, το οποίο χρησιµοποιείται στο
συντηρητικό κλείδωµα δύο φάσεων, ορίζει ότι κάθε δοσοληψία πρέπει να κλειδώνει τα
στοιχεία που χρειάζεται, πριν ξεκινήσει. Αν κάποιο στοιχείο δεν µπορεί να κλειδωθεί,
κανένα δεν κλειδώνεται.
Σελ.
177
ΤΑΥΤΟΧΡΟΝΙΣΜΟΣ
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 IS IS IS ---
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 ΝΝΝ ΝΝΝ
IX IX IX 0 0 0 0 0 0 ΝΝΝ 0 0 0 ΝΝΝ ΝΝΝ
SSS 0 0 0 0 0 0 0 0 0 ΝΝΝ ΝΝΝ ΝΝΝ
IS IS IS 0 0 0 ΝΝΝ ΝΝΝ ΝΝΝ ΝΝΝ ΝΝΝ
--- ΝΝΝ ΝΝΝ ΝΝΝ ΝΝΝ ΝΝΝ ΝΝΝ
Σελ. 178
12.1 Εισαγωγή
12 ΑΣΦΑΛΕΙΑ

12.1 ΕΙΣΑΓΩΓΗ

Οι όροι ασφάλεια και ακεραιότητα ακούγονται συχνά µαζί όταν γίνεται αναφορά
σε βάσεις δεδοµένων, αν και οι δύο έννοιες είναι στην πραγµατικότητα εντελώς
διαφορετικές.
Η ασφάλεια (security) αναφέρεται στην προστασία δεδοµένων από τη
γνωστοποίηση, την αλλοίωση, ή την καταστροφή από µη εξουσιοδοτηµένα άτοµα
H ακεραιότητα αναφέρεται στην ακρίβεια ή την εγκυρότητα των δεδοµένων. Με
άλλα λόγια:
Ασφάλεια σηµαίνει να εξασφαλίζεται ότι οι χρήστες επιτρέπεται να κάνουν αυτά
που επιχειρούν να κάνουν.
Ακεραιότητα (integrity) σηµαίνει να εξασφαλίζεται ότι αυτά που επιχειρούν να
κάνουν οι χρήστες είναι σωστά και δεν θα πρέπει να µπορούν να τροποποιούν
πράγµατα που δεν πρέπει. π.χ., ένας φοιτητής δεν µπορεί να βάλει βαθµούς
Μυστικότητα (secrecy) οι χρήστες θα πρέπει να µπορούν να δουν µόνο ότι
πρέπει π.χ., ένας φοιτητής δεν θα πρέπει να µπορεί να δει τους βαθµούς άλλων
φοιτητών
∆ιαθεσιµότητα (availability) Οι χρήστες θα πρέπει να µπορούν να δούν και να
αλλάξουν τα πράγµατα που τους επιτρέπεται
Υπάρχουν βέβαια και µερικές οµοιότητες: Και σε αυτές τις περιπτώσεις, το
σύστηµα χρειάζεται να είναι ενήµερο για ορισµένους κανόνες που δεν πρέπει να
παραβιάζουν οι χρήστες, οι κανόνες αυτοί πρέπει να καθορίζονται (κατά κανόνα,
από τον υπεύθυνο διαχείρισης βάσεων δεδοµένων — DBA) σε κάποια κατάλληλη
γλώσσα, και να τηρούνται στον κατάλογο του συστήµατος. Το DBMS πρέπει να
παρακολουθεί τις πράξεις των χρηστών µε κάποιον τρόπο, για να εξασφαλίζει την
τήρηση των κανόνων.
12.2 ΠΡΟΒΛΗΜΑΤΑ
Το πρόβληµα της ασφάλειας (security) έχει πολλές πλευρές, µεταξύ των
οποίων οι παρακάτω:
Σελ.
179
ΑΣΦΑΛΕΙΑ
• Νοµικές, κοινωνικές, και ηθικές πλευρές (για παράδειγµα, το άτοµο που
υποβάλλει την αίτηση, π.χ., για την πίστωση ενός πελάτη, έχει νοµικό
δικαίωµα για πρόσβαση στις πληροφορίες που ζητάει;)
• Φυσικοί έλεγχοι (για παράδειγµα, είναι η αίθουσα του υπολογιστή ή του
τερµατικού κλειδωµένη ή ασφαλισµένη µε κάποιον άλλον τρόπο;)
• Ζητήµατα πολιτικής (για παράδειγµα, πώς αποφασίζει η επιχείρηση στην
οποία ανήκει το σύστηµα σε ποιον θα επιτρέπεται πρόσβαση σε τι;)
• Λειτουργικά προβλήµατα (για παράδειγµα, αν χρησιµοποιείται ένας
µηχανισµός µε συνθηµατικά, πώς διατηρούνται κρυφά τα ίδια τα
συνθηµατικά και πόσο συχνά αλλάζουν;)
• Έλεγχοι µέσω του υλικού (για παράδειγµα, παρέχει η µονάδα επεξεργασίας
υπηρεσίες ασφάλειας, όπως κλειδιά προστασίας της µνήµης ή έναν
προνοµιακό τρόπο λειτουργίας;)
• Ασφάλεια µέσω του λειτουργικού συστήµατος (για παράδειγµα, το
υποκείµενο λειτουργικό σύστηµα σβήνει τα περιεχόµενα της µνήµης και τα
αρχεία δεδοµένων όταν τελειώσει την εργασία µε αυτά;)
Και τέλος:
• Ζητήµατα που αφορούν ειδικά το ίδιο το σύστηµα βάσης δεδοµένων (για
παράδειγµα, διαθέτει το σύστηµα βάσης δεδοµένων κάποια έννοια
ιδιοκτησίας δεδοµένων;)
Θα ασχοληθούµε κυρίως µε ζητήµατα αυτής της τελευταίας κατηγορίας µόνο.
12.3 ΠΟΛΙΤΙΚΗ ΑΣΦΑΛΕΙΑΣ
Μια πολιτική ασφάλειας καθoρίζει ποιος έχει τη δικαιοδοσία να κάνει τι
Τα αποτελέσµατα αυτών των αποφάσεων πολιτικής (α) πρέπει να
γνωστοποιηθούν στο σύστηµα (αυτό γίνεται µε εντολές γραµµένες σε κάποια
κατάλληλη γλώσσα ορισµών), και (β) το σύστηµα πρέπει να τα θυµάται (αυτό γίνεται
µε την αποθήκευση τους στον κατάλογο, µε τη µορφή κανόνων ασφάλειας (security
rule), που είναι γνωστοί και ως κανόνες εξουσιοδότησης (authorization)).
Για τα αποτελέσµατα αυτών των αποφάσεων πολιτικής πρέπει να υπάρχει ένα
µέσο για τον έλεγχο µιας δεδοµένης αίτησης πρόσβασης µε βάση τους ισχύοντες
κανόνες ασφάλειας. (Με τον όρο "αίτηση πρόσβασης" εδώ εννοούµε γενικά το
συνδυασµό αιτούµενη πράξη συν αιτούµενο αντικείµενο συν αιτών χρήστης.) Ο
Σελ. 180
12.4 Μηχανισµός Ασφάλειας
έλεγχος αυτός γίνεται από το υποσύστηµα ασφάλειας του DBMS, που είναι γνωστό
και ως υποσύστηµα εξουσιοδοτήσεων.
Το DBMS για να µπορεί να αποφασίζει ποιοι κανόνες ασφάλειας ισχύουν για µια
δεδοµένη αίτηση πρόσβασης, πρέπει να έχει τη δυνατότητα να αναγνωρίζει την
προέλευση αυτής της αίτησης — δηλαδή, τον αιτούντα χρήστη. Γι' αυτόν το λόγο,
όταν οι χρήστες εισέρχονται (sign on) στο σύστηµα, συνήθως απαιτείται να δίνουν όχι
µόνο την ταυτότητα τους (user ID — για να δηλώσουν ποιοι είναι) αλλά και ένα
συνθηµατικό (password — για να αποδείξουν ότι είναι αυτοί που ισχυρίζονται ότι
είναι). Το συνθηµατικό υποτίθεται ότι είναι γνωστό µόνο στο σύστηµα και στους
νόµιµους χρήστες που έχουν τη συγκεκριµένη ταυτότητα χρήστη.

12.4 ΜΗΧΑΝΙΣΜΟΣ ΑΣΦΑΛΕΙΑΣ

Ένας µηχανισµός ασφάλειας µας επιτρέπει την εφαρµογή µιας συγκεκριµένης
πολιτικής
Στο επίπεδο του Σ∆Β∆ δύο βασικοί µηχανισµοί
Α. Επιλεκτικός µηχανισµός ασφάλειας ή Περιπτωσιακός έλεγχος.
(discretionary access control): εκχώρηση προνοµίων στους χρήστες. Κάθε χρήστης
έχει διαφορετικά δικαιώµατα πρόσβασης (προνόµια-privileges, εξουσίες-authorities).
Οι µηχανισµοι αυτού του τύπου είναι πολύ ευέλικτοι και οι συνηθέστεροι στα
περισσότερα ΣΣ∆Β∆.

Β. Υποχρεωτικός µηχανισµός ασφάλειας ή Κανονιστικός έλεγχος.
(manadatory access control): επιβολή ασφάλειας πολλών επιπέδων - διαχωρισµός
των χρηστών σε διάφορα επίπεδα (κλάσεις) ασφάλειας. Κάθε αντικείµενο
χαρακτηρίζεται µε επίπεδο βαθµού ασφαλείας (classification) και κάθε χρήστης έχει
ορισµένο επίπεδο δικαιοδοσίας (clearance). Μηχανισµοί ελέγχου άκαµπτοι.

12.5 Ο ∆ΙΑΧΕΙΡΙΣΤΗΣ Β∆
Ο ∆Β∆ αποτελεί την κεντρική αρχή για την διαχείριση ενός συστήµατος βάσεων
δεδοµένων. Στα καθήκοντα του ∆Β∆ περιλαµβάνεται και η εκχώρηση δικαιωµάτων
στους χρήστες που πρέπει να χρησιµοποιήσουν στο σύστηµα, καθώς και η ένταξη
Σελ.
181
ΑΣΦΑΛΕΙΑ
των χρηστών και των δεδοµένων σε επίπεδα ασφάλειας, σύµφωνα µε την πολιτική
του οργανισµού. Ο ∆Β∆ έχει ένα προνοµιακό λογαριασµό στον Σ∆Β∆, ο οποίος
µερικές φορές ονοµάζεται λογαριασµός συστήµατος και παρέχει αυξηµένες
δυνατότητες οι οποίες δεν είναι διαθέσιµες στους κοινούς λογαριασµούς και χρήστες
της βάσης δεδοµένων. Ο λογαριασµός αυτός είναι παρόµοιος µε τον λογαριασµό
υπερχρήστη (ή root) που έχουν οι διαχειριστές υπολογιστικών συστηµάτων και που
επιτρέπει προσπέλαση σε διαβαθµισµένες εντολές του λειτουργικού συστήµατος. Οι
προνοµιακές εντολές του ∆Β∆ περιλαµβάνουν εντολές για εκχώρηση και αφαίρεση
δικαιωµάτων σε µεµονωµένους λογαριασµούς , χρήστες ή οµάδες χρηστών, καθώς
και για την εκτέλεση των παρακάτω λειτουργιών:
1. ∆ηµιουργία λογαριασµού : η λειτουργία αυτή δηµιουργεί ένα νέο
λογαριασµό και ένα συνθηµατικό για ένα χρήστη ή για µια οµάδα χρηστών,
επιτρέποντας τους την προσπέλαση στο Σ∆Β∆
2. Εκχώρηση προνοµίων: η λειτουργία αυτή επιτρέπει στο ∆Β∆ να
εκχωρήσει διάφορα προνόµια σε συγκεκριµένους λογαριασµούς
3. Αφαίρεση προνοµίων : η λειτουργία αυτή επιτρέπει στο ∆Β∆ να
αφαιρέσει (ακυρώσει) διάφορα προνόµια που είχαν δοθεί προηγουµένως σε
συγκεκριµένους λογαριασµούς
4. Καθορισµός επιπέδου ασφάλειας : η λειτουργία αυτή συνιστάται στην
αντιστοίχηση λογαριασµών των χρηστών στα κατάλληλα επίπεδα ασφάλειας

User ID
Password
User Groups ---> διαφορετικά προνόµια

Ο ∆Β∆ είναι υπεύθυνος για την συνολική ασφάλεια του συστήµατος της βάσης
δεδοµένων. Η λειτουργία 1 στην παραπάνω λίστα χρησιµοποιείτε για να ελέγχεται η
προσπέλαση στο Σ∆Β∆ συνολικά, ενώ οι λειτουργίες 2 και 3 χρησιµοποιούνται για τον
έλεγχο της επιλεκτικής ασφάλειας στην βάση δεδοµένων και η λειτουργία 4
χρησιµοποιείται για τον έλεγχο των υποχρεωτικών δικαιοδοσιών.

Σελ. 182
12.6 Προστασία Προσπέλασης, Λογαριασµοί Χρηστών και Επιθεωρήσεις
Βάσεων ∆εδοµένων.
12.6 ΠΡΟΣΤΑΣΙΑ ΠΡΟΣΠΕΛΑΣΗΣ, ΛΟΓΑΡΙΑΣΜΟΙ ΧΡΗΣΤΩΝ ΚΑΙ
ΕΠΙΘΕΩΡΗΣΕΙΣ ΒΑΣΕΩΝ ∆Ε∆ΟΜΕΝΩΝ.

Όταν ένα άτοµο ή µια οµάδα ατόµων πρέπει να αποκτήσει προσπέλαση σε
ένα σύστηµα βάσεων δεδοµένων, πρέπει πρώτα να ζητήσει ένα λογαριασµό χρήστη.
Ο ∆Β∆, αν υπάρχει δικαιολογηµένη ανάγκη για προσπέλαση στην βάση δεδοµένων,
θα δηµιουργήσει έναν νέο αριθµό λογαριασµού και ένα συνθηµατικό για τον χρήστη.
Ο χρήστης κάθε φορά που επιθυµεί να προσπελάσει την βάση δεδοµένων, πρέπει
να συνδεθεί (log –in) στο Σ∆Β∆ εισάγοντας τον αριθµό λογαριασµού και το
συνθηµατικό. Το Σ∆Β∆ ελέγχει την εγκυρότητα του λογαριασµού και του
συνθηµατικού και, αν είναι έγκυρα, επιτρέπεται στον χρήστη να χρησιµοποιήσει το
Σ∆Β∆ και να προσπελάσει τη βάση δεδοµένων. Τα προγράµµατα εφαρµογών
µπορούν επίσης να θεωρηθούν χρήστες και είναι δυνατόν να απαιτείται από αυτά να
δίνουν συνθηµατικά.
Είναι εύκολη η παρακολούθηση των χρηστών της βάσης δεδοµένων, των
λογαριασµών και των συνθηµατικών τους µε την δηµιουργία ενός κρυπτογραφηµένου
πίνακα ή αρχείου µε δύο πεδία, τα Αριθ_Λογαριασµού και Συνθηµατικό. Ο πίνακας
αυτός µπορεί εύκολα να συντηρηθεί από το Σ∆Β∆. Όταν δηµιουργείται ένας νέος
λογαριασµός, µια νέα εγγραφή εισάγεται στον πίνακα. Όταν ακυρώνεται ένας
λογαριασµός, πρέπει να διαγραφεί από τον πίνακα η αντίστοιχη εγγραφή.
Το σύστηµα της βάσης δεδοµένων πρέπει επίσης να παρακολουθεί όλες τις
πράξεις που εφαρµόζονται από ένα χρήστη στην βάση δεδοµένων κατά την διάρκεια
µιας συνόδου σύνδεσης (log –in session), η οποία αποτελείται από την ακολουθία των
αλληλεπιδράσεων µε την βάση δεδοµένων που εκτελεί ο χρήστης από την στιγµή της
σύνδεσης του µέχρι την στιγµή αποσύνδεσης (log off). Όταν ένας χρήστης συνδέεται
µε το σύστηµα, το Σ∆Β∆ µπορεί να καταγράψει τον αριθµό λογαριασµού του χρήστη
και να τον αντιστοιχίσει µε το τερµατικό από το οποίο ο χρήστης συνδέθηκε. Όλες οι
πράξεις που γίνονται από το τερµατικό αυτό αποδίδονται στον λογαριασµό του
χρήστη, µέχρι ο χρήστης να αποσυνδεθεί. Είναι ιδιαίτερα σηµαντικό να
παρακολουθούνται οι πράξεις ενηµέρωσης που εφαρµόζονται στην βάση δεδοµένων,
έτσι ώστε αν προκληθεί βλάβη στην βάση δεδοµένων να έχει ο ∆Β∆ την δυνατότητα
να ανακαλύψει ποιος την προξένησε.
Για την καταγραφή όλων των ενηµερώσεων που εφαρµόζονται στην βάση
δεδοµένων, καθώς και του χρήστη που εκτέλεσε κάθε ενηµέρωση, µπορούµε να
τροποποιήσουµε τον κατάλογο του συστήµατος. Υπενθυµίζουµε ότι το ηµερολόγιο
Σελ.
183
ΑΣΦΑΛΕΙΑ
συστήµατος περιλαµβάνει µία καταχώρηση για κάθε πράξη που εφαρµόζεται στην
βάση δεδοµένων και που είναι δυνατόν να χρειασθεί (για αναίρεση ή επανάληψη)
κατά την διαδικασία ανάκαµψης από αποτυχία δοσοληψίας ή κατάρρευσης
συστήµατος. Μπορούµε να επεκτείνουµε τις καταχωρήσεις του ηµερολογίου ώστε να
περιλάβουν τον αριθµό λογαριασµού του χρήστη και την ταυτότητα του τερµατικού
άµεσης πρόσβασης που εκτέλεσε κάθε πράξη που έχει καταγραφεί στο ηµερολόγιο.
Αν υπάρχει υποψία βλάβης στη βάση δεδοµένων διενεργείται επιθεώρηση της βάσης
δεδοµένων (database audit), η οποία συνίσταται στην επιθεώρηση του ηµερολογίου
προκειµένου να ελεγχθούν όλες οι πράξεις που εφαρµόστηκαν στην βάση δεδοµένων
κατά την διάρκεια µιας συγκεκριµένης χρονικής στιγµής. Όταν βρεθεί µια µη
επιτρεπόµενη ή παράνοµη πράξη, ο ∆Β∆ µπορεί να εντοπίσει τον αριθµό
λογαριασµού που εκτέλεσε την πράξη αυτή. Οι επιθεωρήσεις των βάσεων δεδοµένων
είναι ιδιαίτερα σηµαντικές σε ευαίσθητες βάσεις δεδοµένων οι οποίες ενηµερώνονται
από πολλές δοσοληψίες και χρήστες, όπως οι τραπεζικές βάσεις δεδοµένων που
ενηµερώνονται από πολλούς υπαλλήλους της τράπεζας. Ένα ηµερολόγιο βάσης
δεδοµένων που χρησιµοποιείται κυρίως για λόγους ασφαλείας ονοµάζεται µερικές
φορές αρχείο επιθεώρησης ή ίχνος ελέγχου (audit trail).

12.7 ΊΧΝΗ ΕΛΕΓΧΟΥ

Είναι σηµαντικό να µη θεωρούµε ότι το σύστηµα ασφάλειας είναι τέλειο. Ένας
επίδοξος εισβολέας που είναι αρκετά αποφασισµένος θα βρει συνήθως έναν τρόπο
να ξεπεράσει τους ελέγχους, ιδιαίτερα αν η ανταµοιβή του θα είναι αρκετά µεγάλη. Γι'
αυτό, σε περιπτώσεις που τα δεδοµένα είναι αρκετά εµπιστευτικά ή η επεξεργασία
τους έχει αρκετά κρίσιµη σηµασία, ένα ίχνος ελέγχου (audit trail) είναι απαραίτητο. Αν,
για παράδειγµα, κάποιες ασυνέπειες των δεδοµένων οδηγούν στην υποψία ότι
κάποιος έχει πειράξει τη βάση δεδοµένων, το ίχνος ελέγχου µπορεί να χρησιµοποιηθεί
για να εξεταστεί τι έχει συµβεί και να εξακριβωθεί αν τα πράγµατα είναι υπό έλεγχο —
ή τουλάχιστον, στην περίπτωση που δεν είναι υπό έλεγχο, να βοηθήσει στον
εντοπισµό του ενόχου. Ένα ίχνος ελέγχου είναι ουσιαστικά ένα ειδικό αρχείο ή βάση
δεδοµένων, µέσα στο οποίο το σύστηµα παρακολουθεί αυτόµατα όλες τις πράξεις
που γίνονται από τους χρήστες στη βάση δεδοµένων. Μια τυπική καταχώριση στο
ίχνος ελέγχου µπορεί να περιέχει τις παρακάτω πληροφορίες:
• αίτηση (πηγαίος κώδικας)
Σελ. 184
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
ΑΣΦΑΛΕΙΑ
αναπαριστά τον τύπο των προνοµίων (εγγραφή, ανάγνωση, τροποποίηση) που
έχει το υποκείµενο 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
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
ΑΣΦΑΛΕΙΑ
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
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
ΑΣΦΑΛΕΙΑ
• Η κλάση 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
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 Bro M20 102
S Red F16 101
class colo Airc
Αid




Χρήστες µε S και TS µπορούν να δουν και τις δυο γραµµές, χρήστες µε C
βλέπουν µόνο 2 γραµµή; ενώ χρήστες µε U δε βλέπουν καµία.
η
Αν ένας χρήστης µε C προσπαθήσει να εισάγει <101,F16,Blue,C>:
Αν επιτρέψουµε την εισαγωγή, γίνετε παραβίαση του περιορισµού κλειδιού.
Αν δεν τον επιτρέψουµε αποκαλύπτουµε ότι υπάρχει ένα άλλο αντικείµενο µε
κλειδί 101 και κλάση > C. Και τελικά διαπιστώνουµε ότι η κλάση είναι µέρος του
κλειδιού ενώ δεν θα έπρεπε.
Το πρόβληµα που παρουσιάζεται το ονοµάσαµε κανάλι διαρροής (covert
channel).Η λύση σε αυτή την διαρροή πληροφόρησης σε µη εξουσιοδοτηµένα άτοµα
µπορεί να δοθεί µε την δηµιουργία πολλαπλών στιγµιότυπων

Σελ.
191
ΚΡΥΠΤΟΓΡΑΦΗΣΗ

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
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
ΚΡΥΠΤΟΓΡΑΦΗΣΗ
Καµία από τις δύο αυτές προσεγγίσεις δεν είναι ιδιαίτερα ασφαλής από µόνη
της, αλλά οι αλγόριθµοι που τις συνδυάζουν και τις δύο παρέχουν έναν πολύ υψηλό
βαθµό ασφάλειας.
Ένας τέτοιος αλγόριθµος είναι το πρότυπο 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
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
ΚΡΥΠΤΟΓΡΑΦΗΣΗ
Για να κρυπτογραφηθεί ένα απόσπασµα απλού κειµένου Ρ (που θεωρούµε για
λόγους απλότητας ότι είναι ένας ακέραιος µικρότερος από τον 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 =
11 e
1.792.160.394.037 modulo 15 = 7
Τώρα, το αρχικό απλό κείµενο Ρ προκύπτει από τις πράξεις:

Ρ = C modulo r
d
= 7 modulo 15
3
= 343 modulo 15
= 13
Σελ. 196
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
ΣΥΓΧΡΟΝΑ ΘΕΜΑΤΑ ΒΑΣΕΩΝ ∆Ε∆ΟΜΕΝΩΝ
14 ΣΥΓΧΡΟΝΑ ΘΕΜΑΤΑ ΒΑΣΕΩΝ ∆Ε∆ΟΜΕΝΩΝ


14.1 ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΈΝΝΟΙΕΣ ΤΩΝ ΧΩΡΙΚΩΝ ΒΑΣΕΩΝ ∆Ε∆ΟΜΕΝΩΝ

Οι χωρικές βάσεις δεδοµένων υποστηρίζουν έννοιες για βάσεις δεδοµένων που
καταγράφουν αντικείµενα σ' έναν πολυδιάστατο χώρο. Για παράδειγµα, χαρτογραφικές
βάσεις δεδοµένων που αποθηκεύουν χάρτες περιέχουν δισδιάστατες χωρικές
περιγραφές των αντικειµένων τους -από χώρες και πολιτείες σε ποταµούς, πόλεις
δρόµους, θάλασσες κοκ. Αυτές οι βάσεις δεδοµένων χρησιµοποιούνται σε πολλές
εφαρµογές όπως περιβαλλοντολογικές, ενεργειακές και διαχείρισης µαχών. Άλλες
βάσεις δεδοµένων, όπως µετεωρολογικές βάσεις δεδοµένων για καιρικές πληροφορίες,
είναι τρισδιάστατες, αφού οι θερµοκρασίες και οι άλλες µετεωρολογικές πληροφορίες
σχετίζονται µε τρισδιάστατα χωρικά σηµεία. Γενικά, µια χωρική βάση δεδοµένων
αποθηκεύει αντικείµενα που περιγράφονται µε χωρικά χαρακτηριστικά. Οι χωρικές
συσχετίσεις µεταξύ των αντικειµένων είναι σηµαντικές και συχνά είναι απαραίτητες όταν
γίνονται επερωτήσεις στη βάση δεδοµένων. Αν και γενικά µια χωρική βάση
δεδοµένων µπορεί να αναφέρεται σ' ένα χώρο n διαστάσεων για οποιοδήποτε η, για
απλότητα θα περιορίσουµε την εξέταση µας σε δύο διαστάσεις.
Οι κυρίες επεκτάσεις που απαιτούνται για χωρικές βάσεις δεδοµένων είναι µοντέλα
που µπορούν να ερµηνεύσουν τα χωρικά χαρακτηριστικά. Επιπλέον, για βελτίωση της
απόδοσης συχνά απαιτούνται ειδικές δοµές ευρετηρίων και αποθήκευσης. Ας
εξετάσουµε πρώτα µερικές από τις επεκτάσεις του µοντέλου για χωρικές βάσεις
δεδοµένων δύο διαστάσεων. Οι βασικές επεκτάσεις που χρειάζονται είναι να
συµπεριληφθούν γεωµετρικές έννοιες δύο διαστάσεων όπως σηµεία, γραµµές και
τµήµατα γραµµών, κύκλοι, πολύγωνα και τόξα ώστε να προσδιορίζονται τα χωρικά
χαρακτηριστικά των αντικειµένων. Επιπλέον χρειάζονται χωρικές πράξεις για να
εφαρµοσθούν στα χωρικά χαρακτηριστικά των αντικειµένων -για παράδειγµα, να
υπολογισθεί η απόσταση µεταξύ δύο αντικειµένων- καθώς και λογικές χωρικές
συνθήκες -για παράδειγµα, να ελεγχθεί αν δύο αντικείµενα επικαλύπτονται χωρικά. Για
να δειχθεί αυτό, θεωρήστε µια βάση δεδοµένων που χρησιµοποιείται για εφαρµογές
διαχείριση; έκτακτων αναγκών. Χρειάζεται µια περιγραφή των χωρικών θέσεων
πολλών τύπων αντικειµένων. Μερικά από τα αντικείµενα αυτά γενικά έχουν στατικά
χωρικά χαρακτηριστικά, όπως δρόµοι και εθνικές οδοί, αντλίες νερού (για έλεγχο
Σελ. 198
14.1 Εισαγωγή στις Έννοιες των Χωρικών Βάσεων ∆εδοµένων
πυρκαγιών), αστυνοµικά τµήµατα, πυροσβεστικοί σταθµοί και νοσοκοµεία. Αλλα
αντικείµενα έχουν δυναµικά χωρικά χαρακτηριστικά που αλλάζουν χρονικά, όπως
αστυνοµικά οχήµατα, ασθενοφόρα ή πυροσβεστικά οχήµατα.
14.1.1 Κατηγορίες Τυπικών Χωρικών Επερωτήσεων

Τα παρακάτω δείχνουν τρεις κατηγορίες τυπικών χωρικών
επερωτήσεων:
• Επερώτηση διαστήµατος: Βρίσκει τα αντικείµενα ενός συγκεκριµένου τύπου
που βρίσκονται µέσα σε δεδοµένη χωρική περιοχή ή σε συγκεκριµένη
απόσταση από δοθείσα θέση. (Για παράδειγµα, βρίσκει όλα τα νοσοκοµεία που
βρίσκονται στην περιοχή της πόλης του Ντάλας ή βρίσκει όλα τα ασθενοφόρα σε
απόσταση πέντε µιλίων από τη θέση ενός ατυχήµατος).
• Επερώτηση για τον κοντινότερο γείτονα: Βρίσκει ένα αντικείµενο
συγκεκριµένου τύπου που βρίσκεται πιο κοντά σε δεδοµένη θέση. (Για
παράδειγµα, βρίσκει το περιπολικό που βρίσκεται πιο κοντά σε συγκεκριµένη
θέση).
• Χωρικές συνενώσεις ή επικαλύψεις: Τυπικά συνενώνει αντικείµενα δύο
τύπων µε βάση κάποια χωρική συνθήκη, όπως αντικείµενα που τέµνονται ή
επικαλύπτονται χωρικά ή που βρίσκονται σε κάποια απόσταση το ένα από το
άλλο. (Για παράδειγµα, βρίσκει όλες τις πόλεις που βρίσκονται σ' έναν
αυτοκινητόδροµο ή βρίσκει όλα τα σπίτια που απέχουν δύο µίλια από µια
λίµνη.)
Για να απαντηθούν αποτελεσµατικά αυτοί και άλλοι τύποι χωρικών
επερωτήσεων χρειάζονται ειδικές τεχνικές για χωρικά ευρετήρια. Μια από τις πιο
γνωστές τεχνικές είναι η χρήση R-δένδρων και των παραλλαγών τους. Τα R-δένδρα
οµαδοποιούν στους ίδιους τερµατικούς κόµβους (φύλλα) ενός δοµηµένου
δενδροειδούς ευρετηρίου τα αντικείµενα που βρίσκονται φυσικά κοντά µε κάποια
χωρική προσέγγιση. Αφού ένα φύλο µπορεί να δείχνει µόνο σε κάποιο πλήθος
αντικειµένων, χρειάζονται αλγόριθµοι για τον διαχωρισµό του χώρου σε
ορθογώνιους υποχώρους που περιέχουν τα αντικείµενα. Τυπικά κριτήρια για τον
διαχωρισµό του χώρου περιλαµβάνουν την ελαχιστοποίηση των ορθογώνιων
περιοχών, αφού αυτό οδηγεί σε γρήγορη συντόµευση του χώρου αναζήτησης.
Προβλήµατα όπως η ύπαρξη αντικειµένων µε επικαλυπτόµενες χωρικές περιοχές
αντιµετωπίζονται µε διαφορετικούς τρόπους από τις πολλές διαφορετικές παραλλαγές
Σελ.
199
ΣΥΓΧΡΟΝΑ ΘΕΜΑΤΑ ΒΑΣΕΩΝ ∆Ε∆ΟΜΕΝΩΝ
των R-δένδρων. Οι εσωτερικοί κόµβοι των R-δένδρων αντιστοιχούν σε ορθογώνια που
η περιοχή τους καλύπτει όλα τα ορθογώνια του υποδένδρου τους. Εποµένως τα R-
δένδρα µπορουν να απαντήσουν εύκολα επερωτήσεις όπως: βρες όλα τα αντικείµενα σε
δοθείσα περιοχή, περιορίζοντας τη δενδρική αναζήτηση σε εκείνα τα υποδένδρα των
οποίων τα ορθογώνια τέµνονται µε την περιοχή που δίδεται στην επερώτηση.
Άλλες χωρικές δοµές αποθήκευσης περιλαµβάνουν τα τετραδικά δένδρα και τις
παραλλαγές τους. Γενικά τα τετραδικά δένδρα χωρίζουν κάθε χώρο ή υποχώρο σε
περιοχές ίσου µεγέθους και προχωρούν µε τις υποδιαιρέσεις κάθε υποχώρου για να
προσδιορίσουν τις θέσεις των διαφόρων αντικειµένων. Πρόσφατα έχουν προταθεί
πολλές νέες δοµές χωρικής προσπέλασης και η περιοχή αυτή είναι ακόµη ανοικτή
ερευνητικά.
14.2 ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΈΝΝΟΙΕΣ ΒΑΣΕΩΝ ∆Ε∆ΟΜΕΝΩΝ ΠΟΛΥΜΕΣΩΝ

Οι βάσεις δεδοµένων πολυµέσων παρέχουν χαρακτηριστικά που επιτρέπουν
στους χρήστες να αποθηκεύουν και να κάνουν επερωτήσεις σε διαφορετικούς τύπους
πληροφοριών πολυµέσων που περιλαµβάνουν εικόνες (όπως φωτογραφίες ή σχέδια),
ακολουθίες βίντεο (ταινίες ειδήσεις κλπ), ακολουθίες ήχου (όπως τραγούδια, τηλεφωνικά
µηνύµατα, ή αγορεύσεις) και έγγραφα (όπως βιβλία και άρθρα). Οι βασικοί τύποι
επερωτήσεων βάσης δεδοµένων που απαιτούνται περιλαµβάνουν τον εντοπισµό των
πηγών πολυµέσων οι οποίες περιέχουν κάποια αντικείµενα που ενδιαφέρουν. Για
παράδειγµα, µπορεί κάποιος να θέλει να εντοπίσει από µια βάση δεδοµένων βίντεο όλες
τις ακολουθίες βίντεο που περιέχουν ένα συγκεκριµένο πρόσωπο, έστω τον Κλίντον.
Μπορεί επίσης να θέλει να ανακτήσει ακολουθίες βίντεο που να περιέχουν κάποιες
δραστηριότητες, όπως βίντεο στα οποία επιτυγχάνεται γκολ σ' ένα ποδοσφαιρικό παιγνίδι
από συγκεκριµένο παίκτη ή οµάδα.
Οι παραπάνω τύποι επερωτήσεων αναφέρονται σαν ανάκτηση µε βάση το
περιεχόµενο, επειδή η. ανάκτηση από την πηγή του πολυµέσου βασίζεται στο ότι πε-
ριέχει κάποια αντικείµενα ή δραστηριότητες. Εποµένως µια βάση δεδοµένων πολυµέσων
πρέπει να χρησιµοποιεί κάποιο µοντέλο για την οργάνωση και τα ευρετήρια των πηγών
πολυµέσων που θα βασίζεται στα περιεχόµενα τους. Ο προσδιορισµός των
περιεχοµένων των πηγών πολυµέσων είναι µια δύσκολη και χρονοβόρα προσπάθεια.
Υπάρχουν δύο βασικές προσεγγίσεις. Η πρώτη βασίζεται στην αυτόµατη ανάλυση των
πηγών πολυµέσων για τον προσδιορισµό κάποιων µαθηµατικών χαρακτηριστικών του
περιεχοµένου τους. Η προσέγγιση αυτή χρησιµοποιεί διαφορετικές τεχνικές ανάλογα µε
τον τύπο της πηγής του πολυµέσου (εικόνα, κείµενο, βίντεο ή ήχος). Η δεύτερη
Σελ. 200
14.2 Εισαγωγή στις Έννοιες Βάσεων ∆εδοµένων Πολυµέσων
προσέγγιση εξαρτάται από τον χειρονακτικό προσδιορισµό των αντικειµένων και των
δραστηριοτήτων που ενδιαφέρουν σε κάθε πηγή πολυµέσων και στην χρησιµοποίηση
αυτών των πληροφοριών για τη δηµιουργία ευρετηρίων. Η προσέγγιση αυτή µπορεί να
εφαρµοσθεί σε όλες τις διαφορετικές πηγές πολυµέσων, αλλά απαιτεί µια φάση
χειρονακτικής προεπεξεργασίας όπου κάποιο άτοµο πρέπει να σαρώσει κάθε πηγή
πολυµέσου για να προσδιορίσει και να καταλογραφήσει τα αντικείµενα και τις
δραστηριότητες που περιέχει ώστε να µπορούν να χρησιµοποιηθούν για ευρετηριοποίηση
αυτών των πηγών.
Στο υπόλοιπο αυτού του εδαφίου θα περιγράψουµε πολύ περιληπτικά µερικά από
τα χαρακτηριστικά κάθε τύπου πηγής πολυµέσου -εικόνες, βίντεο, ήχος και πήγε;
κειµένων, µε τη σειρά αυτή.
14.2.1 Εικόνας

Μια εικόνα τυπικά αποθηκεύεται σε µη επεξεργασµένη µορφή σαν ένα σύνολο από
τιµές πλέγµατος η κελιών, ή σε συµπιεσµένη µορφή για εξοικονόµηση χώρου. Η
περιγραφή σχήµατος της εικόνας περιγράφει το σχήµα της µη επεξεργασµένης
εικόνας, που τυπικά είναι ένα ορθογώνιο από κελιά συγκεκριµένου πλάτους και
ύψους. Εποµένως, κάθε εικόνα µπορεί να αναπαρασταθεί από ένα m επί n πλέγµα
από κελιά. Κάθε κελί περιέχει την τιµή ενός εικονοστοιχείου που περιγράφει το
περιεχόµενο του κελιού. Στις µαυρόασπρες εικόνες, τα εικονοστοιχεία µπορεί να είναι
ένα µπιτ. Στην γκρίζα κλίµακα ή στις έγχρωµες εικόνες το εικονοστοιχείο αποτελείται
από πολλά µπιτ. Επειδή οι εικόνες µπορεί να απαιτούν µεγάλο χώρο, συχνά
αποθηκεύονται σε συµπιεσµένη µορφή. Τα πρότυπα συµπίεσης, όπως το πρότυπο
GIF, χρησιµοποιούν διάφορους µαθηµατικούς µετασχηµατισµούς για να µειώσουν το
πλήθος των κελιών που αποθηκεύονται αλλά να διατηρούν τα χαρακτηριστικά της
κύριας εικόνας. Οι µαθηµατικοί µετασχηµατισµοί που µπορούν να χρησιµοποιηθούν
περιλαµβάνουν διακριτούς µετασχηµατισµούς Fourier, διακριτούς συνηµιτονοειδείς
µετασχηµατισµούς και κυµατοειδείς µετασχηµατισµούς.
Για τον εντοπισµό των αντικειµένων που ενδιαφέρουν σε µια εικόνα, η εικόνα
τυπικά χωρίζεται σε οµογενή τµήµατα χρησιµοποιώντας ένα κατηγόρηµα οµογε-
νοποίησης. Για παράδειγµα, σε µια έγχρωµη εικόνα, διαδοχικά κελιά και µε περίπου
ίδιες τιµές εικονοστοιχείου οµαδοποιούνται σε τµήµατα. Η τµηµατοποίηση και η
συµπίεση µπορούν εποµένως να προσδιορίσουν τα βασικά χαρακτηριστικά µιας
εικόνας.
Σελ.
201
ΣΥΓΧΡΟΝΑ ΘΕΜΑΤΑ ΒΑΣΕΩΝ ∆Ε∆ΟΜΕΝΩΝ
Μια τυπική επερώτηση σε µια βάση δεδοµένων εικόνων θα ήταν να βρεθούν οι
εικόνες στη βάση δεδοµένων που µοιάζουν µε µια δοθείσα εικόνα. Η δοθείσα εικόνα
µπορεί να είναι ένα µεµονωµένο τµήµα που περιέχει έστω ένα πρότυπο που εν-
διαφέρει, και η επερώτηση είναι να εντοπισθούν άλλες εικόνες που περιέχουν το ίδιο
πρότυπο. Υπάρχουν δύο βασικές τεχνικές γι' αυτό τον τύπο της αναζήτησης. Η πρώτη
προσέγγιση χρησιµοποιεί µια συνάρτηση απόστασης για να συγκρίνει τη δοθείσα
εικόνα µε τις αποθηκευµένες εικόνες και τα τµήµατα τους. Αν η τιµή της απόστασης
που επιστρέφεται είναι µικρή, τότε η πιθανότητα εύρεσης του προτύπου είναι µεγάλη.
Μπορούν να δηµιουργηθούν ευρετήρια που να οµαδοποιούν τις αποθηκευµένες
εικόνες µε περίπου ίδια µετρική απόσταση έτσι που να περιορίζεται ο χώρος της
αναζήτησης. Η δεύτερη προσέγγιση, που ονοµάζεται προσέγγιση
µετασχηµατισµού, µετράει την οµοιότητα των εικόνων εκτελώντας ένα µικρό αριθµό
µετασχηµατισµών που µπορούν να µετασχηµατίσουν τα κελιά µιας εικόνας για να
ταιριάζουν µε της άλλης. Οι µετασχηµατισµοί περιλαµβάνουν στροφές, µεταφράσεις
και κλιµάκωση. Αν και η τελευταία προσέγγιση είναι πιο γενική , είναι επίσης πιο
χρονοβόρα και δύσκολη.
14.2.2 Βίντεο

Μια πηγή βίντεο τυπικά αναπαριστάνεται από µια ακολουθία από καρέ, όπου
κάθε καρέ είναι µια παγωµένη εικόνα. Ωστόσο, αντί να προσδιορίζονται τα αντίκείµενα
και οι δραστηριότητες σε κάθε ξεχωριστό καρέ, το βίντεο χωρίζεται σε τµήµατα,
όπου κάθε τµήµα αποτελείται από µια ακολουθία διαδοχικών καρέ που περιέχουν τα
ίδια αντικείµενα/δρστηριότητες. Κάθε τµήµα προσδιορίζεται από το αρχικό και το
τελικό καρέ. Τα αντικείµενα και οι δραστηριότητες που προσδιορίζονται σε κάθε τµήµα
βίντεο µπορούν να χρησιµοποιηθούν για την ευρετηριοποίηση των τµηµάτων. Για την
ευρετηριοποίηση των βίντεο έχει προταθεί µια τεχνική ευρετηριοποίησης που
ονοµάζεται δένδρα τµηµάτων καρέ. Το ευρετήριο περιλαµβάνει τόσο αντικείµενα,
όπως άτοµα, σπίτια, αυτοκίνητα, όσο και δραστηριότητες, όπως ένα άτοµο που κάνει
µια οµιλία ή δύο άτοµα που συζητούν.
14.2.3 Κειµένου

Μια πηγή κειµένου είναι βασικά το πλήρες κείµενο κάποιου άρθρου, βιβλίου ή
περιοδικού. Τυπικά η ευρετηριοποίηση αυτών των πηγών επιτυγχάνεται µε τον
προσδιορισµό των λέξεων-κλειδιών που εµφανίζονται στο κείµενο καθώς και των
σχετικών συχνοτήτων τους. Ωστόσο, από τη διαδικασία αυτή διαγράφονται κοινές
Σελ. 202
14.3 ΓΕΩΓΡΑΦΙΚΑ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ
λέξεις (και, άρθρα κλπ.). Επειδή θα µπορούσαν να υπάρχουν πάρα πολλές λέξεις-
κλειδιά στην προσπάθεια ευρετηριοποίησης εγγράφων, έχουν αναπτυχθεί τεχνικές
που ελαττώνουν το πλήθος των λέξεων-κλειδιών στις πιο σχετικές µε τη συλλογή. Για
τον σκοπό αυτό µπορεί να χρησιµοποιηθεί µια τεχνική που βασίζεται σε
µετασχηµατισµούς πινάκων και ονοµάζεται διασπάσεις µοναδικών τιµών
(singular value decopositions (SVD)). Στη συνέχεια µπορεί να χρησιµοποιηθεί µια
τεχνική ευρετηριοποίησης που ονοµάζεται δένδρα τηλεσκοπικών διανυσµάτων ή
TV-δένδρα για την οµαδοποίηση κειµένων.
14.2.4 Ήχου

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

14.3 ΓΕΩΓΡΑΦΙΚΑ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ

Τα γεωγραφικά συστήµατα πληροφοριών (ΓΣΠ- GIS) χρησιµοποιούνται για
συλλογή, µοντελοποίηση, αποθήκευση και ανάλυση πληροφοριών :που
περιγράφουν φυσικές ιδιότητες του γεωγραφικού κόσµου. Τα ΓΣΠ περί
περιλαµβάνουν γενικά δύο τύπους δεδοµένων: (1) χωρικά δεδοµένα,
προερχόµενα ανά από χάρτες, ψηφιακές εικόνες, διοικητικά και πολιτικά όρια.
δρόµους, δίκτυα µεταγωγών,· φυσικά δεδοµένα όπως ποτάµια, εδαφολογικά
χαρακτηριστικά. κλιµατολογικές περιοχές. λόφων και (2) µη χωρικά δεδοµένα,
όπως µετρήσεις απογραφής. οικονοµικά δεδοµένα και πληροφορίες πωλήσεων και
προώθησης προϊόντων. Το ΓΣΠ αποτελούν ένα γρήγορα αναπτυσσόµενο πεδίο
που προσφέρει πολύ πιο πρωτοποριακές προσεγγίσεις για την αντιµετώπιση
µερικών τεχνικών απαιτήσεων.
Σελ.
203
ΣΥΓΧΡΟΝΑ ΘΕΜΑΤΑ ΒΑΣΕΩΝ ∆Ε∆ΟΜΕΝΩΝ

Εικόνα 27.5 Μια πιθανή ταξινόµηση των εφαρµογών ΓΣΠ.

14.3.1 Εφαρµογές ΓΣΠ

Είναι δυνατόν να διαχωριστούν τα ΓΣΠ σε τρεις κατηγορίες:
(1) χαρτογραφικές εφαρµογές,
(2) εφαρµογές µοντελοποίησης της ψηφιοποίησης εδάφους και
(3) εφαρµογές γεωγραφικών αντικειµένων.
Η εικόνα 1 συνοψίζει αυτές τις κατηγορίες.
Στις εφαρµογές χαρτογράφησης και µοντελοποίησης εδάφους, συλλέγονται οι
παραλλαγές των χωρικών γνωρισµάτων -για παράδειγµα, τα εδαφολογικά
χαρακτηριστικά, η πυκνότητα των καλλιεργειών και η ποιότητα του αέρα. Στις
εφαρµογές γεωγραφικών αντικειµένων, τα αντικείµενα που ενδιαφέρουν
προσδιορίζονται από ένα φυσικό πεδίο- για παράδειγµα, εγκαταστάσεις ενέργειας,
εκλογικές περιφέρειες, ιδιοκτησίες, περιοχές διανοµής προϊόντων και όρια πόλεων.
Τα αντικείµενα αυτά σχετίζονται µε συναφή δεδοµένα εφαρµογών -που στο
συγκεκριµένο παράδειγµα µπορεί να είναι κατανάλωση ενέργειας, κατανοµές
ψήφων, όγκος πωλήσεων ιδιοκτησιών, όγκος πωλήσεων προϊόντων και πυκνότητα
κυκλοφορίας.
Σελ. 204
14.3 ΓΕΩΓΡΑΦΙΚΑ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ
Οι δύο πρώτες κατηγορίες εφαρµογών ΓΣΠ απαιτούν µια αναπαράσταση
βασισµένη στο συγκεκριµένο πεδίο, ενώ η τρίτη κατηγορία απαιτεί µια
αναπαράσταση που βασίζεται στα αντικείµενα. Η χαρτογραφική προσέγγιση
περιλαµβάνει ειδικές λειτουργίες που µπορεί να είναι η επικάλυψη επιπέδων
χαρτών για να συνδυασθούν δεδοµένα γνωρισµάτων που θα επιτρέπουν, για
παράδειγµα, τη µέτρηση αποστάσεων στον τρισδιάστατο χώρο και την
επαναταξινόµηση των δεδοµένων στο χάρτη. Η µοντελοποίηση ψηφιοποίησης
εδαφών απαιτεί ψηφιακή αναπαράσταση τµηµάτων της επιφάνειας της γης, µε
χρήση υψωµάτων του εδάφους σαν δειγµατοληπτικά σηµεία που συνδέονται για
να δώσουν ένα µοντέλο επιφάνειας όπως ένα τρισδιάστατο δίκτυο (συνδεδεµένες
γραµµές στις τρεις διαστάσεις) που δείχνει τη µορφολογία του εδάφους. Απαιτεί
λειτουργίες παρεµβολής µεταξύ σηµείων παρατήρησης καθώς και οπτικοποίηση.
Στις γεωγραφικές εφαρµογές που βασίζονται σε αντικείµενα χρειάζονται επιπλέον
χωρικές λειτουργίες οι οποίες ασχολούνται µε δεδοµένα που σχετίζονται µε
δρόµους, φυσικούς αγωγούς, επικοινωνιακά καλώδια, γραµµές ενέργειας, κοκ. Για
παράδειγµα, για δοθείσα περιοχή, µπορεί να χρησιµοποιηθούν συγκρίσιµοι χάρτες
για σύγκριση σε διαφορετικά χρονικά σηµεία για να δείξουν τις αλλαγές σε µερικά
δεδοµένα όπως τοποθεσίες δρόµων, καλωδίων, κτιρίων και ποταµών.
14.3.2 Απαιτήσεις ∆ιαχείρισης ∆εδοµένων από τα ΓΣΠ
Οι παραπάνω λειτουργικές απαιτήσεις των εφαρµογών ΓΣΠ µεταφράζονται
στις επόµενες απαιτήσεις βάσεων δεδοµένων.
Μοντελοποίηση ∆εδοµένων και Αναπαράσταση. Τα δεδοµένα των ΓΣΠ
µπορούν να αναπαρασταθούν µε δύο µορφοποιήσεις: (1) διανυσµατική και (2)
ψηφιογραφι-κή (raster). Τα διανυσµατικά δεδοµένα παριστάνουν γεωγραφικά
αντικείµενα όπως σηµεία, γραµµές και πολύγωνα. Εποµένως µια λίµνη µπορεί να
παριστάνεται σαν πολύγωνο, ή ένας ποταµός σαν µια ακολουθία τµηµάτων γραµµών.
Τα ψηφιογρα-φικά δεδοµένα χαρακτηρίζονται σαν πίνακες από σηµεία, όπου κάθε
σηµείο παριστάνει την τιµή ενός γνωρίσµατος για µια τοποθεσία στον πραγµατικό
κόσµο. Μη αυστηρά, οι ψηφιοποιηµένες εικόνες είναι πίνακες n διαστάσεων όπου κάθε
καταχώρηση είναι µια µονάδα της εικόνας και παριστάνει ένα γνώρισµα. Οι µονάδες
δύο διαστάσεων ονοµάζονται ψηφίδες (pixels), ενώ οι µονάδες τριών διαστάσεων
ονοµάζονται voxels. Τρισδιάστατα δεδοµένα τοµής αποθηκεύονται µε τη µορφή ενός
ψηφιακού µοντέλου υψοµέτρων που βασίζεται σε ψηφιοποίηση (µοντέλο DEM).
Μια άλλη µορφή ψηφιοποίησης που ονοµάζεται τριγωνικό µη κανονικό δίκτυο
(Triangular irregular network - TIN) είναι µια τοπολογική προσέγγιση βασισµένη στα
διανύσµατα που µοντελοποιεί επιφάνειες συνδέοντας δειγµατοληπτικά σηµεία σαν
Σελ.
205
ΣΥΓΧΡΟΝΑ ΘΕΜΑΤΑ ΒΑΣΕΩΝ ∆Ε∆ΟΜΕΝΩΝ
κορυφές τριγώνων και έχει ένα σηµείο πυκνότητας το οποίο µπορεί να µεταβάλλεται µε
την τραχύτητα του εδάφους. Τα παραλληλόγραµµα πλέγµατα (ή οι πίνακες τοµής) είναι
δοµές πινάκων δύο διαστάσεων. Στην ψηφιακή µοντελοποίηση εδάφους (DTM), το
µοντέλο µπορεί να χρησιµοποιηθεί αντικαθιστώντας το υψόµετρο µε ένα γνώρισµα
που ενδιαφέρει όπως η πυκνότητα του πληθυσµού ή η θερµοκρασία του
περιβάλλοντος. Τα δεδοµένα των ΓΣΠ συχνά περιλαµβάνουν µια χρονική δοµή εκτός
από τη χωρική δοµή. Για παράδειγµα, η πυκνότητα της κυκλοφορίας µπορεί να
µετριέται κάθε 60 δευτερόλεπτα σ' ένα σύνολο σηµείων.
Ανάλυση ∆εδοµένων. Τα δεδοµένα των ΓΣΠ υπόκεινται σε διάφορους
τύπους αναλύσεων. Για παράδειγµα, σε εφαρµογές όπως µελέτες διάβρωσης του
εδάφους, µελέτες περιβαλλοντολογικών επιπτώσεων, ή σε προσοµοιώσεις
εξαφάνισης νερών, τα DTM δεδοµένα µπορεί να υπόκεινται σε διάφορων τύπων
γαιοµοοφοµετρικές αναλύσεις-µετρήσεις τιµών κλίσης εδάφους, κλίσης (gradient)
(ρυθµός αλλαγής του υψόµετρου), προσανατολισµού (κατεύθυνση της πυξίδας της
κλίσης). κατατοµή της κυρτότητας (ο ρυθµός αλλαγής της κλίσης), σχεδίου
κυρτότητας (η κυρτότητα των ισοϋψών καµπυλών και άλλων παραµέτρων). Οταν
τα δεδοµένα των ΓΣΠ χρησιµοποιούνται για εφαρµογές λήψης αποφάσεων, µπορεί να
υπόκεινται σε πράξεις συνάθροισης και επέκτασης χρησιµοποιώντας τεχνικές
αποθηκών δεδοµένων. Επιπλέον περιλαµβάνονται γεωµετρικές πράξεις (για τον
υπολογισµό αποστάσεων, εµβαδών, όγκων), τοπολογικές πράξεις (για τον
υπολογισµό επικαλύψεων, τοµών, συντοµότερων δρόµων) και χρονικές πράξεις (για
τον υπολογισµό εσωτερικών επερωτήσεων ή επερωτήσεων που βασίζονται σε
γεγονότα). Η ανάλυση περιλαµβάνει ένα πλήθος χρονικών και χωρικών δεδοµένων.
Ενοποίηση ∆εδοµένων. Τα ΓΣΠ πρέπει να ενοποιήσουν τόσο διανυσµατικά όσο
και ψηφιοποιηµένα δεδοµένα που προέρχονται από διαφορετικές πηγές. Μερικές φορές
οι ακµές και οι περιοχές συνάγονται από µια ψηφιοποιηµένη εικόνα για να σχηµατίσουν
ένα διανυσµατικό µοντέλο, ή αντίστροφα, ψηφιοποιηµένες εικόνες όπως οι
αεροφωτογραφίες χρησιµοποιούνται για την ενηµέρωση διανυσµατικών µοντέλων.
Πολλά συστήµατα συντεταγµένων όπως το Universal Transverse Mercator (UTM), το
σύστηµα γεωγραφικού πλάτους/µήκους, και τοπικά κτηµατογραφικά συστήµατα
χρησιµοποιούνται για τον εντοπισµό τοποθεσιών. ∆εδοµένα προερχόµενα από
διαφορετικά συστήµατα συντεταγµένων απαιτούν κατάλληλους µετασχηµατισµούς. Οι
βασικές δηµόσιες πηγές γεωγραφικών δεδοµένων, που περιλαµβάνουν τα αρχεία
TIGER που κρατούνται από το υπουργείο εµπορίου των ΗΠΑ, χρησιµοποιούνται για
χάρτες δρόµων από πολλά εργαλεία σχεδιασµού δρόµων του Web (πχ.
http://maps.yahoo.com). Συχνά υπάρχουν υψηλής ακρίβειας ανεπαρκείς σε
Σελ. 206
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
ΣΥΓΧΡΟΝΑ ΘΕΜΑΤΑ ΒΑΣΕΩΝ ∆Ε∆ΟΜΕΝΩΝ
αποφυγή κάποιων λεπτοµερειών και επέκταση. Επιπλέον τελεστές
περιλαµβάνουν συµµάζεµα στα όρια των τριγώνων (TIN δεδοµένα) και
συγχώνευση που συνεπάγεται συνδυασµό µοντέλων τα οποία επικαλύπτονται
και επίλυση διαφορών µεταξύ δεδοµένων γνωρισµάτων. Η ερµηνεία των
εδαφών περιλαµβάνει µετατροπές µεταξύ µοντέλων πλεγµάτων, µοντέλων
ισοϋψών καµπυλών και TIN δεδοµένων.
• Ανάλνση προσέγγισης: Πολλές κλάσεις ανάλυσης προσέγγισης περιλαµβάνουν
υπολογισµούς "ζωνών ενδιαφέροντος" γύρω από αντικείµενα, όπως ο
προσδιορισµός µιας ζώνης προστασίας γύρα από ένα αυτοκίνητο σ' έναν
αυτοκινητόδροµο. Οι αλγόριθµοι συντοµότερης διαδροµής που χρησιµοποιούν 2D
και 3D πληροφορίες αποτελούν µια σηµαντική κλάση ανάλυσης προσέγγισης.
• Επεξεργασία ψηφιοποιηµένων εικόνων. Η διαδικασία αυτή µπορεί να
χωρισθεί σε δυο κατηγορίες (1) άλγεβρα χαρτών, που χρησιµοποιείται για
την ενοποίηση γεωγραφικών χαρακτηριστικών σε διαφορετικά στρώµατα του
χάρτη για την παραγωγή νέων χαρτών αλγεβρικά και (2) ψηφιακή ανάλυση
εικόνων, που έχει σχέση µε την ανάλυση µιας ψηφιακής εικόνας για
χαρακτηριστικά όπως ο εντοπισµός πλευρών και αντικειµένοη·. Ένα
παράδειγµα του τελευταίου αποτελεί ο εντοπισµός δρόµων στη δορυφορική
εικόνα µιας πόλης.
• Ανάλυση διχτύων. Τα δίκτυα υπάρχουν στα ΓΣΠ σε πολλές µορφές που πρέπει
να αναλυθούν και µπορεί να υποστούν τµηµατοποίηση, επικάλυψη κοκ. Η
επικάλυψη των δικτύων αναφέρεται σ' έναν τύπο χωρικής συνένωσης όπου ένα
δοθέν δίκτυο -για παράδειγµα, ένα δίκτυο αυτοκινητόδροµων- συνενώνεται µε µια
σηµειακή βάση δεδοµένων -για παράδειγµα, θέσεις ατυχηµάτων για να δώσει,
στην περίπτωση αυτή, ένα προφίλ των ατυχηµάτων σε δρόµους.
14.3.4 Άλλη Λειτουργικότητα των Βάσεων ∆εδοµένων.

Η λειτουργικότητα µιας βάσης δεδοµένων ενός ΓΣΠ υπόκειται και σε άλλες
µελέτες.
• Επεκτασιµότητα: Τα ΓΣΠ πρέπει να µπορούν να επεκταθούν για να
υποστηρίξουν µια ποικιλία από συνεχώς εξελισσόµενες εφαρµογές και τους
αντίστοιχους τύπους δεδοµένων τους. Αν χρησιµοποιείται ένα τυπικό
Σ∆Β∆, πρέπει να υποστηρίζει έναν πυρήνα από τύπους δεδοµένων µε
πρόβλεψη για τον ορισµό επιπλέον τύπων και µεθόδων γι' αυτά τα δεδοµένα.
Σελ. 208
14.3 ΓΕΩΓΡΑΦΙΚΑ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ
• Έλεγχος ποιότητας των δεδοµένων. Όπως και σε πολλές άλλες εφαρµογές,
η ποιότητα των πηγαίων δεδοµένων είναι σηµαντικής αξίας για την παροχή
ακριβών αποτελεσµάτων στις επερωτήσεις. Το πρόβληµα αυτό είναι ιδιαίτερα
σηµαντικό στο πλαίσιο των ΓΣΠ λόγω της ποικιλίας των δεδοµένων, των
πηγών και των τεχνικών µέτρησης που εµπλέκονται καθώς και της απόλυτης
ακρίβειας που αναµένουν οι χρήστες των εφαρµογών.
• Οπτική Αναπαράσταση: Μια σηµαντική λειτουργία στα ΓΣΠ σχετίζεται µε την
οπτική αναπαράσταση -τη γραφική παρουσίαση των εδαφολογικών πληροφοριών
και την κατάλληλη αναπαράσταση των γνωρισµάτων των εφαρµογών που τις
συνοδεύουν. Οι σηµαντικότερες τεχνικές οπτικής αναπαράστασης
περιλαµβάνουν (1) ισοϋψείς καµπύλες µε χρήση ισογοαµµών, χωρικά τµήµατα
γραµµών η καµπυλών µε ίδιες τιµές γνωρίσµατος· (2) φωτοσκίαση, µια µέθοδο
φωτισµού που χρησιµοποιείται για ποσοτική ανάγλυφη απεικόνιση µε χρήση
µεταβαλλόµενης έντασης φωτός για τα επιµέρους τµήµατα του εδαφολογικού
µοντέλου· και (3) προοπτική παρουσίαση, εικόνες τριών διαστάσεων των όψεων
του εδαφολογικού µοντέλου που χρησιµοποιούν µεθόδους προοπτικής προβολής
από τα γραφικά του υπολογιστή. Οι τεχνικές αυτές εκµεταλλεύονται τα
χαρτογραφικά δεδοµένα και άλλα αντικείµενα τριών διαστάσεων από τα
εδαφολογικά δεδοµένα παρέχοντας ζωηρή απόδοση σκηνών όπως αυτές στις
προσοµοιώσεις µαχών και τις ταινίες κινουµένων σχεδίων.
Οι απαιτήσεις αυτές δείχνουν καθαρά ότι τα τυπικά ΣΣ∆Β∆ ή τα ΑΣ∆Β∆ δεν
καλύπτουν τις ειδικές ανάγκες των ΓΣΠ. Εποµένως είναι απαραίτητο να
σχεδιασθούν συστήµατα που να υποστηρίζουν τη διανυσµατική και την
ψηφιοποιηµένη αναπαράσταση, τη χωρική λειτουργικότητα καθώς και τα απαραίτητα
χαρακτηριστικά Σ∆Β∆. Ένα δηµοφιλές ΓΣΠ που ονοµάζεται ARC-INFO και το οποίο
δεν είναι Σ∆Β∆ αλλά ενοποιεί τη λειτουργικότητα των ΣΣ∆Β∆ στο INFO τµήµα του
συστήµατος.

Σελ.
209

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->