Bάσεις ∆εδοµένων

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ
Σχολή Θετικών Επιστηµών και Τεχνολογίας
Πρόγραµµα Σπουδών

ΠΛHPOΦOPIKH
Θεµατική Ενότητα

AΡΧΕΣ TΕΧΝΟΛΟΓΙΑΣ ΛΟΓΙΣΜΙΚΟΥ
Τόµος Γ'

Bάσεις ∆εδοµένων
MIXAHΛ ΞENOΣ
∆ρ Mηχανικός H/Y και Πληροφορικής

∆HMHTPIOΣ XPIΣTO∆OYΛAKHΣ
Kαθηγητής Tµήµατος Mηχανικών H/Y και Πληροφορικής
Πανεπιστηµίου Πατρών

ΠATPA 2000

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ
Σχολή Θετικών Επιστηµών και Τεχνολογίας
Πρόγραµµα Σπουδών
ΠΛHPOΦOPIKH
Θεµατική Ενότητα
APXEΣ TEXNOΛOΓIAΣ ΛOΓIΣMIKOY
Τόµος Γ'
Bάσεις ∆εδοµένων
Συγγραφή
MIXAHΛ ΞENOΣ
∆ρ Mηχανικός H/Y και Πληροφορικής
∆HMHTPIOΣ XPIΣTO∆OYΛAKHΣ
Kαθηγητής Tµήµατος Mηχανικών H/Y και Πληροφορικής Πανεπιστηµίου Πατρών
Κριτική Ανάγνωση
AΛEΞIOΣ ∆EΛHΣ
Aναπληρωτής Kαθηγητής Eπιστήµης Yπολογιστών, Polytechnic University – NY
Ακαδηµαϊκός Υπεύθυνος για την επιστηµονική επιµέλεια του τόµου
ΠANAΓIΩTHΣ ΠINTEΛAΣ
Καθηγητής Tµήµατος Mαθηµατικών Πανεπιστηµίου Πατρών
Επιµέλεια στη µέθοδο της εκπαίδευσης από απόσταση
HΛIAΣ ΣTAYPOΠOYΛOΣ
Γλωσσική Επιµέλεια
IΩANNHΣ ΘEOΦIΛAΣ
Τεχνική Επιµέλεια
ΕΣΠΙ ΕΚ∆ΟΤΙΚΗ Ε.Π.Ε.
Καλλιτεχνική Επιµέλεια – Σελιδοποίηση
TYPORAMA
Συντονισµός ανάπτυξης εκπαιδευτικού υλικού και γενική επιµέλεια των εκδόσεων
ΟΜΑ∆Α ΕΚΤΕΛΕΣΗΣ ΕΡΓΟΥ ΕΑΠ / 1997–2000
ISBN: 960–538–116–8
Kωδικός Έκδοσης: ΠΛH 11/3
Copyright 2000 για την Ελλάδα και όλο τον κόσµο
ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ
Οδός Παπαφλέσσα & Υψηλάντη, 26222 Πάτρα – Τηλ: (0610) 314094, 314206 Φαξ: (0610) 317244
Σύµφωνα µε το Ν. 2121/1993, απαγορεύεται η συνολική ή αποσπασµατική αναδηµοσίευση του βιβλίου αυτού
ή η αναπαραγωγή του µε οποιοδήποτε µέσο χωρίς την άδεια του εκδότη.

¶ÂÚȯfiÌÂÓ·
Πρόλογος ............................................................................................................................................... 9
K∂º∞§∞π√ 1

EÈÛ·ÁˆÁ‹

Σκοπός, Προσδοκώµενα αποτελέσµατα, Έννοιες κλειδιά
Eισαγωγικές παρατηρήσεις ................................................................................................. 11
1.1

1.3

1.4

Βασικοί ορισµοί .......................................................................................................... 13
1.1.1 ∆εδοµένα και πληροφορία .................................................................. 13
1.1.2 Βάση δεδοµένων .......................................................................................... 15
1.1.3 Ιστορική αναδροµή .................................................................................... 17
1.2 Σύστηµα διαχείρισης βάσεων δεδοµένων .................................. 20
1.2.1 ∆ιαφορά βάσης δεδοµένων µε σύστηµα
διαχείρισης βάσεων δεδοµένων ...................................................... 21
1.2.2 ∆οµή ενός συστήµατος διαχείρισης
βάσεων δεδοµένων .................................................................................... 22
1.2.3 Tι παρέχει ένα σύστηµα διαχείρισης
βάσεων δεδοµένων .................................................................................... 23
Τι παρέχει η βάση δεδοµένων ........................................................................ 27
1.3.1 Tαυτόχρονη προσπέλαση ..................................................................... 28
1.3.2 Ταχύτατη εξαγωγή απαντήσεων ..................................................... 28
1.3.3 Eυελιξία ............................................................................................................... 29
1.3.4 Υψηλή ποιότητα δεδοµένων .............................................................. 29
1.3.5 Αιτίες για µη χρήση βάσεων δεδοµένων ................................ 30
Επίπεδα χρηστών ....................................................................................................... 32
1.4.1 ∆ιαχειριστής συστήµατος .................................................................... 32
1.4.2 Ιδιοκτήτης βάσης δεδοµένων ............................................................ 33
1.4.3 Xρήστες υψηλής διαβάθµισης ......................................................... 33
1.4.4 Xρήστες κατώτερης διαβάθµισης ................................................. 34

Σύνοψη ................................................................................................................................................ 35
Bιβλιογραφία για περαιτέρω µελέτη ........................................................................... 37
K∂º∞§∞π√ 2

AÚ¯ÈÙÂÎÙÔÓÈ΋ Î·È º˘ÛÈ΋ OÚÁ¿ÓˆÛË Aگ›ˆÓ

Σκοπός, Προσδοκώµενα αποτελέσµατα, Έννοιες κλειδιά
Eισαγωγικές παρατηρήσεις ................................................................................................. 39

BA™EI™ ¢E¢OMENøN

6

2.1

2.2

2.3

Eπίπεδα Aρχιτεκτονικής ..................................................................................... 41
2.1.1 Aρχιτεκτονική βάσεων δεδοµένων .............................................. 42
2.1.2 Το εξωτερικό επίπεδο .............................................................................. 42
2.1.3 Tο φυσικό επίπεδο ...................................................................................... 43
2.1.4 Το επίπεδο αντίληψης .............................................................................. 44
Το φυσικό επίπεδο .................................................................................................... 48
2.2.1 Τύποι δεδοµένων και πεδία ................................................................ 48
2.2.2 Εγγραφές και αρχεία ................................................................................ 48
2.2.3 Μονάδες αποθήκευσης ........................................................................... 50
Oργάνωση αρχείων στο φυσικό επίπεδο ............................................... 52
2.3.1 Βασικές έννοιες της οργάνωσης αρχείων .............................. 53
2.3.2 Κατακερµατισµός αρχείων ................................................................. 55
2.3.3 ∆εικτοδότηση αρχείων και κατάλογοι ...................................... 56
2.3.4 ∆έντρα τύπου B και δέντρα τύπου B+ ...................................... 59

Σύνοψη ................................................................................................................................................ 61
Bιβλιογραφία για περαιτέρω µελέτη ........................................................................... 61
K∂º∞§∞π√ 3

ªÔÓÙÂÏÔÔ›ËÛË Î·È £¤Ì·Ù· ™¯Â‰›·Û˘

Σκοπός, Προσδοκώµενα αποτελέσµατα, Έννοιες κλειδιά
Eισαγωγικές παρατηρήσεις ................................................................................................. 63
3.1
3.2
3.3

Το ιεραρχικό µοντέλο ............................................................................................ 65
Το δικτυακό µοντέλο .............................................................................................. 69
∆ιαγράµµατα σχέσεων – Oντοτήτων ....................................................... 71
3.3.1 Οντότητες και κατηγορήµατα .......................................................... 72
3.3.2 Σχέσεις οντοτήτων ..................................................................................... 76
3.3.3 ∆οµικά στοιχεία των διαγραµµάτων .......................................... 80
3.3.4 Μοντελοποίηση µε διαγράµµατα
σχέσεων – οντοτήτων .............................................................................. 83

Σύνοψη ................................................................................................................................................ 91
Bιβλιογραφία για περαιτέρω µελέτη ........................................................................... 92
K∂º∞§∞π√ 4

™¯ÂÛȷΤ˜ B¿ÛÂȘ ¢Â‰Ô̤ӈÓ

Σκοπός, Προσδοκώµενα αποτελέσµατα, Έννοιες κλειδιά
Eισαγωγικές παρατηρήσεις ................................................................................................. 93
4.1

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

.............................................................................................

85

¶EPIEXOMENA

7

4.1.1 Βασικές έννοιες

............................................................................................

96

4.1.2 Ακεραιότητα δεδοµένων ....................................................................... 99
4.2 Σχεσιακή άλγεβρα
4.2.1 Eπιλογή

........................................................................................

104

.............................................................................................................

106

4.2.2 Προβολή

..........................................................................................................

106

................................................................................................................

107

....................................................................................................................

107

4.2.3 Ένωση
4.2.4 Tοµή

4.2.5 ∆ιάφορα ............................................................................................................ 107
4.2.6 Καρτεσιανό γινόµενο ............................................................................ 108
4.2.7 Σύνδεση

............................................................................................................

4.2.8 Φυσική σύνδεση
4.3

.......................................................................................

Σχεσιακός υπολογισµός

....................................................................................

108
108
109

Σύνοψη ............................................................................................................................................. 112
Bιβλιογραφία για περαιτέρω µελέτη ......................................................................... 112
K∂º∞§∞π√ 5

H °ÏÒÛÛ· EÚˆÙ‹ÛÂˆÓ SQL

Σκοπός, Προσδοκώµενα αποτελέσµατα, Έννοιες κλειδιά
Eισαγωγικές παρατηρήσεις .............................................................................................. 113
5.1

Αρχές των γλωσσών ερωτήσεων

5.2

Αναζήτηση δεδοµένων στην SQL ............................................................ 117
5.2.1 Select… From… Where…

..............................................................

..............................................................

118

5.2.2 ∆ιάταξη των αποτελεσµάτων

........................................................

125

5.2.3 Λοιπές εντολές στη συνθήκη

.........................................................

127

........................................................................

129

5.2.5 Εντολές συνόλων

.....................................................................................

130

5.2.6 Σύνδεση πινάκων

.....................................................................................

133

5.2.4 Μετονοµασία πινάκων

5.2.7 Αρίθµηση, µέγιστα – ελάχιστα και οµαδοποίηση
5.2.8 Γενική µορφή εντολής αναζήτησης
5.3

115

.......

136

.........................................

137

Oρισµός, διαχείριση και παρουσίαση
δεδοµένων στην SQL ......................................................................................... 138
5.3.1 Create table και alter table ................................................................ 138
5.3.2 Insert, delete, update .............................................................................. 140
5.3.3 Όψεις ................................................................................................................... 141

Σύνοψη ............................................................................................................................................. 141
Bιβλιογραφία για περαιτέρω µελέτη ........................................................................ 142

BA™EI™ ¢E¢OMENøN

8

K∂º∞§∞π√ 6

H °ÏÒÛÛ· EÚˆÙ‹ÛÂˆÓ QBE

Σκοπός, Προσδοκώµενα αποτελέσµατα, Έννοιες κλειδιά
Eισαγωγικές παρατηρήσεις ............................................................................................. 143
6.1

Η φιλοσοφία της QBE

6.2

Συνθήκες

6.3

Η QBE σε συνδυασµό µε γραφικό περιβάλλον

.......................................................................................

145

........................................................................................................................

148

...........................

152

Σύνοψη ............................................................................................................................................. 155
Bιβλιογραφία για περαιτέρω µελέτη ........................................................................ 156
K∂º∞§∞π√ 7

∞ÓÙÈÎÂÈÌÂÓÔÛÙÚ·Ê›˜ B¿ÛÂȘ ¢Â‰Ô̤ӈÓ

Σκοπός, Προσδοκώµενα αποτελέσµατα, Έννοιες κλειδιά
Eισαγωγικές παρατηρήσεις ............................................................................................. 157
7.1
7.2

Η φιλοσοφία
των αντικειµενοστραφών βάσεων δεδοµένων

..............................

159

Η αντικειµενοστραφής γλώσσα ερωτήσεων OQL
και η πρότυπη γλώσσα ερωτήσεων SQL3 ....................................... 161

Σύνοψη ............................................................................................................................................. 164
Bιβλιογραφία για περαιτέρω µελέτη ........................................................................ 164
K∂º∞§∞π√ 8

AÓ·ÎÂÊ·Ï·›ˆÛË Î·È EfiÌÂÓ· B‹Ì·Ù· MÂϤÙ˘

Σκοπός, Προσδοκώµενα αποτελέσµατα, Έννοιες κλειδιά
Eισαγωγικές παρατηρήσεις ............................................................................................. 165
Συνέχεια µελέτης .................................................................................................... 166
Eπίλογος

.........................................................................................................................................

169

Aπαντήσεις ασκήσεων αυτοαξιολόγησης ......................................................... 171
Oδηγίες και κατευθύνσεις για τις δραστηριότητες .................................... 205
Aλφαβητικό ευρετήριο όρων (ελληνικά – αγγλικά)

................................

215

Aλφαβητικό ευρετήριο όρων (αγγλικά – ελληνικά)

................................

217

...................................................................................................................................

219

Γλωσσάριο

¶ÚfiÏÔÁÔ˜
Έχοντας ολοκληρώσει τη µελέτη των δύο πρώτων τόµων της Θεµατικής Ενότητας
«Αρχές Τεχνολογίας Λογισµικού», έχετε αποκτήσει σηµαντικές γνώσεις για ένα
µεγάλο τµήµα της διαδικασίας ανάπτυξης λογισµικού, καθώς και εξειδικευµένες
γνώσεις για θέµατα όπως τα Λειτουργικά Συστήµατα των Υπολογιστών.
Στον τρίτο τόµο της Θεµατικής Ενότητας «Αρχές Τεχνολογίας Λογισµικού» που
έχετε στα χέρια σας και που έχει τίτλο «Βάσεις ∆εδοµένων» θα µιλήσουµε για τα
εργαλεία του υπολογιστή που χρησιµοποιούνται για την οργάνωση των δεδοµένων
µας καθώς και για να δίνουν απαντήσεις σε ερωτήσεις που σχετίζονται µε αυτά τα
δεδοµένα.
Ο τόµος αυτός οργανώνεται σε οκτώ κεφάλαια. Στο 1ο κεφάλαιο δίδονται οι βασικοί ορισµοί, περιγράφεται η Βάση ∆εδοµένων και το Σύστηµα ∆ιαχείρισης Βάσεων
∆εδοµένων, συζητούνται θέµατα χρήσης της Βάσης ∆εδοµένων και παρουσιάζονται
οι χρήστες των Βάσεων ∆εδοµένων.
Στο 2ο κεφάλαιο περιγράφεται η αρχιτεκτονική των Βάσεων ∆εδοµένων και δίνεται έµφαση στο φυσικό επίπεδο, όπου και συζητιούνται οι δοµές αποθήκευσης που
χρησιµοποιούν τα Συστήµατα ∆ιαχείρισης Βάσεων ∆εδοµένων.
Στο 3ο κεφάλαιο συζητούνται θέµατα σχεδίασης της Βάσης ∆εδοµένων, παρουσιάζονται συνοπτικά µοντέλα Βάσεων ∆εδοµένων και δίνεται έµφαση στα ∆ιαγράµµατα Σχέσεων – Οντοτήτων.
Στο 4ο κεφάλαιο περιγράφουµε το Σχεσιακό Μοντέλο και παρουσιάζουµε συνοπτικά τη Σχεσιακή Άλγεβρα και το Σχεσιακό Υπολογισµό.
Στο 5ο κεφάλαιο περιγράφουµε τη γλώσσα ερωτήσεων SQL, παρουσιάζουµε τις
βασικές αρχές των γλωσσών ερωτήσεων και το σκοπό που εξυπηρετούν αυτές,
καθώς και τις εντολές της γλώσσας ερωτήσεων SQL.
Στο 6ο κεφάλαιο περιγράφουµε τη γλώσσα ερωτήσεων QBE, µιλάµε για τις συνθήκες σε QBE και δείχνουµε πώς η QBE µπορεί να χρησιµοποιηθεί σε συνεργασία µε
ένα γραφικό περιβάλλον υποβολής ερωτήσεων.
Στο 7ο κεφάλαιο περιγράφουµε πολύ συνοπτικά τις βασικές αρχές των αντικειµενοστραφών Βάσεων ∆εδοµένων και σας παρουσιάζουµε βασικές έννοιες της αντικειµενοστραφούς γλώσσας ερωτήσεων OQL και της SQL3.
Τέλος, στο 8ο κεφάλαιο κάνουµε µία σύνοψη της ύλης που παρουσιάσαµε και σας

BA™EI™ ¢E¢OMENøN

10

δίνουµε κατευθύνσεις για τη συνέχεια της µελέτης σας.
Σε όλα τα κεφάλαια υπάρχουν δραστηριότητες και ασκήσεις αυτοαξιολόγησης που
θα σας βοηθήσουν να κατανοήσετε καλύτερα την ύλη του τόµου αυτού.
Mερικοί από εσάς, που έχουν ήδη κάποιες γνώσεις πληροφορικής, θα παρατηρήσουν
ότι κάποιοι ορισµοί στο βιβλίο δεν είναι αυτοί που θα περίµεναν. Aυτό έχει γίνει
γιατί δεν θέλουµε να δώσουµε ορισµούς που περιέχουν έννοιες που δεν έχετε διδαχθεί. Έτσι, αρκετοί ορισµοί έχουν απλοποιηθεί για να είναι κατανοητοί από όλους
σας, µε βάση τις γνώσεις που έχετε αποκτήσει µέχρι τώρα.
Στο τέλος του τόµου θα πρέπει να γνωρίζετε:
• τις βασικές αρχές των Βάσεων ∆εδοµένων και των Συστηµάτων ∆ιαχείρισης
Βάσεων ∆εδοµένων,
• τα Μοντέλα Βάσεων ∆εδοµένων,
• την οργάνωση των δεδοµένων στο φυσικό επίπεδο,
• τις βασικές αρχές των Σχεσιακών και Αντικειµενοστραφών Βάσεων ∆εδοµένων.
Επίσης, θα πρέπει να µπορείτε να:
• σχεδιάζετε το διάγραµµα Σχέσεων – Οντοτήτων για κάθε Βάση ∆εδοµένων,
• περιγράφετε ερωτήσεις σε Σχεσιακή Άλγεβρα και Σχεσιακό Υπολογισµό,
• περιγράφετε ερωτήσεις και εντολές σε SQL και QBE.
Oι συγγραφείς θέλουν να ευχαριστήσουν όλους εκείνους που συντέλεσαν σηµαντικά στη βελτίωση του βιβλίου αυτού και βοήθησαν στην παραγωγή του.
Παρακαλούµε για την κατανόησή σας σχετικά µε µικρολάθη ή παραλήψεις που πιθανόν µας «ξέφυγαν» κατά τη συγγραφή αυτού του βιβλίου, και που ίσως εντοπίσετε·
θα εκτιµούσαµε πολύ την ευγενική συνεισφορά σας για τον εντοπισµό και τη διόρθωσή τους. Παρόλα αυτά, είµαστε σίγουροι ότι το βιβλίο αυτό θα αποτελέσει ένα
πολύτιµο «εργαλείο µάθησης» στα χέρια σας.
Mιχάλης Ξένος – ∆ηµήτρης Xριστοδουλάκης

EÈÛ·ÁˆÁ‹
™ÎÔfi˜
Σκοπός αυτού του κεφαλαίου είναι: α) Να σας εισάγει στις βασικές
έννοιες των βάσεων δεδοµένων, β) να σας ενηµερώσει για την ύλη που
καλύπτεται σε αυτό το βιβλίο και γ) να σας προτείνει εναλλακτικούς
τρόπους οργάνωσης της µελέτης σας.
¶ÚÔÛ‰ÔÎÒÌÂÓ· ∞ÔÙÂϤÛÌ·Ù·
Όταν θα έχετε ολοκληρώσει τη µελέτη αυτού του κεφαλαίου θα µπορείτε να:
• εξηγήσετε τους βασικούς όρους που σχετίζονται µε το αντικείµενο
των Βάσεων ∆εδοµένων
• διακρίνετε τις έννοιες δεδοµένα και πληροφορία
• εξηγήσετε τις διαφορές ανάµεσα σε ένα Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων και µίας Βάσης ∆εδοµένων
• διακρίνετε µεταξύ των περιπτώσεων όπου απαιτείται ή όχι η χρήση
(ή κατασκευή) µίας Βάσης ∆εδοµένων
• αναφέρετε τι παρέχει µία Βάση ∆εδοµένων και τι ένα Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων
• περιγράψετε τις βασικές λειτουργίες που επιτελεί ένα Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων
• περιγράψετε τους χρήστες µιας Βάσης ∆εδοµένων και τους στόχους
καθενός από τη χρήση της Βάσης ∆εδοµένων
ŒÓÓÔȘ ÎÏÂȉȿ
• Βάση ∆εδοµένων (Database)
• Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων (Database Management
System (DBMS))
• ∆εδοµένα (Data)
• Πληροφορία (Information)
• Οργάνωση ∆εδοµένων (Data Organization)

1
º

§

π

KEºA§AIO 1: EI™A°ø°H

12

• Χρήστες Βάσης ∆εδοµένων (Database Users)
• Όψεις ∆εδοµένων (Data Views)
• Επίπεδα Προσπέλασης Βάσης ∆εδοµένων (Database User Levels)
∂ÈÛ·ÁˆÁÈΤ˜ ¶·Ú·ÙËÚ‹ÛÂȘ
Στο κεφάλαιο αυτό εισάγεται η έννοια των Βάσεων ∆εδοµένων και
των αναγκών που έρχονται να καλύψουν. Θα συζητήσουµε τις βασικές έννοιες που πρέπει να γνωρίζετε για τις Βάσεις ∆εδοµένων, θα
περιγράψουµε το Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων (DBMS)
και τις διαφορές του από τη Βάση ∆εδοµένων, θα αναλύσουµε τις
δυνατότητες που σας παρέχουν οι Βάσεις ∆εδοµένων και θα δούµε
τους πιθανούς χρήστες µιας Βάσης ∆εδοµένων και τι ζητάει κάθε ένας
από αυτούς.

1.1 µ·ÛÈÎÔ› ÔÚÈÛÌÔ›

™ÎÔfi˜
Σκοπός της ενότητας είναι να ορίσει τις βασικές έννοιες µε τις οποίες
θα ασχοληθούµε στη συνέχεια του µαθήµατος, δηλαδή τα δεδοµένα,
την πληροφορία, τη Βάση ∆εδοµένων, το σκοπό της Βάσης ∆εδοµένων
(δηλαδή το λόγο δηµιουργίας και χρήσης της) και τους χρήστες µιας
Βάσης ∆εδοµένων.
¶ÚÔÛ‰ÔÎÒÌÂÓ· ∞ÔÙÂϤÛÌ·Ù·
Όταν θα έχετε ολοκληρώσει τη µελέτη αυτής της ενότητας θα µπορείτε να:
• εξηγήσετε τους όρους Βάση ∆εδοµένων, δεδοµένα, πληροφορία και
χρήστες
• διακρίνετε ανάµεσα στις έννοιες «δεδοµένα» και «πληροφορία»
• δώσετε τουλάχιστον τρία παραδείγµατα Βάσεων ∆εδοµένων
• αναγνωρίσετε Βάσεις ∆εδοµένων που χρησιµοποιούµε στη ζωή µας
• αναφέρετε ένα πρόβληµα που σχετίζεται µε Βάσεις ∆εδοµένων χρησιµοποιώντας τεχνικούς όρους
∂ÈÛ·ÁˆÁÈΤ˜ ¶·Ú·ÙËÚ‹ÛÂȘ
Στην ενότητα αυτή θα δοθούν οι βασικοί όροι τόσο στα Ελληνικά όσο
και στα Αγγλικά (σε παρενθέσεις). Αυτό γίνεται ώστε να σας δώσουµε
τη δυνατότητα να γνωρίζετε και την αγγλική µετάφραση του κάθε όρου,
µια και η περισσότερη βιβλιογραφία που παρατίθεται στο τέλος του
κεφαλαίου είναι στα αγγλικά.
1.1.1 ¢Â‰Ô̤ӷ Î·È ÏËÚÔÊÔÚ›·

Πριν προχωρήσουµε στην έννοια της Βάσης ∆εδοµένων πρέπει να διακρίνουµε µεταξύ των εννοιών δεδοµένα (data) και πληροφορία
(information). Από τα πρώτα χρόνια της χρήσης των Ηλεκτρονικών
Υπολογιστών οι έννοιες δεδοµένα και πληροφορία συγχέονταν µεταξύ τους. ■

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

KEºA§AIO 1: EI™A°ø°H

14

Έτσι τα δεδοµένα µπορούν να είναι λέξεις π.χ. {“Νίκος”, “Μιχάλης”,
“Μαρία”, “Θάλασσα”, “Αυτοκίνητο”}, αριθµοί, π.χ. {1, 2, 3, 5, 78},
συµβολοσειρές (strings) π.χ. {“Κώστας”, “5621”, “ΤΡ–882”, “6&5
#1”, “<>+–/*”}, ή σύµβολα που έχουν νόηµα σε συγκεκριµένο πλαίσιο αναφοράς. Ένα τέτοιο παράδειγµα, δεδοµένων είναι ψηφιοποιηµένες εικόνες µε κάποια καθορισµένη τυποποίηση. Aυτές οι εικόνες
θα έχουν νόηµα µόνο µε τη χρήση ενός συγκεκριµένου προγράµµατος απεικόνισης, δηλαδή µέσα στο πλαίσιο το προγράµµατος απεικόνισης, ενώ έξω από αυτό είναι ακατανόητες συλλογές συµβόλων.
Έτσι όπως ορίσαµε τα δεδοµένα είναι φανερό ότι είναι κατάλληλα για
αποθήκευση σε ηλεκτρονικό υπολογιστή. Οι άνθρωποι, όµως, χρησι-

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

ÕÛÎËÛË
·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
1.1

µοποιούσαν δεδοµένα –πολύ πριν από την ανακάλυψη των ηλεκτρονικών υπολογιστών– στα πλαίσια ενός πεδίου αναφοράς για την εξαγωγή συµπερασµάτων ή την λήψη αποφάσεων. Για παράδειγµα, από
τα δεδοµένα {85, 210, 515} και τα δεδοµένα {“Κόρινθος”, “Πάτρα”,
“Θεσσαλονίκη”}, αλλά και από τη γνώση (πεδίο αναφοράς) ότι τα
πρώτα δεδοµένα περιγράφουν αποστάσεις από την Αθήνα για τις
πόλεις που ορίζονται στα δεύτερα δεδοµένα, κάποιος µπορεί να καταλάβει ότι «η Πάτρα είναι πιο µακριά από την Αθήνα από ότι η Κόρινθος, αλλά πολύ κοντύτερα στην Aθήνα από ότι η Θεσσαλονίκη». Αυτό
το συµπέρασµα είναι πληροφορία. ■
Συνοψίζοντας µπορούµε να πούµε ότι τα δεδοµένα είναι κωδικοποιηµένη αναπαράσταση πληροφορίας, ενώ η πληροφορία εξάγεται από
τα δεδοµένα µε βάση το πεδίο αναφοράς των δεδοµένων ή συγκεκριµένη γνώση για αυτά.

Ακολουθούν µερικές προτάσεις.
Ποιες από αυτές είναι σωστές και ποιες λάθος;
Σωστό Λάθος

Τα {1, “Νίκος”, 4, 5, “Ποδήλατο”} είναι δεδοµένα. ❏

Τα {“Αθήνα”, 34, “Παρίσι”, 28, “Μόσχα”, 11,
“Μαδρίτη”, 37, “Ρώµη”, 33} είναι πληροφορία.

Τα {1, 2, 4, 5, 7, 9} είναι δεδοµένα.

1.1 µ∞™π∫√π √ƒπ™ª√π

15

Τα {“Αθήνα”, 34, “Παρίσι”, 28, “Μόσχα”, 11,
“Μαδρίτη”, 37, “Ρώµη”, 33} είναι δεδοµένα.

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

1.1.2 µ¿ÛË ‰Â‰Ô̤ӈÓ

Ένα βασικό χαρακτηριστικό των δεδοµένων, έτσι όπως τα παρουσιάσαµε είναι ότι είναι κατάλληλα για να αποθηκευτούν σε ηλεκτρονικό
υπολογιστή. Αυτό οδηγεί στο επόµενο βήµα που είναι η δηµιουργία
και χρήση Βάσεων ∆εδοµένων (databases). ■
Η σχετικότητα των δεδοµένων είναι σηµαντική για τον ορισµό µιας
Βάσης ∆εδοµένων. ∆εδοµένα που δε σχετίζονται µεταξύ τους και
απλά έχουν αποθηκευτεί σε έναν ηλεκτρονικό υπολογιστή δεν αποτελούν µια Βάση ∆εδοµένων. Μια Βάση ∆εδοµένων πρέπει να αντικατοπτρίζει ένα περιβάλλον του πραγµατικού κόσµου. Τα δεδοµένα που
αποθηκεύονται στη Βάση ∆εδοµένων πρέπει να έχουν λογική συνέχεια και νόηµα. Επίσης οι λειτουργίες που παρέχει η Βάση ∆εδοµένων είναι σηµαντικές για τον ορισµό µιας Βάσης ∆εδοµένων. Συλλογές δεδοµένων χωρίς τη δυνατότητα ενός αυτόµατου, κοινού και
κεντρικού τρόπου χειρισµού των δεδοµένων αυτών, δεν αποτελούν
Βάση ∆εδοµένων. Απλά είναι δεδοµένα αποθηκευµένα στον ηλεκτρονικό υπολογιστή.
Η Βάση ∆εδοµένων έχει ένα σκοπό. Υλοποιείται για να απεικονίσει
στον υπολογιστή ένα πρόβληµα και να διευκολύνει τη λύση του. Αυτό
συνήθως σηµαίνει ότι τα δεδοµένα που χειρίζεται δεν είναι στατικά
αλλά δυναµικά, δηλαδή αλλάζουν συνεχώς. Η Βάση ∆εδοµένων περιέχει τα δεδοµένα που περιγράφουν τη συγκεκριµένη χρονική στιγµή το
«πρόβληµα», µπορεί όµως να περιέχει και δεδοµένα από την ιστορία
του προβλήµατος.

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

KEºA§AIO 1: EI™A°ø°H

16

¶·Ú¿‰ÂÈÁÌ· 1.1
Ας δούµε µία αρκετά απλή Βάση ∆εδοµένων: Έστω ότι θέλουµε να
έχουµε στον ηλεκτρονικό υπολογιστή τη θερµοκρασία 5 µεγάλων
ευρωπαϊκών πόλεων κάθε µέρα στις 12 το µεσηµέρι. Θα πρέπει λοιπόν να αποθηκεύσουµε στον υπολογιστή δεδοµένα που θα είναι (για
λόγους απλότητας) της µορφής {“Αθήνα”, 24, “15–1–98”}, {“Ρώµη”,
29, “12–1–98”} κτλ. Προσέξτε ότι χρειαζόµαστε και την πληροφορία
για την ηµεροµηνία. Επίσης, όπως ορίσαµε παραπάνω, θα πρέπει για
να έχουµε Βάση ∆εδοµένων να έχουµε και τη δυνατότητα χειρισµού
αυτών των δεδοµένων. Έτσι θα πρέπει να µπορούµε να αντλήσουµε
πληροφορίες όπως «ποια είναι η θερµοκρασία που είχε η Αθήνα στις
25 Μαρτίου του 1998;» ή «που έκανε πιο πολύ ζέστη, στην Αθήνα ή
στην Ρώµη στις 31 Αυγούστου 1997;». Τέλος θα πρέπει να µπορούµε
να χειριστούµε τα δεδοµένα, δηλαδή να εισάγουµε νέα δεδοµένα στη
Βάση ∆εδοµένων (όπως είναι οι σηµερινές θερµοκρασίες), ή να σβήσουµε κάποια παλαιά δεδοµένα, που πιθανόν δεν χρειαζόµαστε άλλο.
Βέβαια για να µπορεί η Βάση ∆εδοµένων να µας παρέχει σωστά δεδοµένα (που θα µας οδηγούν σε σωστές πληροφορίες) πρέπει να αναλάβουµε την καθηµερινή εισαγωγή δεδοµένων σε αυτή, αλλά και να
ελέγχουµε την ορθότητα των δεδοµένων που εισάγουµε.

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

Η Βάση ∆εδοµένων που περιγράφουµε στο παράδειγµα 1.1 έχει όλα
τα στοιχεία που καθορίζουν µια Βάση ∆εδοµένων. Είναι µια πολύ
απλή Βάση ∆εδοµένων µε µετεωρολογικές πληροφορίες. Για να µπορεί όµως να αναπαριστά δυναµικά τον πραγµατικό κόσµο θα πρέπει
κάποιοι άνθρωποι να είναι επιφορτισµένοι µε το καθήκον να εισάγουν
δεδοµένα σε αυτή. Οι άνθρωποι αυτοί χρησιµοποιούν τη Βάση ∆εδοµένων και καλούνται χρήστες (users). Οι λειτουργίες που επιτελούν
σχετίζονται όχι µόνο µε την εισαγωγή δεδοµένων, αλλά γενικότερα
φροντίζουν για την εύρυθµη λειτουργία της Βάσης ∆εδοµένων. Αυτή
η διαδικασία ονοµάζεται συντήρηση της Βάσης ∆εδοµένων. Χρήστες
είναι επίσης και όσοι ανατρέχουν στη Βάση ∆εδοµένων για πληροφορίες, π.χ. για να µάθουν τι θερµοκρασία είχε η Αθήνα σήµερα. ■
Σε επόµενη ενότητα (στην ενότητα 1.4) θα µιλήσουµε αναλυτικά για
τους χρήστες και τα επίπεδα χρηστών µιας Βάσης ∆εδοµένων.

1.1 µ∞™π∫√π √ƒπ™ª√π

17

Θα προσπαθήσουµε να επεκτείνουµε τη µετεωρολογική Βάση ∆εδοµένων που αναφέραµε ως παράδειγµα, επαυξάνοντας την και µε άλλες
πληροφορίες. Ποια από τα δεδοµένα που ακολουθούν πιστεύετε πως
µπορούν να ενταχθούν στη Βάση ∆εδοµένων του παραδείγµατος ώστε
αυτή να παραµείνει µία µετεωρολογική Βάση ∆εδοµένων;
Σωστό

Λάθος

∆εδοµένα για την υγρασία των πόλεων.
Π.χ. υγρασία 87%.

∆εδοµένα και για άλλες ώρες τις ηµέρας,
όπως η θερµοκρασία των πόλεων ανά ώρα.

∆εδοµένα για τον αέρα και την έντασή του
σε κάθε πόλη κάθε µεσηµέρι.

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

1.1.3 πÛÙÔÚÈ΋ ·Ó·‰ÚÔÌ‹

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

ÕÛÎËÛË
·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
1.2

ÕÛÎËÛË
·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
1.3

KEºA§AIO 1: EI™A°ø°H

18

¶·Ú¿‰ÂÈÁÌ· 1.2
ΑΘΗΝΑ – Ιανουάριος 1998
1

17 o C

2

21 o C

3

20 o C

4

18 o C

5

16 o C

6

12o C

7

8o C

8

13 o C

9

12 o C

10

21 o C

11

23 o C

12

25 o C

13

20 o C

14

17 o C

15

17 o C

16

21 o C

17

23 o C

18

12 o C

19

9o C

20

5o C

21

7o C

22

6o C

23

3o C

24

7o C

25

5o C

26

9o C

27

5o C

28

11 o C

29

8o C

30

10 o C

31

10 o C

Μια Βάση ∆εδοµένων που θα βασιζόταν σε τέτοιες καρτέλες θα µπορούσε να παρέχει τις ίδιες πληροφορίες µε µια Βάση ∆εδοµένων σε
ηλεκτρονικό υπολογιστή, όµως ο χειρισµός της θα ήταν πολύ πιο
δύσκολος. Έτσι για παράδειγµα θα µπορούσαµε εύκολα να ανακτήσουµε την πληροφορία «θερµοκρασία στην Αθήνα στις 12 το µεσηµέρι στις 16 Ιανουαρίου 1998» τόσο από τον ηλεκτρονικό υπολογιστή, όσο και από τη Βάση ∆εδοµένων µε τις καρτέλες. Στον υπολογιστή όµως, πληροφορίες όπως «ποιες ηµέρες στην Αθήνα έκανε περισσότερη ζέστη από τη Ρώµη;» ή «ποια πόλη ήταν η πιο ζεστή για κάθε
ηµέρα του χρόνου;» µπορούν να υλοποιηθούν εύκολα σε αντίθεση µε
τις καρτέλες. Σκεφτείτε πόσοι άνθρωποι θα έπρεπε να δουλέψουν µε
τις καρτέλες για να ετοιµασθούν οι απαντήσεις για τις δύο παραπάνω
ερωτήσεις εάν είχαµε δεδοµένα για τα δέκα προηγούµενα έτη! Αυτή
η ανάγκη για αξιοποίηση των δυνατοτήτων του ηλεκτρονικού υπολογιστή οδήγησε στην δηµιουργία των πρώτων Βάσεων ∆εδοµένων. Οι
βάσεις αυτές απλά υλοποιούσαν στον ηλεκτρονικό υπολογιστή σχήµατα όπως το παραπάνω µε τις καρτέλες και εκµεταλλεύονταν τις
δυνατότητες του υπολογιστή για ταχύτατη και µαζική επεξεργασία
δεδοµένων και εξαγωγή απαντήσεων σε ερωτήσεις, δηλαδή εξαγωγή
πληροφορίας.
Οι Βάσεις ∆εδοµένων εξελίχτηκαν πολύ τα χρόνια που πέρασαν. Από

1.1 µ∞™π∫√π √ƒπ™ª√π / 1.2 ™À™∆∏ª∞ ¢π∞Ã∂πƒπ™∏™ µ∞™∂ø¡ ¢∂¢√ª∂¡ø¡

19

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

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

* 1terabyte = 1012 bytes ή 1.000.000.000.000 bytes

¢Ú·ÛÙËÚÈfiÙËÙ· 1.1

KEºA§AIO 1: EI™A°ø°H

20

1.2 ™‡ÛÙËÌ· ‰È·¯Â›ÚÈÛ˘ ‚¿ÛÂˆÓ ‰Â‰Ô̤ӈÓ

™ÎÔfi˜
Σκοπός της ενότητας είναι η περιγραφή του Συστήµατος ∆ιαχείρισης
Βάσεων ∆εδοµένων και των δυνατοτήτων που παρέχει, καθώς και η
περιγραφή του υλικού και του λογισµικού που συνεργάζονται σε ένα
Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων.
¶ÚÔÛ‰ÔÎÒÌÂÓ· ∞ÔÙÂϤÛÌ·Ù·
Όταν θα έχετε ολοκληρώσει τη µελέτη αυτής της ενότητας θα µπορείτε να:
• εξηγήσετε τη δοµή και τη λειτουργικότητα ενός Συστήµατος ∆ιαχείρισης Βάσεων ∆εδοµένων
• διακρίνετε ανάµεσα σε Βάσεις ∆εδοµένων και Συστήµατα ∆ιαχείρισης Βάσεων ∆εδοµένων
• εξηγήσετε τη σχέση υλικού και λογισµικού σε ένα Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων
• περιγράψετε τι µας παρέχει ένα Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων

■ Σύστηµα ∆ιαχείρισης
Βάσεων ∆εδοµένων είναι το
λογισµικό το οποίο επιτρέπει
στους χρήστες να δηµιουργούν και να χρησιµοποιούν
Βάσεις ∆εδοµένων.

Η εξέλιξη των Βάσεων ∆εδοµένων και οι ανάγκες για δηµιουργία όλο
και περισσότερων Βάσεων ∆εδοµένων, οδήγησαν στη δηµιουργία των
Συστηµάτων ∆ιαχείρισης Βάσεων ∆εδοµένων (Database Management
Systems ή DBMS). Το Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων είναι
ένα εργαλείο το οποίο διευκολύνει τους χρήστες να εργάζονται µε
Βάσεις ∆εδοµένων. Με τη χρήση του Συστήµατος ∆ιαχείρισης Βάσεων ∆εδοµένων οι χρήστες µπορούν να κατασκευάσουν και να χρησιµοποιήσουν Βάσεις ∆εδοµένων. Ακολουθεί ο ορισµός του Συστήµατος ∆ιαχείρισης Βάσεων ∆εδοµένων. ■
Ένα Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων κατά κανόνα «φιλοξενεί» πολλές Βάσεις ∆εδοµένων που έχουν κατασκευαστεί από διαφορετικούς χρήστες. Οι δυνατότητες που παρέχει ένα Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων στους χρήστες συνοψίζονται στις παρακάτω:
• Ορισµός της Βάσης ∆εδοµένων
• Κατασκευή της Βάσης ∆εδοµένων
• ∆ιαγραφή της Βάσης ∆εδοµένων
• Χρήση της Βάσης ∆εδοµένων
Στον ορισµό της Βάσης ∆εδοµένων ο χρήστης µπορεί να καθορίσει το

1.2 ™À™∆∏ª∞ ¢π∞Ã∂πƒπ™∏™ µ∞™∂ø¡ ¢∂¢√ª∂¡ø¡

µοντέλο της Βάσης ∆εδοµένων, να ορίσει τους τύπους δεδοµένων που
θα χρησιµοποιήσει και να ελέγξει τη Βάση ∆εδοµένων χωρίς να προχωρήσει σε κατασκευή της. Στην κατασκευή της Βάσης ∆εδοµένων
οι τύποι των δεδοµένων και τα δεδοµένα αποθηκεύονται στο υλικό
(hardware) του ηλεκτρονικού υπολογιστή µε διαδικασίες που ελέγχονται από το Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων και δεν απασχολούν τον χρήστη. Στη διαγραφή της Βάσης ∆εδοµένων ο χρήστης
αποφασίζει τον τερµατισµό µιας Βάσης ∆εδοµένων και την αποµάκρυνση των δεδοµένων από το υλικό. Τέλος, κατά τη χρήση της Βάσης
∆εδοµένων ο χρήστης, είτε χειρίζεται τα δεδοµένα (εισάγει νέα δεδοµένα, τροποποιεί δεδοµένα, ή διαγράφει δεδοµένα), είτε υποβάλει ερωτήσεις στη Βάση ∆εδοµένων µε στόχο την εξαγωγή πληροφοριών.
1.2.1 ¢È·ÊÔÚ¿ ‚¿Û˘ ‰Â‰ÔÌ¤ÓˆÓ Ì ۇÛÙËÌ· ‰È·¯Â›ÚÈÛ˘
‚¿ÛÂˆÓ ‰Â‰Ô̤ӈÓ

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

21

KEºA§AIO 1: EI™A°ø°H

22

και το σηµείο που κάνει αρκετούς χρήστες να συγχέουν τις έννοιες
Βάση ∆εδοµένων και Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων.
1.2.2 ¢ÔÌ‹ ÂÓfi˜ Û˘ÛÙ‹Ì·ÙÔ˜ ‰È·¯Â›ÚÈÛ˘ ‚¿ÛÂˆÓ ‰Â‰Ô̤ӈÓ

Ένα Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων µπορεί να απεικονισθεί
όπως στο σχήµα 1.1. Στο δεξιό µέρος του σχήµατος 1.1 παρουσιάζεται
το είδος (µέσο αποθήκευσης) του υλικού (hardware) του υπολογιστή
στον οποίο αποθηκεύονται τα δεδοµένα. Σε µικρές Βάσεις ∆εδοµένων
το µέσο αυτό συνήθως είναι ο σκληρός δίσκος του υπολογιστή, ενώ σε
µεγάλες Βάσεις ∆εδοµένων χρησιµοποιούνται πολλαπλά επίπεδα αποθήκευσης που ποικίλουν από σκληρούς δίσκους διαφορετικής ταχύτητας και χωρητικότητας, juke boxes από CDs, µαγνητικές ταινίες κτλ.
Σύστηµα διαχείρησης βάσεων δεδοµένων

Bάση
δεδοµένων 1
™¯‹Ì· 1.1

Σύστηµα ∆ιαχείρισης
Βάσεων ∆εδοµένων

Bάση
δεδοµένων N

Λογισµικό
χειρισµού
ερωτήσεων

Λογισµικό
αποθήκευσης
και
ανάκλησης
δεδοµένων

Aποθηκευµένα
δεδοµένα

Ο χειρισµός των δεδοµένων στο υλικό του υπολογιστή γίνεται από το
λογισµικό του Συστήµατος ∆ιαχείρισης Βάσεων ∆εδοµένων που στο
σχήµα 1.1 ονοµάζεται «Λογισµικό Αποθήκευσης και Ανάκλησης ∆εδοµένων». Αυτό το λογισµικό αναλαµβάνει να µεταφέρει όλες τις εντολές
του χρήστη προς το υλικό. Το λογισµικό αυτό συνεργάζεται µε το άλλο
τµήµα του Συστήµατος ∆ιαχείρισης Βάσεων ∆εδοµένων που είναι το
«Λογισµικό Χειρισµού Ερωτήσεων». Όλα τα Συστήµατα ∆ιαχείρισης
Βάσεων ∆εδοµένων παρέχουν µία γλώσσα υποβολής ερωτήσεων προς
τη Βάση ∆εδοµένων. Αυτές οι ερωτήσεις επεξεργάζονται από το Λογισµικό Χειρισµού Ερωτήσεων και στη συνέχεια µετατρέπονται σε εντολές για ανάκληση συγκεκριµένων δεδοµένων από το υλικό και µεταφέρονται στο Λογισµικό Αποθήκευσης και Ανάκλησης ∆εδοµένων.
Στο αριστερό µέρος του σχήµατος 1.1 απεικονίζονται Ν Βάσεις ∆εδοµένων. (Με το σύστηµα µπορούν να υλοποιηθούν αρκετές Βάσεις
∆εδοµένων που ο αριθµός τους στο σχήµα 1.1 ορίζεται ως Ν.) Ο χρήστης µίας Βάσης ∆εδοµένων δεν αντιλαµβάνεται τη διαδικασία, όπως
την υλοποιεί το Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων. Συνήθως

1.2 ™À™∆∏ª∞ ¢π∞Ã∂πƒπ™∏™ µ∞™∂ø¡ ¢∂¢√ª∂¡ø¡

23

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

Ακολουθούν µερικές προτάσεις. Ποιες από αυτές είναι σωστές και
ποιες λάθος Επιλέξτε Σωστό ή Λάθος.
Σωστό
Λάθος
Για κάθε Βάση ∆εδοµένων χρειαζόµαστε
διαφορετικό Σύστηµα ∆ιαχείρισης Βάσεων
∆εδοµένων.

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

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

Το Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων
αποτελείται από το Λογισµικό Χειρισµού
Ερωτήσεων, το Λογισµικό Αποθήκευσης και
Ανάκλησης ∆εδοµένων και το Υλικό
Αποθήκευσης των ∆εδοµένων.

ÕÛÎËÛË
·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
1.4

KEºA§AIO 1: EI™A°ø°H

24

1.2.3 TÈ ·Ú¤¯ÂÈ ¤Ó· Û‡ÛÙËÌ· ‰È·¯Â›ÚÈÛ˘ ‚¿ÛˆÓ
‰Â‰Ô̤ӈÓ

Όπως σας αναφέραµε στο τέλος της ενότητας 1.2.2 µία Βάση ∆εδοµένων µπορεί να υλοποιηθεί και αυτόνοµα χωρίς να χρησιµοποιηθεί
ένα Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων. Όµως κατά κανόνα οι
παροχές ενός Συστήµατος ∆ιαχείρισης Βάσεων ∆εδοµένων είναι αυτές
που τελικά ωθούν τους χρήστες να το χρησιµοποιήσουν. Στην ενότητα αυτή θα περιγράψουµε τι παρέχει ένα Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων.
∂À∫√§π∞ ™∆∏ ™Ã∂¢π∞™∏ ∫∞π À§√¶√π∏™∏

Όπως ήδη γνωρίζετε ένας χρήστης µίας Βάσης ∆εδοµένων θέλει
αρχικά να σχεδιάσει τη Βάση ∆εδοµένων και να ορίσει τους τύπους
δεδοµένων (για τους οποίους θα µιλήσουµε στην ενότητα 2.2.1) που
θα χρησιµοποιεί, µετά να δηµιουργήσει τη Βάση ∆εδοµένων και στη
συνέχεια να χρησιµοποιεί τη Βάση ∆εδοµένων ή να επιτρέπει και σε
άλλους χρήστες να τη χρησιµοποιούν ταυτόχρονα µε αυτόν. Η υλοποίηση του λογισµικού που πραγµατοποιεί αυτές τις διαδικασίες δε
χρειάζεται να γίνει, µια και όλα τα παραπάνω παρέχονται από το
Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων. Επίσης το σύστηµα παρέχει στον χρήστη ένα ενιαίο τρόπο για να ορίζει τις Βάσεις ∆εδοµένων του και µια φιλοσοφία που τον καθοδηγεί στις ενέργειές του.
∂¶π¶∂¢∞ Ã∏™∆ø¡ ∫∞π ∂§∂°Ã√™ ¶ƒ√™µ∞™∏™

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

1.2 ™À™∆∏ª∞ ¢π∞Ã∂πƒπ™∏™ µ∞™∂ø¡ ¢∂¢√ª∂¡ø¡

ενότητα 1.1.2. Εισαγωγή και τροποποίηση δεδοµένων θα µπορεί να
κάνει καθένας που θα θέλει να χρησιµοποιήσει τη Βάση ∆εδοµένων;
Προφανώς όχι. Η δυνατότητα αυτή θα πρέπει να δίνεται µόνο στο
εξουσιοδοτηµένο προσωπικό (Μετεωρολόγους), ενώ οι υπόλοιποι θα
πρέπει να µπορούν µόνο να βλέπουν τα δεδοµένα.
Το Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων παρέχει διαφορετικά επίπεδα χρηστών ανάλογα µε τις δυνατότητες και απαιτήσεις καθενός.
Επίσης το σύστηµα φροντίζει για την τήρηση των κανόνων ασφαλείας και ελέγχει την πρόσβαση σε αυτό και στις Βάσεις ∆εδοµένων και
δεν επιτρέπει παραβάσεις των επιπέδων πρόσβασης. Τα επίπεδα πρόσβασης δεν ισχύουν µόνο για τις Βάσεις ∆εδοµένων, αλλά και για το
ίδιο το Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων. Αναλυτικά για τα
επίπεδα χρηστών θα συζητήσουµε στην ενότητα 1.4.
¶ƒ√™∆∞™π∞ ∞¶√ µ§∞µ∂™ À§π∫√À

Το Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων παρέχει δυνατότητες για
τήρηση αντιγράφων ασφαλείας καθώς και δυνατότητες ανάληψης της
Βάσης ∆εδοµένων µετά από βλάβες. Έτσι εξασφαλίζει καλύτερη προστασία των δεδοµένων. Η ανάληψη (ή ανάνηψη) των δεδοµένων είναι
η διαδικασία κατά την οποία το Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων είτε αυτόµατα (χωρίς τη συµβολή του διαχειριστή) είτε χειροκίνητα (µε τη συµβολή του διαχειριστή) ανακτά τα δεδοµένα που
χάθηκαν έπειτα από µία βλάβη.
¢À¡∞∆√∆∏∆∞ ¶∂ƒπ°ƒ∞º∏™ ¶∂ƒπ√ƒπ™ªø¡ √ƒ£√∆∏∆∞™

Σε µία Βάση ∆εδοµένων µπορούν να τεθούν περιορισµοί ορθότητας.
Τέτοιοι περιορισµοί σχετίζονται µε την οργάνωση των δεδοµένων στη
Βάση, ή τις τιµές που µπορούν να λάβουν κάποια δεδοµένα. Για παράδειγµα στη Μετεωρολογική Βάση ∆εδοµένων που αναφέραµε στο
παράδειγµα 1.1, θα µπορούσαµε να ορίσουµε ότι η τιµή της θερµοκρασίας θα κυµαίνεται από –50 έως +50 βαθµούς. Με αυτόν τον
τρόπο αν κάποιος εισήγαγε κατά λάθος την τιµή «177» αντί για «17»
το Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων θα εντόπιζε το λάθος και
δε θα δεχόταν την τιµή. (Θα αντιλαµβανόταν δηλαδή ότι η τιµή 177
δεν µπορεί να είναι πραγµατική τιµή για θερµοκρασία.) Με αυτό τον
τρόπο το σύστηµα υλοποιεί ελέγχους και προστατεύει τη Βάση ∆εδο-

25

KEºA§AIO 1: EI™A°ø°H

26

µένων από λαθεµένες εισαγωγές δεδοµένων. Προσέξτε όµως: Ακόµα
και µε τον παραπάνω περιορισµό, κάποιος θα µπορούσε να κάνει
λάθος και αντί για «17» να εισάγει «27». Αυτό το λάθος δεν µπορεί
να εντοπιστεί από το Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων, αλλά
µόνο από τους χρήστες.
¢À¡∞∆√∆∏∆∞ ∂§∂°Ã√À ¶§∂√¡∞™ªø¡

Το Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων πραγµατοποιεί και
ελέγχους για πλεονασµό δεδοµένων. Υποθέστε ότι, αντί για Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων χρησιµοποιούσαµε µία Βάση
∆εδοµένων µε καρτέλες όπως στο παράδειγµα 1.2 της ενότητας 1.1.3,
και ότι για την τήρηση των αρχείων ήταν επιφορτισµένοι δύο υπάλληλοι. Από κάποιο λάθος λοιπόν έγραψαν και οι δύο καρτέλα για την
«Αθήνα – Ιανουάριος 1998». Εκτός από το πρόβληµα ότι θα είχαµε
διπλά τα δεδοµένα, θα µπορούσαν να προκύψουν µεγαλύτερα προβλήµατα που σχετίζονται µε την συµβατότητα των δεδοµένων. Υποθέστε ότι εντοπίστηκε ένα λάθος στις µετρήσεις και η τιµή για την
ηµεροµηνία 16 Ιανουαρίου πρέπει να αλλάξει και από 21 °C πρέπει
να γίνει 18 °C. Εάν κάποιος αναλάβει να κάνει την αλλαγή θα την
κάνει σε µία µόνο καρτέλα, ενώ η άλλη θα συνεχίζει να έχει την
λάθος τιµή. Αυτό σηµαίνει ότι η Βάση ∆εδοµένων θα περιέχει λάθος
δεδοµένα, παρά τις διορθώσεις. Στην περίπτωση του Συστήµατος ∆ιαχείρισης Βάσεων ∆εδοµένων οι πλεονασµοί ελέγχονται αυτόµατα από
το σύστηµα και η συµβατότητα των δεδοµένων προστατεύεται από
το ίδιο το Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων απλοποιώντας
την εργασία του χρήστη.

¢Ú·ÛÙËÚÈfiÙËÙ· 1.2

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

1.3 ∆π ¶∞ƒ∂Ã∂π ∏ µ∞™∏ ¢∂¢√ª∂¡ø¡

1.3 ∆È ·Ú¤¯ÂÈ Ë ‚¿ÛË ‰Â‰Ô̤ӈÓ

™ÎÔfi˜
Σκοπός αυτής της ενότητας είναι να τονίσει τα πλεονεκτήµατα που
παρέχει η χρήση µίας Βάσης ∆εδοµένων. Τώρα που έχετε µάθει τι
σηµαίνει Βάση ∆εδοµένων, αλλά και τι είναι το Σύστηµα ∆ιαχείρισης
Βάσεων ∆εδοµένων καθώς και τι πλεονεκτήµατα παρέχει, είστε σε θέση
να αναγνωρίσετε τι µπορεί να παρέχει µία Βάση ∆εδοµένων στους χρήστες της και να συγκρίνετε την οργάνωση ενός µοντέλου του πραγµατικού κόσµου σε Βάση ∆εδοµένων που υλοποιήθηκε µε τη χρήση ενός
Συστήµατος ∆ιαχείρισης Βάσεων ∆εδοµένων, έναντι της παραδοσιακής οργάνωσης σε αρχεία (είτε σε υπολογιστή, είτε χωρίς).
¶ÚÔÛ‰ÔÎÒÌÂÓ· ∞ÔÙÂϤÛÌ·Ù·
Όταν θα έχετε ολοκληρώσει τη µελέτη αυτής της ενότητας θα µπορείτε να:
• αναφέρετε τι πλεονεκτήµατα παρέχει η χρήση της Βάσης ∆εδοµένων
• συγκρίνετε µεταξύ της χρήσης Βάσεων ∆εδοµένων και ενός παραδοσιακού µοντέλου µε αρχεία
• αναφέρετε περιπτώσεις όπου απαιτείται η χρήση Βάσεων ∆εδοµένων
και περιπτώσεις όπου η χρήση Βάσεων ∆εδοµένων για την οργάνωση ενός µοντέλου του πραγµατικού κόσµου, δεν είναι απαραίτητη
∂ÈÛ·ÁˆÁÈΤ˜ ¶·Ú·ÙËÚ‹ÛÂȘ
Η χρήση Βάσεων ∆εδοµένων για µοντελοποίηση ενός προβλήµατος
του πραγµατικού κόσµου παρέχει τα παρακάτω πλεονεκτήµατα, όπως
τα αναφέρουµε επιγραµµατικά:
1. ∆υνατότητα ταυτόχρονης προσπέλασης πολλών χρηστών στα δεδοµένα και έλεγχο της προσπέλασης.
2. ∆υνατότητα ταχύτατης εξαγωγής απαντήσεων σε απλές ερωτήσεις.
3. Ευελιξία σε πιθανές αλλαγές και γενικότερα ευκολία παρακολούθησης των αλλαγών του µοντέλου του πραγµατικού κόσµου.
4. Υψηλή ποιότητα δεδοµένων.
Στις ενότητες 1.3.1 έως 1.3.5 που ακολουθούν θα αναλύσουµε τα
παρακάτω πλεονεκτήµατα.

27

KEºA§AIO 1: EI™A°ø°H

28

1.3.1 T·˘Ùfi¯ÚÔÓË ÚÔÛ¤Ï·ÛË

Ένα βασικό κέρδος από την χρήση Βάσης ∆εδοµένων είναι η δυνατότητα που παρέχει σε πολλούς χρήστες να έχουν ταυτόχρονη προσπέλαση στα δεδοµένα, αλλά και η αυτοµατοποίηση των ελέγχων που
συνεπάγεται αυτή η ταυτόχρονη προσπέλαση. Για παράδειγµα, το
Σύστηµα ∆ιαχείρισης της Bάσης ∆εδοµένων φροντίζει να αποκλείει
περιπτώσεις ταυτόχρονης αλλαγής ενός δεδοµένου από δύο ή περισσότερους χρήστες.
Επίσης, το Σύστηµα ∆ιαχείρισης της Bάσης ∆εδοµένων φροντίζει για
το έλεγχο των εξουσιοδοτηµένων ή µη προσπελάσεων στα δεδοµένα,
παρέχοντας σε κάθε χρήστη µόνο τα δεδοµένα αυτά για τα οποία έχει
εξουσιοδότηση, και επιτρέποντάς του µόνο τις πράξεις (π.χ. διαγραφή, ή αλλαγή) αυτές για τις οποίες έχει αρµοδιότητα.
1.3.2 ∆·¯‡Ù·ÙË ÂÍ·ÁˆÁ‹ ··ÓÙ‹ÛˆÓ

Ένα µεγάλο πρόβληµα της οργάνωσης ενός µοντέλου του πραγµατικού κόσµου χωρίς τη χρήση Βάσης ∆εδοµένων είναι η αδυναµία αποφυγής αρκετής εργασίας από τον άνθρωπο για να αντληθεί η απαιτούµενη πληροφορία, προκειµένου να εξαχθούν απαντήσεις σε απλές
ερωτήσεις. Ένα σύστηµα αρχείων οργανώνει την πληροφορία σειριακά σε αρχεία, χωρίς τη δυνατότητα αναζήτησης παρά µόνο σειριακά
(δηλαδή ανάγνωση ενός τµήµατος του αρχείου στη µνήµη, έλεγχος
και µετά ανάγνωση του επόµενου τµήµατος, κτλ).
Θυµηθείτε τις ερωτήσεις που συζητήσαµε στο παράδειγµα 1.2. Σε ένα
παραδοσιακό σύστηµα αρχείων σε ηλεκτρονικό υπολογιστή η απάντηση στην ερώτηση «∆ώσε µας την πόλη που είχε την υψηλότερη
θερµοκρασία για κάθε ηµέρα από το 1990 µέχρι σήµερα», θα σήµαινε άνοιγµα εκατοντάδων αρχείων και ανθρώπινη εργασία για την
καταγραφή και σύγκριση δεδοµένων. Ακριβώς επειδή τα δεδοµένα
συνήθως συλλέγονται για την απόκτηση πληροφορίας µε την µορφή
απαντήσεων σε τέτοιου είδους ερωτήσεις, η χρήση παραδοσιακών
µοντέλων οργάνωσης δεν είναι εξυπηρετική, αφού η παροχή τέτοιου
είδους πληροφορίας είναι πρακτικά ανέφικτη. Ο λόγος είναι ότι η
οργάνωση των δεδοµένων δεν υποστηρίζει την αυτόµατη εξαγωγή
τέτοιους είδους απαντήσεων σε ερωτήσεις.

1.3 ∆π ¶∞ƒ∂Ã∂π ∏ µ∞™∏ ¢∂¢√ª∂¡ø¡

Αντίθετα, µε τη χρήση Βάσης ∆εδοµένων τέτοιου είδους πληροφορίες
µπορούν να είναι διαθέσιµες ταχύτατα στο χρήστη. Ο τρόπος οργάνωσης των δεδοµένων δίνει τη δυνατότητα στις Βάσεις ∆εδοµένων να µπορούν να δίνουν απαντήσεις αυτόµατα και ταχύτατα τόσο σε πολύπλοκες ερωτήσεις, όσο και σε απλές ερωτήσεις οι οποίες όµως θα ήταν πολύ
δύσκολο να απαντηθούν εάν είχε ακολουθηθεί οργάνωση βασισµένη σε
ένα παραδοσιακό σύστηµα (είτε µε χειρόγραφα, είτε µε µη οργανωµένα σε Bάση ∆εδοµένων αρχεία στο ηλεκτρονικό υπολογιστή).
1.3.3 E˘ÂÏÈÍ›·

Πολλές φορές το µοντέλο του πραγµατικού κόσµου αλλάζει. Αυτό
κατά κανόνα απαιτεί αλλαγές που τις περισσότερες φορές είναι πολύ
δύσκολο να υλοποιηθούν σε ένα παραδοσιακό µοντέλο. Αντίθετα, ο
τρόπος οργάνωσης των δεδοµένων σε µία Βάση ∆εδοµένων, κατά
κανόνα, επιδέχεται αλλαγές και µπορεί πολύ πιο εύκολα να ακολουθεί το µοντέλο του πραγµατικού κόσµου.
Αυτό σηµαίνει ότι οι χρήστες της Βάσης ∆εδοµένων µπορούν να προσαρµόσουν την µορφή των δεδοµένων ευκολότερα και οι αλλαγές
αυτές να εφαρµοστούν σε όλα τα δεδοµένα, σε αντίθεση µε το παραδοσιακό µοντέλο.
1.3.4 À„ËÏ‹ ÔÈfiÙËÙ· ‰Â‰Ô̤ӈÓ

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

29

KEºA§AIO 1: EI™A°ø°H

30

ÕÛÎËÛË
·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
1.5

Ακολουθούν µερικές προτάσεις. Ποιες από αυτές είναι σωστές και
ποιες λάθος;
Σωστό

Λάθος

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

Η Βάση ∆εδοµένων παρέχει ένα µηχανισµό
που παρέχει ταχύτατα απαντήσεις
σε ερωτήσεις του χρήστη.

Η Βάση ∆εδοµένων δεν επιτρέπει αλλαγές
στη µορφή των δεδοµένων.

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

1.3.5 ∞Èٛ˜ ÁÈ· ÌË ¯Ú‹ÛË ‚¿ÛÂˆÓ ‰Â‰Ô̤ӈÓ

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

1.3 ∆π ¶∞ƒ∂Ã∂π ∏ µ∞™∏ ¢∂¢√ª∂¡ø¡ / 1.4 ∂¶π¶∂¢∞ Ã∏™∆ø¡

31

λογιστή ο λόγος αυτός τείνει να εκλείψει.
Όταν τα δεδοµένα είναι στατικά τότε κατά κανόνα δεν απαιτείται η
υλοποίηση Βάσης ∆εδοµένων. Για δεδοµένα που είναι «παγωµένα»,
δηλαδή δεν πρόκειται να αλλάξουν, η Βάση ∆εδοµένων πιθανότητα
θα ήταν περιττή. Προσέξτε όµως: Ακόµα και σε στατικά δεδοµένα
όταν απαιτείται η συχνή ανάκτηση πληροφοριών οι οποίες δεν είναι
εφικτό να ανακτηθούν λόγω της δοµής του µοντέλου τους, ίσως και
πάλι να πρέπει να ακολουθηθεί η λύση της Βάσης ∆εδοµένων. Τέλος,
για µικρό όγκο δεδοµένων, ή για δεδοµένα που προσπελαύνονται µόνο
από ένα χρήστη συνήθως δεν είναι απαραίτητη η υλοποίηση Βάσης
∆εδοµένων.

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

¢Ú·ÛÙËÚÈfiÙËÙ· 1.3

KEºA§AIO 1: EI™A°ø°H

32

1.4 ∂›‰· ¯ÚËÛÙÒÓ

™ÎÔfi˜
Έχοντας ολοκληρώσει τις ενότητες 1.1 έως 1.3 έχετε µάθει τη χρησιµότητα των Βάσεων ∆εδοµένων και γνωρίζετε τις λειτουργίες που
παρέχει ένα Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων. Ο σκοπός
αυτής της ενότητας είναι να µελετήσετε τους χρήστες ενός Συστήµατος
∆ιαχείρισης Βάσεων ∆εδοµένων, καθώς και τους χρήστες των Βάσεων ∆εδοµένων που δηµιουργούνται µε αυτό και να εξετάσετε τις αρµοδιότητες και τα δικαιώµατα καθενός από αυτούς.
¶ÚÔÛ‰ÔÎÒÌÂÓ· ∞ÔÙÂϤÛÌ·Ù·
Όταν θα έχετε ολοκληρώσει τη µελέτη αυτής της ενότητας θα µπορείτε να:
• περιγράψετε τους χρήστες ενός Συστήµατος ∆ιαχείρισης Βάσεων
∆εδοµένων
• επιλέξετε τις κατηγορίες χρηστών που θα έχουν πρόσβαση στη Bάση
∆εδοµένων, όταν σας δίνεται ένα πρόβληµα του πραγµατικού
κόσµου που θα υλοποιηθεί µε Βάση ∆εδοµένων
• αναφέρετε τα δικαιώµατα και τους περιορισµούς για κάθε χρήστη
∂ÈÛ·ÁˆÁÈΤ˜ ¶·Ú·ÙËÚ‹ÛÂȘ
Στην ενότητα αυτή θα εξετάσουµε τέσσερα επίπεδα χρηστών. Αν και
σε µερικά βιβλία θα δείτε διάκριση ανάµεσα σε χρήστες ενός Συστήµατος ∆ιαχείρισης Βάσεων ∆εδοµένων και σε χρήστες των Βάσεων
∆εδοµένων, δεν θα κάνουµε τέτοια διάκριση και θα αναφέρουµε τις
κατηγορίες των χρηστών συνολικά. Αρχίζοντας µε την κατηγορία µε
τις περισσότερες εξουσίες (άρα και ευθύνες και αρµοδιότητες) και προχωρώντας στις κατηγορίες µε τις λιγότερες εξουσίες έχουµε: Τον ∆ιαχειριστή του Συστήµατος ∆ιαχείρισης Βάσεων ∆εδοµένων, τους Ιδιοκτήτες των Βάσεων ∆εδοµένων, τους Χρήστες Υψηλής ∆ιαβάθµισης µιας Βάσης ∆εδοµένων, και τους Χρήστες Κατώτερης ∆ιαβάθµισης µίας Βάσης ∆εδοµένων.
1.4.1 ¢È·¯ÂÈÚÈÛÙ‹˜ Û˘ÛÙ‹Ì·ÙÔ˜

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

1.4 ∂¶π¶∂¢∞ Ã∏™∆ø¡

κατά κανόνα τεχνικός µε υψηλό επίπεδο κατάρτισης. Αρµοδιότητά του
είναι η συντήρηση του συστήµατος, ο έλεγχος των πόρων του συστήµατος, η δηµιουργία ή εγκατάσταση εφαρµογών που χρησιµοποιούνται
για τη δηµιουργία ή τη σχεδίαση Βάσεων ∆εδοµένων, η επίβλεψη της
δηµιουργίας ή της διαγραφής Βάσης ∆εδοµένων και η ανάθεση πόρων
του συστήµατος για την καλή λειτουργία των Βάσεων ∆εδοµένων.
Με απλά λόγια, ο ∆ιαχειριστής έχει ως βασική του αρµοδιότητα να
διευκολύνει όσους χρησιµοποιούν το Σύστηµα ∆ιαχείρισης Βάσεων
∆εδοµένων παρέχοντας τους τη δυνατότητα να δηµιουργούν και να
χειρίζονται Βάσεις ∆εδοµένων, καθώς και τα απαραίτητα εργαλεία για
τη σχεδίαση και την υλοποίηση των εφαρµογών τους. Κατά κανόνα
συνεργάζεται µε τους Ιδιοκτήτες των Βάσεων ∆εδοµένων για την εξυπηρέτηση των αναγκών τους.
1.4.2 π‰ÈÔÎÙ‹Ù˘ ‚¿Û˘ ‰Â‰Ô̤ӈÓ

Ο Ιδιοκτήτης µιας Βάσης ∆εδοµένων ονοµάζεται συχνά και ∆ιαχειριστής Βάσης ∆εδοµένων. Θα προτιµήσουµε την πρώτη ονοµασία για να
µη συγχέεται µε τον ∆ιαχειριστή του Συστήµατος. Ο Ιδιοκτήτης µιας
Βάσης ∆εδοµένων έχει δηµιουργήσει µία Βάση ∆εδοµένων και τις απαραίτητες εφαρµογές για την προσπέλασή της. Έχει σαν αρµοδιότητα να
φροντίζει για τους πόρους υλικού και λογισµικού σε συνεργασία µε τον
∆ιαχειριστή του Συστήµατος. Επίσης, φροντίζει να ορίζει τους χρήστες
της Βάσης ∆εδοµένων του, να καθορίζει τα επίπεδα διαβάθµισης κάθε
χρήστη, να παρέχει δικαιώµατα σε χρήστες και να διαγράφει χρήστες
οι οποίοι ολοκλήρωσαν τις δραστηριότητές τους στη Βάση ∆εδοµένων.
Συνήθως ο Ιδιοκτήτης µιας Βάσης ∆εδοµένων συνεργάζεται µε ένα
επιτελείο τεχνικών και αναλαµβάνουν την υλοποίηση των εφαρµογών
προσπέλασης της Βάσης ∆εδοµένων, δηλαδή των προγραµµάτων
λογισµικού µέσω των οποίων οι υπόλοιποι χρήστες θα προσπελαύνουν τα δεδοµένα της Βάσης ∆εδοµένων.
1.4.3 XÚ‹ÛÙ˜ ˘„ËÏ‹˜ ‰È·‚¿ıÌÈÛ˘

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

33

KEºA§AIO 1: EI™A°ø°H

34

µένων συνοπτικά περιγράφονται ως εισαγωγή δεδοµένων, διαγραφή
δεδοµένων, αλλαγή σε δεδοµένο και ανάγνωση δεδοµένων. Από αυτές
τις δραστηριότητες µόνο η ανάγνωση δεδοµένων είναι µη καταστροφική δραστηριότητα, δηλαδή δεν προκαλεί αλλαγές στα δεδοµένα. Οι Χρήστες Υψηλής ∆ιαβάθµισης έχουν δικαιοδοσία να εκτελούν εντολές προς
τη Βάση ∆εδοµένων που επιφέρουν αλλαγές στα δεδοµένα. Αυτή είναι
και η βασική τους διαφορά από τους Χρήστες Κατώτερης ∆ιαβάθµισης.
Πολλές φορές ο Ιδιοκτήτης µίας Βάσης ∆εδοµένων εκχωρεί περισσότερα δικαιώµατα σε µερικούς Χρήστες Υψηλής ∆ιαβάθµισης για να τον
διευκολύνουν στο έργο του. Για παράδειγµα, εκχωρεί το δικαίωµα χειρισµού χρηστών σε κάποιον επιλεγµένο Χρήστη Υψηλής ∆ιαβάθµισης,
έτσι ώστε να τον διευκολύνει στη δηµιουργία και διαγραφή χρηστών.
1.4.4 XÚ‹ÛÙ˜ ηÙÒÙÂÚ˘ ‰È·‚¿ıÌÈÛ˘

Οι Χρήστες Κατώτερης ∆ιαβάθµισης είναι χρήστες που χρησιµοποιούν τη Βάση ∆εδοµένων χωρίς να έχουν δικαίωµα να επιτελέσουν
αλλαγές στα δεδοµένα. Συνήθως είναι χρήστες που λαβαίνουν πληροφορίες από τη Βάση ∆εδοµένων τις οποίες έχουν εισάγει οι Χρήστες Υψηλής ∆ιαβάθµισης. Πολλές φορές υπάρχουν επίπεδα διαβάθµισης και σε αυτούς τους χρήστες, επίπεδα που καθορίζει συνήθως ο
Ιδιοκτήτης της Βάσης ∆εδοµένων. Συνήθως αυτοί οι χρήστες είναι
χρήστες χωρίς πολλές τεχνικές γνώσεις που χρησιµοποιούν τη Βάση
∆εδοµένων απλά για ενηµέρωση.

¢Ú·ÛÙËÚÈfiÙËÙ· 1.4

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

BA™EI™ ¢E¢OMENøN

™‡ÓÔ„Ë
Στο κεφάλαιο αυτό σας εισάγαµε στις βασικές έννοιες των Βάσεων
∆εδοµένων. Με την εµπειρία που έχετε αποκτήσει από τη µελέτη αυτού
του κεφαλαίου µπορείτε να διακρίνετε ανάµεσα σε έννοιες που σχετίζονται µε τις Βάσεις ∆εδοµένων και που πολλοί σπουδαστές τις συγχέουν, όπως δεδοµένα και πληροφορία, Βάση ∆εδοµένων και Σύστηµα
∆ιαχείρισης Βάσεων ∆εδοµένων. Γνωρίζετε τι είναι Βάση ∆εδοµένων,
τι παρέχει στους χρήστες της, πότε πρέπει να χρησιµοποιείται και πότε
όχι. Επίσης γνωρίζετε τι είναι Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων, ποια είναι η δοµή του, τι παρέχει στους χρήστες, ποιοι είναι οι χρήστες ενός τέτοιου συστήµατος και σε τι κατηγορίες χωρίζονται.
Είναι σαφές ότι µε τη µελέτη αυτού του κεφαλαίου έχετε αποκτήσει
εµπειρία σε βασικές έννοιες Βάσεων ∆εδοµένων. Αυτή την εµπειρία
πρέπει να την καλλιεργήσετε, είτε µε περισσότερες δραστηριότητες, είτε
µε παραπάνω µελέτη. Ακολουθούν µία συγκεντρωτική άσκηση αυτοαξιολόγησης και µία δραστηριότητα που θα σας βοηθήσουν στην επανάληψη της ύλης και στον έλεγχο των γνώσεων που αποκτήσατε. Σας
προτείνουµε πριν προχωρήσετε στην επίλυση των ασκήσεων να ολοκληρώσετε µία επανάληψη του κεφαλαίου και επίσης να συµβουλευτείτε και τη βιβλιογραφία προαιρετικής ανάγνωσης που έπεται.

35

KEºA§AIO 1: EI™A°ø°H

36

ÕÛÎËÛË
·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
1.6

Ακολουθούν µερικές προτάσεις. Ποιες από αυτές είναι σωστές και
ποιες λάθος;
Σωστό

Λάθος

Πληροφορία είναι δεδοµένα που δεν έχουν
αποθηκευτεί σε ηλεκτρονικό υπολογιστή.

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

Κάθε συλλογή δεδοµένων αποτελεί
µία Βάση ∆εδοµένων.

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

Το Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων
διευκολύνει τη δηµιουργία και συντήρηση
Βάσεων ∆εδοµένων.

Ο ∆ιαχειριστής ενός Συστήµατος ∆ιαχείρισης
Βάσεων ∆εδοµένων µπορεί να δηµιουργήσει
Βάσεις ∆εδοµένων και να ορίσει Ιδιοκτήτες
για κάθε Βάση ∆εδοµένων.

Οι Ιδιοκτήτες µίας Βάσης ∆εδοµένων
µπορούν να διαγράψουν ή να ορίσουν χρήστες
σε αυτή τη Βάση ∆εδοµένων.

Οι Ιδιοκτήτες µίας Βάσης ∆εδοµένων µπορούν
να διαγράψουν ή να ορίσουν µόνο
τους Χρήστες Κατώτερης ∆ιαβάθµισης
σε αυτή τη Βάση ∆εδοµένων.

BA™EI™ ¢E¢OMENøN

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

BÈ‚ÏÈÔÁÚ·Ê›· ÁÈ· ÂÚ·ÈÙ¤Úˆ ÌÂϤÙË
[1] Elmasri R. & Navathe S. B.,Fundamentals of Database Systems,
Addison–Wesley, 1994
Το βιβλίο υπάρχει και σε Ελληνική µετάφραση από τις εκδόσεις ∆ίαυλος σε µετάφραση Μ. Χατζόπουλου, 1996. Στο κεφάλαιο 1 του βιβλίου θα µπορέσετε να βρείτε περιγραφή των εισαγωγικών εννοιών. Επίσης υπάρχει µια πολύ εµπεριστατωµένη και εκτενής ιστορική αναδροµή της εξέλιξης των Συστηµάτων ∆ιαχείρισης Βάσεων ∆εδοµένων,
κάτι που δεν υπάρχει σε αυτό το εγχειρίδιο µελέτης.
[2] Ulman J. D., Principles of Database Systems, Computer Science Press,
1982.
Είναι ένα από το πρώτα και βασικότερα βιβλία για Βάσεις ∆εδοµένων. Στο κεφάλαιο 1 µε τίτλο Introduction to Database System
Concepts, µπορείτε να βρείτε ένα εναλλακτικό τρόπο παρουσίασης
των εισαγωγικών εννοιών.
[3] Silberschatz A., Korth H., Sudarshan S, Database System Concepts,

37

¢Ú·ÛÙËÚÈfiÙËÙ· 1.5

KEºA§AIO 1: EI™A°ø°H

38

Third Edition, McGraw–Hill, 1986.
Ένα πολύ καλό βιβλίο που προτείνουµε σε όσους γνωρίζουν καλά
αγγλικά και θέλουν «το κάτι παραπάνω», να το χρησιµοποιήσουν για
µελέτη παράλληλα µε το µάθηµα. Στο κεφάλαιο 1 υπάρχουν εισαγωγικές έννοιες για Βάσεις ∆εδοµένων.
[4] Abiteboul, Hull and
Addison–Wesley, 1995.

Vianou,

Foundations

of

Databases,

Στα κεφάλαια 1 και 2 του βιβλίου αυτού θα βρείτε µια εισαγωγή στο
πρόβληµα των Βάσεων ∆εδοµένων. Το προτείνουµε στους σπουδαστές που έχουν καλό µαθηµατικό υπόβαθρο, καθώς παρουσιάζεται µία
µαθηµατική προσέγγιση των µοντέλων των Βάσεων ∆εδοµένων.
[5] Everest G., Database Management, McGraw–Hill, 1986.
Όλο το τµήµα Ι του βιβλίου, δηλαδή τα κεφάλαια 1 έως και 5 ασχολούνται µε τις εισαγωγικές έννοιες που µελετήσαµε στο κεφάλαιο 1
του εγχειριδίου αυτού. Απευθύνεται περισσότερο σε αναγνώστες που
έχουν ήδη ένα ισχυρό επίπεδο στην Τεχνολογία Λογισµικού και
θέλουν να εντάξουν Βάσεις ∆εδοµένων στα πλαίσια των εφαρµογών
τους.
[6] Ullman J. D., Widom J., A First Course in Database Systems,
Prentice–Hall, 1997.
Ένα από το πιο σύγχρονα βιβλία σε Βάσεις ∆εδοµένων. Το κεφάλαιο
1 καλύπτει τις εισαγωγικές έννοιες που µελετήσατε, ωστόσο εισάγει
και σε έννοιες αντικειµενοστραφών Βάσεων ∆εδοµένων τις οποίες
καλύτερα να αφήσουµε για το τέλος της µελέτης σας.

AÚ¯ÈÙÂÎÙÔÓÈ΋ Î·È º˘ÛÈ΋ OÚÁ¿ÓˆÛË Aگ›ˆÓ
™ÎÔfi˜
Σκοπός αυτού του κεφαλαίου είναι να περιγράψει τις Βάσεις ∆εδοµένων από πλευράς οργάνωσης στο φυσικό επίπεδο και να επεξηγήσει
τις διαφορές ανάµεσα στον τρόπο που αντιλαµβάνεται ο χρήστης ότι
οργανώνονται τα δεδοµένα, µε τον τρόπο που αυτά οργανώνονται
πραγµατικά στα µέσα αποθήκευσης που χρησιµοποιεί ο ηλεκτρονικός
υπολογιστής. Επίσης, να εξηγήσει τις δοµές που χρησιµοποιούνται για
την οργάνωση των δεδοµένων στο φυσικό επίπεδο και τις τεχνικές
οργάνωσης που µπορούν να χρησιµοποιηθούν για να διευκολυνθεί η
προσπέλαση των δεδοµένων, καθώς και τους τρόπους µε τους οποίους βελτιστοποιείται η απόδοση της Βάσης ∆εδοµένων.
¶ÚÔÛ‰ÔÎÒÌÂÓ· ∞ÔÙÂϤÛÌ·Ù·
Όταν θα έχετε ολοκληρώσει τη µελέτη αυτού του κεφαλαίου θα µπορείτε να:
• εξηγήσετε τις διαφορές ανάµεσα στα επίπεδα αρχιτεκτονικής µίας
Βάσης ∆εδοµένων
• σχεδιάσετε σε αδρές γραµµές τη γενική εικόνα της αρχιτεκτονικής
µιας Βάσης ∆εδοµένων και να περιγράψετε τον τρόπο µε τον οποίο
τα δεδοµένα διακινούνται και επεξεργάζονται από τον υπολογιστή
• διακρίνετε ανάµεσα στις έννοιες «εσωτερικό επίπεδο», «επίπεδο
αντίληψης» και «εξωτερικό επίπεδο»
• εξηγήσετε τις διαφορές µεταξύ σταθερών αρχείων και µεταβλητών
αρχείων
• περιγράψετε τη χρήση των αρχείων από το Σύστηµα ∆ιαχείρισης
Βάσεων ∆εδοµένων
• εξηγήσετε την έννοια «κατακερµατισµός» και να περιγράψετε τις
τεχνικές κατακερµατισµού και τη χρήση αυτών στις Βάσεις ∆εδοµένων
• περιγράψετε την έννοια «δεικτοδότηση» και να δικαιολογήσετε τη
χρήση της σε µία Βάση ∆εδοµένων
• διακρίνετε ανάµεσα σε πρωτεύουσες και δευτερεύουσες δοµές για
ευρετήρια και να περιγράψετε τα ευρετήρια πολλαπλών επιπέδων

2
º

§

π

40

K E º A § A I O 2 : A ƒ Ã π ∆ ∂ ∫ ∆ √ ¡ π ∫ ∏ ∫ ∞ π º À ™ π ∫ ∏ O ƒ °∞ ¡ ø ™ ∏ A ƒ Ã ∂ π ø ¡

και τη χρήση τους στις Βάσεις ∆εδοµένων
• αναφέρετε παραδείγµατα ευρετηρίων και τρόπους δεικτοδότησης
µίας Βάσης ∆εδοµένων
• εξηγήσετε την έννοια «∆έντρα τύπου Β» και να περιγράψετε τη
χρήση των δέντρων αυτών στις Βάσεις ∆εδοµένων
• αναφέρετε παραδείγµατα εγγραφών στο φυσικό επίπεδο και να προτείνετε τις κατάλληλες δοµές για τη δηµιουργία ευρετηρίων
ŒÓÓÔȘ ÎÏÂȉȿ
• Εξωτερικό Επίπεδο (External Level)
• Επίπεδο Αντίληψης (Conceptual Level)
• Εσωτερικό (Φυσικό) Επίπεδο (Internal (Physical) Level)
• Εγγραφές (Records)
• Πεδία (Fields)
• Τύπος ∆εδοµένων (Data Type)
• Αρχεία (Files)
• ∆είκτες (Pointers)
• ∆ιάταξη (Sorting)
• ∆εικτοδότηση (Indexing)
• Κατακερµατισµός (Hashing)
• ∆έντρα τύπου Β (B–Trees)
∂ÈÛ·ÁˆÁÈΤ˜ ¶·Ú·ÙËÚ‹ÛÂȘ
Στο κεφάλαιο αυτό εισάγεται η έννοια της φυσικής οργάνωσης των
Βάσεων ∆εδοµένων. Στην ενότητα 2.1 θα συζητήσουµε για θέµατα
αρχιτεκτονικής και για επίπεδα της Βάσης ∆εδοµένων. Στην ενότητα
2.2 θα περιγράψουµε το φυσικό επίπεδο, τις µονάδες αποθήκευσης και
τον τρόπο µεταφοράς των δεδοµένων. Τέλος, στην ενότητα 2.3 θα
συζητήσουµε τα αρχεία και τον τρόπο µε τον οποίο οι εγγραφές αποθηκεύονται σε αρχεία τα οποία χρησιµοποιεί η Βάση ∆εδοµένων, θα
περιγράψουµε τα ευρετήρια και θα µιλήσουµε για τις δοµές µε τις οποίες διευκολύνεται η πρόσβαση στα δεδοµένα που αποθηκεύονται στο
φυσικό επίπεδο της Βάσης ∆εδοµένων.

2.1 E›‰· AÚ¯ÈÙÂÎÙÔÓÈ΋˜

™ÎÔfi˜
Σκοπός της ενότητας είναι να ορίσει τα τρία επίπεδα της αρχιτεκτονικής των Βάσεων ∆εδοµένων. Περιγράφει τις διαφορές µεταξύ του
περιβάλλοντος που «βλέπει» ο χρήστης (εξωτερικό επίπεδο), µε το
περιβάλλον το οποίο πραγµατικά υλοποιεί τη Βάση ∆εδοµένων σε
φυσικό επίπεδο. Επίσης, σκοπός της ενότητας είναι να επεξηγήσει
τον τρόπο που συνδέονται αυτά τα δύο επίπεδα µε το επίπεδο αντίληψης το οποίο λειτουργεί ως ενδιάµεσο επίπεδο.
¶ÚÔÛ‰ÔÎÒÌÂÓ· ∞ÔÙÂϤÛÌ·Ù·
Όταν θα έχετε ολοκληρώσει τη µελέτη αυτής της ενότητας θα µπορείτε να:
• εξηγήσετε τους ορισµούς των τριών επιπέδων αρχιτεκτονικής των
Βάσεων ∆εδοµένων
• δώσετε τουλάχιστον τρία παραδείγµατα δεδοµένων για κάθε επίπεδο, αντλώντας το υλικό σας από ένα πρόβληµα του πραγµατικού
κόσµου
• περιγράψετε τις λειτουργίες που επιτελούνται σε κάθε επίπεδο αρχιτεκτονικής και να εξηγήσετε τις διαφορές ανάµεσα σε κάθε επίπεδο
• εξηγήσετε τι σηµαίνει διαφάνεια στις Βάσεις ∆εδοµένων
• σχεδιάσετε τον τρόπο µε τον οποίο αλληλεπιδρούν τα τρία επίπεδα
αρχιτεκτονικής των Βάσεων ∆εδοµένων (δηλαδή να µπορείτε να
δείξετε µε ένα σχήµα τι είναι το κάθε επίπεδο)
∂ÈÛ·ÁˆÁÈΤ˜ ¶·Ú·ÙËÚ‹ÛÂȘ
Στην ενότητα 2.1.1 παρουσιάζεται η αρχιτεκτονική µίας Βάσης ∆εδοµένων και στις επόµενες ενότητες (ενότητες 2.1.2 έως 2.1.4) περιγράφονται συνοπτικά τα τρία επίπεδα της αρχιτεκτονικής. Η αρχή γίνεται
από το επίπεδο που «βλέπει» πρώτα ο χρήστης, δηλαδή το εξωτερικό
επίπεδο και µετά ακολουθεί το φυσικό επίπεδο, δηλαδή αυτό που υφίσταται πραγµατικά. Το επίπεδο αντίληψης περιγράφεται τελευταίο,
αφού προϋποθέτει την περιγραφή των άλλων δύο.

K E º A § A I O 2 : A ƒ Ã π ∆ ∂ ∫ ∆ √ ¡ π ∫ ∏ ∫ ∞ π º À ™ π ∫ ∏ O ƒ °∞ ¡ ø ™ ∏ A ƒ Ã ∂ π ø ¡

42

2.1.1 AÚ¯ÈÙÂÎÙÔÓÈ΋ ‚¿ÛÂˆÓ ‰Â‰Ô̤ӈÓ

Η αρχιτεκτονική των Βάσεων ∆εδοµένων συνήθως διαιρείται σε τρία
επίπεδα: το εξωτερικό επίπεδο, το επίπεδο αντίληψης και το εσωτερικό επίπεδο. Τα επίπεδα αυτά παρουσιάζονται στο σχήµα 2.1.
Στο σχήµα 2.1 παρουσιάζονται οι χρήστες (στην αριστερή πλευρά του
σχήµατος) και οι µονάδες αποθήκευσης (στη δεξιά πλευρά του σχήµατος). Οι µονάδες αποθήκευσης µαζί µε τους µηχανισµούς αποθήκευσης και ανάκλησης των δεδοµένων συγκροτούν το φυσικό επίπεδο. Το εξωτερικό επίπεδο αποτελείται από τις όψεις της Βάσης ∆εδοµένων που βλέπουν οι χρήστες και που µπορεί να είναι διαφορετικές
για κάθε χρήστη (για αυτό και στο σχήµα παρουσιάζονται δύο χρήστες για να τονισθεί η διαφορά). Τέλος, το επίπεδο αντίληψης βρίσκεται ανάµεσα στο εξωτερικό και στο φυσικό επίπεδο.
Eξωτερικό επίπεδο

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

Eπίπεδο
αντίληψης

™¯‹Ì· 2.1

Επίπεδα Αρχιτεκτονικής

2.1.2 ∆Ô Â͈ÙÂÚÈÎfi Â›‰Ô

■ Ως εξωτερικό επίπεδο της
αρχιτεκτονικής µίας Βάσης
∆εδοµένων ορίζεται το επίπεδο στο οποίο τα δεδοµένα της
Βάσης ∆εδοµένων παρουσιάζονται στο χρήστη.

Το εξωτερικό επίπεδο είναι το επίπεδο που βρίσκεται πιο κοντά στο
χρήστη. Μπορεί να υπάρχει µία διαφορετική όψη του εξωτερικού επιπέδου για κάθε χρήστη (ή οµάδα χρηστών), δηλαδή ο κάθε χρήστης
να «βλέπει» διαφορετικά τη Βάση ∆εδοµένων. Eίναι δηλαδή το επίπεδο µέσω του οποίου ο χρήστης έρχεται σε άµεση επαφή µε τα δεδοµένα της Bάσης ∆εδοµένων. ■
Έτσι, στο εξωτερικό επίπεδο, το χρήστη της Βάσης ∆εδοµένων δεν
τον απασχολεί το πώς τα δεδοµένα αποθηκεύονται στη Βάση ∆εδοµένων, πώς κατανέµονται στους διάφορους αποθηκευτικούς µηχανισµούς και πώς οργανώνονται. Ο χρήστης βλέπει τα δεδοµένα σε ένα
υψηλότερο επίπεδο αφαίρεσης και αδιαφορεί για τον τρόπο που αυτά

2.1 E¶π¶∂¢∞ AƒÃπ∆∂∫∆√¡π∫∏™

43

τα δεδοµένα διαχειρίζονται από τη Βάση ∆εδοµένων.
Ας ανατρέξουµε στο παράδειγµα 1.1 του προηγούµενου κεφαλαίου. Στο
εξωτερικό επίπεδο ο χρήστης θα έρθει σε επαφή µόνο µε έννοιες όπως
«η θερµοκρασία της Αθήνας στις 5 Νοεµβρίου 1998» χωρίς να έχει αντίληψη του πώς αυτές οι έννοιες µεταφέρονται και ανακαλούνται από
τους αποθηκευτικούς µηχανισµούς της Βάσης ∆εδοµένων.
2.1.3 TÔ Ê˘ÛÈÎfi Â›‰Ô

Το εσωτερικό επίπεδο ή φυσικό επίπεδο είναι το επίπεδο που βρίσκεται πιο κοντά στη φυσική µορφή της Βάσης ∆εδοµένων. Περιγράφει
δηλαδή πως η Βάση ∆εδοµένων είναι «χτισµένη» πραγµατικά. ■
Στην ενότητα αυτή παρουσιάζουµε τη θέση του φυσικού επιπέδου
στην αρχιτεκτονική µίας Βάσης ∆εδοµένων. Αναλυτικά µε το φυσικό
επίπεδο θα ασχοληθούµε στην ενότητα 2.2, όπου θα περιγραφεί και ο
τρόπος αποθήκευσης των δεδοµένων στη Βάση ∆εδοµένων.
Στο φυσικό επίπεδο δεν µας απασχολούν οι έννοιες και οι πληροφορίες, αλλά το πώς τα δεδοµένα αποθηκεύονται στη Βάση ∆εδοµένων,
πώς κατανέµονται στους διάφορους αποθηκευτικούς µηχανισµούς και
πώς οργανώνονται. Αντιµετωπίζονται οι έννοιες του χώρου που καταλαµβάνει κάθε πεδίο στους χώρους (συνήθως µαγνητικούς δίσκους)
αποθήκευσης της Βάσης ∆εδοµένων. Όπως παρουσιάζεται στο σχήµα
2.1, το φυσικό επίπεδο είναι µία συλλογή από χώρους αποθήκευσης
όπως µαγνητικοί δίσκοι, οπτικοί δίσκοι (µίας εγγραφής ή και µε δυνατότητα επανεγγραφής), µαγνητικές ταινίες (παλαιότερα), ροµπότ ταινιών, συστοιχίες δίσκων, συστοιχίες οπτικών δίσκων, κτλ.
Ο χρήστης µίας Βάσης ∆εδοµένων δεν χρειάζεται να γνωρίζει πού
ακριβώς είναι αποθηκευµένα τα δεδοµένα του. Απλά δίνει µία ερώτηση προς τη Βάση ∆εδοµένων και αυτή αναλαµβάνει να τη µετατρέψει σε εντολές προς το φυσικό επίπεδο, να αντλήσει τα δεδοµένα
από τους αντίστοιχους αποθηκευτικούς χώρους και να τα επιστρέψει
στο χρήστη. Το φαινόµενο αυτό ονοµάζεται διαφάνεια. ■
Ο συνδετικός κρίκος ανάµεσα στο εξωτερικό επίπεδο και στο φυσικό
επίπεδο είναι το επίπεδο αντίληψης το οποίο θα περιγράψουµε στην
επόµενη ενότητα.

■ Ως φυσικό επίπεδο της
αρχιτεκτονικής µίας Βάσης
∆εδοµένων ορίζεται το επίπεδο στο οποίο τα δεδοµένα
αποθηκεύονται και οργανώνονται υπό τη µορφή bytes και
σελίδων στο µηχανισµό αποθήκευσης της Βάσης ∆εδοµένων.

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

K E º A § A I O 2 : A ƒ Ã π ∆ ∂ ∫ ∆ √ ¡ π ∫ ∏ ∫ ∞ π º À ™ π ∫ ∏ O ƒ °∞ ¡ ø ™ ∏ A ƒ Ã ∂ π ø ¡

44

2.1.4 ∆Ô Â›Â‰Ô ·ÓÙ›Ï˄˘

Στην ενότητα 2.1.2 περιγράψαµε το εξωτερικό επίπεδο και στην ενότητα 2.1.3 το φυσικό επίπεδο. Ανάµεσα στην υψηλής αφαίρεσης αφηρηµένη περιγραφή του εξωτερικού επιπέδου και στην πραγµατική αποθήκευση των δεδοµένων στο φυσικό επίπεδο παρεµβάλλεται το επίπεδο
αντίληψης (ιδεατό επίπεδο). Το επίπεδο αντίληψης συνδέει το φυσικό
επίπεδο µε τις όψεις των διαφόρων χρηστών στο εξωτερικό επίπεδο. ■
■ Ως επίπεδο αντίληψης
(ιδεατό επίπεδο) της αρχιτεκτονικής µίας Βάσης ∆εδοµένων ορίζεται το επίπεδο στο
οποίο περιγράφεται το σχήµα
της Βάσης ∆εδοµένων µε
αυστηρά καθορισµένο τρόπο,
σε επίπεδο αφαίρεσης αµέσως
υψηλότερο από αυτό του φυσικού επιπέδου.

™¯‹Ì· 2.2

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

Θα πρέπει να σηµειωθεί ότι ο δίπλα ορισµός του επιπέδου αντίληψης
δεν είναι ακριβής. Όµως για να δοθεί ένας πλέον απόλυτος ορισµός,
χρειάζεται αναφορά σε έννοιες που δεν έχετε ακόµη διδαχθεί. Για να
κατανοήσετε το ρόλο του επίπεδου αντίληψης θα δώσουµε ένα παράδειγµα µετάβασης από το εξωτερικό επίπεδο στο φυσικό επίπεδο,
βασιζόµενοι στη µετεωρολογική Βάση ∆εδοµένων του παραδείγµατος 1.1. Στο σχήµα 2.2 παρουσιάζεται η εντολή ενός χρήστη που θέλει
να βρει τη θερµοκρασία της Αθήνας στις 17 Νοεµβρίου 1998. Στο
εξωτερικό επίπεδο ο χρήστης «βλέπει» µία εντολή «Ποια ήταν η θερµοκρασία της Αθήνας στις 17 Νοεµβρίου 1998;» και µία απάντηση
«17 βαθµοί Κελσίου». Στο φυσικό επίπεδο, ζητείται από τη Βάση
∆εδοµένων να ανακτήσει ένα συγκεκριµένο τµήµα δεδοµένων από το
χώρο αποθήκευσης το (101, 36116, 17). Όπου 101 είναι ο κωδικός της
πόλης Αθήνα (υποθέτουµε ότι η Αθήνα έχει καταχωρηθεί µε αυτό τον
κωδικό), 36.166 είναι οι µέρες που έχουν περάσει από την 1/1/1900
(υποθέτουµε ότι προβλέψαµε ηµεροµηνίες µετά το 1900) και 17 η τιµή
της θερµοκρασίας εκείνη την ηµέρα. Η επεξεργασία της εντολής του
χρήστη, ώστε να αναζητηθεί το συγκεκριµένο τµήµα του χώρου αποθήκευσης και η επεξεργασία του (101, 36116, 17) ώστε να παραχθεί
η επιθυµητή απάντηση µε τρόπο κατανοητό από το χρήστη γίνεται στο
επίπεδο αντίληψης (δηλαδή η µετάβαση από την εντολή του χρήστη

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

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

Ποιά είναι η
θερµοκρασία …

101, 36116
Eπίπεδο
αντίληψης

17 βαθµοί

101, 36116, 17
17

2.1 E¶π¶∂¢∞ AƒÃπ∆∂∫∆√¡π∫∏™

45

στα δεδοµένα και από τα δεδοµένα στο αποτέλεσµα υπό τη µορφή
κατανοητής απάντησης στο χρήστη).
Στο σχήµα 2.2 το επίπεδο αντίληψης δεν παρουσιάζεται. Βλέπουµε
όµως ότι η αρχική εντολή του χρήστη τελικά µετατράπηκε σε µία
συγκεκριµένη εντολή (που ζητούσε την πόλη µε κωδικό 101 και την
ηµεροµηνία 36116). Επίσης η τιµή 17 µετατράπηκε σε απάντηση προς
τον χρήστη. Για να γίνουν όλα αυτά το Σύστηµα ∆ιαχείρισης Βάσεων
∆εδοµένων έκανε µία σειρά από λειτουργίες σε υψηλότερο επίπεδο
αφαίρεσης από τις εντολές που τελικά έφτασαν στο φυσικό επίπεδο.
Αυτές οι λειτουργίες, τις οποίες ο χρήστης δεν είναι απαραίτητο να
γνωρίζει στο εξωτερικό επίπεδο, παρουσιάζονται στο σχήµα 2.3.

Ποιά είναι η
θερµοκρασία …

17 βαθµοί

Select temp
from city
where day = …

17° C

™¯‹Ì· 2.3

Λειτουργίες
στο Επίπεδο Αντίληψης

101, 36116
Storage
manager
17

Στο σχήµα 2.3 φαίνεται ότι η εντολή του χρήστη έχει µεταφραστεί σε
µία γλώσσα δεδοµένων. Αυτή η γλώσσα δεδοµένων έχει περάσει από
ένα µηχανισµό µετάφρασης (parser) και έχει δηµιουργηθεί ένα δέντρο
µε τα σχετικά δεδοµένα. Τα δεδοµένα αυτά έχουν δοθεί σε ένα µηχανισµό αποθήκευσης και ανάκλησης (storage manager) ο οποίος τα µετέτρεψε σε εντολές προς το φυσικό επίπεδο. Αντίστοιχη διαδικασία έγινε
και για να δοθεί η απάντηση σε µορφή κατανοητή από τον χρήστη.
Βασική λειτουργία που εκτελείται στο επίπεδο αντίληψης είναι η µετάφραση των εντολών του χρήστη από κάποια γλώσσα εντολών στις αντίστοιχες εντολές του µηχανισµού ανάκλησης και αποθήκευσης δεδοµένων. Για τις γλώσσες εντολών θα µιλήσουµε αναλυτικά στα κεφάλαια
5 και 6.

17

K E º A § A I O 2 : A ƒ Ã π ∆ ∂ ∫ ∆ √ ¡ π ∫ ∏ ∫ ∞ π º À ™ π ∫ ∏ O ƒ °∞ ¡ ø ™ ∏ A ƒ Ã ∂ π ø ¡

46

ÕÛÎËÛË
·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
2.1

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

2.1 E¶π¶∂¢∞ AƒÃπ∆∂∫∆√¡π∫∏™

47

Ακολουθούν µερικές προτάσεις. Ποιες από αυτές είναι σωστές και
ποιες λάθος;
Σωστό
Λάθος
Ο χρήστης πρέπει να περιγράφει κάθε εντολή
που δίνει στο εξωτερικό επίπεδο µε την
αντίστοιχη εντολή στο φυσικό επίπεδο.

Το επίπεδο αντίληψης συνδέει το φυσικό
επίπεδο µε το εξωτερικό επίπεδο.

Ο χρήστης βλέπει τα δεδοµένα στο
εξωτερικό επίπεδο.

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

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

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

ÕÛÎËÛË
·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
2.2

¢Ú·ÛÙËÚÈfiÙËÙ· 2.1

K E º A § A I O 2 : A ƒ Ã π ∆ ∂ ∫ ∆ √ ¡ π ∫ ∏ ∫ ∞ π º À ™ π ∫ ∏ O ƒ °∞ ¡ ø ™ ∏ A ƒ Ã ∂ π ø ¡

48

2.2 ∆Ô Ê˘ÛÈÎfi Â›‰Ô

™ÎÔfi˜
Σκοπός της ενότητας είναι να παρουσιάσουµε τις βασικές έννοιες
που σχετίζονται µε την οργάνωση των δεδοµένων στο φυσικό επίπεδο, καθώς και τον τρόπο µε τον οποίο οργανώνονται τα δεδοµένα
στις µονάδες αποθήκευσης του υπολογιστή.
¶ÚÔÛ‰ÔÎÒÌÂÓ· ∞ÔÙÂϤÛÌ·Ù·
Όταν θα έχετε ολοκληρώσει τη µελέτη αυτής της ενότητας θα µπορείτε να:
• περιγράψετε τις έννοιες «τύποι δεδοµένων», «πεδία», «εγγραφές»
και «αρχεία»
• εξηγήσετε τον τρόπο οργάνωσης των δεδοµένων σε αρχεία στο φυσικό επίπεδο
• δώσετε παραδείγµατα εγγραφών για ένα συγκεκριµένο πρόβληµα
∂ÈÛ·ÁˆÁÈΤ˜ ¶·Ú·ÙËÚ‹ÛÂȘ
Στην ενότητα 2.2.1 παρουσιάζονται οι ορισµοί των τύπων δεδοµένων
και των πεδίων, ενώ στην ενότητα 2.2.2 οι ορισµοί των εγγραφών και
των αρχείων. Τέλος στην ενότητα 2.2.3 περιγράφονται οι µονάδες αποθήκευσης που χρησιµοποιεί µία Βάση ∆εδοµένων.
2.2.1 ∆‡ÔÈ ‰Â‰ÔÌ¤ÓˆÓ Î·È ‰›·

■ Οι Τύποι ∆εδοµένων
καθορίζουν τη µορφή των
δεδοµένων και τον αποθηκευτικό χώρο που θα δεσµεύσουν.

Το αντικείµενο του φυσικού επιπέδου είναι η αποθήκευση και η οργάνωση αρχείων, τα οποία αποτελούνται από εγγραφές. (Για τα αρχεία
και τις εγγραφές θα µιλήσουµε στην επόµενη ενότητα.) Κάθε εγγραφή αποτελείται από τιµές για µία συλλογή από πεδία µε καθορισµένο τύπο δεδοµένων για κάθε πεδίο. Έτσι, στο φυσικό επίπεδο, τα
δεδοµένα αντιµετωπίζονται ως εγγραφές που περιέχουν πεδία. Πριν
προχωρήσουµε ας παρουσιάσουµε τους ορισµούς για τις έννοιες που
εισάγαµε. ■
Οι τύποι δεδοµένων εξαρτώνται από το επίπεδο αντίληψης (από τη
γλώσσα που χρησιµοποιεί η Βάση ∆εδοµένων) και από το Σύστηµα
∆ιαχείρισης Βάσης ∆εδοµένων. Στο φυσικό επίπεδο, οι τύποι δεδο-

2.2 ∆√ ºÀ™π∫√ ∂¶π¶∂¢√

µένων καθορίζουν το χώρο που θα δεσµευτεί στους αποθηκευτικούς
χώρους της Βάσης ∆εδοµένων. Έτσι, για παράδειγµα, ένας τύπος
δεδοµένων (κοινός για κάθε σύστηµα) είναι ο τύπος «char (N)». Το
«char» καθορίζει ότι τα δεδοµένα αυτού του τύπου αποτελούνται από
χαρακτήρες (είναι δηλαδή συµβολοσειρές), ενώ το «Ν» καθορίζει το
µέγιστο αριθµό αυτών των χαρακτήρων. Έτσι ο τύπος δεδοµένων
«char (5)» περιγράφει ένα πεδίο το οποίο έχει δεδοµένα αποτελούµενα από συµβολοσειρές αποτελούµενες από 0 έως και 5 σύµβολα. ■
Έτσι, πάλι στο παράδειγµα 1.1, πεδία είναι τα «Όνοµα Πόλης», «Ηµεροµηνία», «Θερµοκρασία». Για καθένα από αυτά τα πεδία είναι γνωστός ο τύπος δεδοµένων του. Για το πεδίο «Όνοµα Πόλης» ο τύπος
δεδοµένων είναι «char (20)» δηλαδή το σύστηµα στο φυσικό επίπεδο
θα δεσµεύσει 20 Bytes αποθηκευτικού χώρου για τα δεδοµένα αυτού
του πεδίου. (Στην πραγµατικότητα, το σύστηµα πιθανότατα θα δεσµεύσει περισσότερο από 20 Bytes για το συγκεκριµένο πεδίο, αλλά αυτό
εξαρτάται από δεσµεύσεις χώρου για ανάγκες του συστήµατος, όπως
δείκτες κτλ., και δεν θα επεκταθούµε σε αυτό.)

49

■ Τα Πεδία είναι στοιχεία µε
καθορισµένο τύπο δεδοµένων
που δεσµεύουν αποθηκευτικό
χώρο.

2.2.2 ∂ÁÁڷʤ˜ Î·È ·Ú¯Â›·

Όπως αναφέραµε στην ενότητα 2.2.1 οι εγγραφές είναι συλλογές
τιµών για καθορισµένα πεδία. Ο τρόπος οµαδοποίησης των εγγραφών
σε αρχεία και ο αποτελεσµατικός τρόπος αποθήκευσης και ανάκλησης των εγγραφών είναι το αντικείµενο του φυσικού επιπέδου. ■
Ας ανατρέξουµε πάλι στο παράδειγµα 1.1. Η έννοια «Πόλη» θα µπορούσε να αποτελείται από το πεδίο «Κωδικός Πόλης» µε τύπο δεδοµένων «Ακέραιος» και το πεδίο «Ονοµασία Πόλης» µε τύπο δεδοµένων
«Κείµενο (20)». Οι εγγραφές λοιπόν για τις πόλεις θα ήταν τιµές για δύο
πεδία µε την πρώτη τιµή να είναι ακέραιος και τη δεύτερη µια συµβολοσειρά µέχρι 20 χαρακτήρες. Έτσι αποδεκτές τιµές θα ήταν για παράδειγµα οι «101, Αθήνα», «109, Θεσσαλονίκη», «145, Κόρινθος» κτλ.
Οι εγγραφές αποθηκεύονται στη Βάση ∆εδοµένων σε αρχεία. ■
Τα αρχεία αποθηκεύονται σε ένα ή περισσότερα blocks (το block είναι
η µονάδα δεδοµένων που διαβάζει το σύστηµα αρχείων). Οι βασικές
λειτουργίες που πρέπει να επιτελεί η Βάση ∆εδοµένων σε ένα αρχείο
είναι η αναζήτηση εγγραφής, εισαγωγή νέας εγγραφής, η διαγραφή
εγγραφής και η µεταβολή εγγραφής.

■ Εγγραφές είναι συλλογές
από τιµές για ένα καθορισµένο
αριθµό πεδίων.

■ Τα Αρχεία είναι συλλογές
από εγγραφές.

K E º A § A I O 2 : A ƒ Ã π ∆ ∂ ∫ ∆ √ ¡ π ∫ ∏ ∫ ∞ π º À ™ π ∫ ∏ O ƒ °∞ ¡ ø ™ ∏ A ƒ Ã ∂ π ø ¡

50

2.2.3 ªÔÓ¿‰Â˜ ·Ôı‹Î¢Û˘

Aρχείο 1

Aρχείο 2

Block 1
Block 2
Block 3

™¯‹Ì· 2.4

Οργάνωση Αρχείων και Blocks

Η λειτουργία της Βάσης ∆εδοµένων στο φυσικό επίπεδο καθορίζεται
από το λειτουργικό σύστηµα του υπολογιστή στον οποίο φιλοξενείται. Τα δεδοµένα οργανώνονται στο δίσκο του υπολογιστή, όπως
παρουσιάζεται στο σχήµα 2.4, και από το δίσκο µεταφέρονται στη
µνήµη για να επεξεργαστούν από τον επεξεργαστή.
Στο δίσκο του υπολογιστή υπάρχουν πολλά αρχεία (στο σχήµα 2.4 για
λόγους απλότητας σχεδιάσαµε µόνο δύο) διαφορετικών µεγεθών.
Κάθε αρχείο κατανέµεται σε ένα ή περισσότερα blocks. Για παράδειγµα στο σχήµα 2.4 το αρχείο 1 κατανέµεται σε 3 blocks. (Φυσικά
και το αρχείο 2 κατανέµεται σε blocks, αλλά για λόγους απλότητας
δεν έχουµε σχεδιάσει στο σχήµα τα αντίστοιχα blocks, ώστε να συζητήσουµε για το αρχείο 1. Κάθε block περιέχει ένα αριθµό εγγραφών
και κάθε εγγραφή αποτελείται από ένα ή περισσότερα πεδία. Όταν η
Βάση ∆εδοµένων θέλει πληροφορίες για κάποιο πεδίο (π.χ. τη θερµοκρασία µιας πόλης, όπως στο παράδειγµα 1.1), πρέπει να οδηγήσει τον
επεξεργαστή στο block που περιέχει την αντίστοιχη εγγραφή. (∆ηλαδή να διαβάσει το συγκεκριµένο block στη µνήµη ώστε να το επεξεργαστεί ο υπολογιστής.)
Για να µπορεί η Βάση ∆εδοµένων να λειτουργεί γρήγορα και αποδοτικά πρέπει να έχει τρόπους ώστε να εντοπίζει γρήγορα το block στο
οποίο είναι αποθηκευµένη η ζητούµενη εγγραφή (ώστε να µειώνει τον
χρόνο αναζήτησης) και να οµαδοποιεί εγγραφές σε blocks ώστε να
µειώνεται ο αριθµός των blocks που θα χρειαστούν σε περίπτωση αναζητήσεως οµοειδών εγγραφών. Για αυτούς τους τρόπους θα µιλήσουµε στην επόµενη ενότητα.
Πρέπει να γίνει κατανοητό ότι τα δεδοµένα που αποθηκεύονται στις
Βάσεις ∆εδοµένων δεν µπορούν να αποθηκευτούν όλα στη µνήµη του
υπολογιστή. Έτσι προκύπτει η ανάγκη να µεταφέρονται από τα µέσα
µαγνητικής αποθήκευσης στη µνήµη και το αντίστροφο. Σε σχέση µε
τις ―σχετικά χρονοβόρες― µηχανικές κινήσεις των συσκευών αποθήκευσης αυτό δηµιουργεί τα προβλήµατα τα οποία και καλούνται να
λύσουν οι Βάσεις ∆εδοµένων σήµερα.

2.2 ∆√ ºÀ™π∫√ ∂¶π¶∂¢√

51

Θεωρήστε το παράδειγµα 1.1. Για να αποθηκεύσουµε τη θερµοκρασία µίας πόλης χρησιµοποιούµε τα πεδία «Κωδικός Πόλης», «Ηµεροµηνία» και «Θερµοκρασία». Οι τύποι δεδοµένων είναι αντίστοιχα «Ακέραιος µε µέγεθος 4 Bytes», «Κείµενο µε µέγεθος 20 χαρακτήρες» και «Ακέραιος µε µέγεθος 1 Byte». Ακολουθούν µερικά
παραδείγµατα εγγραφών στις οποίες οι τιµές για κάθε πεδίο χωρίζονται µε κόµµα. Ποιες από αυτές είναι σωστές ως εγγραφές (δηλαδή
θα µπορούσαν να είναι εγγραφές, άσχετα µε το εάν έχουν νόηµα ή
όχι) και ποιες λάθος;
Σωστό

Λάθος

«102», «17/12/1998», «23»

«132», «∆εν έγινε µέτρηση», «0»

«8786117», «6201345α», «123»

«12», «17/11/1998», «555»

«ΑΒ», «13/02/1999», «23»

Έστω ότι θέλουµε να αποθηκεύσουµε σε ένα αρχείο εγγραφές της
µορφής που περιγράφεται στην άσκηση 2.3. Θεωρήστε ότι: α) κάθε
εγγραφή χρειάζεται ακριβώς 4 + 20 + 1 = 25 Bytes ανεξάρτητα µε
το περιεχόµενό της (δεν χρησιµοποιούνται δηλαδή παραπάνω Bytes
από το σύστηµα), β) το σύστηµα χρησιµοποιεί blocks µε µέγεθος 200
Bytes, γ) κάθε block χρειάζεται 20 Bytes για ειδικούς σκοπούς
(δηλαδή 20 bytes, που συµπεριλαµβάνονται στα 200, δεσµεύονται
από το σύστηµα) και δ) µία εγγραφή πρέπει να είναι ολόκληρη στο
ίδιο block.
Απαντήστε στις παρακάτω ερωτήσεις:
1) Έστω ότι θέλουµε να αποθηκεύσουµε σε ένα αρχείο 200 εγγραφές. Πόσα blocks θα έχει το αρχείο αυτό;
2) Έστω ότι θέλουµε να αποθηκεύσουµε σε ένα αρχείο 1.000 εγγραφές. Πόσα blocks θα έχει το αρχείο αυτό;
3) Έστω ότι θέλουµε να αποθηκεύσουµε σε ένα αρχείο 2 εγγραφές.
Πόσα blocks θα έχει το αρχείο αυτό;

ÕÛÎËÛË
·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
2.3

ÕÛÎËÛË
·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
2.4

K E º A § A I O 2 : A ƒ Ã π ∆ ∂ ∫ ∆ √ ¡ π ∫ ∏ ∫ ∞ π º À ™ π ∫ ∏ O ƒ °∞ ¡ ø ™ ∏ A ƒ Ã ∂ π ø ¡

52

¢Ú·ÛÙËÚÈfiÙËÙ· 2.2

¢Ú·ÛÙËÚÈfiÙËÙ· 2.3

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

Χρησιµοποιώντας τις εγγραφές που έχετε δώσει στην απάντηση της
δραστηριότητας 2.2, σχεδιάστε τον τρόπο που θα είχαν αποθηκευτεί
αυτές οι 20 εγγραφές σε ένα αρχείο. Χρησιµοποιήστε τετραγωνισµένο χαρτί και αναγράψτε τις εγγραφές χρησιµοποιώντας τα µεγέθη (για εγγραφή και block) της άσκησης αυτοαξιολόγησης 4 του
κεφαλαίου 2.

2.3 OÚÁ¿ÓˆÛË ·Ú¯Â›ˆÓ ÛÙÔ Ê˘ÛÈÎfi Â›‰Ô

™ÎÔfi˜
Σκοπός της ενότητας είναι να παρουσιάσουµε τον τρόπο µε τον
οποίο οργανώνονται τα αρχεία στο σύστηµα αποθήκευσης του υπολογιστή και να περιγράψουµε βασικές τεχνικές που διευκολύνουν την
αναζήτηση των δεδοµένων από τα αρχεία, όπως η χρήση δεικτών
και καταλόγων.
¶ÚÔÛ‰ÔÎÒÌÂÓ· ∞ÔÙÂϤÛÌ·Ù·
Όταν θα έχετε ολοκληρώσει τη µελέτη αυτής της ενότητας θα µπορείτε να:
• σχεδιάσετε τη µορφή ενός αρχείου στο δίσκο µετά από µία ακολουθία πράξεων
• περιγράψετε τις έννοιες «κατάλογοι», «δείκτες», «αναδιάταξη αρχείου» και «διατεταγµένα αρχεία»
• εξηγήσετε τις διαφορές ανάµεσα σε αρχεία µε εγγραφές σταθερού
µήκους και αρχεία µε εγγραφές µεταβλητού µήκους
• υπολογίσετε την επιβάρυνση σε χώρο αποθήκευσης από τη χρήση
καταλόγων
• περιγράψετε τις βασικές αρχές των δέντρων τύπου Β και των
δέντρων τύπου Β+

2 . 3 O ƒ °∞ ¡ ø ™ ∏ ∞ ƒ Ã ∂ π ø ¡ ™ ∆ √ º À ™ π ∫ √ ∂ ¶ π ¶ ∂ ¢ √

∂ÈÛ·ÁˆÁÈΤ˜ ¶·Ú·ÙËÚ‹ÛÂȘ
Στην ενότητα 2.3.1 παρουσιάζονται οι βασικές έννοιες της οργάνωσης
αρχείων στο φυσικό επίπεδο όπως είναι η διάταξη των αρχείων, η
χρήση καταλόγων, και η χρήση εγγραφών µεταβαλλόµενου µήκους.
Στην ενότητα 2.3.2 περιγράφουµε την τεχνική κατακερµατισµού των
αρχείων, στην ενότητα 2.3.3 συζητούµε το θέµα τις δεικτοδότησης των
αρχείων και περιγράφουµε τους καταλόγους και τέλος στην ενότητα
2.3.4 συζητούµε για τα δέντρα τύπου Β και δέντρα τύπου Β+.
2.3.1 µ·ÛÈΤ˜ ¤ÓÓÔȘ Ù˘ ÔÚÁ¿ÓˆÛ˘ ·Ú¯Â›ˆÓ

Στη δραστηριότητα 2.3 περιγράψαµε πώς µπορούν να αποθηκευτούν
τα δεδοµένα στον αποθηκευτικό µηχανισµό του υπολογιστή (συνήθως
στο δίσκο του υπολογιστή) οργανωµένα σε blocks που περιέχουν
εγγραφές. Στη συγκεκριµένη δραστηριότητα οι εγγραφές είχαν τοποθετηθεί στο δίσκο χωρίς καµία διάταξη (δηλαδή τοποθετήθηκαν στο
δίσκο µε τη σειρά που εµφανίσθηκαν). Η «διάταξη» αυτή ονοµάζεται
σωρός (heap). Στην περίπτωση που κάποια εγγραφή θα έπρεπε να διαγραφεί, τότε ο χώρος αυτός θα έµενε ελεύθερος και θα µπορούσε να
χρησιµοποιηθεί για κάποια νέα εγγραφή. Αυτό γίνεται από το σύστηµα για λόγους καθαρά πρακτικούς: Eάν κάθε νέα εγγραφή έµπαινε στο
τέλος του σωρού και όχι στα κενά που δηµιουργούνταν από τις διαγραφές τότε σύντοµα θα είχαµε ένα σωρό µε πολλά κενά που θα καταλάµβανε όλο το διαθέσιµο αποθηκευτικό χώρο. Για να διαγραφεί µία
εγγραφή συνήθως χρησιµοποιείται ένα bit ελέγχου το οποίο παίρνει
τιµή 1 στην περίπτωση που ο χώρος είναι διαθέσιµος.
Η συγκεκριµένη δραστηριότητα προϋποθέτει εγγραφές σταθερού µήκους,
δηλαδή εγγραφές µε συγκεκριµένο αριθµό πεδίων και µε συγκεκριµένο
µέγεθος δεσµευµένο για κάθε πεδίο. Εκτός όµως από εγγραφές σταθερού
µήκους µπορούµε να έχουµε αποθηκευµένες στη Βάση ∆εδοµένων εγγραφές µε δυναµικά µεταβαλλόµενο µήκος. Εγγραφές µε δυναµικά µεταβαλλόµενο µήκος µπορεί να προκύψουν γιατί κάποια πεδία της εγγραφής
είναι προαιρετικά (δηλαδή µπορούν να δοθούν ή να µην δοθούν και κατά
συνέπεια δεν δεσµεύεται ο χώρος από πριν). Έτσι, κάποια πεδία µπορούν
να δέχονται περισσότερες από µία τιµές ή κάποια πεδία είναι µεταβλητού
µήκους (έχουν τύπο δεδοµένων που δεν έχει σταθερό µήκος), κτλ.
Στην περίπτωση εγγραφών µε δυναµικά µεταβαλλόµενο µήκος η εισα-

53

54

K E º A § A I O 2 : A ƒ Ã π ∆ ∂ ∫ ∆ √ ¡ π ∫ ∏ ∫ ∞ π º À ™ π ∫ ∏ O ƒ °∞ ¡ ø ™ ∏ A ƒ Ã ∂ π ø ¡

γωγή µίας νέας εγγραφής δεν είναι τόσο εύκολο να γίνει στο σηµείο
που είχε διαγραφεί κάποια άλλη. Έτσι κάποιες φορές προκύπτει η ανάγκη αναδιάρθρωσης του αρχείου. Αναδιάρθρωση σηµαίνει ανάγνωση όλων, ή τµήµατος, των εγγραφών και τοποθέτησή τους εκ νέου στη
µονάδα αποθήκευσης. Αναδιάρθρωση µπορεί να γίνει για πολλούς
λόγους, όπως θα δούµε και στις επόµενες ενότητες.
Η µορφή αποθήκευσης των δεδοµένων στο δίσκο που προέκυψε από
το αποτέλεσµα της δραστηριότητας 3 του κεφαλαίου 2 δεν είναι η πιο
αποτελεσµατική. Ας υποθέσουµε ότι οι συχνότερες ερωτήσεις ήταν οι
θερµοκρασίες κάθε πόλης για κάποια συγκεκριµένη χρονική περίοδο.
Έτσι όπως τοποθετήθηκαν τα δεδοµένα στο αρχείο, για να απαντηθεί
µια ερώτηση όπως «Τι θερµοκρασίες είχε η Αθήνα από 10/12/1998
έως 20/12/1998;» θα έπρεπε να αναζητηθούν 11 εγγραφές που πιθανότατα θα βρίσκονταν σε 11 διαφορετικά blocks. Αυτό θα σήµαινε
πολύ µεγάλη καθυστέρηση, αφού η ανάγνωση ενός block από το δίσκο
στη µνήµη είναι συγκριτικά χρονοβόρα δραστηριότητα. Θα ήταν λοιπόν απόλυτα λογικό να έχουµε το αρχείο διατεταγµένο ανά πόλεις και
ανά ηµεροµηνίες, δηλαδή να έχουµε όλες τις εγγραφές της πόλης µε
κωδικό 101 µαζί και µάλιστα µε αύξουσα σειρά ηµεροµηνίας.
Η διάταξη του αρχείου µας διασφαλίζει ότι θα φέρουµε από το δίσκο
στη µνήµη τα λιγότερα δυνατά blocks. Είναι φανερό ότι, σε περίπτωση όπως αυτή που περιγράφουµε, η διάταξη του αρχείου θα επιταχύνει σηµαντικά την αναζήτηση. Όµως, η διάταξη δεν είναι χωρίς κάποιο
τίµηµα. Μετά από κάθε διαγραφή ή εισαγωγή θα έπρεπε να γίνει αναδιάρθρωση του αρχείου ώστε να µην χαλάσει η διάταξη.
Φανταστείτε τώρα ότι στο συγκεκριµένο παράδειγµα είχαµε διατεταγµένες τιµές µε ηµεροµηνίες από 1/1/1990 έως σήµερα. Εάν θέλαµε τη
θερµοκρασία για τις 25/12/1995, εκτός από τη διάταξη θα έπρεπε να
έχουµε και κάποιον τρόπο για να εντοπίσουµε πού περίπου βρίσκεται
στον κατάλογο. (Αλλιώς πάλι θα έπρεπε να διαβάσουµε όλα τα blocks,
ή να µαντέψουµε που περίπου βρίσκεται η ζητούµενη ηµεροµηνία.) Για
να το επιτύχουµε αυτό χρησιµοποιούµε δείκτες και καταλόγους.
∆είκτης είναι η διεύθυνση ενός block, ή µίας εγγραφής στη µονάδα
αποθήκευσης. Έτσι, στο συγκεκριµένο παράδειγµα, εάν υπάρχει
κάποιος δείκτης σε κάθε block, ο οποίος αναφέρει την ηµεροµηνία της
πρώτης εγγραφής του block, τότε µπορούµε να βρούµε κατευθείαν τη

2 . 3 O ƒ °∞ ¡ ø ™ ∏ ∞ ƒ Ã ∂ π ø ¡ ™ ∆ √ º À ™ π ∫ √ ∂ ¶ π ¶ ∂ ¢ √

55

ζητούµενη ηµεροµηνία. Βέβαια πάλι αυτό δεν γίνεται χωρίς κάποιο
τίµηµα. Πέρα από το τίµηµα ότι το αρχείο θα πρέπει να είναι διατεταγµένο θα πρέπει να αποθηκεύουµε κάπου και τους δείκτες. ∆ηµιουργούµε δηλαδή έναν κατάλογο µε τη χρήση του οποίου προσπελαύνουµε ευκολότερα και κυρίως πιο γρήγορα τη Βάση ∆εδοµένων.
Χρησιµοποιώντας τις εγγραφές που έχετε δώσει στην απάντηση της
δραστηριότητας 2.3, υλοποιήστε µία ακολουθία από διαγραφές δεδοµένων και εισαγωγές νέων δεδοµένων και σχεδιάστε στο τετραγωνισµένο χαρτί τις εγγραφές, όπως θα προκύψουν µετά την ακολουθία. Στις δύο ακολουθίες που δίνουµε ∆4 σηµαίνει «διαγραφή της
4ης στη σειρά εγγραφής» και Ε σηµαίνει «εισαγωγής νέας εγγραφής». Υποθέσετε ότι η Βάση ∆εδοµένων είναι διατεταγµένη σε
σωρό, όπως και στη δραστηριότητα 3 του κεφαλαίου 2.
Α) ∆5, ∆2, Ε, ∆11, Ε, ∆20, Ε, Ε, Ε, Ε, ∆1, ∆3, ∆4, Ε
Β) ∆1, Ε, Ε, Ε, ∆8, Ε, ∆18, Ε, Ε, Ε, ∆2, ∆3, ∆,10, ∆12

2.3.2 ∫·Ù·ÎÂÚÌ·ÙÈÛÌfi˜ ·Ú¯Â›ˆÓ

Η οργάνωση αρχείων σε σωρό που παρουσιάσαµε στην προηγούµενη
ενότητα δεν είναι πολύ αποτελεσµατική, όπως συζητήσαµε. Μια πιο
αποτελεσµατική οργάνωση είναι ο κατακερµατισµός των αρχείων. Η
βασική ιδέα του κατακερµατισµού είναι ότι το αρχείο χωρίζεται σε
τµήµατα και κάθε τµήµα περιέχει ένα ή περισσότερα blocks συνδεδεµένα µεταξύ τους. Έχοντας ένα κατάλογο των τµηµάτων µπορούµε να
εντοπίσουµε το ζητούµενο block από τον κατάλογο και να το φέρουµε στη µνήµη. Στο σχήµα 2.5 παρουσιάζεται ένα κατακερµατισµένο
αρχείο µε 5 τµήµατα και 9 blocks.
Η επιλογή του τµήµατος στο οποίο θα εισαχθεί κάποιο αρχείο (και αντίστοιχα η αναζήτηση) γίνεται µε βάση έναν αλγόριθµο κατακερµατισµού. Η βασική ιδέα είναι η µείωση του χρόνου της αναζήτησης. Τώρα
η αναζήτηση περιορίζεται σε ένα τµήµα (που καθορίζεται από τη
συνάρτηση κατακερµατισµού) και όχι σε ολόκληρο τον όγκο των δεδοµένων. ∆ηλαδή, αντί να αναζητούµε σε όλο το αρχείο, εντοπίζουµε το
τµήµα στο οποίο ανήκει η εγγραφή που αναζητούµε και περιοριζόµαστε στα blocks αυτού του τµήµατος µόνο, αγνοώντας τα υπόλοιπα.

¢Ú·ÛÙËÚÈfiÙËÙ· 2.4

K E º A § A I O 2 : A ƒ Ã π ∆ ∂ ∫ ∆ √ ¡ π ∫ ∏ ∫ ∞ π º À ™ π ∫ ∏ O ƒ °∞ ¡ ø ™ ∏ A ƒ Ã ∂ π ø ¡

56

™¯‹Ì· 2.5

Κατακερµατισµένο Αρχείο
1
2
3
4
5

Block 1

Block 2

Block 3
Block 4

Block 5

Block 6
Block 7

Block 8

Block 9

2.3.3 ¢ÂÈÎÙÔ‰fiÙËÛË ·Ú¯Â›ˆÓ Î·È Î·Ù¿ÏÔÁÔÈ

Όπως συζητήσαµε και στην ενότητα 2.2.1, ένα αρχείο µπορεί να δεικτοδοτηθεί και να δηµιουργηθεί κάποιος κατάλογος. Ας υποθέσουµε
ότι έχουµε ένα αρχείο µε ονόµατα πόλεων διατεταγµένο κατά αλφαβητική σειρά. Επίσης, ας υποθέσουµε ότι σε κάθε block χωρούν 20
εγγραφές. Μια πολύ λογική αντιµετώπιση θα ήταν να δεικτοδοτήσουµε κάθε block δηµιουργώντας έναν κατάλογο µε την πρώτη εγγραφή του block.
Έστω ότι είχαµε 1000 εγγραφές. Άρα θα χρειαζόµαστε 1000/20=50
blocks (υποθέτουµε ένα τέλεια διαταγµένο αρχείο) για να συγκεντρώσουµε τους δείκτες και θα έπρεπε να έχουµε ένα κατάλογο µε 50
εγγραφές, όπου καθεµία θα ήταν ένας δείκτης στο αντίστοιχο block.
Με αυτό τον τρόπο εξασφαλίζουµε ότι η αναζήτησή µας θα γίνει πιο
γρήγορα, αφού θα χρειαστεί να διαβάσουµε µόνο τον κατάλογο για να
εντοπίσουµε τη θέση µίας εγγραφής (δηλαδή σε πιο block ανήκει). Με
τον ίδιο τρόπο που δεικτοδοτήσαµε το αρχείο µπορεί να δεικτοδοτηθεί και ο κατάλογος. Έτσι ο κατάλογος έχει 50 εγγραφές (άρα 3
blocks) και µπορεί να δηµιουργηθεί ένα νέο block που να έχει δείκτες
στα 3 blocks του καταλόγου. Με αυτό τον τρόπο έχουµε δηµιουργήσει έναν κατάλογο µε δύο επίπεδα, όπως φαίνεται στο σχήµα 2.6.
Οι κατάλογοι µε τους οποίους δεικτοδοτούµε τα αρχεία στη Βάση
∆εδοµένων µπορεί να είναι πολλαπλών επιπέδων (πολύ περισσότερα

2 . 3 O ƒ °∞ ¡ ø ™ ∏ ∞ ƒ Ã ∂ π ø ¡ ™ ∆ √ º À ™ π ∫ √ ∂ ¶ π ¶ ∂ ¢ √

Aθήνα
Bέρροια
∆ράµα

Aθήνα
Θεσσαλονίκη
Tρίπολη

Θεσσαλονίκη
Kαλαµάτα
Kόρινθος

Tρίπολη
…
Φλώρινα
Xαλκίδα

57

Aθήνα
Aµαλιάδα
Aµφιλοχία

Bέροια
Bόλος
Γρεβενܐ

Xαλκίδα
Xίος
Ψαρܐ

από τα δύο επίπεδα του σχήµατος 2.6). Μια ενδιαφέρουσα µορφή
καταλόγου µε πολλά επίπεδα είναι το δέντρο τύπου Β, το οποίο είναι
δεικτοδότηση µε πολλούς καταλόγους σε µορφή δέντρου που εξασφαλίζει ότι δεν θα αποµένει κενός χώρος από διαγραφές και ότι το
δέντρο θα είναι ισοζυγισµένο. Τα δέντρα τύπου Β συζητούνται στην
ενότητα 2.3.4, που ακολουθεί.
Σε ένα αρχείο µπορούµε να έχουµε περισσότερους από έναν καταλόγους. Ο κατάλογος που παρουσιάζεται στο σχήµα 2.6 αναφέρεται στο
πεδίο «Πόλη» κάθε εγγραφής. Θα µπορούσαν να υλοποιηθούν και
άλλοι κατάλογοι για κάποια άλλα πεδία της εγγραφής (π.χ. κατάλογος
για τον κωδικό της πόλης). Έτσι, σε κάθε αρχείο θεωρητικά (και χωρίς
αυτό να σηµαίνει καλή σχεδίαση) θα µπορούσαν να υπάρχουν πολλοί
κατάλογοι µε πολλά επίπεδα για κάθε κατάλογο. Πέρα από το προφανές όφελος στην ταχύτητα της αναζήτησης των δεδοµένων, οι κατάλογοι επιβαρύνουν το σύστηµα. Kατ' αρχήν το επιβαρύνουν γιατί
αυξάνεται η απαίτηση σε αποθηκευτικό χώρο. ∆είτε το σχήµα 2.6.
Αντί για 50 blocks τελικά χρησιµοποιήθηκαν 54 blocks. Επίσης, σε
περίπτωση εισαγωγής ή διαγραφής θα πρέπει να γίνουν οι απαραίτητες αλλαγές στους καταλόγους και πολλές φορές θα πρέπει να αναδιαρθρωθούν πλήρως οι κατάλογοι, γεγονός που τελικά επιβαρύνει το

™¯‹Ì· 2.6

Κατάλογος δύο επιπέδων

K E º A § A I O 2 : A ƒ Ã π ∆ ∂ ∫ ∆ √ ¡ π ∫ ∏ ∫ ∞ π º À ™ π ∫ ∏ O ƒ °∞ ¡ ø ™ ∏ A ƒ Ã ∂ π ø ¡

58

σύστηµα. Η επιλογή της χρήσης ή όχι δεικτοδότησης για κάποια
αρχεία και η επιλογή των πεδίων για τα οποία θα χρησιµοποιηθούν
κατάλογοι δεν είναι απλή και εύκολη απόφαση και προϋποθέτει εµπειρία σε Βάσεις ∆εδοµένων.
Πρέπει να σηµειωθεί ότι το σχήµα 2.6 παρουσιάζει σχηµατικά τα
blocks χωρίς περισσότερες πληροφορίες για κάθε block. Στην πραγµατικότητα για κάθε block θα υπήρχαν βασικές πληροφορίες (όπως το
block ID, η θέση του, κτλ), οι οποίες παραλείφθηκαν για να δοθεί η
απαραίτητη έµφαση στην παρουσίαση της βασικής ιδέας της δεικτοδότησης ενός καταλόγου.

ÕÛÎËÛË
·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
2.5

Έστω ότι στο παράδειγµα που απεικονίζεται στο σχήµα 2.6 έχουµε
2000 εγγραφές και ότι είναι διατεταγµένες τέλεια (δηλαδή δεν υπάρχουν κενές εγγραφές ανάµεσά τους). Υπολογίστε το ποσοστό των
blocks που αυξάνονται από τη χρήση των καταλόγων στις εξής περιπτώσεις:
1) Κάθε block (τόσο στο αρχείο όσο και στον κατάλογο) χωράει 20
εγγραφές και υλοποιούµε κατάλογο ενός επιπέδου.
2) Κάθε block (τόσο στο αρχείο όσο και στον κατάλογο) χωράει 10
εγγραφές και υλοποιούµε κατάλογο δύο επιπέδων.
3) Κάθε block (τόσο στο αρχείο όσο και στον κατάλογο) χωράει 10
εγγραφές και υλοποιούµε κατάλογο πολλαπλών επιπέδων µέχρι
που το τελευταίο επίπεδο να χωράει σε ένα block.

¢Ú·ÛÙËÚÈfiÙËÙ· 2.5

Γράψτε σε ένα κοµµάτι χαρτί τις 54 πόλεις πρωτεύουσες νοµών της
Ελλάδας διατεταγµένες αλφαβητικά. Υποθέσετε ότι το χαρτί είναι
το αρχείο σας στο δίσκο. Χωρίστε τις σε blocks των 5 πόλεων (τραβήξτε µία γραµµή ανάµεσα τους) και δεικτοδοτήστε τις µε καταλόγους πολλαπλών επιπέδων. Αναγράψτε όλα τα ονόµατα των πόλεων
στα blocks κάθε κατάλογου.

2 . 3 O ƒ °∞ ¡ ø ™ ∏ ∞ ƒ Ã ∂ π ø ¡ ™ ∆ √ º À ™ π ∫ √ ∂ ¶ π ¶ ∂ ¢ √

2.3.4 ¢¤ÓÙÚ· Ù‡Ô˘ B Î·È ‰¤ÓÙÚ· Ù‡Ô˘ B+

Στην ενότητα 2.3.3 που προηγήθηκε µιλήσαµε για καταλόγους δεδοµένων και για δείκτες. Κατάλογοι δεδοµένων (ευρετήρια) µπορούν να
δηµιουργηθούν µε τη χρήση γνωστών δοµών δεδοµένων, όπως είναι
τα δέντρα τύπου Β (B–trees). Τα δέντρα τύπου Β χρησιµοποιούνται
στις Βάσεις ∆εδοµένων σήµερα τόσο ως δέντρα αναζήτησης, όσο και
ως πρωτεύουσες οργανώσεις αρχείων. Στην ενότητα αυτή θα περιγράψουµε σε πολύ αδρές γραµµές τα δέντρα τύπου Β και τα δέντρα
τύπου Β+, τα οποία είναι και η συχνότερη µορφή υλοποίησης των
δυναµικών ευρετηρίων πολλαπλών επιπέδων. Προτείνουµε, πάντως,
να ανατρέξετε στην προτεινόµενη βιβλιογραφία για περισσότερες πληροφορίες για τα τύπου Β και τα δέντρα τύπου Β+.
Όπως συζητήσαµε και στην ενότητα 2.3.3, ένα αρχείο µπορεί να δεικτοδοτηθεί και να δηµιουργηθεί κάποιος κατάλογος. Ένας τέτοιος
κατάλογος µπορεί να έχει τη µορφή ενός δένδρου. Ας εξηγήσουµε τι
εννοούµε: Ένα δένδρο είναι µία συλλογή από κόµβους συνδεδεµένους
µεταξύ τους. Υπάρχει ένας ειδικός κόµβος που ονοµάζεται ρίζα του
δένδρου και βρίσκεται στην κορυφή του δέντρου. Όλοι οι κόµβοι του
δένδρου εκτός από τη ρίζα έχουν ένα γονέα και, (προαιρετικά), ένα ή
περισσότερα παιδιά. Ένας κόµβος που δεν έχει παιδιά ονοµάζεται
φύλλο. Κάθε κόµβος έχει ένα επίπεδο, το οποίο κατά σύµβαση είναι
0 για τη ρίζα και για κάθε άλλο κόµβο είναι το επίπεδο του γονέα του
αυξηµένο κατά ένα.
Τα δέντρα τύπου Β είναι δέντρα στα οποία ισχύει µία σειρά από περιορισµούς (τους οποίους δεν θα συζητήσουµε εδώ, αλλά συνιστούµε να
τους διαβάσετε οπωσδήποτε στην προτεινόµενη βιβλιογραφία). Οι
περιορισµοί αυτοί εξασφαλίζουν ότι τα δέντρα θα είναι πλήρη σε
βαθµό τουλάχιστον 50% µετά από διαγραφές και ότι θα είναι ισοζυγισµένα. Για να γίνει αυτό, οι αλγόριθµοι εισαγωγής και διαγραφής
είναι σχετικά πολύπλοκοι (αν και στις περισσότερες περιπτώσεις η
εισαγωγή και η διαγραφή γίνεται µε απλό τρόπο) και, µερικές φορές,
απαιτείται επανασχεδίαση του δένδρου.
Στα δέντρα τύπου Β σε κάθε κόµβο (είτε είναι ρίζα, είτε εσωτερικός κόµβος, είτε φύλλο) αποθηκεύονται δείκτες προς τους κόµβους–παιδιά του
κόµβου και δείκτες προς τα δεδοµένα. Ένα δέντρο τύπου Β αρχίζει να
γεµίζει µε τη δηµιουργία ενός κόµβου που περιέχει δείκτες για δεδοµέ-

59

60

K E º A § A I O 2 : A ƒ Ã π ∆ ∂ ∫ ∆ √ ¡ π ∫ ∏ ∫ ∞ π º À ™ π ∫ ∏ O ƒ °∞ ¡ ø ™ ∏ A ƒ Ã ∂ π ø ¡

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

BA™EI™ ¢E¢OMENøN

™‡ÓÔ„Ë
Στο κεφάλαιο αυτό µιλήσαµε για την οργάνωση της Βάσης ∆εδοµένων
στο φυσικό επίπεδο. Περιγράψαµε βασικά στοιχεία της αρχιτεκτονικής Βάσεων ∆εδοµένων και αναλύσαµε τον τρόπο µε τον οποίο οργανώνονται τα αρχεία στο φυσικό επίπεδο. Περιγράψαµε την οργάνωση
των αρχείων ως συλλογή εγγραφών, που περιέχουν τιµές για τα πεδία
και µελετήσαµε τρόπους για δεικτοδότηση αρχείων και δηµιουργία
καταλόγων.
Εάν θέλετε να επεκταθείτε σε θέµατα του φυσικού επιπέδου, όπως είναι
ο κατακερµατισµός αρχείων (τεχνικές και αλγόριθµοι) και τα δέντρα
τύπου Β που δεν καλύψαµε σε βάθος, σας συµβουλεύουµε να ανατρέξετε στη σχετική βιβλιογραφία που παραθέτουµε ακολούθως.

BÈ‚ÏÈÔÁÚ·Ê›· ÁÈ· ÂÚ·ÈÙ¤Úˆ ÌÂϤÙË
[1] C.J.Date, An Introduction to Database Systems, Volume I, Fourth
Edition, Addison–Wesley, 1986.
Στο κεφάλαιο 2 αυτού του βιβλίου θα µπορέσετε να βρείτε βασικούς
ορισµούς για την αρχιτεκτονική µίας Βάσης ∆εδοµένων. Επίσης στο
κεφάλαιο 3 υπάρχει µια πολύ εµπεριστατωµένη παρουσίαση του φυσικού επιπέδου.
[2] Elmasri R. & Navathe S. B., Fundamentals of Database Systems,
Addison–Wesley, 1994.
Το βιβλίο υπάρχει και σε Ελληνική µετάφραση από τις εκδόσεις ∆ίαυλος σε µετάφραση Μ. Χατζόπουλου, 1996. Στο κεφάλαιο 4 του βιβλίου θα µπορέσετε να βρείτε υλικό για επιπλέον µελέτη σχετικά µε το
φυσικό επίπεδο.
[3] Silberschatz A., Korth H., Sudarshan S, Database System Concepts,
Third Edition, McGraw–Hill, 1986.
Ένα πολύ καλό βιβλίο που προτείνουµε να το χρησιµοποιήσετε για
µελέτη παράλληλα µε το µάθηµα. Στα κεφάλαια 10 και 11 καλύπτονται τα θέµατα της οργάνωσης αρχείων στο φυσικό επίπεδο του κατακερµατισµού και της δεικτοδότησης των αρχείων.
[4] Ulman J. D., Principles of Database Systems, Computer Science Press,
1982.
Είναι ένα από το πρώτα και βασικότερα βιβλία για Βάσεις ∆εδοµένων. Στο κεφάλαιο 2 µε τίτλο Physical Data Organization, µπορείτε
να βρείτε ένα αναλυτικό τρόπο παρουσίασης της οργάνωσης στο φυσι-

61

62

K E º A § A I O 2 : A ƒ Ã π ∆ ∂ ∫ ∆ √ ¡ π ∫ ∏ ∫ ∞ π º À ™ π ∫ ∏ O ƒ °∞ ¡ ø ™ ∏ A ƒ Ã ∂ π ø ¡

κό επίπεδο και το κλασικό παράδειγµα µε τους δεινοσαύρους. Το
βιβλίο επεκτείνεται πέρα από την ύλη που καλύπτουµε σε αυτό το
µάθηµα και το προτείνουµε ανεπιφύλακτα για όσους θέλουν να µελετήσουν αυτό το «κάτι παραπάνω».
[5] Papazoglou M. and Valder W., Relational Database Management,
Prentice Hall, 1989.
Eάν θέλετε, διαβάστε τα κεφάλαια 5 (File Management) και 6 (The
Physical Database Implementation). Πάντως, επειδή το βιβλίο είναι
γραµµένο από την πρακτική του σχεσιακού µοντέλου, ίσως είναι καλύτερα να µην το µελετήσετε τώρα, αλλά να το διαβάσετε µετά το επόµενο κεφάλαιο του µαθήµατος ως µία καλή επανάληψη στο φυσικό
επίπεδο από τη σκοπιά του σχεσιακού µοντέλου.
[6] Gio Wiederhold, File Organization for Database Design, Mc–Graw
Hill, 1987.
Ένα βιβλίο αφιερωµένο αποκλειστικά στην οργάνωση των αρχείων
Βάσεων ∆εδοµένων στο φυσικό επίπεδο. Κατάλληλο για όσους
θέλουν πραγµατικά να εµβαθύνουν στο φυσικό επίπεδο και στην οργάνωση αρχείων Βάσεων ∆εδοµένων.

ªÔÓÙÂÏÔÔ›ËÛË Î·È £¤Ì·Ù· ™¯Â‰›·Û˘
™ÎÔfi˜
Σκοπός του κεφαλαίου είναι να σας παρέχει µία σύντοµη περιγραφή
δύο παλαιότερων µοντέλων δεδοµένων, του ιεραρχικού και του δικτυακού µοντέλου, παρουσιάζοντας τις βασικές αρχές και τη φιλοσοφία
αυτών των µοντέλων, χωρίς να εµβαθύνουµε. Επίσης, σκοπός είναι η
παρουσίαση ενός βασικού µοντέλου σχεδίασης Βάσεων ∆εδοµένων του
µοντέλου σχέσεων – οντοτήτων. Θα περιγράψουµε τα ∆ιαγράµµατα
Σχέσεων – Οντοτήτων και την εφαρµογή τους στις Βάσεις ∆εδοµένων.
¶ÚÔÛ‰ÔÎÒÌÂÓ· ∞ÔÙÂϤÛÌ·Ù·
Όταν θα έχετε ολοκληρώσει τη µελέτη αυτού του κεφαλαίου θα µπορείτε να:
• εξηγήσετε τους βασικούς όρους του ιεραρχικού µοντέλου
• περιγράψετε τις έννοιες «δέντρο», «ρίζα», «φύλλα», «σύνδεση»,
«σύνδεση γονιού µε παιδί»
• διακρίνετε ανάµεσα σε ιεραρχικά δέντρα και σε δικτυακές δοµές
• δώσετε παραδείγµατα ιεραρχικών δέντρων και παραδείγµατα
δικτυακών δοµών δεδοµένων
• περιγράψετε το ρόλο των εγγραφών στο ιεραρχικό και στο δικτυακό µοντέλο
• προτείνετε µετατροπές σε δικτυακά µοντέλα δεδοµένων ώστε να
προκύψουν ιεραρχικά µοντέλα δεδοµένων
• περιγράψετε τις έννοιες «οντότητα», «σχέση», «κλειδί» και «κατηγόρηµα» που χαρακτηρίζουν ένα διάγραµµα σχέσεων – οντοτήτων
• διακρίνετε το είδος κάθε σχέσης σε ένα διάγραµµα σχέσεων – οντοτήτων
• σχεδιάσετε τα βασικά δοµικά στοιχεία ενός διαγράµµατος σχέσεων
– οντοτήτων και να εξηγήσετε τι είναι το καθένα
• εντοπίσετε τις οντότητες και τις σχέσεις από την περιγραφή ενός
προβλήµατος του πραγµατικού κόσµου
• σχεδιάσετε το διάγραµµα σχέσεων – οντοτήτων από την περιγραφή
ενός προβλήµατος του πραγµατικού κόσµου
• εντοπίσετε προβλήµατα και προτείνετε αλλαγές σε ένα διάγραµµα
σχέσεων – οντοτήτων

3
º

§

π

K E º A § A I O 3 : ª √ ¡ ∆ ∂ § √ ¶ √ π ∏ ™ ∏ ∫ ∞ π £ ∂ ª ∞∆ ∞ ™ Ã ∂ ¢ π ∞ ™ ∏ ™

64

ŒÓÓÔȘ ÎÏÂȉȿ
• Ιεραρχικό Μοντέλο (Hierarchic Model)
• ∆έντρο (Tree)
• Παιδί (Child)
• Γονιός (Parent)
• Φύλλο (Leaf)
• Σύνδεση (Link)
• Οντότητα (Entity)
• Ασθενής Οντότητα (Weak Entity)
• Σχέση (Relation)
• Κατηγόρηµα (Attribute)
• Κλειδί (Key)
∂ÈÛ·ÁˆÁÈΤ˜ ¶·Ú·ÙËÚ‹ÛÂȘ
Στο κεφάλαιο αυτό περιγράφουµε µοντέλα δεδοµένων και εισάγουµε
βασικές έννοιες σχεδίασης Βάσεων ∆εδοµένων παρουσιάζοντας τα διαγράµµατα σχέσεων – οντοτήτων. (Τα συγκεκριµένα διαγράµµατα αναφέρονται στη βιβλιογραφία και ως «διαγράµµατα οντοτήτων – συσχετίσεων» ή «διαγράµµατα οντοτήτων – συσχετισµών».) Υπάρχουν τέσσερα
βασικά µοντέλα δεδοµένων: Το ιεραρχικό µοντέλο, το δικτυακό µοντέλο, το σχεσιακό µοντέλο και το αντικειµενοστραφές µοντέλο. Μερικές
φορές χρησιµοποιούνται και «ανάµεικτα» µοντέλα δεδοµένων, τα οποία
χρησιµοποιούν στοιχεία από όλα ή κάποια από τα παραπάνω µοντέλα.
Σήµερα στις περισσότερες Βάσεις ∆εδοµένων κυριαρχεί το σχεσιακό
µοντέλο, ενώ σταδιακά κερδίζει έδαφος το αντικειµενοστραφές µοντέλο. Τα δύο αυτά µοντέλα (λόγω της σηµασίας τους) θα τα καλύψουµε
σε ξεχωριστά κεφάλαια. Σε αυτό το κεφάλαιο παρουσιάζουµε εν συντοµία τα δύο πρώτα µοντέλα. Στην ενότητα 3.1 παρουσιάζεται το ιεραρχικό µοντέλο και στην ενότητα 3.2 το δικτυακό µοντέλο. Τέλος, στην
ενότητα 3.3 περιγράφονται τα διαγράµµατα σχέσεων – οντοτήτων. Τα
διαγράµµατα σχέσεων – οντοτήτων παρουσιάζονται ως το βασικό
εργαλείο για τη σχεδίαση Βάσεων ∆εδοµένων, που θα χρησιµοποιήσετε και στο αντίστοιχο εργαστηριακό µάθηµα.

3.1 ∆Ô ÈÂÚ·Ú¯ÈÎfi ÌÔÓÙ¤ÏÔ

™ÎÔfi˜
Σκοπός της ενότητας είναι να γίνει µία εισαγωγή στις έννοιες του
ιεραρχικού µοντέλου. Η ενότητα αυτή παρουσιάζει συνοπτικά το
ιεραρχικό µοντέλο και σας παραπέµπει σε βιβλιογραφία προαιρετικής
ανάγνωσης για περαιτέρω εµβάθυνση στο συγκεκριµένο µοντέλο.
¶ÚÔÛ‰ÔÎÒÌÂÓ· ∞ÔÙÂϤÛÌ·Ù·
Όταν θα έχετε ολοκληρώσει τη µελέτη αυτής της ενότητας θα µπορείτε να:
• εξηγήσετε τους ορισµούς «δέντρο», «κόµβος», «παιδί», «γονιός»,
«ρίζα» και «φύλλο»
• δώσετε τουλάχιστον τρία παραδείγµατα ιεραρχικών δέντρων
• περιγράψετε τις προϋποθέσεις που πρέπει να πληροί ένα δέντρο για
να µπορεί να χρησιµοποιηθεί σε ένα ιεραρχικό µοντέλο
• εντοπίσετε τα φύλλα, τη ρίζα, τα παιδιά και τους γονιούς σε κάθε
ιεραρχικό δέντρο ή στις εγγραφές που το αποτελούν
∂ÈÛ·ÁˆÁÈΤ˜ ¶·Ú·ÙËÚ‹ÛÂȘ
Στην ενότητα αυτή παρουσιάζεται εν συντοµία το ιεραρχικό µοντέλο.
Για πιο εκτενή µελέτη του µοντέλου αυτού µπορείτε να ανατρέξετε στις
βιβλιογραφικές πηγές που σας δίνουµε στο τέλος του κεφαλαίου.
∆√ ª√¡∆∂§√

Το ιεραρχικό µοντέλο είναι ένα σχετικά παλαιό µοντέλο. Τα πρώτα
συστήµατα Βάσεων ∆εδοµένων που βασίστηκαν στο ιεραρχικό µοντέλο εκδόθηκαν στα τέλη της δεκαετίας του 1960 (όπως το IMS/360 της
IBM). Η φιλοσοφία του ιεραρχικού µοντέλου είναι αυτή ακριβώς που
υποδηλώνει το όνοµά του, δηλαδή η ιεράρχηση των δεδοµένων που
ενσωµατώνονται στο σύστηµα.
Ένα σύστηµα Βάσεων ∆εδοµένων βασισµένο στο ιεραρχικό µοντέλο
αποτελείται από δέντρα. Κάθε δέντρο είναι µία σειρά από εγγραφές
διαταγµένες µε συγκεκριµένο τρόπο, έτσι ώστε κάθε εγγραφή να έχει

K E º A § A I O 3 : ª √ ¡ ∆ ∂ § √ ¶ √ π ∏ ™ ∏ ∫ ∞ π £ ∂ ª ∞∆ ∞ ™ Ã ∂ ¢ π ∞ ™ ∏ ™

66

ορισµένη θέση ιεραρχικά. Στο σχήµα 3.1 παρουσιάζεται ένα παράδειγµα δέντρου µε 6 κόµβους. Κάθε κόµβος συνδέεται µε µία σύνδεση µε άλλους κόµβους (έναν ή περισσότερους).
Η ιεραρχία σε κάθε δέντρο καθορίζεται από τη σύνδεση Παιδί µε Γονιού. Γονέας ενός κόµβου είναι ο κόµβος που είναι ψηλότερα στην
ιεραρχία από αυτόν και µε τον οποίο συνδέεται. Παιδί ενός κόµβου
είναι ο συνδεδεµένος µε αυτόν κόµβος που βρίσκεται κατώτερα στην
ιεραρχία. Ο κόµβος του δέντρου που βρίσκεται υψηλότερα από όλους
στην ιεραρχία ονοµάζεται ρίζα, ενώ οι κόµβοι του δέντρου που βρίσκονται στο χαµηλότερο επίπεδο της ιεραρχίας ονοµάζονται φύλλα.
Η ρίζα του δέντρου δεν έχει κανένα γονιό, ενώ τα φύλλα δεν έχουν
κανένα παιδί. Έτσι, στο σχήµα 2.6 ρίζα του δέντρου είναι ο κόµβος 1.
Ο κόµβος 1 έχει δύο παιδιά (τους κόµβους 2 και 3) και ο κόµβος 5 έχει
γονιό τον κόµβο 2. Φύλλα του δέντρου είναι οι κόµβοι 4, 5 και 6.
Kόµβος 1

Kόµβος 2

Kόµβος 3

™¯‹Ì· 3.1

Παράδειγµα ∆έντρου

Kόµβος 4

Kόµβος 5

Kόµβος 6

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

3 . 1 ∆ √ π ∂ ƒ∞ ƒ à π ∫ √ ª √ ¡ ∆ ∂ § √

67

106

177

Bασιλείου

11

13

17

Bοηθός

Mακρής

Παπαδόπουλος

Pασσιά

Mετρήσεις Eργαστήριο

621

Φοιτητής

411

Nικολάου Eπιµελήτρια

Γεωργίου

777

Ξανθός

Bοηθός

35

Mακρή

Φοιτήτρια

Eπιµελητής

Φοιτητής

Φοιτήτρια

21

Aντωνίου

Φοιτήτρια
™¯‹Ì· 3.2

24

Bασιλάκη

Φοιτήτρια

Εάν πληρούνται οι παραπάνω προϋποθέσεις, τότε το δέντρο µπορεί
να συµµετέχει στο µοντέλο. Ένα τέτοιο δέντρο θα το ονοµάζουµε
ιεραρχικό δέντρο. Έτσι, το ιεραρχικό µοντέλο αποτελείται από ιεραρχικά δέντρα, τα οποία έχουν ως κόµβους τους εγγραφές µε τα δεδοµένα της Βάσης ∆εδοµένων.
Στο σχήµα 3.2 παρουσιάζεται ένα ιεραρχικό δέντρο µε εγγραφές
εκπαιδευτών και µαθητών για ένα εργαστήριο. (Για το εργαστήριο
«µετρήσεις» που βρίσκεται στη ρίζα του δέντρου.) Προσέξτε ότι τα
παιδιά κάθε γονιού πρέπει να είναι διατεταγµένα (για λόγους σύµβασης στο σχήµα εµφανίζονται από αριστερά προς τα δεξιά ή από πάνω
προς τα κάτω). Στο σχήµα 3.2 δεν έχουν αναπαρασταθεί οι βασικές
λεπτοµέρειες της δοµής (όπως παράδειγµα ο χώρος που καταλαµβάνουν οι δείκτες), αφού ο στόχος είναι να φανεί η θεωρητική οργάνωση των δεδοµένων στο ιεραρχικό µοντέλο.
∆εν θα επεκταθούµε περισσότερο στο ιεραρχικό µοντέλο. Ως µοντέλο χρησιµοποιείται σήµερα σε µερικά συστήµατα (όπως το MARS VI
και το S–200), αλλά γενικά το µοντέλο που κυριάρχησε ως σήµερα
είναι το σχεσιακό µοντέλο, ενώ το µοντέλο που αναµένεται να κυριαρχήσει µελλοντικά είναι το αντικειµενοστραφές. Για τα δύο αυτά µοντέλα θα αφιερώσουµε χωριστά κεφάλαια.

Ιεραρχικό ∆έντρων Εγγραφών

K E º A § A I O 3 : ª √ ¡ ∆ ∂ § √ ¶ √ π ∏ ™ ∏ ∫ ∞ π £ ∂ ª ∞∆ ∞ ™ Ã ∂ ¢ π ∞ ™ ∏ ™

68

ÕÛÎËÛË
·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
3.1

Μελετήστε το δέντρο του σχήµατος 3.2. Κάθε εγγραφή στο σχήµα
έχει ένα κωδικό (στο αριστερό της µέρος) και θα αναφερόµαστε στην
κάθε εγγραφή µε αυτό τον κωδικό. Απαντήστε στις παρακάτω ερωτήσεις:
i. Ποια εγγραφή είναι η ρίζα του δέντρου;
ii. Ποιες εγγραφές είναι τα φύλλα του δέντρου;
iii. Η εγγραφή µε κωδικό 411 ποιες εγγραφές έχει ως παιδιά;
iv. Η εγγραφή µε κωδικό 17 ποια εγγραφή έχει ως γονιό;
v. Ποιες εγγραφές είναι τα παιδιά της εγγραφής µε κωδικό 621;

ÕÛÎËÛË
·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
3.2

¢Ú·ÛÙËÚÈfiÙËÙ· 3.1

Ποιες από τις προτάσεις που ακολουθούν είναι σωστές και ποιες όχι
όταν αναφερόµαστε στο δέντρο του σχήµατος 2.6;
Σωστό

Λάθος

Η εγγραφή µε κωδικό 177 είναι η ρίζα
των εγγραφών µε κωδικούς 11, 13 και 17.

Η εγγραφή µε κωδικό 177 είναι παιδί
της εγγραφής µε κωδικό 106.

Η εγγραφή µε κωδικό 411 είναι παιδί
της εγγραφής µε κωδικό 621.

Η εγγραφή µε κωδικό 621 είναι φύλλο.

Η εγγραφή µε κωδικό 13 είναι γονιός
της εγγραφής µε κωδικό 17.

Σχεδιάστε το γενεαλογικό σας δέντρο χρησιµοποιώντας εγγραφές µε
τα παρακάτω πεδία (κωδικός, επώνυµο, όνοµα). Προσπαθήστε να
καταγράψετε τουλάχιστον τέσσερις γενεές.
1) Είναι το δέντρο που προέκυψε ιεραρχικό δέντρο;
2) Θα µπορούσε να εισαχθεί σε µία ιεραρχική Βάση ∆εδοµένων;
3) Τι αλλαγές πρέπει να γίνουν για να µπορεί να εισαχθεί σε µία
ιεραρχική Βάση ∆εδοµένων;

3 . 2 ∆ √ ¢ π ∫ ∆ À∞ ∫ √ ª √ ¡ ∆ ∂ § √

3.2 ∆Ô ‰ÈÎÙ˘·Îfi ÌÔÓÙ¤ÏÔ

™ÎÔfi˜
Σκοπός της ενότητας είναι να γίνει µία εισαγωγή στις έννοιες του
δικτυακού µοντέλου. Η ενότητα αυτή παρουσιάζει συνοπτικά το
δικτυακό µοντέλο και σας παραπέµπει σε βιβλιογραφία προαιρετικής
ανάγνωσης για περαιτέρω εµβάθυνση στο συγκεκριµένο µοντέλο.
¶ÚÔÛ‰ÔÎÒÌÂÓ· ∞ÔÙÂϤÛÌ·Ù·
Όταν θα έχετε ολοκληρώσει τη µελέτη αυτής της ενότητας θα µπορείτε να:
• εξηγήσετε τη λογική των δικτύων και του δικτυακού µοντέλου
• διακρίνετε διαφορές σε συνδεδεµένες εγγραφές του ιεραρχικού µε
αυτές του δικτυακού µοντέλου
• εντοπίσετε τις αλλαγές που πρέπει να γίνουν σε ένα δίκτυο εγγραφών για να µετατραπεί σε δέντρο του ιεραρχικού µοντέλου
∂ÈÛ·ÁˆÁÈΤ˜ ¶·Ú·ÙËÚ‹ÛÂȘ
Στην ενότητα αυτή παρουσιάζεται εν συντοµία το δικτυακό µοντέλο.
Για πιο εκτενή µελέτη του µοντέλου αυτού µπορείτε να ανατρέξετε στις
βιβλιογραφικές πηγές που σας δίνουµε στο τέλος του κεφαλαίου.
Το δικτυακό µοντέλο είναι επίσης ένα σχετικά παλαιό µοντέλο. Τα
πρώτα συστήµατα Βάσεων ∆εδοµένων που βασίστηκαν στο δικτυακό µοντέλο εκδόθηκαν στις αρχές της δεκαετίας του 1970, όπως το
IDMS. Η φιλοσοφία του δικτυακού µοντέλου είναι αυτό ακριβώς που
υποδηλώνει το όνοµά του, δηλαδή η σύνδεση των δεδοµένων ώστε να
αποτελούν ένα δίκτυο.
Στην προηγούµενη ενότητα µιλήσαµε για το ιεραρχικό µοντέλο. Το
δικτυακό µοντέλο θα µπορούσε να αντιµετωπισθεί ως επέκταση του
ιεραρχικού µοντέλου. Η ειδοποιός διαφορά είναι ότι στο δικτυακό
µοντέλο δεν υπάρχει ο περιορισµός ότι κάθε εγγραφή πρέπει να έχει
ένα µόνο γονιό. Έτσι κάθε εγγραφή θα µπορούσε να έχει κανένα, ένα
ή περισσότερους γονιούς. Με αυτή τη λογική οι εγγραφές σε αυτό το
µοντέλο διατάσσονται δηµιουργώντας ένα δίκτυο.
Στο δικτυακό µοντέλο ουσιαστικά αναφερόµαστε σε δύο σύνολα. Ένα
σύνολο που αποτελείται από εγγραφές και ένα σύνολο που αποτελείται

69

K E º A § A I O 3 : ª √ ¡ ∆ ∂ § √ ¶ √ π ∏ ™ ∏ ∫ ∞ π £ ∂ ª ∞∆ ∞ ™ Ã ∂ ¢ π ∞ ™ ∏ ™

70

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

Eγγραφή 2

Eγγραφή 3

Eγγραφή 4

Eγγραφή 7

Eγγραφή 8

Eγγραφή 5
™¯‹Ì· 3.3

Παράδειγµα ∆ικτύου

Eγγραφή 6

Βασικό πλεονέκτηµα του δικτυακού µοντέλου είναι ότι µε τη λογική
του δικτύου µπορούν να ορισθούν πολύπλοκες και επαναλαµβανόµενες οµάδες δεδοµένων. Για παράδειγµα, σε µία Βάση ∆εδοµένων µε
τα στοιχεία µίας οµάδας µπάσκετ θα µπορούσε να ορισθεί µια επαναλαµβανόµενη οµάδα «στατιστικά παίκτη» για κάθε εγγραφή «παίκτης» και για κάθε αγώνα και έτσι να τηρούνται τα στατιστικά κάθε
παίκτη για κάθε αγώνα. Στο σχήµα 3.3 παρουσιάζεται ένα δίκτυο µε
εγγραφές ως παράδειγµα ενός δικτυακού µοντέλου.
∆εν θα επεκταθούµε περισσότερο στο δικτυακό µοντέλο, αφού η αναφορά σε αυτό έγινε για ιστορικούς λόγους. Στη βιβλιογραφία, στο
τέλος του κεφαλαίου, θα βρείτε αναφορές σε βιβλία µε τα οποία µπορείτε να εµβαθύνετε στο συγκεκριµένο µοντέλο.
ÕÛÎËÛË
·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
3.3

Μελετήστε το δίκτυο του σχήµατος 3.3. Θα µπορούσε να µετατραπεί σε δέντρο; Ακολούθως δίνουµε κάποιες συνδέσεις, οι οποίες εάν
αφαιρεθούν το δίκτυο θα γίνει δέντρο. Οι συνδέσεις δίνονται µε τους
αριθµούς των εγγραφών, δηλαδή η σύνδεση (1,2) σηµαίνει σύνδεση
από την εγγραφή 1 στην εγγραφή 2 (δηλαδή η 1 είναι γονιός και η 2
παιδί). Επιλέξτε για ποια ή ποιες περιπτώσεις το δίκτυο έγινε δέντρο
και εντοπίστε τη ρίζα του και τα φύλλα.
(1,2) (5,3)

(1,3) (8,1)

(5,3) (8,1)

3 . 2 ∆ √ ¢ π ∫ ∆ À∞ ∫ √ ª √ ¡ ∆ ∂ § √ / 3 . 3 ¢ π ∞ ° ƒ ∞ ª ª ∞ ∆ ∞ ™ à ∂ ™ ∂ ø ¡ – O ¡ ∆ √ ∆ ∏ ∆ ø ¡

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

3.3 ¢È·ÁÚ¿ÌÌ·Ù· Û¯¤ÛÂˆÓ – OÓÙÔًوÓ

™ÎÔfi˜
Σκοπός της ενότητας αυτής είναι η περιγραφή των διαγραµµάτων
σχέσεων – οντοτήτων, η ανάλυση των δοµικών στοιχείων ενός διαγράµµατος σχέσεων – οντοτήτων και η εξήγηση των εννοιών που
χρησιµοποιούνται σε αυτό. Βασικός σκοπός είναι, µετά τη µελέτη
αυτού του κεφαλαίου, να είστε σε θέση να σχεδιάζετε διαγράµµατα
σχέσεων – οντοτήτων και να τα χρησιµοποιείτε στις Βάσεις ∆εδοµένων που θα δηµιουργήσετε.
Τα διαγραµµάτων σχέσεων – οντοτήτων είναι βασικά για τη σχεδίαση
των Βάσεων δεδοµένων και θα τα χρησιµοποιήσουµε και στα παραδείγµατα του σχεσιακού µοντέλου που θα ακολουθήσουν.
¶ÚÔÛ‰ÔÎÒÌÂÓ· ∞ÔÙÂϤÛÌ·Ù·
Όταν θα έχετε ολοκληρώσει τη µελέτη αυτής της ενότητας θα µπορείτε να:
• εξηγήσετε τους ορισµούς των οντοτήτων, κατηγορηµάτων, κλειδιών
και σχέσεων
• περιγράψετε τις οντότητες και τις σχέσεις για κάθε πρόβληµα του
πραγµατικού κόσµου, να εντοπίσετε τα κατηγορήµατα και να επιλέξετε τα κατάλληλα κλειδιά για κάθε οντότητα
• εντοπίσετε τον τύπο κάθε σχέσης για κάθε πρόβληµα του πραγµατικού κόσµου και τις οντότητες που συµµετέχουν σε αυτή
• περιγράψετε τους τύπων σχέσεων σε ένα διάγραµµα σχέσεων –
οντοτήτων
• σχεδιάστε τα δοµικά συστατικά ενός διαγράµµατος σχέσεων – οντοτήτων, να περιγράψετε τι είναι κάθε ένα από αυτά, καθώς και που
χρησιµοποιούνται

71

¢Ú·ÛÙËÚÈfiÙËÙ· 3.2

72

K E º A § A I O 3 : ª √ ¡ ∆ ∂ § √ ¶ √ π ∏ ™ ∏ ∫ ∞ π £ ∂ ª ∞∆ ∞ ™ Ã ∂ ¢ π ∞ ™ ∏ ™

• σχεδιάσετε το διάγραµµα σχέσεων – οντοτήτων για προβλήµατα του
πραγµατικού κόσµου
• εκλεπτύνετε ένα διάγραµµα σχέσεων – οντοτήτων
• εντοπίσετε και διορθώσετε σχεδιαστικές ατέλειες
• προτείνετε σχεδιαστικές λύσεις στη µοντελοποίηση µε διαγράµµατα
σχέσεων – οντοτήτων για συγκεκριµένα προβλήµατα του πραγµατικού κόσµου
∂ÈÛ·ÁˆÁÈΤ˜ ¶·Ú·ÙËÚ‹ÛÂȘ
Στην ενότητα 3.3.1 παρουσιάζουµε τις βασικές έννοιες για τις οντότητες, τα κατηγορήµατα και τα κλειδιά. Στην ενότητα 3.3.2 αναλύουµε
τις σχέσεις ανάµεσα σε οντότητες και τους τύπους σχέσεων. Στην ενότητα 3.3.3 περιγράφουµε τα δοµικά στοιχεία ενός διαγράµµατος σχέσεων – οντοτήτων, δηλαδή πώς σχεδιάζουµε ένα διάγραµµα σχέσεων
– οντοτήτων. Τέλος στην ενότητα 3.3.4 αναφέρουµε τη µέθοδο µοντελοποίησης Βάσεων ∆εδοµένων χρησιµοποιώντας διαγράµµατα σχέσεων – οντοτήτων.
3.3.1 √ÓÙfiÙËÙ˜ Î·È Î·ÙËÁÔÚ‹Ì·Ù·

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

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

Τα διαγράµµατα σχέσεων – οντοτήτων έχουν ως βασικό στοιχείο τους
την οντότητα. Η οντότητα είναι η αναπαράσταση µιας αυτόνοµης ύπαρξης του πραγµατικού κόσµου (µε υλική υπόσταση) ή µια συµβατική
ύπαρξη (µε θεωρητική υπόσταση). ∆ηλαδή οντότητα είναι ένας φοιτητής (δηλαδή ένας άνθρωπος µε όνοµα, επώνυµο, χαρακτηριστικά κτλ),
αλλά και ένα µάθηµα που διδάσκεται σε µία σχολή (δηλαδή κάτι άυλο,
αλλά µε συµβατική υπόσταση που έχει στοιχεία, όπως ώρες διδασκαλίας, αντικείµενο κτλ). Έτσι προκύπτει ο δίπλα ορισµός. ■
Τα δεδοµένα τα οποία θα αποθηκευτούν στις οντότητες του διαγράµµατος σχέσεων – οντοτήτων αντιστοιχούν σε εγγραφές στο φυσικό
επίπεδο της Βάσης ∆εδοµένων. Έτσι, µία οντότητα έχει ένα όνοµα που
τη χαρακτηρίζει και κάποια χαρακτηριστικά που την περιγράφουν. Τα
χαρακτηριστικά αυτά ονοµάζονται κατηγορήµατα της οντότητας.
∆ίπλα, ο ορισµός. ■
Τα κατηγορήµατα περιγράφουν την κάθε οντότητα. Άρα, αναλύοντας
αυτό που είπαµε λίγο πριν, τα δεδοµένα τα οποία θα αποθηκευτούν
στις οντότητες του διαγράµµατος σχέσεων – οντοτήτων αντιστοιχούν

3 . 3 ¢ π ∞ ° ƒ∞ ª ª ∞∆∞ ™ à ∂ ™ ∂ ø ¡ – O ¡ ∆ √ ∆ ∏ ∆ ø ¡

σε εγγραφές στο φυσικό επίπεδο της Βάσης ∆εδοµένων και ειδικότερα τα κατηγορήµατα για κάθε οντότητα αντιστοιχούν µε τις τιµές για
τα πεδία κάθε εγγραφής. Ας δούµε το παράδειγµα που ακολουθεί.
¶·Ú¿‰ÂÈÁÌ· 3.1
Στο παράδειγµα αυτό εξετάζουµε ένα πρωτάθληµα καλαθοσφαίρισης (µπάσκετ). Το πρωτάθληµα αποτελείται από οµάδες στις οποίες συµµετέχουν παίκτες. Για τις ανάγκες του πρωταθλήµατος γίνονται αγώνες ανάµεσα σε οµάδες και κάθε αγώνας τελειώνει µε
κάποιο συγκεκριµένο αποτέλεσµα. Για λόγους απλότητας θεωρούµε ότι τα στοιχεία που χαρακτηρίζουν κάθε οµάδα είναι η ονοµασία
της, το όνοµα του ιδιοκτήτη της, το όνοµα του χορηγού της, το έτος
που ιδρύθηκε και η πόλη στην οποία εδρεύει. Επίσης κάθε παίκτης
χαρακτηρίζεται από το όνοµά του, το επώνυµό του, το πατρώνυµό
του, τον αριθµό µητρώου του στην οµοσπονδία καλαθοσφαίρισης,
το ύψος του, την ηµεροµηνία γέννησης του και την πόλη καταγωγής
του. Τέλος, πάλι για λόγους απλότητας ένας αγώνας χαρακτηρίζεται
µόνο από τις οµάδες που συµµετείχαν, το γήπεδο στο οποίο έγινε,
την ηµεροµηνία διεξαγωγής του και το τελικό σκορ.

Με όσα γνωρίζετε µέχρι τώρα για τα διαγράµµατα σχέσεων – οντοτήτων θα µπορούσατε να εντοπίσετε τρεις οντότητες στο παράδειγµα 3.1:
• Οµάδα
• Παίκτης
• Αγώνας
Τα κατηγορήµατα για κάθε οντότητα είναι τα εξής:
• Για την οντότητα «Οµάδα»: ονοµασία, όνοµα ιδιοκτήτη, όνοµα
σπόνσορα, έτος ίδρυσης, έδρα.
• Για την οντότητα «Παίκτης»: όνοµα, επώνυµο, πατρώνυµο, αριθµός µητρώου, ύψος, ηµεροµηνία γέννησης, καταγωγή.
• Για την οντότητα «Αγώνας»: γηπεδούχος οµάδα, φιλοξενούµενη
οµάδα, γήπεδο διεξαγωγής, ηµεροµηνία, σκορ γηπεδούχου, σκορ
φιλοξενούµενης.
Με τον παραπάνω τρόπο έχουµε περιγράψει τη Βάση ∆εδοµένων που

73

74

K E º A § A I O 3 : ª √ ¡ ∆ ∂ § √ ¶ √ π ∏ ™ ∏ ∫ ∞ π £ ∂ ª ∞∆ ∞ ™ Ã ∂ ¢ π ∞ ™ ∏ ™

θα χρησιµοποιήσουµε για να συγκεντρώσουµε τα δεδοµένα του παραδείγµατος 3.1, χρησιµοποιώντας ένα υψηλότερο επίπεδο αφαίρεσης.
Κάθε οντότητα περιγράφει µία συγκεκριµένη κατηγορία εγγραφών τις
οποίες µπορούµε να τις οµαδοποιήσουµε. Έτσι, όταν θα αναφερόµαστε σε εγγραφές που εντάσσονται στην οντότητα «Οµάδα» θα γνωρίζουµε ότι πρέπει να έχουν πεδία που αντιστοιχούν στα κατηγορήµατα
που περιγράψαµε παραπάνω. Παραδείγµατα τεσσάρων εγγραφών οµάδων είναι τα ακόλουθα:
1. («Ατρόµητος», «Νικολάου», «Ψητοπωλείο η Ωραία Πάτρα»,
«1918», «Πάτρα»)
2. («Ανίκητος», «Βασιλείου», «Κλειδαράς ο Μήτσος», «1934», «Αχαγιά»)
3. («Κεραυνός Κάτω Πλαγιάς», «Χατζηγιάννης», «Ουζερί ο Μεζές»,
«1964», «Κάτω Πλαγιά»)
4. («Κεραυνός Άνω Πλαγιάς», «Νικολαΐδης», « », «1971», « Άνω Πλαγιά»)
Προσέξτε τη διαφορά ανάµεσα στην οντότητα του διαγράµµατος σχέσεων – οντοτήτων και στην εγγραφή στο φυσικό επίπεδο. Η οντότητα είναι µία αφηρηµένη (υψηλού επιπέδου) αναπαράσταση της έννοιας «οµάδα», ενώ εγγραφές από οµάδες είναι δεδοµένα οµάδων από το
περιβάλλον του πραγµατικού κόσµου.

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

Ορίσαµε τα κατηγορήµατα που περιγράφουν τα χαρακτηριστικά κάθε
οντότητας. Για να µπορούµε όµως να κάνουµε αναφορές σε εγγραφές
που αντιστοιχούν σε οντότητες πρέπει να υπάρχει ένας τρόπος να εντοπίζουµε µία εγγραφή ανάµεσα στις άλλες (να τη διακρίνουµε δηλαδή
από τις άλλες). Ας δούµε το παράδειγµα των παικτών. Εάν πούµε ο
παίκτης «Νικολάου» είναι επαρκές για να καταλάβουµε για ποιον παίκτη αναφερόµαστε; Θα µπορούσε να είναι, αλλά κατά κανόνα είναι
πολύ πιθανό να υπάρχουν δύο παίκτες µε το ίδιο επώνυµο στο πρωτάθληµα. Αντίθετα, ο αριθµός µητρώου καλαθοσφαιριστή είναι µοναδικός για κάθε καλαθοσφαιριστή (γιατί έτσι επιβάλλει η οµοσπονδία
καλαθοσφαίρισης). Μπορούµε λοιπόν να πούµε ότι το κατηγόρηµα
«αριθµός µητρώου καλαθοσφαιριστή» είναι µοναδικό για κάθε καλαθοσφαιριστή. Αυτό το κατηγόρηµα µπορεί να αποτελέσει το κλειδί για
την οντότητα «παίκτης». Ακολουθεί ο ορισµός. ■
Όπως φαίνεται και από τον ορισµό, κλειδί µπορεί να είναι και ένα σύνο-

3 . 3 ¢ π ∞ ° ƒ∞ ª ª ∞∆∞ ™ à ∂ ™ ∂ ø ¡ – O ¡ ∆ √ ∆ ∏ ∆ ø ¡

75

λο από κατηγορήµατα αντί για ένα µόνο κατηγόρηµα. Ας υποθέσουµε
ότι στο παράδειγµα 3.1 µπορούσαν να υπάρχουν οµάδες µε το ίδιο
όνοµα, αλλά όχι και από την ίδια πόλη. Έτσι το όνοµα της οµάδας και η
πόλη θα µπορούσαν να αποτελούν το κλειδί για την οντότητα «Οµάδα».
Θεωρητικά µπορούν να υπάρχουν πολλά σύνολα που είναι δυνατόν
να αποτελέσουν το κλειδί για µία οντότητα. Για παράδειγµα, στην
οντότητα «Παίκτης» κλειδί θα µπορούσε να είναι ο «αριθµός µητρώου καλαθοσφαιριστή», αλλά θα µπορούσε και να είναι το σύνολο των
κατηγορηµάτων («Όνοµα», «Επώνυµο», «Πατρώνυµο», «Ηµεροµηνία Γέννησης»). Το σύνολο αυτό όµως έχει δύο µειονεκτήµατα: α)
Προϋποθέτει ότι δεν θα υπάρχουν δύο παίκτες µε το ίδιο ακριβώς
όνοµα, επώνυµο και όνοµα πατέρα που να έχουν γεννηθεί την ίδια
ηµέρα και β) χρησιµοποιεί τέσσερα κατηγορήµατα αντί για ένα. Η
πρώτη υπόθεση είναι απόλυτα λογική, αν και θα µπορούσε να συµβεί
(άσχετα µε το πόσο απίθανη είναι). Παρόλα αυτά ως κλειδί για µία
οντότητα είναι καλύτερο να χρησιµοποιείται το απλούστερο δυνατό
σύνολο κατηγορηµάτων. Έτσι η επιλογή του κατηγορήµατος «αριθµός µητρώου καλαθοσφαιριστή» είναι η καλύτερη επιλογή.

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

ÕÛÎËÛË
·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
3.4

K E º A § A I O 3 : ª √ ¡ ∆ ∂ § √ ¶ √ π ∏ ™ ∏ ∫ ∞ π £ ∂ ª ∞∆ ∞ ™ Ã ∂ ¢ π ∞ ™ ∏ ™

76

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

¢Ú·ÛÙËÚÈfiÙËÙ· 3.3

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

3.3.2 ™¯¤ÛÂȘ ÔÓÙÔًوÓ

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

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

■ Βαθµός µιας σχέσης ονοµάζεται ο αριθµός των οντοτήτων που συµµετέχουν στη
σχέση.

Είναι φανερό ότι υπάρχει µία σχέση ανάµεσα σε οµάδες και παίκτες.
Κάθε οµάδα αποτελείται από κάποιους παίκτες της. Άρα οι οντότητες
µπορούν να έχουν σχέσεις µεταξύ τους, σχέσεις που είναι ουσιαστικές
για τη Βάση ∆εδοµένων. Για παράδειγµα η ερώτηση «σε ποια οµάδα
παίζει ο Τάδε παίκτης;» είναι µια πολύ φυσιολογική ερώτηση στη Βάση
∆εδοµένων του παραδείγµατος 3.1. Η ερώτηση αυτή δεν αφορά κάποια
συγκεκριµένη οντότητα, αλλά τη σχέση δύο οντοτήτων (της οντότητας
παίκτης µε την οντότητα οµάδα). Ακολουθεί ο ορισµός. ■
Προσέξτε ότι στον ορισµό δεν αναφέραµε σχέση ανάµεσα σε δύο
οντότητες, αλλά ανάµεσα σε οντότητες. Σε µία σχέση λοιπόν µπορούν
να συµµετέχουν περισσότερες των δύο οντοτήτων. ■
Επίσης µία σχέση µπορεί να έχει κατηγορήµατα που προσδιορίζουν
τη σχέση, ακριβώς όπως έχουν και οι οντότητες.

3 . 3 ¢ π ∞ ° ƒ∞ ª ª ∞∆∞ ™ à ∂ ™ ∂ ø ¡ – O ¡ ∆ √ ∆ ∏ ∆ ø ¡

Ας επιστρέψουµε στο παράδειγµα 3.1. Αρχικά είχαµε µιλήσει για τρεις
οντότητες. Μήπως θα µπορούσαν να γίνουν δύο οντότητες και η οντότητα «Αγώνας» να θεωρηθεί σχέση; Φυσικά και θα µπορούσαν και
αυτή η λύση είναι καλύτερη σχεδιαστικά. Ας µελετήσουµε λίγο τη
σχέση «Αγώνας». Θα πρέπει να έχει κατηγορήµατα τα κατηγορήµατα
που προσδιορίζουν τη σχέση, δηλαδή τα «γήπεδο διεξαγωγής», «ηµεροµηνία», «σκορ γηπεδούχου», «σκορ φιλοξενούµενης». Παρατηρήσατε ότι δεν αναγράψαµε ως κατηγορήµατα τα «γηπεδούχος οµάδα»
και «φιλοξενούµενη οµάδα» που είχαµε αναφέρει στην οντότητα
«Αγώνας». Αυτό έγινε, γιατί τα στοιχεία για τις οµάδες θα µπορέσουν
να αντληθούν από την οντότητα «Οµάδα».
Πώς όµως θα µεταφερθεί η σχέση «Αγώνας» στο φυσικό επίπεδο;
Φυσικά θα είναι πάλι µία εγγραφή που θα έχει ως πεδία τα κατηγορήµατα που αναφέραµε παραπάνω. Επειδή όµως πρέπει να έχει και
τρόπο να αναφέρεται και στις οµάδες θα χρησιµοποιεί επίσης ως πεδία
τα κατηγορήµατα που χαρακτηρίζουν απόλυτα τις οµάδες, δηλαδή τα
κλειδιά.
Έτσι µία εγγραφή για ένα αγώνα θα είχε ως πεδία τα εξής: «κωδικός
γηπεδούχου οµάδας», «κωδικός φιλοξενούµενης οµάδας», «γήπεδο
διεξαγωγής», «ηµεροµηνία», «σκορ γηπεδούχου», «σκορ φιλοξενούµενης». Προσέξτε ότι θεωρήσαµε ότι η οντότητα «Οµάδα» έχει ένα
κατηγόρηµα κλειδί, το οποίο ονοµάσαµε «κωδικό». Αυτό είναι κάτι
σύνηθες στις Βάσεις ∆εδοµένων, δηλαδή να ορίζουµε έναν κωδικό για
κλειδί, όπου δεν µπορούµε να έχουµε µοναδικά κλειδιά. (Θυµηθείτε
ότι το όνοµα της οµάδας δεν αρκούσε για κλειδί.)
∫∞∆∏°√ƒπ∂™ ™Ã∂™∂ø¡

Μέχρι αυτό το σηµείο µιλήσαµε για σχέσεις στις οποίες συµµετέχουν
οντότητες χωρίς να αναλύσουµε το είδος κάθε σχέσης ως προς τις
εγγραφές που συµµετέχουν από κάθε οντότητα σε µία σχέση. Οι σχέσεις διακρίνονται στις παρακάτω κατηγορίες:
Σχέσεις 1 προς 1
Σχέσεις ISA
Σχέσεις 1 προς Ν
Σχέσεις Ν προς M

77

78

K E º A § A I O 3 : ª √ ¡ ∆ ∂ § √ ¶ √ π ∏ ™ ∏ ∫ ∞ π £ ∂ ª ∞∆ ∞ ™ Ã ∂ ¢ π ∞ ™ ∏ ™

Μερικά βιβλία δεν αναφέρουν καθόλου τη σχέση ISA, την οποία θεωρούν ως µία εξειδικευµένη 1 προς 1 σχέση. Ας δούµε τι σηµαίνει καθένας από τους παραπάνω ορισµούς σχέσεων. Για λόγους απλότητας θα
µιλήσουµε για σχέσεις στις οποίες συµµετέχουν δύο µόνο οντότητες,
αν και ό,τι περιγράφουµε ανάγεται και για περισσότερες οντότητες.
Η σχέση 1 προς 1 σηµαίνει ότι οι οντότητες που συµµετέχουν στη
σχέση είναι σε αναλογία µία προς µία, δηλαδή ότι «κάθε εγγραφή της
πρώτης οντότητας σχετίζεται µε µία εγγραφή της δεύτερης οντότητας
και το αντίστροφο».
Η σχέση ISA είναι µία ειδική σχέση 1 προς 1 που χρησιµοποιείται για
να επεξηγήσει καλύτερα µία σχέση. Σηµαίνει ότι «κάθε εγγραφή της
πρώτης οντότητας σχετίζεται µε µία εγγραφή της δεύτερης οντότητας
και το αντίστροφο, αλλά και η εγγραφή της πρώτης οντότητας είναι
µέλος της δεύτερης οντότητας, άρα έχει τα χαρακτηριστικά των εγγραφών της δεύτερης οντότητας».
Ας δούµε ένα παράδειγµα από κάθε περίπτωση για να είµαστε περισσότερο κατανοητοί. Έχουµε εργαζόµενους σε µία επιχείρηση και ο
καθένας έχει τον δικό του προσωπικό υπολογιστή τον οποίο δεν το
χρησιµοποιεί κανένας άλλος. Αν λοιπόν θέλαµε να ορίσουµε τη σχέση
«Εργαζόµενος» µε «Υπολογιστή», έστω η σχέση «χρεώνεται» (που
σηµαίνει ο εργαζόµενος Ε χρεώνεται τον υπολογιστή Υ), αυτή η σχέση
θα ήταν σχέση 1 προς 1. ∆ηλαδή κάθε εργαζόµενος θα είχε µόνο έναν
υπολογιστή χρεωµένο σε αυτόν και κάθε υπολογιστής θα είχε µόνο
ένα εργαζόµενο στον οποίο θα είχε χρεωθεί. Ας υποθέσουµε τώρα ότι
υπάρχει µία ειδική κατηγορία εργαζοµένων οι «Τεχνικοί». Κάθε τεχνικός είναι εργαζόµενος, άρα έχει όλα τα χαρακτηριστικά του εργαζόµενου, αλλά έχει και µερικά επιπλέον κατηγορήµατα, τα οποία δεν έχει
κάθε εργαζόµενος. Έτσι για τον τεχνικό θα οριζόταν µία νέα οντότητα, η οποία θα ήταν σε σχέση ISA µε την οντότητα «Εργαζόµενος».
Αυτό σηµαίνει ότι ο «Τεχνικός» έχει ως οντότητα µόνο τα ειδικά κατηγορήµατα, αλλά µέσω της σχέσης ISA ορίζεται ως εργαζόµενος και
χρησιµοποιεί όλα τα κατηγορήµατα του εργαζόµενου.
Η σχέση 1 προς Ν σηµαίνει ότι «κάθε εγγραφή της πρώτης οντότητας
σχετίζεται µε πολλές εγγραφές της δεύτερης οντότητας, αλλά κάθε
εγγραφή της δεύτερης οντότητας σχετίζεται µόνο µε µία εγγραφή της
πρώτης οντότητας».

3 . 3 ¢ π ∞ ° ƒ∞ ª ª ∞∆∞ ™ à ∂ ™ ∂ ø ¡ – O ¡ ∆ √ ∆ ∏ ∆ ø ¡

79

Ας υποθέσουµε ότι στο προηγούµενο παράδειγµα ένα εργαζόµενος
µπορούσε να χρεωθεί περισσότερους του ενός υπολογιστές, αλλά δεν
είχε νόηµα να χρεωθεί ένας υπολογιστής σε δύο ή περισσότερους
εργαζόµενους. Τότε η σχέση «χρεώνεται» θα ήταν σχέση 1 προς Ν,
δηλαδή 1 εργαζόµενος χρεώνεται Ν υπολογιστές. Προσέξτε ότι η
σχέση θα µπορούσε να αναφέρετε και σαν σχέση Ν προς 1 ανάλογα
µε την οντότητα που αναφέρουµε πρώτη στη σχέση.
Τέλος, η σχέση Ν προς M σηµαίνει ότι «κάθε εγγραφή κάθε οντότητας σχετίζεται µε πολλές εγγραφές της άλλης οντότητας».
Πάλι στο παραπάνω παράδειγµα εάν µιλούσαµε για ένα ανοικτό εργαστήριο στο οποίο κανένας εργαζόµενος δεν έχει τον αυστηρά προσωπικό του υπολογιστή θα µπορούσαµε να ορίσουµε τη σχέση «χρησιµοποιεί». Σε αυτή τη σχέση µία εγγραφή ενός εργαζόµενου θα µπορούσε να εµφανιστεί πολλές φορές (χρησιµοποίησε πολλούς διαφορετικούς υπολογιστές), αλλά και ένας υπολογιστής το ίδιο (τον χρησιµοποίησαν πολλοί εργαζόµενοι). Είναι λοιπόν σχέση Ν προς M.
Ποιες από τις προτάσεις που ακολουθούν είναι σωστές και ποιες όχι;
Επιλέξτε «Σωστό» ή «Λάθος» ανάλογα µε την περίπτωση.
Σωστό

Λάθος

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

Κάθε σχέση στην οποία µετέχουν δύο
οντότητες θα έχει βαθµό 2.

Κάθε σχέση ISA είναι και σχέση 1 προς 1.

Μία σχέση είναι Ν προς M εάν µία
εγγραφή από µία οντότητα συµµετέχει
δύο ή περισσότερες φορές στη σχέση.

Κάθε σχέση Ν προς M έχει βαθµό Ν.

ÕÛÎËÛË
·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
3.5

K E º A § A I O 3 : ª √ ¡ ∆ ∂ § √ ¶ √ π ∏ ™ ∏ ∫ ∞ π £ ∂ ª ∞∆ ∞ ™ Ã ∂ ¢ π ∞ ™ ∏ ™

80

¢Ú·ÛÙËÚÈfiÙËÙ· 3.4

¢Ú·ÛÙËÚÈfiÙËÙ· 3.5

Kατηγόρηµα
Oντότητα
Kλειδί

Οντότητα

Περιγράψτε τις σχέσεις και τις οντότητες για το παράδειγµα 1.1 του
κεφαλαίου 1. Επεκτείνετε το παράδειγµα ορίζοντας τουλάχιστον µία
ακόµα οντότητα, αυτή της «µέτρησης», και την αντίστοιχη σχέση µε
τις πόλεις. Περιγράψτε τι σχέση είναι κάθε σχέση ανάµεσα στις
οντότητες και δώστε τουλάχιστον τρία παραδείγµατα εγγραφών για
κάθε σχέση και κάθε οντότητα.

3.3.3 ¢ÔÌÈο ÛÙÔȯ›· ÙˆÓ ‰È·ÁÚ·ÌÌ¿ÙˆÓ

Kατηγόρηµα

™¯‹Ì· 3.4

Περιγράψτε τις σχέσεις και τις οντότητες για το παράδειγµα 3.1 µετά
τις εξηγήσεις που δώσαµε στην ενότητα 3.3.2. Περιγράψτε τι σχέση
είναι κάθε σχέση ανάµεσα στις οντότητες και δώστε τουλάχιστον
πέντε (5) παραδείγµατα εγγραφών για κάθε σχέση και κάθε οντότητα.

Μέχρι αυτό το σηµείο του κεφαλαίου παρουσιάσαµε τη βασική θεωρία που σχετίζεται µε τα διαγράµµατα σχέσεων – οντοτήτων. Tα διαγράµµατα σχέσεων–οντοτήτων είναι διαγράµµατα ακριβώς γιατί όσα
συζητήσαµε στις δύο προηγούµενες ενότητες αναπαριστάνονται καλύτερα µε γραφικό τρόπο (ως διάγραµµα).
Η ιδέα των διαγραµµάτων σχέσεων – οντοτήτων είναι να µπορούµε
να έχουµε µία εποπτική εικόνα της Βάσης ∆εδοµένων βλέποντας ένα
σχέδιο που την περιγράφει. Το σχεδιαστικό µοντέλο που βασίζεται στα
διαγράµµατα σχέσεων – οντοτήτων παρέχει τη δυνατότητα σχεδίασης
των οντοτήτων και των σχέσεων µε εύκολο τρόπο, µε βάση τους συµβολισµούς που θα αναλύσουµε σε αυτή την ενότητα. Στο σχήµα 3.4
παρουσιάζεται το σχέδιο µίας οντότητας.
Οι οντότητες στο διάγραµµα σχέσεων – οντοτήτων αναπαριστάνονται
µε παραλληλόγραµµα και τα κατηγορήµατα µίας οντότητας µε ελλείψεις. Το όνοµα της οντότητας αναγράφεται µέσα στο παραλληλόγραµµο, ενώ τα ονόµατα των κατηγορηµάτων αναγράφονται µέσα στις
ελλείψεις. Το κατηγόρηµα ή τα κατηγορήµατα που είναι κλειδιά υπογραµµίζονται.
Έτσι στο σχήµα 3.4 βλέπουµε µία οντότητα µε τρία κατηγορήµατα ένα
από τα οποία είναι το κλειδί. Ένας εναλλακτικός τρόπος παρουσίασης

3 . 3 ¢ π ∞ ° ƒ∞ ª ª ∞∆∞ ™ à ∂ ™ ∂ ø ¡ – O ¡ ∆ √ ∆ ∏ ∆ ø ¡

81

B1
Σ1
A1
A

B2

1
Σ

A2

N

B
B3

που χρησιµοποιείται κυρίως για περιπτώσεις όπου έχουµε οντότητες
µε πολλά κατηγορήµατα είναι να αναγράφονται τα κατηγορήµατα για
κάθε οντότητα σε µία µόνο έλλειψη το ένα κάτω από το άλλο. Έτσι
δεν γεµίζει ο χώρος µε ελλείψεις.
Στο σχήµα 3.5 παρουσιάζεται µία σχέση 1 προς Ν ανάµεσα σε δύο
οντότητες την οντότητα Α και την οντότητα Β. Οι σχέσεις παρουσιάζονται µε ένα ρόµβο, µέσα στον οποίο αναγράφεται το όνοµα της σχέσης. Στην περίπτωση που η σχέση είναι ISA, τότε µέσα στο ρόµβο
αναγράφεται «ISA». Παρατηρήστε στο σχήµα ότι η οντότητα Α έχει
δύο κατηγορήµατα και ένα από αυτά είναι το κλειδί (το κατηγόρηµα
Α1), ενώ η οντότητα Β έχει για κλειδί το σύνολο των κατηγορηµάτων
Β1 και Β2. Η σχέση ονοµάζεται Σ και έχει ένα κατηγόρηµα (το Σ1).
Είναι 1 προς Ν από την οντότητα Α προς την οντότητα Β γεγονός που
σηµαίνει ότι µία εγγραφή της οντότητας Α µπορεί να έχει πολλές
εγγραφές της οντότητας Β, αλλά κάθε εγγραφή της οντότητας Β µετέχει µόνο σε µία εγγραφή της οντότητας Α.
Με τον ίδιο τρόπο µπορούν να σχεδιασθούν και οι υπόλοιπες σχέσεις
1 προς 1, ISA και Ν προς M.
∞™£∂¡∂π™ √¡∆√∆∏∆∂™ ∫∞π ™Ã∂™∏ d

Εκτός από τις οντότητες που περιγράψαµε στην ενότητα 3.3.2 υπάρχουν και κάποιες οντότητες που ονοµάζονται ασθενείς οντότητες.
Αυτές οι οντότητες δεν έχουν κατηγορήµατα κλειδιά δικά τους και
προσδιορίζονται από µία άλλη οντότητα. Οι ασθενείς οντότητες
παρουσιάζονται στο διάγραµµα σχέσεων – οντοτήτων µε παραλληλόγραµµα µε διπλό πλαίσιο και οι αντίστοιχες σχέσεις (σχέση µε την
οντότητα που τις χαρακτηρίζει) ως ρόµβος µε διπλό επίσης πλαίσιο.
Η σχέση d (το d προκύπτει από το discover που σηµαίνει ανακαλύπτω) είναι µια σχέση που χρησιµοποιείται για να περιγραφεί αναλυτι-

™¯‹Ì· 3.5

Σχέση 1 προς Ν

K E º A § A I O 3 : ª √ ¡ ∆ ∂ § √ ¶ √ π ∏ ™ ∏ ∫ ∞ π £ ∂ ª ∞∆ ∞ ™ Ã ∂ ¢ π ∞ ™ ∏ ™

82

κά µία οντότητα από κάποιες άλλες. Έστω για παράδειγµα ότι πρέπει
να περιγράψουµε τους υπαλλήλους σε µία επιχείρηση, οι οποίοι µπορεί να είναι είτε διοικητικοί υπάλληλοι, είτε τεχνικοί, είτε βοηθητικό
προσωπικό. Όλοι αυτοί έχουν κοινά στοιχεία, αλλά και αρκετά στοιχεία είναι διαφορετικά για κάθε κατηγορία. Τότε χρησιµοποιείται η
σχέση d για να δείξει ότι και οι τρεις κατηγορίες υπαλλήλων είναι
«υπάλληλοι». Μία σχέση d δηλαδή αντιστοιχεί δηλαδή σε πολλές σχέσεις ISA (στο συγκεκριµένο παράδειγµα µε τρεις σχέσεις ISA).
A1

A2

™¯‹Ì· 3.6

A

B3

Σ

Ασθενής Οντότητα

B

Στο σχήµα 3.6 παρουσιάζεται µία ασθενής οντότητα Β, η οποία χαρακτηρίζεται από την οντότητα Α µε σχέση Σ. Επίσης στο σχήµα 3.7
παρουσιάζεται µία σχέση d που ανακαλύπτει την οντότητα Α και την
επεξηγεί στις οντότητες Β, Γ, ∆ και Ε. Οι οντότητες δηλαδή Β, Γ, ∆
και Ε είναι ISA στην Α.
B1
A1

A2

B
Γ1
A

d

Γ
∆1

E1

™¯‹Ì· 3.7

Σχέση d

E
E2

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

3 . 3 ¢ π ∞ ° ƒ∞ ª ª ∞∆∞ ™ à ∂ ™ ∂ ø ¡ – O ¡ ∆ √ ∆ ∏ ∆ ø ¡

83

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

Στη δραστηριότητα 4 του κεφαλαίου 3 σας ζητήθηκε να περιγράψτε τις σχέσεις και τις οντότητες για το παράδειγµα 3.1, µετά τις εξηγήσεις που δώσαµε στην ενότητα 3.3.2, και να περιγράψτε τι σχέση
είναι κάθε σχέση ανάµεσα στις οντότητες. Με δεδοµένη την εµπειρία που αποκτήσατε από την εκτέλεση αυτής της δραστηριότητας
σχεδιάστε το διάγραµµα σχέσεων – οντοτήτων που προκύπτει.

Στη δραστηριότητα 5 του κεφαλαίου 3 σας ζητήθηκε να περιγράψτε τις σχέσεις και τις οντότητες για το παράδειγµα 1.1 του κεφαλαίου 1 και να επεκτείνετε το παράδειγµα ορίζοντας τουλάχιστον µία
ακόµα οντότητα αυτή της «µέτρησης» και την αντίστοιχη σχέση µε
τις πόλεις. Με δεδοµένη την εµπειρία που αποκτήσατε από την εκτέλεση αυτής της δραστηριότητας σχεδιάστε το διάγραµµα σχέσεων –
οντοτήτων που προκύπτει.

3.3.4 ªÔÓÙÂÏÔÔ›ËÛË Ì ‰È·ÁÚ¿ÌÌ·Ù· Û¯¤ÛÂˆÓ – ÔÓÙÔًوÓ

Σε αυτό το σηµείο της µελέτης σας έχετε αποκτήσει µία καλή εµπειρία στα σχεδιαστικά στοιχεία των διαγραµµάτων σχέσεων – οντοτήτων. Στην ενότητα αυτή θα δούµε πώς θα σχεδιάζαµε το διάγραµµα
σχέσεων – οντοτήτων για ένα πρόβληµα του πραγµατικού κόσµου.
Θυµάστε το παράδειγµα 3.1 που περιγράψαµε στην ενότητα 3.3.1. Θα
δώσουµε ένα νέο παράδειγµα βασισµένο σε αυτό και θα προσπαθήσουµε να δούµε βήµα προς βήµα τις ενέργειες που πρέπει να γίνουν
µέχρι να σχεδιάσουµε το διάγραµµα σχέσεων – οντοτήτων. Ας δούµε
το παρακάτω νέο παράδειγµα.

¢Ú·ÛÙËÚÈfiÙËÙ· 3.6

¢Ú·ÛÙËÚÈfiÙËÙ· 3.7

K E º A § A I O 3 : ª √ ¡ ∆ ∂ § √ ¶ √ π ∏ ™ ∏ ∫ ∞ π £ ∂ ª ∞∆ ∞ ™ Ã ∂ ¢ π ∞ ™ ∏ ™

84

¶·Ú¿‰ÂÈÁÌ· 3.2
Στο παράδειγµα αυτό εξετάζουµε το πρωτάθληµα καλαθοσφαίρισης που
περιγράψαµε στο προηγούµενο παράδειγµα µε αρκετές όµως προσθήκες.
Το πρωτάθληµα αποτελείται από κατηγορίες στις οποίες συµµετέχουν
οµάδες. Κάθε κατηγορία έχει ένα όνοµα (Α1, Α2, Β, Γ, ∆ και Τοπικά πρωταθλήµατα). Σε κάθε κατηγορία συµµετέχουν οµάδες που µπορούν να
αλλάξουν από χρονιά σε χρονιά. Μία οµάδα µπορεί να συµµετέχει µόνο
σε µία κατηγορία (ανάλογα µε την επίδοσή της την προηγούµενη χρονιά).
Οι οµάδες µπορούν να «ανέβουν» σε άλλη κατηγορία ή να υποβιβαστούν
από µία κατηγορία σε άλλη µικρότερη. Η σειρά των κατηγοριών διαταγµένες από την ανώτερη προς την κατώτερη είναι Α1, Α2, Β, Γ, ∆ και Τοπικά Πρωταθλήµατα. Στις οµάδες συµµετέχουν παίκτες και κάθε παίκτης
συµµετέχει µόνο σε µία οµάδα κάθε χρονιά. Στη Βάση ∆εδοµένων δεν
χρειαζόµαστε να έχουµε τις οµάδες που έχει συµµετάσχει κάποιος παίκτης, παρά µόνο την οµάδα στην οποία συµµετέχει αυτή τη χρονιά.
Για τις ανάγκες του πρωταθλήµατος γίνονται αγώνες ανάµεσα σε οµάδες. Κάθε αγώνας ανήκει σε µία συγκεκριµένη κατηγορία και κάθε αγώνας τελειώνει µε κάποιο συγκεκριµένο αποτέλεσµα. Για λόγους απλότητας θεωρούµε ότι δεν γίνονται αγώνες ανάµεσα σε οµάδες που δεν ανήκουν στην ίδια κατηγορία (π.χ. δεν προβλέπονται αγώνες κυπέλλου). Επίσης για λόγους απλότητας υποθέτουµε ότι τα στοιχεία που χαρακτηρίζουν κάθε οµάδα είναι η ονοµασία της, το όνοµα του ιδιοκτήτη της, το
όνοµα του σπόνσορά της, το έτος που ιδρύθηκε και η πόλη στην οποία
εδρεύει. Επίσης κάθε παίκτης χαρακτηρίζεται από το όνοµά του, το επώνυµό του, το πατρώνυµό του, τον αριθµό µητρώου του στην οµοσπονδία
καλαθοσφαίρισης, το ύψος του, την ηµεροµηνία γέννησης του και την
πόλη καταγωγής του. Τέλος, πάλι για λόγους απλότητας, ένας αγώνας
χαρακτηρίζεται µόνο από τις οµάδες που συµµετείχαν, το γήπεδο στο
οποίο έγινε, την ηµεροµηνία διεξαγωγής του και το τελικό σκορ.
Στη Βάση ∆εδοµένων θέλουµε να διατηρούµε πληροφορίες και για τους
µάνατζερ των παικτών και των οµάδων. Μία οµάδα µπορεί να χρησιµοποιεί πολλούς µάνατζερ, αλλά ένας παίκτης µόνο ένα µάνατζερ. Οι µάνατζερ είναι ελεύθεροι να εκπροσωπούν όσες οµάδες ή παίκτες επιθυµούν.
Για λόγους απλότητας υποθέτουµε ότι τα στοιχεία που µας ενδιαφέρουν
για τους µάνατζερ είναι το όνοµα, το επώνυµο και το τηλέφωνό τους.

3 . 3 ¢ π ∞ ° ƒ∞ ª ª ∞∆∞ ™ à ∂ ™ ∂ ø ¡ – O ¡ ∆ √ ∆ ∏ ∆ ø ¡

Το ζητούµενο είναι να οδηγηθούµε από την ασαφή περιγραφή του
παραδείγµατος 3.2 σε µία καθορισµένη σχεδίαση που µας παρέχει η
Βάση ∆εδοµένων. Προσέξτε! Η περιγραφή που δίνεται στο παράδειγµα 3.2 δεν είναι καθόλου ασαφής. Αντίθετα είναι αρκετά προσανατολισµένη ώστε να σας βοηθήσει να υλοποιήσετε εύκολα το διάγραµµα σχέσεων – οντοτήτων. Στην πράξη αυτό δεν γίνεται τόσο
εύκολα. Περιγραφές που θα έχετε να δουλέψετε στην πράξη δεν θα
είναι τόσο ξεκάθαρες, ώστε να οδηγούν αµέσως στη σχεδίαση, και θα
χρειάζονται αρκετές διευκρινίσεις και επεξηγήσεις.
Για να κάνουµε το συγκεκριµένο παράδειγµα πιο ρεαλιστικό έχουµε
εισάγει δεδοµένα που είναι πληροφορίες σχετικές µε το αντικείµενο,
αλλά δεν βοηθούν το στόχο µας που είναι η σχεδίαση του διαγράµµατος σχέσεων – οντοτήτων. Βασική εργασία είναι η αποµόνωση
αυτών των πληροφοριών από τις βασικές πληροφορίες.
Τα βήµατα που πρέπει να ακολουθήσετε για τη σχεδίαση του διαγράµµατος σχέσεων – οντοτήτων είναι τα παρακάτω:
1. Εντοπίζουµε τις βασικές έννοιες της Βάσης ∆εδοµένων που περιγράφει το παράδειγµα.
2. Επιλέγουµε τις οντότητες, τα κατηγορήµατα για κάθε οντότητα και
τα κλειδιά.
3. Αναγνωρίζουµε τις σχέσεις και τα κατηγορήµατα των σχέσεων και
εντοπίζουµε τον τύπο κάθε σχέσης.
4. Σχεδιάζουµε ένα πρώτο πλάνο του διαγράµµατος σχέσεων – οντοτήτων στο χαρτί χωρίς να δώσουµε έµφαση στα κατηγορήµατα και
στα κλειδιά, αλλά µόνο σε σχέσεις και οντότητες.
5. Κάνουµε βελτιώσεις και διορθώσεις.
Ας ακολουθήσουµε λοιπόν τα παραπάνω βήµατα.
∂¡∆√¶π™ª√™ µ∞™π∫ø¡ ∂¡¡√πø¡

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

85

K E º A § A I O 3 : ª √ ¡ ∆ ∂ § √ ¶ √ π ∏ ™ ∏ ∫ ∞ π £ ∂ ª ∞∆ ∞ ™ Ã ∂ ¢ π ∞ ™ ∏ ™

86

παρακάτω (αντιγράφουµε από το κείµενο):
• Στις κατηγορίες συµµετέχουν οµάδες.
• Στις οµάδες συµµετέχουν παίκτες.
• Γίνονται αγώνες ανάµεσα σε οµάδες.
• Μία οµάδα χρησιµοποιεί µάνατζερ.
• Ένας παίκτης χρησιµοποιεί µάνατζερ.
Με αυτά τα στοιχεία µπορούµε να αρχίσουµε να εντοπίζουµε τις οντότητες και τις σχέσεις που συνθέτουν τη Βάση ∆εδοµένων.
∂¶π§√°∏ √¡∆√∆∏∆ø¡

Έχοντας εµπειρία από το παράδειγµα 3.1 που συζητήσαµε σίγουρα θα
αναγνωρίσατε τις βασικές οντότητες του παραδείγµατος που είναι οι
εξής:
• Κατηγορία
• Οµάδα
• Παίκτης
• Μάνατζερ
Προσέξτε, θεωρητικά θα µπορούσαµε να έχουµε ορίσει µία οντότητα
«Άνθρωπος» και να περιγράψουµε τόσο τους παίκτες όσο και τους
µάνατζερ µε σχέσεις ISA µε αυτή την οντότητα. Όµως, επειδή τα µόνα
κοινά στοιχεία ανάµεσα στους παίκτες και τους µάνατζερ είναι το
όνοµα και το επώνυµο, αυτή η επιλογή είναι µάλλον περιττή.
Παίρνοντας τα δεδοµένα από την περιγραφή µπορούµε εύκολα να
εντοπίσουµε και τα κατηγορήµατα για κάθε οντότητα. Αν και για
λόγους ευκολίας θα µπορούσαµε να ορίσουµε ένα κατηγόρηµα «κωδικός» σε κάθε οντότητα, ώστε να διευκολυνθούµε µε θέµατα κλειδιών,
δεν θα το κάνουµε για να αναζητήσουµε τα κλειδιά για κάθε οντότητα από τα κατηγορήµατα που τη χαρακτηρίζουν.
Οι οντότητες λοιπόν µε τα κατηγορήµατα είναι οι εξής (δίνουµε τα
κλειδιά µε πλάγιους χαρακτήρες):
• Κατηγορία (Ονοµασία Κατηγορίας, Χρονιά)
• Οµάδα (Ονοµασία, Ιδιοκτήτης, Χορηγός, Έτος Ίδρυσης,
Πόλη/Έδρα)

3 . 3 ¢ π ∞ ° ƒ∞ ª ª ∞∆∞ ™ à ∂ ™ ∂ ø ¡ – O ¡ ∆ √ ∆ ∏ ∆ ø ¡

• Παίκτης (Όνοµα, Επώνυµο, Πατρώνυµο, Αριθµός µητρώου, Ύψος,
Ηµεροµηνία γέννησης, Πόλη Καταγωγής)
• Μάνατζερ (Όνοµα, Επώνυµο, Αριθµός Τηλεφώνου)
Παρατηρήστε ότι επιλέξαµε ως κλειδί για την κατηγορία την ονοµασία της κατηγορίας και το έτος. Έτσι η (Α1, 1999) είναι µία µοναδική
κατηγορία, αφού θα υπάρξουν πολλές Α1 για άλλες χρονιές και άλλες
κατηγορίες για το 1999, αλλά καµία (Α1, 1999).
Επίσης έγιναν οι παραδοχές ότι δεν υπάρχουν δύο οµάδες µε το ίδιο
όνοµα στην ίδια πόλη, ότι δεν υπάρχουν δύο παίκτες µε τον ίδιο αριθµό µητρώου και ότι δεν υπάρχουν δύο µάνατζερ µε το ίδιο ονοµατεπώνυµο.
∂¶π§√°∏ ™Ã∂™∂ø¡

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

87

88

K E º A § A I O 3 : ª √ ¡ ∆ ∂ § √ ¶ √ π ∏ ™ ∏ ∫ ∞ π £ ∂ ª ∞∆ ∞ ™ Ã ∂ ¢ π ∞ ™ ∏ ™

όπου αυτά υπάρχουν. Για παράδειγµα στη σχέση «Συµµετέχει» θα
µπορούσαν να υπάρχουν αρκετά κατηγορήµατα που να περιγράφουν
την πορεία της οµάδας στη συγκεκριµένη κατηγορία τη συγκεκριµένη χρονιά (όπως τι θέση πήρε, τι βαθµούς συγκέντρωσε κτλ). Όµως
επειδή το παράδειγµα δεν αναφέρει τίποτε θα περιοριστούµε µόνο στα
δεδοµένα που µας ζητούνται.
Έτσι, στη σχέση Αγώνας πρέπει να προστεθούν τα κατηγορήµατα που
αναφέρονται στο παράδειγµα, δηλαδή για τα κατηγορήµατα έχουµε
το εξής:
• Αγώνας (Γήπεδο, Ηµεροµηνία διεξαγωγής, Σκορ)
Υπάρχουν δύο τρόποι να αναφέρουµε το σκορ. Είτε να έχουµε δύο
κατηγορήµατα (ένα σκορ για κάθε οµάδα), είτε να ακολουθήσουµε τη σύµβαση ότι η γηπεδούχος οµάδα αναγράφεται πρώτη. Στο
παράδειγµα ακολουθήσαµε το δεύτερο τρόπο. Τέλος πρέπει να
εντοπίσουµε και το είδος κάθε σχέσης. Βασιζόµενοι στις προτάσεις
που περιγράφουν τις σχέσεις και τις οποίες αναφέραµε παραπάνω
έχουµε τα εξής:
• Συµµετέχει (Οµάδα, Κατηγορία) Ν προς M.
Σε µία κατηγορία συµµετέχουν πολλές οµάδες, αλλά και µία
οµάδα συµµετέχει σε πολλές κατηγορίες! Φαίνεται παράξενο,
αλλά θυµηθείτε πώς ορίσαµε την κατηγορία. Ως ονοµασία και χρονιά. Έτσι, µία οµάδα µπορεί να συµµετέχει φέτος στην κατηγορία
[Α1, 1999], πέρσι στην κατηγορία [Α1, 1998] και πρόπερσι στην
κατηγορία [Α2, 1997]. Άρα η σχέση πρέπει να είναι Ν προς M.
• Παίζει σε (Παίκτης, Οµάδα) Ν προς 1
Ένας παίκτης παίζει µόνο σε µία οµάδα. Θυµηθείτε ότι αποφασίσαµε ότι για τους παίκτες έχουµε στοιχεία µόνο για τη φετινή χρονιά.
• Χρησιµοποιεί (Οµάδα, Μάνατζερ) Ν προς M.
• Συνεργάζεται (Παίκτης, Μάνατζερ) Ν προς 1.
Ένας παίκτης συνεργάζεται µόνο µε ένα µάνατζερ.
• Αγώνας (Οµάδα, Οµάδα) Ν προς M.
Κάθε οµάδα µπορεί να δώσει πολλούς αγώνες µε άλλες οµάδες.

3 . 3 ¢ π ∞ ° ƒ∞ ª ª ∞∆∞ ™ à ∂ ™ ∂ ø ¡ – O ¡ ∆ √ ∆ ∏ ∆ ø ¡

89

Μπορείτε να ανατρέξετε στο παράδειγµα 3.1 για να επιβεβαιώσετε
τους περιορισµούς που µας οδήγησαν να προσδιορίσουµε µε αυτό τον
τρόπο τις σχέσεις.
™Ã∂¢π∞™∏ ∆√À ¶§∞¡√À ¢π∞°ƒ∞ªª∞∆√™ ™Ã∂™∂ø¡ – √¡∆√∆∏∆ø¡
Aγώνας

Oµάδα

Xρησιµοποιεί
Mάνατζερ
Παίζει

Συµµετέχει

Συνεργάζεται
Παίκτης

Kατηγορία

Τώρα µπορούµε να αρχίσουµε να σχεδιάζουµε το πλάνο του διαγράµµατος σχέσεων – οντοτήτων. Επειδή το συγκεκριµένο παράδειγµα είναι σχετικά απλό θα µπορούσαµε να είχαµε σχεδιάσει κατευθείαν το διάγραµµα σχέσεων – οντοτήτων, αλλά σε µεγάλα και πολύπλοκα διαγράµµατα είναι καλύτερα να βλέπει κανείς πρώτα ένα προσχέδιο του διαγράµµατος σχέσεων – οντοτήτων στο χαρτί και µετά να
σχεδιάζει την τελική έκδοση. Στο σχήµα 3.8 παρουσιάζεται το πλάνο
του διαγράµµατος σχέσεων – οντοτήτων για το παράδειγµα 3.1. Παρατηρήστε ότι έχουµε απλά τοποθετήσει τις οντότητες και τις σχέσεις
για να δούµε την εικόνα του διαγράµµατος.
∆∂§π∫√ ¢π∞°ƒ∞ªª∞ ™Ã∂™∂ø¡ – √¡∆√∆∏∆ø¡

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

™¯‹Ì· 3.8

Αρχικό Πλάνο

K E º A § A I O 3 : ª √ ¡ ∆ ∂ § √ ¶ √ π ∏ ™ ∏ ∫ ∞ π £ ∂ ª ∞∆ ∞ ™ Ã ∂ ¢ π ∞ ™ ∏ ™

90

ων – οντοτήτων γίνεται από εξειδικευµένα εργαλεία τα οποία παρέχουν τα µεγάλα συστήµατα διαχείρισης Βάσεων ∆εδοµένων. Αυτά τα
εργαλεία συνήθως παρέχουν και αρκετούς αυτοµατισµούς για τη δηµιουργία τµηµάτων της Βάσης ∆εδοµένων από το διάγραµµα σχέσεων
– οντοτήτων.
Το τελικό σχήµα θα µπορούσε να είναι της µορφής που παρουσιάζεται στο σχήµα 3.9. Όπως αναφέραµε, η διαδικασία της σχεδίασης του
διαγράµµατος σχέσεων – οντοτήτων δεν είναι εύκολη υπόθεση και
προϋποθέτει µεγάλη εµπειρία. Ακολουθούν δραστηριότητες που θα
σας βοηθήσουν να πειραµατιστείτε µε τη σχεδίαση διαγραµµάτων σχέσεων – οντοτήτων.

™¯‹Ì· 3.9

∆ιάγραµµα σχέσεων – οντοτήτων
Oνοµασία

Γήπεδο
Όνοµα
Hµερ/νία

Aγώνας

Iδιοκτήτης

Eπώνυµο
Σκορ

Xορηγός

Tηλέφωνο
M

N

Έτος Iδρ.

M

Oµάδα
M

Έδρα

N

Xρησιµοποιεί

Mάνατζερ
1

1
Παίζει

Συνεργάζεται

Συµµετέχει
N

N

N

Aρ. Mητρώου

Kατηγορία

Hµ. Γέν.
Παίκτης

Όνοµα
Oνοµασία

Xρονιά

¢Ú·ÛÙËÚÈfiÙËÙ· 3.8

Eπώνυµο

Πόλη
Πατρώνυµο

Ύψος

Αλλάξτε το παραπάνω σχήµα και υλοποιήστε µία οντότητα «Άνθρωπος» και περιγράψτε µε βάση αυτή τις οντότητες «Παίκτης» και
«Μάνατζερ».

3 . 3 ¢ π ∞ ° ƒ∞ ª ª ∞∆∞ ™ à ∂ ™ ∂ ø ¡ – O ¡ ∆ √ ∆ ∏ ∆ ø ¡

Υλοποιήστε παραδείγµατα εγγραφών για το παράδειγµα 3.1 βασιζόµενοι στο σχήµα 3.9. Υλοποιήστε τουλάχιστον τρεις εγγραφές για
κάθε οντότητα και σχέση.

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

™‡ÓÔ„Ë
Στο κεφάλαιο αυτό περιγράψαµε δύο µοντέλα δεδοµένων: το ιεραρχικό µοντέλο και το δικτυακό µοντέλο. Aναφέραµε τις βασικές αρχές για
καθένα από αυτά τα µοντέλα και παραπέµψαµε στη βιβλιογραφία
όσους θέλουν να ασχοληθούν περισσότερο µε κάποιο από αυτά.
Αναφέραµε ότι σήµερα στις περισσότερες Βάσεις ∆εδοµένων κυριαρχεί το σχεσιακό µοντέλο, το οποίο παρουσιάζεται αναλυτικά στο επόµενο κεφάλαιο. Επίσης αναφέραµε και για το αντικειµενοστραφές
µοντέλο, το οποίο έχει αρχίσει να χρησιµοποιείται ιδιαίτερα µετά την
άνθιση των µεθόδων αντικειµενοστραφούς προγραµµατισµού και είπαµε ότι και σε αυτό το µοντέλο θα αναφερθούµε εκτενέστερα σε επόµενο κεφάλαιο (στο κεφάλαιο 7).
Βασικό µέρος του κεφαλαίου αφιερώσαµε στην παρουσίαση του µοντέλου σχεδίασης Βάσεων ∆εδοµένων, που βασίζεται στα διαγράµµατα
σχέσεων – οντοτήτων. Περιγράψαµε τις βασικές έννοιες που αναφέρονται σε αυτά τα διαγράµµατα και αναλύσαµε τα βασικά δοµικά στοιχεία της σχεδίασης των διαγραµµάτων σχέσεων – οντοτήτων. Τέλος
δώσαµε ένα παράδειγµα για το πώς σχεδιάζουµε ένα διάγραµµα σχέσεων – οντοτήτων.

91

¢Ú·ÛÙËÚÈfiÙËÙ· 3.9

¢Ú·ÛÙËÚÈfiÙËÙ· 3.10

92

K E º A § A I O 3 : ª √ ¡ ∆ ∂ § √ ¶ √ π ∏ ™ ∏ ∫ ∞ π £ ∂ ª ∞∆ ∞ ™ Ã ∂ ¢ π ∞ ™ ∏ ™

BÈ‚ÏÈÔÁÚ·Ê›· ÁÈ· ÂÚ·ÈÙ¤Úˆ ÌÂϤÙË
[1] C.J.Date, An Introduction to Database Systems, Volume I, Fourth
Edition, Addison–Wesley, 1986.
Στο κεφάλαιο 22 του βιβλίου θα µπορέσετε να βρείτε πληροφορίες για
το ιεραρχικό µοντέλο βασισµένες στο σύστηµα IMS. Αντίστοιχα στο
κεφάλαιο 23 περιγράφεται το δικτυακό µοντέλο βασισµένο στο
σύστηµα IDMS.
[2] Elmasri R. & Navathe S. B., Fundamentals of Database Systems,
Addison–Wesley, 1994.
Το βιβλίο υπάρχει και σε ελληνική µετάφραση από τις εκδόσεις ∆ίαυλος σε µετάφραση Μ. Χατζόπουλου, 1996. Στο κεφάλαιο 11 του βιβλίου θα µπορέσετε να µία πιο αναλυτική περιγραφή του ιεραρχικού
µοντέλου. ∆ώστε έµφαση στους περιορισµούς ακεραιότητας στο
ιεραρχικό µοντέλο και στη γλώσσα χειρισµού δεδοµένων για αυτό το
µοντέλο. Αντίστοιχα στο κεφάλαιο 10 περιγράφεται το δικτυακό
µοντέλο. Τα διαγράµµατα σχέσεων – οντοτήτων καλύπτονται στο
κεφάλαιο 3 και µπορείτε να βρείτε ένα αρκετά εκτεταµένο παράδειγµα µε εργαζόµενους σε µία επιχείρηση. Επίσης στο κεφάλαιο 14 περιγράφονται αναλυτικότερα θέµατα σχεδιασµού µε αναφορές στα διαγράµµατα σχέσεων – οντοτήτων
[3] Silberschatz A., Korth H., Sudarshan S, Database System Concepts,
Third Edition, McGraw–Hill, 1986.
Ένα πολύ καλό βιβλίο που προτείνουµε να το χρησιµοποιήσετε για
µελέτη παράλληλα µε το µάθηµα. Το ιεραρχικό µοντέλο καλύπτεται
εν συντοµία στο παράρτηµα Β του βιβλίου και το δικτυακό µοντέλο
στο παράρτηµα Α. Το διάγραµµα σχέσεων – οντοτήτων καλύπτεται
αναλυτικά στο κεφάλαιο 2 του βιβλίου.
[4] Ulman J. D., Principles of Database and Knowledge–base Systems,
Computer Science Press, 1988.
Στο κεφάλαιο παρουσιάζεται το διάγραµµα σχέσεων – οντοτήτων και
οι βασικές αρχές του.

™¯ÂÛȷΤ˜ B¿ÛÂȘ ¢Â‰Ô̤ӈÓ
™ÎÔfi˜
Σκοπός του κεφαλαίου είναι η περιγραφή των σχεσιακών Βάσεων
∆εδοµένων, των βασικών εννοιών και των πράξεων καθώς και των
περιορισµών ακεραιότητας. Περιγράφονται εν συντοµία δύο βασικά
σχεσιακά µοντέλα ερωτήσεων, η σχεσιακή άλγεβρα και ο σχεσιακός
υπολογισµός, και γίνεται µία εισαγωγή στις έννοιες του κλειδώµατος
των δεδοµένων και της ταυτόχρονης προσπέλασης (έννοιες που είναι
γενικές για κάθε µοντέλο και που εντάχθηκαν σε αυτό το κεφάλαιο).
¶ÚÔÛ‰ÔÎÒÌÂÓ· AÔÙÂϤÛÌ·Ù·
Όταν θα έχετε ολοκληρώσει τη µελέτη αυτού του κεφαλαίου θα µπορείτε να:
• εξηγήσετε τους βασικούς όρους του σχεσιακού µοντέλου
• περιγράψετε τις έννοιες «πίνακας», «κενή τιµή», «arity», και
«cardinality»
• περιγράψετε τις έννοιες «εισαγωγή», «επιλογή», «διαγραφή» και
«ενηµέρωση» και τους περιορισµούς ακεραιότητας για κάθε πράξη
• δώσετε σε αδρές γραµµές παραδείγµατα κλειδώµατος και γενικότερα της έννοιας της προστασίας από ταυτόχρονη προσπέλαση
• περιγράψετε σε βασικές γραµµές τις αρχές της σχεσιακής άλγεβρας
• περιγράψετε ερωτήσεις προς µία Βάση ∆εδοµένων εκφρασµένες µε
σχεσιακή άλγεβρα
• περιγράψετε σε βασικές γραµµές τις αρχές του σχεσιακού υπολογισµού
• µετατρέψετε πράξεις από σχεσιακή άλγεβρα σε σχεσιακό υπολογισµό και το αντίστροφο
ŒÓÓÔȘ ÎÏÂȉȿ
• Πίνακας (Table)
• Αριθµός Στηλών Πίνακα (Arity)
• Αριθµός Γραµµών Πίνακα (Cardinality)
• Κενή Τιµή (Null Value)
• Επιλογή (Select)

4
º

§

π

KEºA§AIO 4: ™Ã∂™π∞∫∂™ B∞™∂π™ ¢∂¢√ª∂¡ø¡

94

• Εισαγωγή (Insert)
• Ενηµέρωση (Update)
• ∆ιαγραφή (Delete)
• Ακεραιότητα (Integrity)
• Κλείδωµα (Lock)
• Aδιέξοδο (Deadlock)
• Σχεσιακή Άλγεβρα (Relational Algebra)
• Σχεσιακός Υπολογισµός (Relational Calculus)
∂ÈÛ·ÁˆÁÈΤ˜ ¶·Ú·ÙËÚ‹ÛÂȘ
Στο κεφάλαιο αυτό περιγράφουµε το µοντέλο που κυριαρχεί σήµερα στις
περισσότερες Βάσεις ∆εδοµένων, δηλαδή το σχεσιακό µοντέλο. Στην
ενότητα 4.1 γίνεται µία εισαγωγή στις έννοιες των σχεσιακών Βάσεων
∆εδοµένων. Στα πλαίσια της ενότητας 4.1 έχουµε εντάξει δύο βασικά
θέµατα που ισχύουν για όλες τις Βάσεις ∆εδοµένων (άσχετα από το
µοντέλο αναφοράς) και που είναι οι περιορισµοί ακεραιότητας και το
κλείδωµα στην ταυτόχρονη προσπέλαση. Αυτά τα θέµατα καλύπτονται
εν συντοµία και γίνονται αναφορές στη βιβλιογραφία για όσους από εσάς
επιθυµούν να τα µελετήσουν περισσότερο. Ο λόγος που αυτά τα θέµατα
εντάσσονται στο σχεσιακό µοντέλο είναι ότι χρησιµοποιούµε παραδείγµατα από σχεσιακές Βάσεις ∆εδοµένων για να εξηγήσουµε τα θέµατα
που συζητούνται. Παρόλα αυτά, τις συγκεκριµένες ενότητες θα µπορούσατε να τις διαβάσετε και ανεξάρτητα από το σχεσιακό µοντέλο (για
παράδειγµα αφού ολοκληρώσετε τη µελέτη του υπόλοιπου κεφαλαίου).
Στις ενότητες 4.2 και 4.3 παρουσιάζονται δύο βασικά µοντέλα ερωτήσεων που περιγράφουν ερωτήσεις στις σχεσιακές Βάσεις ∆εδοµένων:
η σχεσιακή άλγεβρα στην ενότητα 4.2 και ο σχεσιακός υπολογισµός
στην ενότητα 4.3. Για να µπορέσετε να κατανοήσετε καλύτερα τη σχεσιακή άλγεβρα ίσως να χρειαστείτε κάποιες γνώσεις από θεωρία συνόλων, ενώ κάποιες γνώσεις µαθηµατικής συλλογιστικής θα σας χρειαστούν και στην ενότητα 4.3. Εάν οι έννοιες που θα καλύψουµε στις
ενότητες 4.2 και 4.3 σας φανούν δύσκολες, µπορείτε να τις µελετήσετε σε αδρές γραµµές τώρα και να επαναλάβετε το κεφάλαιο µετά τη
µελέτη των κεφαλαίων 5 και 6, ίσως µελετώντας παράλληλα και
κάποιο από τα προτεινόµενα βιβλία.

4.1 ∆Ô Û¯ÂÛÈ·Îfi ÌÔÓÙ¤ÏÔ

™ÎÔfi˜
Σκοπός της ενότητας είναι να περιγραφεί το σχεσιακό µοντέλο. Θα
περιγράψουµε τις βασικές έννοιες του σχεσιακού µοντέλου, θα το
συγκρίνουµε µε το ιεραρχικό και το δικτυακό µοντέλο που παρουσιάσαµε στο προηγούµενο κεφάλαιο και θα αναφερθούµε σε θέµατα
ακεραιότητας δεδοµένων και ταυτόχρονης προσπέλασης.
¶ÚÔÛ‰ÔÎÒÌÂÓ· ∞ÔÙÂϤÛÌ·Ù·
Όταν θα έχετε ολοκληρώσει τη µελέτη αυτής της ενότητας θα µπορείτε να:
• εξηγήσετε τους πίνακες σε µία σχεσιακή Βάση ∆εδοµένων και τον
τρόπο µε τον οποίο οι οντότητες και οι σχέσεις του διαγράµµατος
σχέσεων – οντοτήτων αντιστοιχούν σε πίνακες
• αναφέρετε τους πίνακες που προκύπτουν από ένα διάγραµµα σχέσεων – οντοτήτων
• περιγράψετε τις έννοιες arity και cardinality και να βρείτε τις τιµές
τους για κάθε πίνακα
• περιγράψετε την έννοια της ακεραιότητας και τους περιορισµούς
ακεραιότητας
• περιγράψετε τις πράξεις που µπορούν να γίνουν σε µία Βάση ∆εδοµένων και το πως επηρεάζουν την ακεραιότητά της
• εντοπίσετε τις πράξεις για τις οποίες απαιτείται κλείδωµα και να
αναλύσετε σε αδρές γραµµές την έννοια του κλειδώµατος
∂ÈÛ·ÁˆÁÈΤ˜ ¶·Ú·ÙËÚ‹ÛÂȘ
Στην ενότητα αυτή παρουσιάζεται το σχεσιακό µοντέλο. Για πιο εκτενή µελέτη του µοντέλου αυτού µπορείτε να ανατρέξετε στις βιβλιογραφικές πηγές που σας δίνουµε στο τέλος του κεφαλαίου. Η περιγραφή
του µοντέλου έχει βασιστεί στα διαγράµµατα σχέσεων – οντοτήτων που
περιγράψαµε στο προηγούµενο κεφάλαιο. Στην περίπτωση που δεν
έχετε µελετήσει πρόσφατα την ενότητα 3.3, τότε ίσως θα ήταν καλό να
προηγηθεί µία επανάληψη πριν προχωρήσετε στη µελέτη αυτού του
κεφαλαίου. Στην ενότητα 4.1.1 παρουσιάζονται οι βασικές έννοιες των

KEºA§AIO 4: ™Ã∂™π∞∫∂™ B∞™∂π™ ¢∂¢√ª∂¡ø¡

96

σχεσιακών Βάσεων ∆εδοµένων και οι πράξεις που µπορούν να γίνουν
σε µία σχεσιακή Βάση ∆εδοµένων, ενώ στην ενότητα 4.1.2 περιγράφεται η ακεραιότητα της Βάσης ∆εδοµένων και πώς επηρεάζεται από
τις διάφορες πράξεις, καθώς και η έννοια του κλειδώµατος. Το θέµα
του κλειδώµατος των δεδοµένων είναι ένα σηµαντικό πρόβληµα, όχι
µόνο για τις σχεσιακές Βάσεις ∆εδοµένων, αλλά για κάθε σύστηµα. Στο
κεφάλαιο αυτό απλά γίνεται εισαγωγή στο πρόβληµα και προτείνεται
η σχετική βιβλιογραφία για εσάς που θέλετε να ασχοληθείτε σε βάθος
µε το αντικείµενο.
4.1.1 µ·ÛÈΤ˜ ¤ÓÓÔȘ

Στο κεφάλαιο 3 περιγράψαµε το ιεραρχικό και το δικτυακό µοντέλο.
Είπαµε ότι το δικτυακό µοντέλο είναι, κατά κάποιο τρόπο, υπερσύνολο του ιεραρχικού. Με την ίδια λογική και το σχεσιακό µοντέλο είναι
υπερσύνολο του δικτυακού, αφού σε αντίθεση µε το δικτυακό, που
περιορίζει τις σχέσεις σε 1 προς Ν, το σχεσιακό επιτρέπει σχέσεις κάθε
µορφής από αυτές που περιγράψαµε στα διαγράµµατα σχέσεων –
οντοτήτων.
Στην ενότητα 3.3 µιλήσαµε για οντότητες και για σχέσεις. Το σχεσιακό µοντέλο περιγράφει τη Βάση ∆εδοµένων και οργανώνει τις εγγραφές µε βάση τις σχέσεις. Για αυτό το λόγο η σχεδίαση µίας Βάσης
∆εδοµένων µε τη χρήση διαγραµµάτων σχέσεων – οντοτήτων µπορεί
να οδηγήσει εύκολα στην υλοποίησή της σε ένα σχεσιακό σύστηµα.
Σήµερα στην αγορά κυκλοφορούν αρκετά Συστήµατα ∆ιαχείρισης
Βάσεων ∆εδοµένων βασισµένα στο σχεσιακό µοντέλο, τόσο µεγάλα
συστήµατα (όπως για παράδειγµα η Oracle, η Ingress και η Sy–Base),
όσο και µικρά συστήµατα (όπως για παράδειγµα η Access).

■ Ο πίνακας σε µία σχεσιακή Βάση ∆εδοµένων αποτελείται από µία ή περισσότερες
στήλες που αντιστοιχούν σε
τιµές πεδίων, και από γραµµές
που αντιστοιχούν σε τιµές για
αυτά τα πεδία.

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

4.1 ∆√ ™Ã∂™π∞∫√ ª√¡∆∂§√

97

συνήθως αναγράφονται µη διαταγµένες ή διαταγµένες µε βάση το
κλειδί. Θυµηθείτε το παράδειγµα 3.2 µε το πρωτάθληµα καλαθοσφαίρισης που περιγράψαµε στην ενότητα 3.4. Ο πίνακας για την
οντότητα «Οµάδα» που σχεδιάσαµε στο διάγραµµα σχέσεων – οντοτήτων µε πέντε εγγραφές θα µπορούσε να είναι ο ακόλουθος (τα δεδοµένα στον πίνακα είναι φανταστικά:
Έδρα

Ιδιοκτήτης

Χορηγός

Έτος Ίδρυσης

Πειραιάς

Κόκκαλης

Lacta

1924

ΑΕΚ

Αθήνα

Φιλίππου

Ολυµπιακός

Βόλος

Χρηστίδης

Πανιώνιος

Αθήνα

∆ήµος Ν.Σ.

Περιστέρι

Αθήνα

Ονοµασία
Ολυµπιακός

1928
ΑΤΚΕ

1967
1922

Εθνική

Παρατηρήστε ότι, αν και υπάρχουν δύο οµάδες µε την ίδια ονοµασία
και τρεις οµάδες µε την ίδια έδρα, δεν υπάρχει οµάδα µε την ίδια ονοµασία και έδρα, γιατί αυτό θα παραβίαζε την αρχή του κλειδιού, όπως
το ορίσαµε στην ενότητα 3.3.1. Επίσης, παρατηρήστε ότι κάποια στοιχεία στον πίνακα είναι κενά (όπως ο Ιδιοκτήτης της οµάδας «Περιστέρι, Αθήνα»). Αυτό µπορεί να γίνει θεωρητικά για τα στοιχεία για όλες
τις στήλες µίας εγγραφής εκτός από τις εγγραφές κλειδιά. Όταν ένα
πεδίο δεν έχει τιµή σε µία εγγραφή τότε λέµε ότι έχει «κενή τιµή», ή
ότι «έχει τιµή κενό». Μία κενή τιµή είναι διαφορετική από 0 ή από τον
χαρακτήρα «SPACE». Έτσι είναι διαφορετικό στη στήλη «Έτος Ίδρυσης» να δώσουµε ως τιµή 0 από το να δώσουµε ως τιµή κενό. Επίσης
είναι διαφορετικό στην στήλη «Ιδιοκτήτης» να δώσουµε κενή τιµή από
το να δώσουµε ως τιµή έναν ή περισσότερους χαρακτήρες «SPACE».
Ο αριθµός των στηλών ενός πίνακα σε µία σχεσιακή Βάση ∆εδοµένων ονοµάζεται arity και ο αριθµός των γραµµών του cardinality. Έτσι,
ένας πίνακας που περιγράφει µία οντότητα µε 3 κατηγορήµατα θα έχει
arity 3. Αντίστοιχα, ένας πίνακας µε cardinality 500 σηµαίνει ότι έχουν
εισαχθεί σε αυτόν 500 εγγραφές.
Οι βασικές πράξεις που µπορούν να γίνουν σε µία σχεσιακή Βάση
∆εδοµένων είναι οι ίδιες µε αυτές που γίνονται σε κάθε Βάση ∆εδοµένων, δηλαδή Επιλογή, Εισαγωγή, Ενηµέρωση και ∆ιαγραφή.

1977

KEºA§AIO 4: ™Ã∂™π∞∫∂™ B∞™∂π™ ¢∂¢√ª∂¡ø¡

98

Επιλογή σηµαίνει αναζήτηση µίας συγκεκριµένης εγγραφής και η
ανεύρεσή της µέσα στον πίνακα (δηλαδή ο εντοπισµός της γραµµής
του πίνακα στην οποία βρίσκεται η ζητούµενη εγγραφή). Εισαγωγή
σηµαίνει η προσθήκη µίας νέας εγγραφής στον πίνακα. Η προσθήκη
µπορεί να γίνει στο τέλος του πίνακα ή σε συγκεκριµένη θέση του
πίνακα (στην περίπτωση που έχουµε διατάξει τον πίνακα). Ενηµέρωση είναι η µεταβολή κάποιων τιµών για µερικά πεδία µίας εγγραφής
(δηλαδή η αλλαγή των δεδοµένων για µερικές στήλες σε µία γραµµή).
Τέλος, διαγραφή είναι το σβήσιµο µίας γραµµής από τον πίνακα. Στην
επόµενη ενότητα θα δούµε πώς επηρεάζεται η ακεραιότητα µίας
Βάσης ∆εδοµένων από κάποιες πράξεις που γίνονται σε αυτή και θα
µελετήσουµε την ακεραιότητα της Βάσης ∆εδοµένων.
ÕÛÎËÛË
·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
4.1

Μελετήστε το σχήµα 3.9 του προηγούµενου κεφαλαίου. Στο σχήµα
αυτό περιγράφεται ένα διάγραµµα σχέσεων – οντοτήτων µε 4 οντότητες και 5 σχέσεις.
1. Υπολογίστε την arity που θα πρέπει να έχει κάθε πίνακας σε µία
σχεσιακή Βάση ∆εδοµένων για κάθε οντότητα και σχέση που
περιγράφεται σε αυτό το διάγραµµα σχέσεων – οντοτήτων.
2. Ετοιµάστε τους πίνακες για µία σχεσιακή Βάση ∆εδοµένων για
τις οντότητες που περιγράφονται στο διάγραµµα σχέσεων – οντοτήτων.
3. Ετοιµάστε τους πίνακες για µία σχεσιακή Βάση ∆εδοµένων για
τις σχέσεις που περιγράφονται στο διάγραµµα σχέσεων – οντοτήτων, προσέχοντας τα κλειδιά για κάθε οντότητα που συµµετέχει στη σχέση.

¢Ú·ÛÙËÚÈfiÙËÙ· 4.1

Περάστε τυχαία δεδοµένα στους πίνακες που ετοιµάσατε ως απάντηση για την άσκηση αυτοαξιολόγησης 4.1. Προσέξτε να µην υπάρχει πρόβληµα µε τα κλειδιά στις οντότητες και στις σχέσεις. Φροντίστε ώστε κάθε πίνακας που περιγράφει σχέση να έχει cardinality
5 και κάθε πίνακας που περιγράφει οντότητα να έχει cardinality 10.

4.1 ∆√ ™Ã∂™π∞∫√ ª√¡∆∂§√

4.1.2 ∞ÎÂÚ·ÈfiÙËÙ· ‰Â‰Ô̤ӈÓ

Στην προηγούµενη ενότητα µιλήσαµε για κλειδιά στους πίνακες και
είπαµε ότι δεν µπορούν να εισαχθούν κενές τιµές σε ένα κλειδί. Αυτός
είναι ένας περιορισµός. Σε περίπτωση που αυτός ο περιορισµός δεν
είχε τηρηθεί θα είχαµε πρόβληµα µε τη Βάση ∆εδοµένων, αφού θα
είχαµε τιµές χωρίς τα πεδία που τις χαρακτηρίζουν. Αυτό θα σήµαινε
ότι θα είχαµε πρόβληµα ακεραιότητας στη Βάση ∆εδοµένων και για
αυτό το λόγο ο περιορισµός που αναφέραµε παραπάνω ονοµάζεται
περιορισµός ακεραιότητας.
Υπάρχουν δύο τύποι περιορισµών ακεραιότητας, οι περιορισµοί που
περιορίζονται µόνο σε έναν πίνακα και οι περιορισµοί που σχετίζονται
µε πολλούς πίνακες. Στην πρώτη περίπτωση ανήκουν οι περιορισµοί
όπως «ένα κλειδί δεν µπορεί να έχει ως τιµή το κενό» ή όπως «δεν
µπορούν να υπάρχουν δύο εγγραφές µε το ίδιο κλειδί». Στη δεύτερη
περίπτωση ανήκουν περιορισµοί που σχετίζονται µε δεδοµένα που
αναφέρονται από ένα πίνακα σε κάποιον άλλο. Για παράδειγµα, δεν
µπορεί να υπάρχει µία εγγραφή σε µία σχέση που δεν αντιστοιχεί σε
καµία οντότητα και δεν µπορούν να υπάρχουν δύο εγγραφές σε µία
σχέση που να περιγράφουν τη σχέση δύο ίδιων οντοτήτων µε τα ίδια
κατηγορήµατα.
Οι περιορισµοί αυτοί επιβάλλονται από το ίδιο το σύστηµα. Έτσι, όταν
δηµιουργείται µία Βάση ∆εδοµένων µεταφέρει µαζί της και ένα σύνολο περιορισµών ακεραιότητας για την τήρηση των οποίων φροντίζει
το σύστηµα. Για παράδειγµα, εάν στην οντότητα «Οµάδα» που περιγράψαµε στο παράδειγµα 3.2 είχε εισαχθεί µία οµάδα µε ονοµασία
«ΑΕΚ» και Έδρα «Αθήνα», τότε το σύστηµα δεν θα επέτρεπε την
εισαγωγή και µίας δεύτερης οµάδας µε το ίδιο όνοµα και έδρα, αλλά
θα έδινε ένα µήνυµα της µορφής «Υπάρχει ήδη εγγραφή µε το ίδιο
κλειδί».
Εκτός από τους δύο τύπους περιορισµών ακεραιότητας που αναφέραµε παραπάνω υπάρχει και άλλη µία κατηγορία περιορισµών που σχετίζονται µε τη γνώση της εφαρµογής και όχι µε τη σχεδίαση της Βάσης
∆εδοµένων. Για παράδειγµα, στη Βάση ∆εδοµένων που περιγράφεται
στο διάγραµµα σχέσεων – οντοτήτων του σχήµατος 3.9 µπορούµε να
ορίσουµε περιορισµούς όπως «Κανένας παίκτης δεν µπορεί να έχει

99

KEºA§AIO 4: ™Ã∂™π∞∫∂™ B∞™∂π™ ¢∂¢√ª∂¡ø¡

100

γεννηθεί πριν από την τρέχουσα ηµεροµηνία» ή «Καµία οµάδα δεν
µπορεί να έχει ιδρυθεί πριν από το 1911» ή «Κανένας παίκτης δεν µπορεί να έχει αριθµό µητρώου που να µην είναι εξαψήφιος αριθµός που
να µην αρχίζει από 0». Αυτοί οι περιορισµοί δεν µπορούν φυσικά να
προβλέπονται αυτόµατα από τη Βάση ∆εδοµένων (αφού σχετίζονται
µε ιδιαιτερότητες της εκάστοτε εφαρµογής), αλλά όλα τα Συστήµατα
∆ιαχείρισης Βάσεων ∆εδοµένων δίνουν τη δυνατότητα σχεδιασµού
και επίβλεψης της τήρησης τέτοιων περιορισµών.
Ας δούµε πώς επηρεάζεται η ακεραιότητα των δεδοµένων στις διάφορες πράξεις:
∂¶π§√°∏

Η επιλογή δεδοµένων είναι η πιο ακίνδυνη πράξη σε µία Βάση ∆εδοµένων, αφού δεν προϋποθέτει µεταβολές της Βάσης ∆εδοµένων στο
φυσικό επίπεδο. Κατά συνέπεια, δεν επηρεάζει καθόλου την ακεραιότητα της Βάσης ∆εδοµένων.
∂π™∞°ø°∏

Κατά την εισαγωγή δεδοµένων η ακεραιότητα µπορεί να παραβιαστεί
είτε µε την εισαγωγή µίας εγγραφής µε κενή τιµή σε κάποιο κλειδί,
είτε µε εισαγωγή τιµής σε κλειδί που ήδη υπάρχει στη Βάση ∆εδοµένων, είτε µε εισαγωγή τιµών, για κάποια στήλη του πίνακα, που δεν
ανταποκρίνονται στον αντίστοιχο τύπο δεδοµένων του κατηγορήµατος για τη συγκεκριµένη στήλη (π.χ. να εισαχθεί η τιµή «Νίκος» στο
κατηγόρηµα έτος ίδρυσης, το οποίο αναµένει έναν ακέραιο αριθµό).
Τα συστήµατα Βάσεων ∆εδοµένων φροντίζουν για την τήρηση των
παραπάνω περιορισµών ενηµερώνοντας τον χρήστη για τα προβλήµατα στην εισαγωγή.
¢π∞°ƒ∞º∏

Η διαγραφή µπορεί να οδηγήσει σε παραβιάσεις ακεραιότητας σε
σχέση µε άλλους πίνακες. Για παράδειγµα, εάν η οµάδα «Ολυµπιακός,
Πειραιάς» έχει συµµετάσχει σε αγώνες και έχει παίκτες που αγωνίζονται σε αυτή και τη διαγράψουµε, τότε οι αγώνες θα αναφέρονται σε
µία οµάδα που δεν υπάρχει και οι παίκτες θα αγωνίζονται σε οµάδα
που δεν υπάρχει στη Βάση ∆εδοµένων. Τα περισσότερα συστήµατα

4.1 ∆√ ™Ã∂™π∞∫√ ª√¡∆∂§√

101

Βάσεων ∆εδοµένων φροντίζουν να διαγράφουν αυτόµατα όλες τις
εγγραφές στις σχέσεις που συµµετέχει µία εγγραφή που διαγράφεται
ή παρέχουν τη δυνατότητα στο σχεδιαστή της Βάσης ∆εδοµένων να
υλοποιήσει τους αντίστοιχους µηχανισµούς.
∂¡∏ª∂ƒø™∏

Η ενηµέρωση µπορεί να περιλαµβάνει αλλαγές σε κλειδί, ή όχι. Στη
δεύτερη περίπτωση, το µόνο πρόβληµα µπορεί να προκύψει µόνο µε
µεταβολή τιµών για κάποια στήλη του πίνακα, επειδή οι νέες τιµές δεν
ανταποκρίνονται στον αντίστοιχο τύπο δεδοµένων του κατηγορήµατος για τη συγκεκριµένη στήλη. Τότε ισχύει ότι αναφέραµε για την
εισαγωγή. Αντίθετα στην περίπτωση που η ενηµέρωση περιλαµβάνει
αλλαγές σε κλειδί, τότε αυτό που συµβαίνει αντιστοιχεί σε α) διαγραφή της εγγραφής και β) εισαγωγή µίας νέας εγγραφής µε το νέο κλειδί. Κατά συνέπεια πρέπει να προσεχθούν οι περιορισµοί ακεραιότητας που αναφέραµε τόσο στη διαγραφή, όσο και στην εισαγωγή.
∫§∂π¢øª∞

Η Βάση ∆εδοµένων συνήθως δεν προορίζεται για χρήση από ένα χρήστη, αλλά (όπως αναφέραµε στο κεφάλαιο 1) από πολλούς χρήστες
και µάλιστα ταυτόχρονα. Η ταυτόχρονη προσπέλαση των δεδοµένων
όµως µπορεί να δηµιουργήσει προβλήµατα. Ας δούµε το παρακάτω
παράδειγµα.
Έχουµε µία Βάση ∆εδοµένων σε µία τράπεζα και ένα κοινό λογαριασµό που περιγράφεται στον παρακάτω πίνακα:
Κωδικός Λογαριασµού

Κωδικός 1ου Πελάτη

Κωδικός 2ου Πελάτη

Ποσό

α
Ας υποθέσουµε ότι στη Βάση ∆εδοµένων έχει εισαχθεί και η παρακάτω εγγραφή που περιγράφει ότι δύο πελάτες (ο πελάτης µε κωδικό
98827654 και ο πελάτης µε κωδικό 98826531) έχουν 500.000 δραχµές σε ένα κοινό λογαριασµό:
Κωδικός Λογαριασµού

Κωδικός 1ου Πελάτη

Κωδικός 2ου Πελάτη

Ποσό

1992003104

98827654

98826531

500000

102

KEºA§AIO 4: ™Ã∂™π∞∫∂™ B∞™∂π™ ¢∂¢√ª∂¡ø¡

Υποθέτουµε τώρα ότι την ίδια χρονική στιγµή και οι δύο πελάτες
πηγαίνουν σε κάποιο µηχάνηµα αυτόµατων συναλλαγών και ελέγχουν
τον λογαριασµό τους µε σκοπό να κάνουν ανάληψη. Ας υποθέσουµε
ότι γίνονται τα παρακάτω βήµατα:
Ο πελάτης 98827654 εξετάζει το ποσό στο λογαριασµό του, βλέπει
ότι έχει 500.000 δραχµές υπόλοιπο και ζητάει ανάληψη 400.000
δραχµές.
Ο πελάτης 98826531 εξετάζει επίσης το ποσό στον κοινό λογαριασµό
πριν πραγµατοποιηθεί η εντολή ανάληψης του πελάτη 9882764 και
βλέπει και αυτός ότι έχει 500.000 δραχµές υπόλοιπο και ζητάει ανάληψη 300.000 δραχµές.
Τι θα συµβεί σε αυτή την περίπτωση; Εάν η Βάση ∆εδοµένων δεν έχει
κάποιο µηχανισµό να σταµατάει κάθε πρόσβαση στον κοινό λογαριασµό µέχρι να ολοκληρωθεί η πρώτη συναλλαγή τότε, θεωρητικά, οι
δύο πελάτες θα µπορούσαν να είχαν κάνει ανάληψη 700.000 δραχµές
από ένα λογαριασµό που είχε υπόλοιπο 500.000 δραχµές.
Για να µη προκύπτουν τέτοια προβλήµατα η Βάση ∆εδοµένων κλειδώνει τις εγγραφές στις οποίες πραγµατοποιούνται αλλαγές µέχρι να
ολοκληρωθεί η συναλλαγή και µετά δίνει τη δυνατότητα να γίνει η
επόµενη συναλλαγή.
Το πρόβληµα του κλειδώµατος είναι ένα αρκετά σοβαρό πρόβληµα
που απασχολεί κάθε βιβλίο που περιγράφει προχωρηµένα θέµατα
Βάσεων ∆εδοµένων. ∆εν θα επεκταθούµε σε αυτό το θέµα στο βιβλίο
που διαβάζετε, αλλά σας προτείνουµε να µελετήσετε κάποιο από τα
προτεινόµενα βιβλία στο τέλος του κεφαλαίου. Πιστεύουµε ότι θα
βρείτε πολύ ενδιαφέροντα τα θέµατα χειρισµού των συναλλαγών και
αντιµετώπισης προβληµάτων που µπορεί να δηµιουργήσει ένα κακό
κλείδωµα. Για παράδειγµα το αδιέξοδο (deadlock) που σηµαίνει ότι
δύο συναλλαγές έχουν µείνει σε στάσιµη κατάσταση περιµένοντας η
µία την άλλη και δεν µπορούν να ξεφύγουν από αυτή την κατάσταση,
ή το livelock που σηµαίνει ότι µία συναλλαγή έχει µείνει στάσιµη και
παρόλο που το σύστηµα λειτουργεί κανονικά, αυτή δεν µπορεί να επανέλθει σε λειτουργία.

4 . 1 ∆ √ ™ à ∂ ™ π ∞ ∫ √ ª √ ¡ ∆ ∂ § √ / 4 . 2 ™ à ∂ ™ π ∞ ∫ ∏ ∞ § ° ∂ µ ƒ∞

103

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

Κάθε εισαγωγή δεδοµένων παραβιάζει την
ακεραιότητα της Βάσης ∆εδοµένων, όταν
γίνεται εισαγωγή σε κλειδί.

Η επιλογή δεν επηρεάζει την ακεραιότητα.

Κλείδωµα δεδοµένων δεν χρειάζεται να γίνει
κατά την επιλογή.

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

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

ÕÛÎËÛË
·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
4.2

¢Ú·ÛÙËÚÈfiÙËÙ· 4.2

KEºA§AIO 4: ™Ã∂™π∞∫∂™ B∞™∂π™ ¢∂¢√ª∂¡ø¡

104

4.2 ™¯ÂÛȷ΋ ¿ÏÁ‚ڷ

™ÎÔfi˜
Σκοπός της ενότητας είναι να παρουσιάσει τη σχεσιακή άλγεβρα και
ειδικότερα τις πράξεις της σχεσιακής άλγεβρας.
¶ÚÔÛ‰ÔÎÒÌÂÓ· ∞ÔÙÂϤÛÌ·Ù·
Όταν θα έχετε ολοκληρώσει τη µελέτη αυτής της ενότητας θα µπορείτε να:
• περιγράψετε τι είναι η σχεσιακή άλγεβρα και πού χρησιµοποιείται
• εξηγήσετε κάθε πράξη της σχεσιακής άλγεβρας τόσο από πλευράς συµβολισµού, όσο και από πλευράς εφαρµογής και αποτελέσµατος
• εκτελέσετε πράξεις σχεσιακής άλγεβρας σε πίνακες
• υλοποιήσετε ερωτήσεις µε τη βοήθεια πράξεων της σχεσιακής άλγεβρας
∂ÈÛ·ÁˆÁÈΤ˜ ¶·Ú·ÙËÚ‹ÛÂȘ
Στην ενότητα αυτή θα περιγράψουµε τις βασικές πράξεις της σχεσιακής
άλγεβρας. Στην ενότητα 4.2.1 περιγράφεται η πράξη επιλογή (selection),
στην ενότητα 4.2.2 περιγράφεται η πράξη προβολή (projection), στην ενότητα 4.2.3 περιγράφεται η πράξη συνόλων ένωση (union) και στην 4.2.4
η πράξη συνόλων τοµή (intersection), στην ενότητα 4.2.5 περιγράφεται η
πράξη διαφορά (difference) και στην ενότητα 4.2.6 περιγράφεται η πράξη
καρτεσιανό γινόµενο (cartesian join). Τέλος, στην ενότητα 4.2.7 περιγράφεται η πράξη σύνδεση (join) και στην ενότητα 4.2.8 περιγράφεται η
πράξη φυσική σύνδεση (natural join)
Στην ενότητα αυτή δεν περιγράφουµε µερικές εξειδικευµένες πράξεις, όπως
η πράξη διαίρεση (quotient), η πράξη εξωτερικής συνένωσης (outer join),
η πράξη εξωτερική ένωση (outer union) και άλλες. Όλες τις παραπάνω πράξεις µπορείτε να τις διαβάσετε στη σχετική βιβλιογραφία.
Η σχεσιακή άλγεβρα (όπως και ο σχεσιακός υπολογισµός που περιγράφεται στην επόµενη ενότητα) είναι πρότυπες γλώσσες ερωτήσεων που
έχουν θεωρητική αξία και όχι πρακτική εφαρµογή. Xρησιµοποιούνται για
τη µοντελοποίηση ερωτήσεων, δηλαδή για να περιγράψουν σε αφηρηµένο επίπεδο τις ερωτήσεις προς τη Βάση ∆εδοµένων και δεν αντιστοιχούν στο φυσικό επίπεδο σε πραγµατική υλοποίηση. Παρέχουν ένα σύνολο δυνατοτήτων, το οποίο επεξηγεί τις δυνατότητες των γλωσσών ερω-

4 . 2 ™ à ∂ ™ π ∞ ∫ ∏ ∞ § ° ∂ µ ƒ∞

105

τήσεων, αλλά είναι σαφέστατα υποσύνολο των δυνατοτήτων των γλωσσών που θα περιγράψουµε στα επόµενα δύο κεφάλαια.
Στη διεθνή βιβλιογραφία η σχεσιακή άλγεβρα αναφέρεται σε σχέσεις
(relations) και πλειάδες (tuples). Στις πράξεις που ακολουθούν θα χρησιµοποιούµε τους όρους «πίνακες» αντί για σχέσεις (αφού αναφερόµαστε σε πίνακες σχέσεων και οντοτήτων) και «εγγραφές» αντί για
πλειάδες, αφού σε µία Βάση ∆εδοµένων µία πλειάδα δεδοµένων αντιστοιχεί σε µία εγγραφή, για να είµαστε συνεπείς µε την ορολογία που
χρησιµοποιήσαµε στα προηγούµενα κεφάλαια.
Στα παραδείγµατα της ενότητας που ακολουθούν θα χρησιµοποιήσουµε τους δύο πίνακες που δίνουµε παρακάτω στο παράδειγµα 4.1
µε τα δεδοµένα που αναγράφονται.
¶·Ú¿‰ÂÈÁÌ· 4.1
∆ίνονται οι δύο πίνακες «Μάνατζερ» και «Κατηγορία» µε µερικά πειραµατικά δεδοµένα.
ΜΑΝΑΤΖΕΡ
Όνοµα

Επώνυµο

Τηλέφωνο

Νίκος

Βασιλείου

061-555666

Κώστας

Χρήστου

061-888999

Πέτρος

Ιωάννου

01-8889990

Ηλίας

Ηλίου

01-8889992

Μιχάλης

Βασιλείου

031-666777

ΠΑΙΚΤΗΣ
Α. Μητρ.

Όνοµα

Επώνυµο

Πατρ/µο

Ύψος

Ηµ. Γέν.

Πόλη

23711

Νίκος

Ιωάννου

Κώστας

1,99

20/11/80

Πάτρα

18902

Μιχάλης

Ξανθός

Νίκος

2,03

17/03/78

Αθήνα

82002

Πέτρος

Ηλίου

Μιχάλης

2,00

03/04/81

Πάτρα

90203

Νίκος

Μιχαήλ

Κώστας

1,96

11/03/82

88991

Νίκος

Ξανθός

Ηλίας

1,88

81209

Πέτρος

Πέτρου

Γιώργος

2,09

Λάρισα
18/08/80

Αθήνα

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

KEºA§AIO 4: ™Ã∂™π∞∫∂™ B∞™∂π™ ¢∂¢√ª∂¡ø¡

106

4.2.1 EÈÏÔÁ‹

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

(4.1)

Σηµαίνει επιλογή όλων των εγγραφών από τον πίνακα Α, οι οποίες
ικανοποιούν τη συνθήκη Ε. Η συνθήκη Ε µπορεί να περιέχει τους
αριθµητικούς τελεστές <, >, Θ, ≥, Ι και =, καθώς και τους λογικούς
τελεστές AND, OR, και NOT.
Έτσι η εντολή σ Όνοµα=Νίκος (Παίκτης) στη Βάση ∆εδοµένων του παραδείγµατος 4.1 θα είχε ως αποτέλεσµα τον ακόλουθο πίνακα:
Α. Μητρ.

Όνοµα

Επώνυµο

Πατρ/µο

Ύψος

Ηµ. Γέν.

Πόλη

23711

Νίκος

Ιωάννου

Κώστας

1,99

20/11/80

Πάτρα

90203

Νίκος

Μιχαήλ

Κώστας

1,96

11/03/82

88991

Νίκος

Ξανθός

Ηλίας

1,88

ÕÛÎËÛË
·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
4.3

Λάρισα

Υπολογίστε τα παρακάτω στους πίνακες του παραδείγµατος 4.1:
σ Όνοµα=Νίκος AND Ύψος > 1,96 (Παίκτης)
σ Όνοµα=Νίκος (Μάνατζερ)

4.2.2 ¶ÚÔ‚ÔÏ‹

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

Ύψος

Ιωάννου

1,99

Ξανθός

2,03

Ηλίου

2,00

Μιχαήλ

1,96

Ξανθός

1,88

Πέτρου

2,09

π Σ1, Σ2, … Σn (Α)

(4.2)

Σηµαίνει επιλογή µόνο των στηλών Σ1, Σ2, …, Σn από τον πίνακα Α
και εµφάνισή τους µε αυτή τη σειρά. Έτσι, η εντολή π Επώνυµο, Ύψος (Παίκτης) θα είχε ως αποτέλεσµα τον δίπλα πίνακα.

4 . 2 ™ à ∂ ™ π ∞ ∫ ∏ ∞ § ° ∂ µ ƒ∞

107

Kάντε τις παρακάτω πράξεις στους πίνακες του παραδείγµατος 4.1:
π Όνοµα, Επώνυµο, Πόλη (Παίκτης)

ÕÛÎËÛË
·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
4.4

π Επώνυµο (Μάνατζερ)

Υλοποιήστε την ερώτηση «Βρείτε µόνο το επώνυµο και το ύψος των
παικτών που έχουν καταγωγή από την πόλη Πάτρα».

ÕÛÎËÛË
·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
4.5

4.2.3 ŒÓˆÛË

Η πράξη της ένωσης αντιστοιχεί στη γνωστή πράξη της ένωσης από
τη θεωρία συνόλων και δίνεται από τον τύπο:
Α»Β

(4.3)

Σηµαίνει επιλογή των γραµµών από τους πίνακες Α, Β που υπάρχουν
είτε στον πίνακα Α, είτε στον πίνακα Β, είτε και στους δύο πίνακες.
4.2.4 TÔÌ‹

Η πράξη της τοµής αντιστοιχεί στη γνωστή πράξη της τοµής από τη
θεωρία συνόλων και δίνεται από τον τύπο:
Α«Β

(4.4)

Σηµαίνει επιλογή των γραµµών από τους πίνακες Α, Β που υπάρχουν
και στον πίνακα Α και στον πίνακα Β.
4.2.5 ¢È·ÊÔÚ¿

Η πράξη της διαφοράς αντιστοιχεί στη γνωστή πράξη της διαφοράς
από τη θεωρία συνόλων και δίνεται από τον τύπο:
Α–Β

(4.5)

Σηµαίνει επιλογή των γραµµών από τους πίνακες Α, Β που υπάρχουν
στον Α και δεν υπάρχουν στον Β.
Ισχύει ότι Α « Β = Α – (Α – Β). Χρησιµοποιώντας προβολές από
τους πίνακες του παραδείγµατος 4.1 δείξτε παραδείγµατα της παραπάνω ισότητας.

¢Ú·ÛÙËÚÈfiÙËÙ· 4.3

KEºA§AIO 4: ™Ã∂™π∞∫∂™ B∞™∂π™ ¢∂¢√ª∂¡ø¡

108

ÕÛÎËÛË
·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
4.6

Kάντε τις παρακάτω πράξεις:
π Όνοµα (Παίκτης) » π Όνοµα (Μάνατζερ)
π Όνοµα (Παίκτης) « π Όνοµα (Μάνατζερ)
π Όνοµα (Παίκτης) – π Όνοµα (Μάνατζερ)

4.2.6 ∫·ÚÙÂÛÈ·Ófi ÁÈÓfiÌÂÓÔ

Η πράξη του καρτεσιανού γινοµένου δύο συνόλων Α και Β δίνεται
από τον τύπο:
Α¥Β

(4.6)

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

¢Ú·ÛÙËÚÈfiÙËÙ· 4.4

Υπολογίστε το καρτεσιανό γινόµενο Παίκτης ¥ Μάνατζερ.

4.2.7 ™‡Ó‰ÂÛË

Η πράξη της σύνδεσης δύο συνόλων Α και Β δίνεται από τον τύπο:
A >< B
E

(4.7)

Η πράξη της σύνδεσης αντιστοιχεί στην πράξη σ Ε (Α ¥ Β) και σηµαίνει την επιλογή από το καρτεσιανό γινόµενο Α ¥ Β µόνο των γραµµών που ικανοποιούν τη συνθήκη Ε. Η συνθήκη Ε µπορεί να περιέχει
τους αριθµητικούς τελεστές <, >, Θ, ≥, Ι και =, καθώς και τους λογικούς τελεστές AND, OR, και NOT.
4.2.8 º˘ÛÈ΋ Û‡Ó‰ÂÛË

Η πράξη της φυσικής σύνδεσης δύο συνόλων Α και Β δίνεται από τον
τύπο:
A >< B

(4.8)

Η πράξη της φυσικής σύνδεσης εφαρµόζεται σε πίνακες που έχουν

4 . 2 ™ à ∂ ™ π ∞ ∫ ∏ ∞ § ° ∂ µ ƒ∞ / 4 . 3 ™ à ∂ ™ π ∞ ∫ √ ™ À ¶ √ § √ ° π ™ ª √ ™

109

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

∆ίνονται οι παρακάτω πίνακες Α, Β και Γ (για λόγους απλότητας
έχουµε ως δεδοµένα αριθµούς). Υπολογίστε τα εξής:
1) A  B
Γ∆

2) Γ  ∆
3) A  Γ
Πίνακας Α

Πίνακας B

Πίνακας Γ

Α

Β

Γ

E

B

Γ

3

1

7

4

5

1

7

4

1

3

6

7

1

3

6

6

3

8

4.3 ™¯ÂÛÈ·Îfi˜ ˘ÔÏÔÁÈÛÌfi˜

™ÎÔfi˜
Σκοπός της ενότητας είναι να παρουσιάσει το σχεσιακό υπολογισµό και
παραδείγµατα µετατροπής από σχεσιακή άλγεβρα σε σχεσιακό υπολογισµό.
¶ÚÔÛ‰ÔÎÒÌÂÓ· ∞ÔÙÂϤÛÌ·Ù·
Όταν θα έχετε ολοκληρώσει τη µελέτη αυτής της ενότητας θα µπορείτε να:
• περιγράψετε τι είναι ο σχεσιακός υπολογισµός και πού χρησιµοποιείται
• υλοποιήσετε ερωτήσεις µε τη βοήθεια πράξεων του σχεσιακού υπολογισµού
• µετατρέψετε ερωτήσεις και πράξεις τις σχεσιακής άλγεβρας σε ερωτήσεις και πράξεις του σχεσιακού υπολογισµού

ÕÛÎËÛË
·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
4.7

110

KEºA§AIO 4: ™Ã∂™π∞∫∂™ B∞™∂π™ ¢∂¢√ª∂¡ø¡

∂ÈÛ·ÁˆÁÈΤ˜ ¶·Ú·ÙËÚ‹ÛÂȘ
Στην ενότητα αυτή περιγράφουµε συνοπτικά το σχεσιακό υπολογισµό.
Σε περίπτωση που θέλετε να εµβαθύνετε στο σχεσιακό υπολογισµό
µπορείτε να ανατρέξετε στη βιβλιογραφία προαιρετικής ανάγνωσης
που βρίσκεται στο τέλος του κεφαλαίου.
Ο σχεσιακός υπολογισµός χρησιµοποιεί εκφράσεις της µορφής:
{ x E ( x )}

(4.9)

Στον τύπο (4.9) το x αντιστοιχεί σε µία εγγραφή η οποία πληροί τις
προδιαγραφές της σχέσης Ε. Το σύµβολο « | » έχει την έννοια «τέτοιο
ώστε» ή «για την οποία ισχύει» και οι αγκύλες υποδηλώνουν το σύνολο των x. Άρα η έκφραση (4.9) σηµαίνει «οι εγγραφές x για τις οποίες ισχύει η συνθήκη E(x)». Επίσης το «x» µπορεί να είναι και τµήµα
µιας εγγραφής και όχι ολόκληρη η εγγραφή.
Η συνθήκη στον τύπο (4.9) µπορεί να χρησιµοποιεί µόνο τα παρακάτω σύµβολα:
• Ÿ το οποίο αντιστοιχεί στο λογικό AND. Η σχέση Α Ÿ Β σηµαίνει
«να είναι αληθές και το Α και το Β»
• Ú το οποίο αντιστοιχεί στο λογικό OR. Η σχέση Α Ú Β σηµαίνει
«να είναι αληθές είτε το Α, είτε το Β, είτε και τα δύο»
• ÿ το οποίο αντιστοιχεί στο λογικό NOT. Η σχέση ÿ Α σηµαίνει
«να µην είναι αληθές το Α»
• " το οποίο αντιστοιχεί στην έννοια «για κάθε». Η σχέση (" x)
σηµαίνει «για κάθε x»
• $ το οποίο αντιστοιχεί στην έννοια «υπάρχει». Η σχέση ($ x)
σηµαίνει «υπάρχει ένα τουλάχιστον x»
• αριθµητικούς τελεστές και συγκεκριµένα τους <, >, £, ≥, π και =
• παρενθέσεις για την προτεραιότητα των πράξεων στις σχέσεις
Χρησιµοποιώντας τα παραπάνω σύµβολα µπορούν να περιγραφούν
ερωτήσεις προς τη Βάση ∆εδοµένων αντίστοιχες µε τις ερωτήσεις
που περιγράψαµε για τη σχεσιακή άλγεβρα. Για να δώσουµε την
arity (αριθµός στηλών) µίας εγγραφής συνήθως αναφέρουµε µία
παρένθεση δίπλα στην εγγραφή, δηλαδή η έκφραση σηµαίνει «οι

4.3 ™Ã∂™π∞∫√™ À¶√§√°π™ª√™

111

εγγραφές x µε arity y που πληρούν τη σχέση Ε».
{ x ( y ) E ( x )}

(4.10)

Επίσης για να εντοπίσουµε ένα συγκεκριµένο πεδίο της εγγραφής x
χρησιµοποιούµε τις αγκύλες «[z]». Για παράδειγµα η σχέση σηµαίνει
«οι εγγραφές x µε 4 πεδία, από τα οποία το πεδίο όνοµα είναι ίσο µε
Νίκος».
{x (4) | x[όνοµα]=Νίκος }

(4.11)

Ο εντοπισµός των πεδίων µπορεί να γίνει και µε τον αριθµητικό συµβολισµό του πεδίου, δηλαδή η σχέση σηµαίνει «οι εγγραφές x µε 4
πεδία από τα οποία το 2ο πεδίο είναι ίσο µε Νίκος».
{x (4) | x[2]=Νίκος }

(4.12)

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

(

)

{ x ( 2 ) Ey )( A( x ) Ÿ A( y ) Ÿ ( x[1] π y[1] Ú x[ 2] π y[ 2])

(4.13)

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

Υλοποιήστε µε σχεσιακό υπολογισµό τις πράξεις τις σχεσιακής άλγεβρας που ακολουθούν:
σ Ε (Α)
π Σ1, Σ2 (Α)
Α»Β
Α–Β
Α¥B

Εκφράστε µε σχεσιακό υπολογισµό όλες τις πράξεις της σχεσιακής
άλγεβρας για τις οποίες µιλήσαµε στην ενότητα 4.2.

ÕÛÎËÛË
·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
4.8

¢Ú·ÛÙËÚÈfiÙËÙ· 4.5

KEºA§AIO 4: ™Ã∂™π∞∫∂™ B∞™∂π™ ¢∂¢√ª∂¡ø¡

112

™‡ÓÔ„Ë
Στο κεφάλαιο αυτό περιγράψαµε τις σχεσιακές Βάσεις ∆εδοµένων και
µιλήσαµε για τις βασικές έννοιες και πράξεις, καθώς και για τους περιορισµούς ακεραιότητας και το κλείδωµα. Περιγράψαµε εν συντοµία δύο
βασικά σχεσιακά µοντέλα ερωτήσεων: τη σχεσιακή άλγεβρα και το σχεσιακό υπολογισµό. ∆εν µιλήσαµε για όλες τις πράξεις της σχεσιακής άλγεβρας, ούτε καλύψαµε αναλυτικά το σχεσιακό υπολογισµό και για αυτό το
λόγο σας προτείνουµε να ανατρέξετε στη βιβλιογραφία για να µελετήσετε σε βάθος τα δύο αυτά µοντέλα ερωτήσεων.
BÈ‚ÏÈÔÁÚ·Ê›· ÁÈ· ÂÚ·ÈÙ¤Úˆ ÌÂϤÙË
[1] Elmasri R. & Navathe S. B., Fundamentals of Database Systems,
Addison–Wesley, 1994.
Το βιβλίο υπάρχει και σε Ελληνική µετάφραση από τις εκδόσεις ∆ίαυλος σε µετάφραση Μ. Χατζόπουλου, 1996. Στο κεφάλαιο 6 του βιβλίου
καλύπτονται τα θέµατα των σχεσιακών Βάσεων ∆εδοµένων. Το θέµα του
κλειδώµατος περιγράφεται στο κεφάλαιο 18.
[2] Ulman J. D., Principles of Database Systems, Computer Science Press, 1982.
Είναι ένα από το πρώτα και βασικότερα βιβλία για Βάσεις ∆εδοµένων.
Τα αντικείµενα που συζητήσαµε στο κεφάλαιο 4 του βιβλίου αυτού καλύπτονται στα κεφάλαια 5 και 7 του συγκεκριµένου βιβλίου. Στις ενότητες
5.2 και 5.3 µπορείτε να βρείτε µία πολύ αναλυτική περιγραφή των βασικών αρχών της σχεσιακής άλγεβρας και του σχεσιακού υπολογισµού
αντίστοιχα.
[3] Silberschatz A., Korth H., Sudarshan S, Database System Concepts, Third
Edition, McGraw–Hill, 1986.
Το σχεσιακό µοντέλο περιγράφεται στο κεφάλαιο 3 του βιβλίου. Το θέµα
του κλειδώµατος των δεδοµένων περιγράφεται αναλυτικά στο κεφάλαιο 14.
[4] C.J.Date, An Introduction to Database Systems, Volume I, Fourth Edition,
Addison–Wesley, 1986.
Στα κεφάλαια 4 έως και 9 περιγράφεται ένα σχεσιακό σύστηµα Βάσεων
∆εδοµένων (το DB2). Τα τµήµατα που περιγράψαµε στο παρόν βιβλίο
καλύπτονται κυρίως στο κεφάλαιο 5 του προτεινόµενου βιβλίου.
[5] Papazoglou M. and Valder W., Relational Database Management,
Prentice Hall, 1989.
Ολόκληρο το βιβλίο είναι βασισµένο στο σχεσιακό µοντέλο. Θα µπορούσατε να το διαβάσετε ως µία καλή επανάληψη στο σχεσιακό µοντέλο και µε
στόχο να εµβαθύνετε τις γνώσεις σας στο µοντέλο αυτό.

H °ÏÒÛÛ· EÚˆÙ‹ÛÂˆÓ SQL
™ÎÔfi˜
Σκοπός του κεφαλαίου είναι να παρουσιαστεί η γλώσσα ερωτήσεων
και αλλαγών SQL και να περιγραφεί η σύνταξη ερωτήσεων σε SQL.
Επίσης, σκοπός του κεφαλαίου είναι να µελετηθούν ερωτήσεις τόσο
για εξαγωγή δεδοµένων από τους πίνακες µίας σχεσιακής Βάσης ∆εδοµένων, όσο και να παρουσιαστεί η χρήση εντολών SQL για τη δηµιουργία πινάκων, αλλαγή δεδοµένων στα στοιχεία ενός πίνακα και διαγραφή δεδοµένων από έναν πίνακα.
¶ÚÔÛ‰ÔÎÒÌÂÓ· ∞ÔÙÂϤÛÌ·Ù·
Όταν θα έχετε ολοκληρώσει τη µελέτη αυτού του κεφαλαίου θα µπορείτε να:
• περιγράψετε το σκοπό των γλωσσών ερωτήσεων και τη χρήση µίας
γλώσσας ερωτήσεων στα πλαίσια ενός Συστήµατος ∆ιαχείρισης
Βάσεων ∆εδοµένων
• περιγράψετε τις εντολές της γλώσσας ερωτήσεων SQL που χρησιµοποιούνται για δηµιουργία πινάκων, αλλαγή ή διαγραφή δεδοµένων από πίνακες σε µία Βάση ∆εδοµένων, καθώς και αυτές τις εντολές της γλώσσας ερωτήσεων SQL που χρησιµοποιούνται για αναζήτηση και παρουσίαση δεδοµένων που αντλούνται από µία Βάση
∆εδοµένων
• χρησιµοποιήσετε εντολές της γλώσσας ερωτήσεων SQL για να
αντλήσετε δεδοµένα από παραδείγµατα Βάσεων ∆εδοµένων που
περιγράφηκαν στα προηγούµενα κεφάλαια
• µετατρέψετε ερωτήσεις προς µία Βάση ∆εδοµένων εκφρασµένες
αρχικά σε απλή (φυσική) γλώσσα στη γλώσσα ερωτήσεων SQL
ŒÓÓÔȘ ÎÏÂȉȿ
• Γλώσσες Ερωτήσεων (Query Languages)
• Γλώσσα Ορισµού ∆εδοµένων (Data Definition Language)
• Γλώσσα Χειρισµού ∆εδοµένων (Data Manipulation Language)

5
º

§

π

KEºA§AIO 5: H °§ø™™∞ Eƒø∆∏™∂ø¡ SQL

114

• Συµβολοσειρά (String)
• Μετονοµασίες (Aliases)
∂ÈÛ·ÁˆÁÈΤ˜ ¶·Ú·ÙËÚ‹ÛÂȘ
Στο κεφάλαιο αυτό περιγράφουµε τη γλώσσα ερωτήσεων SQL, µία
γλώσσα που κυριαρχεί στις σηµερινές σχεσιακές Βάσεις ∆εδοµένων.
Στην ενότητα 5.1 γίνεται εισαγωγή στις βασικές αρχές των γλωσσών
ερωτήσεων και των χρήσεων των γλωσσών ερωτήσεων από τα Συστήµατα ∆ιαχείρισης Βάσεων ∆εδοµένων. Στην ενότητα 5.2 παρουσιάζονται οι βασικές εντολές της γλώσσας ερωτήσεων SQL που χρησιµοποιούνται για αναζήτηση δεδοµένων από µία Βάση ∆εδοµένων. ∆ίνονται παραδείγµατα εντολών σε SQL και ασκήσεις µετατροπής ερωτήσεων από φυσική γλώσσα στη γλώσσα ερωτήσεων SQL. Στην ενότητα
5.3 παρουσιάζονται οι εντολές της γλώσσας ερωτήσεων SQL που χρησιµοποιούνται για ορισµό, διαχείριση και παρουσίαση δεδοµένων,
καθώς και αντίστοιχα παραδείγµατα. Τέλος, στην ενότητα 5.4 γίνεται
η σύνοψη του κεφαλαίου και παρουσιάζεται η προτεινόµενη βιβλιογραφία για περαιτέρω εµβάθυνση στο αντικείµενο της γλώσσας ερωτήσεων SQL.

5.1 ∞Ú¯¤˜ ÙˆÓ ÁψÛÛÒÓ ÂÚˆÙ‹ÛˆÓ

™ÎÔfi˜
Σκοπός της ενότητας είναι να περιγραφούν γενικά οι αρχές των γλωσσών ερωτήσεων και η χρήση τους σε ένα Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων, καθώς και να γίνει αναφορά στις δύο γλώσσες ερωτήσεων που θα περιγράψουµε σε αυτό το βιβλίο, την SQL και την QBE.
¶ÚÔÛ‰ÔÎÒÌÂÓ· ∞ÔÙÂϤÛÌ·Ù·
Όταν θα έχετε ολοκληρώσει τη µελέτη αυτής της ενότητας θα µπορείτε να:
• εξηγήσετε τι είναι γλώσσα ερωτήσεων
• περιγράψετε τη χρήση των γλωσσών ερωτήσεων και το τι παρέχουν
στο χρήστη µίας Βάσης ∆εδοµένων
• αναφέρετε τουλάχιστον δύο γλώσσες υποβολής ερωτήσεων
Στο προηγούµενο κεφάλαιο περιγράψαµε τη σχεσιακή άλγεβρα και το
σχεσιακό λογισµό. Τόσο η σχεσιακή άλγεβρα, όσο και ο σχεσιακός
λογισµός θεωρούνται από τις πρώτες θεωρητικές γλώσσες ερωτήσεων. Οι γλώσσες ερωτήσεων, όµως, πρέπει να ικανοποιούν µία πρακτική ανάγκη του χρήστη µίας Βάσης ∆εδοµένων. Πρέπει να του
παρέχουν τη δυνατότητα να µπορεί να υποβάλει ερωτήσεις στη Βάση
∆εδοµένων και µε βάση αυτές τις ερωτήσεις να συλλέγει δεδοµένα
από τη Βάση ∆εδοµένων που να ικανοποιούν τους περιορισµούς που
έθεσε στην ερώτηση.
Ένα βασικό στοιχείο που πρέπει να παρέχουν τα Συστήµατα ∆ιαχείρισης Βάσεων ∆εδοµένων είναι µία γλώσσα ερωτήσεων. Αυτή η
γλώσσα ερωτήσεων θα πρέπει να δίνει τη δυνατότητα στο χρήστη να
υποβάλλει ερωτήσεις προς τη Βάση ∆εδοµένων, στις οποίες ερωτήσεις ο χρήστης να προσδιορίζει µόνο το προσδοκώµενο αποτέλεσµα
(δηλαδή το σύνολο των επιζητούµενων δεδοµένων) και όχι τον τρόπο
µε τον οποίο θα υλοποιηθεί η ερώτηση ή τον τρόπο µε τον οποίο θα
βελτιστοποιηθεί η εκτέλεσή της.
Αυτό το χαρακτηριστικό, δηλαδή η ανεξαρτησία του τελικού χρήστη
από θέµατα που σχετίζονται µε το φυσικό επίπεδο ή µε την απόδοση

116

KEºA§AIO 5: H °§ø™™∞ Eƒø∆∏™∂ø¡ SQL

της εκτέλεσης της ερώτησης, είναι βασική προδιαγραφή και επίτευγµα των Συστηµάτων ∆ιαχείρισης Βάσεων ∆εδοµένων. Για αυτό το
λόγο, γλώσσες όπως η σχεσιακή άλγεβρα ή ο σχεσιακός λογισµός δεν
χρησιµοποιήθηκαν ως γλώσσες ερωτήσεων, παρά µόνο για τη θεωρητική µελέτη των γλωσσών αυτών. Για παράδειγµα, στη σχεσιακή
άλγεβρα πρέπει ο χρήστης να ορίσει µια συγκεκριµένη ακολουθία πράξεων που όταν εκτελεστούν θα δώσουν το επιθυµητό αποτέλεσµα.
Αυτό δεν συµβαίνει σε γλώσσες ερωτήσεων, όπως η SQL, που αναλύουµε σε αυτό το κεφάλαιο, ή όπως η QBE που αναλύεται στο κεφάλαιο 6. Σε αυτές τις γλώσσες ο χρήστης δηλώνει το επιθυµητό σύνολο δεδοµένων (εισάγοντας µία σειρά από περιορισµούς) και αφήνει το
Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων να αναλάβει την υλοποίηση και βελτιστοποίηση των κατάλληλων βηµάτων ώστε να οδηγηθεί
στο επιθυµητό αποτέλεσµα.
Στο κεφάλαιο αυτό θα παρουσιαστεί η γλώσσα SQL. Το ακρωνύµιο
SQL προκύπτει από το Structured Query Language. Αρχικά η SQL
ονοµαζόταν SEQUEL από το Structured English Query Language (στο
βιβλίο του Ullman, “Principles of Database Systems”, που είναι ένα
από το πρώτα και βασικότερα βιβλία για Βάσεις ∆εδοµένων, θα τη
βρείτε να αναφέρετε ως SEQUEL). Αρχικά η SQL υλοποιήθηκε για
το System R που ήταν ένα πειραµατικό σύστηµα της IBM, αλλά σήµερα εξελίχθηκε και τυποποιήθηκε έτσι ώστε να αποτελεί πρότυπο γλώσσας ερωτήσεων. Έχουν υπάρξει ως πρότυπα οι SQL1, SQL2 και SQL3
σε συνεργασία ANSI και ISO.
Η γλώσσα ερωτήσεων SQL δίνει δυνατότητες τόσο για αναζήτηση
δεδοµένων, όσο και για ορισµό δεδοµένων, ενώ είναι δυνατή και η
ενσωµάτωσή της µέσα σε γλώσσες προγραµµατισµού (εµφωλιασµένη SQL). Είναι λοιπόν τόσο Γλώσσα Ορισµού ∆εδοµένων όσο και
Γλώσσα Χειρισµού ∆εδοµένων. Στην ενότητα 5.2 θα δούµε τη χρήση
της SQL ως γλώσσα χειρισµού δεδοµένων, ενώ στην ενότητα 5.3 ως
γλώσσα ορισµού δεδοµένων.
Η γλώσσα ερωτήσεων QBE που παρουσιάζεται στο κεφάλαιο 6 είναι
µία γλώσσα που βρίσκεται πιο κοντά στη φιλοσοφία του σχεσιακού
υπολογισµού από ότι στη φιλοσοφία της σχεσιακής άλγεβρας. Η διαφορά της µε την SQL είναι ότι ο χρήστης δεν χρειάζεται να περιγράψει µία καθορισµένη ερώτηση, αλλά συµπληρώνει πίνακες µε στοι-

5.1 ∞ƒÃ∂™ ∆ø¡ °§ø™™ø¡ ∂ƒø∆∏™∂ø¡ / 5.2 ∞¡∞∑∏∆∏™∏ ¢∂¢√ª∂¡ø¡ ™∆∏¡ SQL

117

χεία, δηλαδή ένα παράδειγµα, µε βάση το οποίο επιλέγονται τα στοιχεία. QBE σηµαίνει Query by Example, ακριβώς για να εκφράσει
αυτή τη σχεδίαση των ερωτήσεων µε βάση ένα παράδειγµα από έναν
πίνακα. Η QBE υλοποιήθηκε από την IBM.

Γράψτε τι σηµαίνουν οι παρακάτω συντοµογραφίες:
1) SQL

………………………………………………………………………………

2) SEQUEL

………………………………………………………………………………

3) QBE

………………………………………………………………………………

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

5.2 ∞Ó·˙‹ÙËÛË ‰Â‰ÔÌ¤ÓˆÓ ÛÙËÓ SQL

™ÎÔfi˜
Σκοπός της ενότητας είναι να παρουσιαστεί η SQL ως γλώσσα χειρισµού
δεδοµένων. Θα δείξουµε τη χρήση της SQL καθαρά για αναζήτηση δεδοµένων, δηλαδή θα δείξουµε πώς ερωτήσεις που θέλαµε να µπορούµε να
υποβάλλουµε στη Βάση ∆εδοµένων µπορούν να δοθούν σε SQL.
¶ÚÔÛ‰ÔÎÒÌÂÓ· ∞ÔÙÂϤÛÌ·Ù·
Όταν θα έχετε ολοκληρώσει τη µελέτη αυτής της ενότητας θα µπορείτε να:

ÕÛÎËÛË
·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
5.1

¢Ú·ÛÙËÚÈfiÙËÙ· 5.1

118

KEºA§AIO 5: H °§ø™™∞ Eƒø∆∏™∂ø¡ SQL

• χρησιµοποιήσετε τις εντολές τις SQL για να σχηµατίσετε ερωτήσεις
και να γνωρίζετε τόσο τη χρήση κάθε εντολής, όσο και την ακριβή
της σύνταξη
• µετατρέψετε ερωτήσεις προς µια Βάση ∆εδοµένων από φυσική
γλώσσα στη γλώσσα ερωτήσεων SQL
• προβλέψετε τις απαντήσεις σε κάποια ερώτηση SQL προς µία γνωστή Βάση ∆εδοµένων, ώστε να είστε σε θέση να ελέγχετε την ορθότητα των απαντήσεων
∂ÈÛ·ÁˆÁÈΤ˜ ¶·Ú·ÙËÚ‹ÛÂȘ
Στην ενότητα αυτή παρουσιάζονται οι βασικές εντολές της γλώσσας
ερωτήσεων SQL οι οποίες χρησιµοποιούνται για αναζήτηση δεδοµένων από µία Βάση ∆εδοµένων. Στην ενότητα 5.2.1 παρουσιάζεται η
βασική δόµηση κάθε εντολής αναζήτησης σε SQL, καθώς και δύο
παραδείγµατα που θα χρησιµοποιηθούν στις ασκήσεις ολόκληρου του
κεφαλαίου. Στην ενότητα 5.2.2 παρουσιάζεται η µέθοδος που προσφέρει η SQL για διάταξη των αποτελεσµάτων, ενώ στην ενότητα 5.2.3
συζητούνται οι τελεστές που χρησιµοποιούνται σε µία συνθήκη. Στην
ενότητα 5.2.4 παρουσιάζονται οι τρόποι µετονοµασίας των πινάκων
για πολύπλοκες εντολές, ενώ στην ενότητα 5.2.5 παρουσιάζονται οι
εντολές συνόλων που υποστηρίζει η SQL. Στην ενότητα 5.2.6 συζητείται η σύνδεση πινάκων σε SQL και στην ενότητα 5.2.7 παρουσιάζουµε τρόπους αρίθµησης, υπολογισµού µεγίστων και ελαχίστων και οµαδοποίησης των αποτελεσµάτων µίας ερώτησης. Τέλος, στην ενότητα
5.2.8 συνοψίζουµε τις εντολές αναζήτησης σε γλώσσα ερωτήσεων SQL
και δίνουµε ένα παράδειγµα πλήρους εντολής σε SQL.
5.2.1 Select… From… Where…

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

5.2 ∞¡∞∑∏∆∏™∏ ¢∂¢√ª∂¡ø¡ ™∆∏¡ SQL

σε όλο το κεφάλαιο 5, αλλά και στο κεφάλαιο 6, όταν θα παρουσιάσουµε τη γλώσσα ερωτήσεων QBE. Επίσης, στο παράδειγµα 5.2
δίνουµε µερικά χαρακτηριστικά δεδοµένα τα οποία θα χρησιµοποιηθούν στις ασκήσεις και παραδείγµατα τόσο του κεφαλαίου 5 όσο και
του επόµενου κεφαλαίου 6 στην QBE.
¶·Ú¿‰ÂÈÁÌ· 5.1
Ας δούµε µία αρκετά απλή Βάση ∆εδοµένων: Έστω ότι οργανώνουµε σε Βάση
∆εδοµένων τα στοιχεία ενός Πανεπιστηµίου. Βέβαια για λόγους απλότητας θα
θεωρήσουµε ότι στη συγκεκριµένη Βάση ∆εδοµένων έχουµε το ελάχιστο δυνατό
σύνολο πληροφορίας. Έτσι, έχουµε τους παρακάτω πίνακες (µε έντονα γράµµατα είναι τα πεδία που αποτελούν το κλειδί για κάθε πίνακα):
∆ª∏ª∞ (ΟΝΟΜΑ, ΕΤΟΣ_Ι∆ΡΥΣΗΣ)
∫∞£∏°∏∆∏™ (ΟΝΟΜΑ, ΕΠΩΝΥΜΟ, ΠΑΤΡΩΝΥΜΟ, ΒΑΘΜΙ∆Α, ΗΜ_ΓΕΝ)
º√π∆∏∆∏™ (ΟΝΟΜΑ, ΕΠΩΝΥΜΟ, ΠΑΤΡΩΝΥΜΟ, ΑΜ, ΗΜ_ΓΕΝ)
ª∞£∏ª∞ (ΚΩ∆ΙΚΟΣ, ΟΝΟΜΑ, ΕΤΟΣ_∆Ι∆ΑΣΚ)
Στους παραπάνω πίνακες θεωρήσαµε, για λόγους απλότητας ότι το όνοµα κάθε
τµήµατος είναι µοναδικό, ότι κάθε µάθηµα έχει ένα κωδικό που το χαρακτηρίζει µε µοναδικό τρόπο, ότι κάθε φοιτητής έχει µοναδικό Αριθµό Μητρώου και
ότι ο Καθηγητής µπορεί να έχει ως κλειδί το ονοµατεπώνυµο.
Ορίζουµε επίσης µερικές σχέσεις:
∫∞£_∆ª∏ª∞ (ΟΝΟΜΑ__Κ, ΕΠΩΝΥΜΟ_Κ, ΟΝΟΜΑ_Τ)
º√π∆_∆ª∏ª∞ (ΑΜ, ΟΝΟΜΑ)
º√π∆_ª∞£ (ΑΜ, ΚΩ∆ΙΚΟΣ)
∫∞£_ª∞£ (ΟΝΟΜΑ, ΕΠΩΝΥΜΟ, ΚΩ∆ΙΚΟΣ)
Από τις παραπάνω σχέσεις η ΚΑΘ_ΤΜΗΜΑ είναι σχέση Ν προς Μ, η
ΦΟΙΤ_ΤΜΗΜΑ σχέση Ν προς 1, η ΦΟΙΤ_ΜΑΘ σχέση Ν προς Μ και η
ΚΑΘ_ΜΑΘ σχέση 1 προς Ν. (Κάνουµε την παραδοχή ότι κάθε µάθηµα διδάσκεται µόνο από έναν Καθηγητή).

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

119

KEºA§AIO 5: H °§ø™™∞ Eƒø∆∏™∂ø¡ SQL

120

¶·Ú¿‰ÂÈÁÌ· 5.2
Τα δεδοµένα που εισάγουµε (θεωρητικά) σε µία Βάση ∆εδοµένων είναι πολύ λίγα για να
απαιτούν πραγµατικά τη χρήση Βάσης ∆εδοµένων, αλλά είναι χαρακτηριστικά και θα µας
εξυπηρετήσουν για τα παραδείγµατα και τις ασκήσεις. Ακολουθούν οι πίνακες (µε έντονα
γράµµατα είναι τα πεδία που αποτελούν το κλειδί για κάθε πίνακα):
ΤΜΗΜΑ
ΟΝΟΜΑ

ΕΤΟΣ_Ι∆ΡΥΣΗΣ

Μαθηµατικό

1961

Φυσικό

1968

Πληροφορικής

1994

KAΘHΓHTHΣ
ΟΝΟΜΑ

EΠΩNYMO

ΠΑΤΡΩΝΥΜΟ

ΒΑΘΜΙ∆Α

ΗΜ_ΓΕΝ

Ειρήνη

Νικολαΐδη

Μιχαήλ

Καθηγητής

19-03-1956

Κωνσταντίνος

Μακρής

Νικόλαος

Επίκουρος

18-07-1960

Μιχαήλ

Βαρδής

Νικόλαος

Λέκτορας

03-01-1947

Μιχάλης

Ξανθός

Νικόλαος

Λέκτορας

20-08-1968

Χρήστος

Χρήστου

Βασίλειος

Λέκτορας

19-07-1966

ΟΝΟΜΑ

EΠΩNYMO

ΠΑΤΡΩΝΥΜΟ

ΑM

ΗΜ_ΓΕΝ

Νικόλαος

Βασιλείου

Σωτήριος

19072

20-08-1978

Ελένη

Βασιλείου

Σωτήριος

19071

22-03-1980

Νικόλαος

Βαρδής

Μιχαήλ

19109

03-01-1977

Χρήστος

Χρήστου

Νικόλαος

19345

20-08-1978

Χρήστος

Χρήστου

Βασίλειος

19344

19-07-1976

Μαρίνα

Χατζή

Αθανάσιος

19409

10-10-1977

ΦOITHTHΣ

5.2 ∞¡∞∑∏∆∏™∏ ¢∂¢√ª∂¡ø¡ ™∆∏¡ SQL

121

MAΘHMA
KΩ∆IKOΣ

ΟΝΟΜΑ

ETOΣ ∆I∆AΣK

1045

Φυσική

Α

1089

Μαθηµατικά

Α

1134

Λογικός Σχεδιασµός

Β

1239

Γραµµική Άλγεβρα

Β

1667

Βάσεις ∆εδοµένων

Γ

1891

∆οµές ∆εδοµένων Ι

Γ

1892

∆οµές ∆εδοµένων ΙΙ

1992

Ποιότητα Λογισµικού

Ε

1998

Marketing

E

Τέλος, ας δώσουµε και τα δεδοµένα των σχέσεων που περιγράψαµε.
ΚΑΘ_ΤΜΗΜΑ
ΟΝΟΜΑ_Κ

ΕΠΩΝΥΜΟ_Κ

ΟΝΟΜΑ_Τ

Μιχαήλ

Βαρδής

Μαθηµατικό

Μιχαήλ

Βαρδής

Φυσικό

Ειρήνη

Νικολαΐδη

Κωνσταντίνος

Μακρής

Πληροφορικής

Μιχαήλ

Ξανθός

Μαθηµατικό

Μιχαήλ

Ξανθός

Φυσικό

Χρήστος

Χρήστου

ΦΟΙΤ_ΤΜΗΜΑ
AM

ΟΝΟΜΑ

19071

Μαθηµατικό

19072

Μαθηµατικό

19109

Φυσικό

19344

Πληροφορικής

19345

Πληροφορικής

19409

Φυσικό

Μαθηµατικό

Πληροφορικής

KEºA§AIO 5: H °§ø™™∞ Eƒø∆∏™∂ø¡ SQL

122

ΦΟΙΤ_ΜΑΘ
AM

KΩ∆IKOΣ

19071

1089

19071

1239

19072

1089

19109

1045

19409

1045

19409

1667

19345

1134

19345

1891

19345

1992

19344

1134

19344

1998

19334

1892

19334

1992

KAΘ_ΜΑΘ
ONOMA

EΠΩNYMO

KΩ∆IKOΣ

Μιχαήλ

Βαρδής

1045

Ειρήνη

Νικολαΐδη

1089

Χρήστος

Χρήστου

1134

Ειρήνη

Νικολαΐδη

1239

Μιχαήλ

Ξανθός

1667

Κωνσταντίνος

Μακρής

1891

Κωνσταντίνος

Μακρής

1892

Χρήστος

Χρήστου

1992

Κωνσταντίνος

Μακρής

1998

5.2 ∞¡∞∑∏∆∏™∏ ¢∂¢√ª∂¡ø¡ ™∆∏¡ SQL

Χρησιµοποιώντας ένα σύστηµα που έχετε στο σπίτι σας, εάν φυσικά έχετε, (για παράδειγµα, τη Microsoft Access) δηµιουργήστε µία
Βάση ∆εδοµένων µε τους πίνακες του παραδείγµατος 5.1 και εισάγετε τα πειραµατικά δεδοµένα του παραδείγµατος 5.2.

∂¡∆√§∂™ ∆∏™ SQL

Τώρα που έχουµε στη διάθεσή µας την περιγραφή των πινάκων µίας
Βάσης ∆εδοµένων και µερικά χαρακτηριστικά δεδοµένα, ας περάσουµε στην παρουσίαση των εντολών της SQL. Η πιο βασική εντολή
της SQL είναι η εντολή αναζήτησης δεδοµένων της µορφής
SELECT
FROM
WHERE

[‰›·]
[›Ó·Î˜]
[Û˘Óı‹ÎË]

To WHERE µπορεί και να παραλείπεται, ενώ η λίστα µε τα κατηγορήµατα µπορεί να αντικαθίσταται µε αστερίσκο (*) που σηµαίνει (όλα
τα πεδία). Η συνθήκη µπορεί να χρησιµοποιεί τους µαθηµατικούς
τελεστές «>», «<», «<>», «>=», «<=» και «=», καθώς και τους λογικούς τελεστές «AND», «OR» και «NOT». Υπάρχουν και άλλοι τελεστές της SQL που µπορούν να εµφανίζονται στη συνθήκη, τους οποίους όµως θα παρουσιάσουµε αργότερα.
Ας δούµε µερικά παραδείγµατα εντολών σε SQL, βασισµένα στη
Βάση ∆εδοµένων και τα δεδοµένα των παραδειγµάτων 5.1 και 5.2.
Έστω ότι θέλουµε να βρούµε όλα τα στοιχεία όλων των φοιτητών. Η
εντολή θα είναι
SELECT
FROM

*
º√π∆∏∆∏™

Το αποτέλεσµα της εκτέλεσης αυτής της εντολής θα είναι να δοθεί ως
απάντηση ο πλήρης πίνακας µε όλα τα στοιχεία όλων των φοιτητών
που περιέχονται στη Βάση ∆εδοµένων.
Έστω τώρα ότι θέλουµε να δούµε µόνο το ονοµατεπώνυµο των φοιτητών που έχουν γεννηθεί στις 20 Αυγούστου 1978. Η εντολή τότε θα είναι
SELECT
FROM

√¡√ª∞, ∂¶ø¡Àª√
º√π∆∏∆∏™

123

¢Ú·ÛÙËÚÈfiÙËÙ· 5.2

KEºA§AIO 5: H °§ø™™∞ Eƒø∆∏™∂ø¡ SQL

124

WHERE

∏ª_°∂¡= ‘20–08–1978’

Το αποτέλεσµα της εκτέλεσης αυτής της εντολής είναι ο πίνακας
ONOMA

EΠΩNYMO

Νικόλαος

Βασιλείου

Χρήστος

Χρήστου

Παρατηρήστε ότι παρόλο που ζητήσαµε τους φοιτητές που έχουν γεννηθεί στις 20–08–1978, η ηµεροµηνία γέννησης δεν εµφανίστηκε γιατί
στο SELECT ζητήσαµε µόνο το όνοµα και το επώνυµο.
Εάν θέλουµε µπορούµε να έχουµε περισσότερους από έναν πίνακες
στο FROM. Έτσι, αν θέλουµε το καρτεσιανό γινόµενο των πινάκων
ΤΜΗΜΑ και ΜΑΘΗΜΑ, τότε αυτό δίνεται από την ερώτηση σε SQL
SELECT
FROM

*
∆ª∏ª∞, ª∞£∏ª∞

Ας δούµε άλλο ένα παράδειγµα µε δύο πίνακες. Προσέξτε ότι στο
παράδειγµα που ακολουθεί χρησιµοποιούµε το όνοµα του πίνακα και
το όνοµα του πεδίου χωρισµένα µε τελεία για να ξεχωρίσουµε για πιο
πεδίο µιλάµε. Έστω ότι θέλουµε το καρτεσιανό γινόµενο των πινάκων
ΦΟΙΤΗΤΗΣ και ΚΑΘΗΓΗΤΗΣ, αλλά να δούµε µόνο τα πεδία
ΟΝΟΜΑ και ΕΠΩΝΥΜΟ τόσο για τους φοιτητές όσο και για τους
καθηγητές. Επίσης, βάζουµε ως περιορισµό οι καθηγητές να είναι στη
βαθµίδα «Καθηγητής» και οι φοιτητές να έχουν αριθµό µητρώου
µικρότερο του 19.100. Η ερώτηση σε SQL είναι:
SELECT
FROM
WHERE

º√π∆∏∆∏™.√¡√ª∞, º√π∆∏∆∏™.∂¶ø¡Àª√,
∫∞£∏°∏∆∏™.√¡√ª∞, ∫∞£∏°∏∆∏™.∂¶ø¡Àª√
º√π∆∏∆∏™, ∫∞£∏°∏∆∏™
(∫∞£∏°∏∆∏™.µ∞£ªπ¢∞ ="∫·ıËÁËÙ‹˜") AND
(º√π∆∏∆∏™.∞ª<19100);

Το αποτέλεσµα της εκτέλεσης της παραπάνω εντολής είναι ο πίνακας
ONOMA

EΠΩNYMO

ONOMA

EΠΩNYMO

Νικόλαος

Βασιλείου

Ειρήνη

Νικολαΐδη

Ελένη

Βασιλείου

Ειρήνη

Νικολαΐδη

5.2 ∞¡∞∑∏∆∏™∏ ¢∂¢√ª∂¡ø¡ ™∆∏¡ SQL

Έστω ότι θέλουµε να βρούµε τα ονόµατα των µαθηµάτων που έχουν
κωδικό µικρότερο από 1100, στη Βάση ∆εδοµένων του παραδείγµατος 5.1 µε τα δεδοµένα του παραδείγµατος 5.2. ∆ώστε την ερώτηση σε SQL και τον πίνακα µε το αναµενόµενο αποτέλεσµα.

Έστω ότι θέλουµε να βρούµε τα ονόµατα και τα επώνυµα των καθηγητών που έχουν γεννηθεί µετά την 1η Ιανουαρίου 1960, στη Βάση
∆εδοµένων του παραδείγµατος 5.1 µε τα δεδοµένα του παραδείγµατος 5.2. ∆ώστε την ερώτηση σε SQL και τον πίνακα µε το αναµενόµενο αποτέλεσµα.

Έστω ότι θέλουµε να βρούµε το καρτεσιανό γινόµενο του πίνακα µε
τα ονόµατα των µαθηµάτων που διδάσκονται στο 1ο έτος και των
τµηµάτων που έχουν ιδρυθεί πριν το 1980, στη Βάση ∆εδοµένων του
παραδείγµατος 5.1 µε τα δεδοµένα του παραδείγµατος 5.2. ∆ώστε την
ερώτηση σε SQL και τον πίνακα µε το αναµενόµενο αποτέλεσµα.

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

5.2.2 ¢È¿Ù·ÍË ÙˆÓ ·ÔÙÂÏÂÛÌ¿ÙˆÓ

Στην προηγούµενη ενότητα παρουσιάσαµε τη βασική εντολή
SELECT…FROM…WHERE… των ερωτήσεων σε SQL. ∆εν µιλήσαµε
όµως καθόλου για διάταξη των αποτελεσµάτων της ερώτησης. Αυτή
η διάταξη επιτυγχάνεται µε την εντολή ORDER BY την οποία θα
παρουσιάσουµε σε αυτή την ενότητα.
Η εντολή ORDER BY ακολουθεί το WHERE και προσδιορίζει τα
πεδία µε βάση τα οποία θα γίνει η διάταξη των γραµµών των πινάκων.
Ας δούµε ένα παράδειγµα. Στην προηγούµενη ενότητα δώσαµε σε
SQLτην εντολή:

125

ÕÛÎËÛË
·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
5.2

ÕÛÎËÛË
·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
5.3

ÕÛÎËÛË
·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
5.4

¢Ú·ÛÙËÚÈfiÙËÙ· 5.3

KEºA§AIO 5: H °§ø™™∞ Eƒø∆∏™∂ø¡ SQL

126

SELECT
FROM
WHERE

º√π∆∏∆∏™.√¡√ª∞, º√π∆∏∆∏™.∂¶ø¡Àª√,
∫∞£∏°∏∆∏™.√¡√ª∞, ∫∞£∏°∏∆∏™.∂¶ø¡Àª√
º√π∆∏∆∏™, ∫∞£∏°∏∆∏™
(∫∞£∏°∏∆∏™.µ∞£ªπ¢∞ ="∫·ıËÁËÙ‹˜") AND
(º√π∆∏∆∏™.∞ª<19100);

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

º√π∆∏∆∏™.√¡√ª∞, º√π∆∏∆∏™.∂¶ø¡Àª√,
∫∞£∏°∏∆∏™.√¡√ª∞, ∫∞£∏°∏∆∏™.∂¶ø¡Àª√
FROM
º√π∆∏∆∏™, ∫∞£∏°∏∆∏™
WHERE
(∫∞£∏°∏∆∏™.µ∞£ªπ¢∞ ="∫·ıËÁËÙ‹˜") AND
(º√π∆∏∆∏™.∞ª<19100)
ORDER BY º√π∆∏∆∏™.∂¶ø¡Àª√, º√π∆∏∆∏™.√¡√ª∞;
Το αποτέλεσµα της εκτέλεσης της παραπάνω εντολής είναι ο παρακάτω πίνακας
ONOMA

EΠΩNYMO

ONOMA

EΠΩNYMO

Eλένη

Βασιλείου

Ειρήνη

Νικολαΐδη

Νικόλαος

Βασιλείου

Ειρήνη

Νικολαΐδη

Προσέξτε, ότι σε αντίθεση µε το παράδειγµα της προηγούµενης ενότητας, η σειρά των γραµµών του πίνακα άλλαξε. Αυτό οφείλεται στο
ότι ζητήσαµε να υπάρχει διάταξη πρώτα στο επώνυµο του φοιτητή
και µετά στο όνοµα. Επειδή και τα δύο επώνυµα ήταν ίδια τότε έγινε
διάταξη στα ονόµατα και φυσικά το «Ελένη» προηγήθηκε του
«Νικόλαος».
Η διάταξη µπορεί να είναι είτε αύξουσα είτε φθίνουσα. Για αύξουσα
διάταξη βάζουµε µετά από το όνοµα του πεδίου το «ASC», ενώ για
φθίνουσα το «DESC». Όταν δεν τοποθετείται κάτι από τα δύο, τότε
εννοείται ότι η διάταξη πρέπει να είναι αύξουσα. Έτσι, αν στην παραπάνω εντολή θέλαµε να παρουσιάσουµε τα αποτελέσµατα κατά φθίνουσα διάταξη των επωνύµων των φοιτητών και κατά αύξουσα διάταξη των ονοµάτων των φοιτητών, τότε η αντίστοιχη εντολή σε SQL
θα ήταν:

5.2 ∞¡∞∑∏∆∏™∏ ¢∂¢√ª∂¡ø¡ ™∆∏¡ SQL

127

SELECT

º√π∆∏∆∏™.√¡√ª∞, º√π∆∏∆∏™.∂¶ø¡Àª√,
∫∞£∏°∏∆∏™.√¡√ª∞, ∫∞£∏°∏∆∏™.∂¶ø¡Àª√
FROM
º√π∆∏∆∏™, ∫∞£∏°∏∆∏™
WHERE
(∫∞£∏°∏∆∏™.µ∞£ªπ¢∞ ="∫·ıËÁËÙ‹˜") AND
(º√π∆∏∆∏™.∞ª<19100)
ORDER BY º√π∆∏∆∏™.∂¶ø¡Àª√ DESC, º√π∆∏∆∏™.√¡√ª∞;

Ξαναγράψτε τις ερωτήσεις SQL των ασκήσεων αυτοαξιολόγησης 2,
3 και 4 του κεφαλαίου 5. Τώρα όµως διατάξτε (1) τα ονόµατα των
µαθηµάτων της άσκησης 2 κατά αύξουσα σειρά, (2) τους καθηγητές
της άσκησης 3 κατά φθίνουσα σειρά των επωνύµων και των µικρών
ονοµάτων και (3) τα ονόµατα των µαθηµάτων της άσκησης 4 κατά
φθίνουσα σειρά και τα ονόµατα των τµηµάτων κατά αύξουσα σειρά.
∆ώστε τις ερωτήσεις σε SQL και τους πίνακες µε τα αναµενόµενα
αποτελέσµατα για κάθε περίπτωση.

Πειραµατιστείτε σε ένα Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων
υλοποιώντας τις παραπάνω εντολές σε SQL και ελέγχοντας την
ορθότητα των αποτελεσµάτων σας. Επίσης πειραµατιστείτε µε παρόµοιες εντολές και βεβαιωθείτε ότι γνωρίζετε αρκετά καλά το αντικείµενο αυτής της ενότητας, πριν προχωρήσετε στην επόµενη.
5.2.3 §ÔÈ¤˜ ÂÓÙÔϤ˜ ÛÙË Û˘Óı‹ÎË

Στην ενότητα 5.2.1 µιλήσαµε για τη συνθήκη που ακολουθεί το
WHERE και είπαµε για τους τελεστές που χρησιµοποιεί. Σε αυτή την
ενότητα θα µιλήσουµε για τους τελεστές «LIKE» και «NULL», που η
SQL επιτρέπει να χρησιµοποιούνται στη συνθήκη.
Ο τελεστής «LIKE» επιτρέπει τη σύγκριση strings (συµβολοσειρών).
Χρησιµοποιεί το «%» που σηµαίνει «οποιαδήποτε σειρά χαρακτήρων»
και το «–» που σηµαίνει «ένας οποιοσδήποτε χαρακτήρας». Έτσι, η
εντολή
LIKE ‘%˘%’
σηµαίνει οποιοδήποτε κείµενο που έχει µέσα του τους χαρακτήρες
(substring) «ης». Ενώ η εντολή

ÕÛÎËÛË
·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
5.5

¢Ú·ÛÙËÚÈfiÙËÙ· 5.4

KEºA§AIO 5: H °§ø™™∞ Eƒø∆∏™∂ø¡ SQL

128

LIKE ‘ª–ÓÔ˜’
σηµαίνει όλες τις λέξεις που έχουν «Μ» ως πρώτο γράµµα, οποιοδήποτε χαρακτήρα για δεύτερο γράµµα και µετά το επίθεµα «νος». Άρα,
θα µπορούσαν να γίνουν δεκτές οι λέξεις «Μάνος», «Μίνος»,
«Μόνος», κτλ. Ας δούµε τώρα πώς θα µπορούσαµε να βρούµε µε τη
χρήση του LIKE τα ονόµατα και τα επώνυµα των φοιτητών που το
επώνυµό τους αρχίζει από το γράµµα «Β». Η ερώτηση σε SQL και ο
αντίστοιχος πίνακας ακολουθούν:
SELECT
FROM
WHERE

√¡√ª∞, ∂¶ø¡Àª√,
º√π∆∏∆∏™
∂¶ø¡Àª√ LIKE ‘µ%’;
ONOMA

EΠΩNYMO

Νικόλαος

Βασιλείου

Eλένη

Χρήστου

Nικόλαος

Bαρδής

Ένας άλλος χρήσιµος τελεστής που χρησιµοποιείται στη συνθήκη
είναι ο τελεστής «NULL» που χρησιµοποιείται για να ελέγξουµε εάν
ένα πεδίο είναι κενό ή όχι. Ο τελεστής αυτός συνήθως συντάσσεται
µε «IS NULL» που σηµαίνει «είναι κενό», ή µε «IS NOT NULL» που
σηµαίνει «δεν είναι κενό». Έτσι, η παρακάτω ερώτηση σε SQL σηµαίνει «βρες τα ονόµατα και τα επώνυµα των φοιτητών που το πατρώνυµό τους έχει κάποια τιµή (δηλαδή δεν είναι κενό)»:
SELECT
FROM
WHERE

√¡√ª∞, ∂¶ø¡Àª√,
º√π∆∏∆∏™
¶∞∆ƒø¡Àª√ IS NOT NULL;

Προσοχή, ένα πολύ συχνό µπέρδεµα που γίνεται είναι να συγχέουµε
την κενή τιµή µε την τιµή 0 ή µε τον χαρακτήρα «κενό». Η τιµή 0 είναι
µία τιµή, όπως τιµή είναι και ο χαρακτήρας «κενό». Αντίθετα κενό
«NULL» σηµαίνει έλλειψη τιµής, δηλαδή καθόλου τιµή σε αυτό το
πεδίο. Η παραπάνω εντολή σε SQL θα είχε αποτέλεσµα την εκτύπωση των ονοµατεπωνύµων όλων των φοιτητών, αφού δεν έχουµε εισάγει κάποιον µε κενό πατρώνυµο.

5.2 ∞¡∞∑∏∆∏™∏ ¢∂¢√ª∂¡ø¡ ™∆∏¡ SQL

Έστω ότι θέλουµε να βρούµε το όνοµα και το επώνυµο των καθηγητών που το µικρό τους όνοµα αρχίζει από ‘Μιχ’ στη Βάση ∆εδοµένων του παραδείγµατος 5.1 µε τα δεδοµένα του παραδείγµατος
5.2. ∆ώστε την ερώτηση σε SQL και τον πίνακα µε το αναµενόµενο
αποτέλεσµα.

Έστω ότι θέλουµε να βρούµε τα ονόµατα των τµηµάτων που έχουν
κενό έτος ίδρυσης στη Βάση ∆εδοµένων του παραδείγµατος 5.1 µε
τα δεδοµένα του παραδείγµατος 5.2. ∆ώστε την ερώτηση σε SQL
και τον πίνακα µε το αναµενόµενο αποτέλεσµα.

129

ÕÛÎËÛË
·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
5.6

ÕÛÎËÛË
·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
5.7

5.2.4 ªÂÙÔÓÔÌ·Û›· ÈӿΈÓ

Μέχρι τώρα µιλήσαµε για απλές εντολές σε SQL, χωρίς να συζητήσουµε για µετονοµασία πινάκων. Σε αυτή την ενότητα θα µιλήσουµε
για πιο πολύπλοκες ερωτήσεις σε SQL. Αρκετές φορές σε µερικές
ερωτήσεις έχουµε πολλούς πίνακες και τότε είναι πρακτικό να µετονοµάζουµε κάποιους πίνακες για µεγαλύτερη ευκολία στη συγγραφή
των ερωτήσεων σε SQL. Ας δούµε ξανά το παράδειγµα της ενότητας
5.2.2 έχοντας µετονοµάσει τους πίνακες:
SELECT
FROM
WHERE
ORDER BY

º.√¡√ª∞, º.∂¶ø¡Àª√,
∫.√¡√ª∞, ∫.∂¶ø¡Àª√
º√π∆∏∆∏™ º.∫∞£∏°∏∆∏™ ∫
(∫.µ∞£ªπ¢∞ ="∫·ıËÁËÙ‹˜") AND
(º.∞ª<19100)
º.∂¶ø¡Àª√, º.√¡√ª∞;

Παρατηρήστε ότι µετονοµάσαµε τον πίνακα ΦΟΙΤΗΤΗΣ σε Φ και τον
πίνακα ΚΑΘΗΓΗΤΗΣ σε Κ και χρησιµοποιήσαµε τα σύντοµα ονόµατα για µεγαλύτερη ευκολία στη συγγραφή της ερώτησης.

Επαναλάβατε όλες τις ερωτήσεις που έχετε γράψει σε SQL, οι οποίες
έχουν περισσότερους από ένα πίνακα, µετονοµάζοντας τους πίνακες.

¢Ú·ÛÙËÚÈfiÙËÙ· 5.5

KEºA§AIO 5: H °§ø™™∞ Eƒø∆∏™∂ø¡ SQL

130

5.2.5 ∂ÓÙÔϤ˜ Û˘ÓfiψÓ

ONOMA
Βασίλειος
Μιχαήλ
Νικόλαος
Νικόλαος
Νικόλαος

Σε αυτή την ενότητα θα µιλήσουµε για ερωτήσεις SQL που είναι σε
πολλά επίπεδα και γενικά για το πώς εντολές από τη θεωρία συνόλων
µπορούν να χρησιµοποιηθούν στις ερωτήσεις SQL. Ας αρχίσουµε
όµως µε τον τελεστή «DISTINCT», ο οποίος θα µας φανεί χρήσιµος
στη συνέχεια. Ας δούµε την παρακάτω ερώτηση σε SQL:
SELECT
FROM
ORDER BY

¶∞∆ƒø¡Àª√
∫∞£∏°∏∆∏™
¶∞∆ƒø¡Àª√;

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

ONOMA
Βασίλειος
Μιχαήλ
Νικόλαος

SELECT
FROM
ORDER BY

DISTINCT ¶∞∆ƒø¡Àª√
∫∞£∏°∏∆∏™
¶∞∆ƒø¡Àª√;

Με αυτόν το τρόπο εξασφαλίζουµε ότι κάθε πατρώνυµο θα εµφανιστεί µόνο µία φορά και τα αποτελέσµατα δίνονται στον πίνακα δίπλα.
Ο τελεστής «DISTINCT» είναι πολύ χρήσιµος στις εντολές συνόλων
που θα αναλύσουµε ακολούθως. Θα µιλήσουµε για τη χρήση των
«IN», «ALL», «ANY», «EXISTS», «NOT EXISTS» και «UNIQUE»
στις ερωτήσεις µε SQL. Επίσης, θα παρουσιάσουµε εν συντοµία τις
πράξεις συνόλων «UNION», «INTERESECT», «CONTAINS» και
«EXCEPT». Ας αρχίσουµε µε ένα παράδειγµα:
SELECT
FROM
WHERE

DISTINCT ONOMA
º√π∆∏∆∏™
ONOMA IN (SELECT
FROM
OR
√¡√ª∞ IN (SELECT
FROM

DISTINCT ONOMA
∫∞£∏°∏∆∏™)
DISTINCT ¶∞∆ƒø¡Àª√
∫∞£∏°∏∆∏™);

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

5.2 ∞¡∞∑∏∆∏™∏ ¢∂¢√ª∂¡ø¡ ™∆∏¡ SQL

131

ρικό επίπεδο (το SELECT DISTINCT ΟΝΟΜΑ FROM ΦΟΙΤΗΤΗΣ)
και ένα εσωτερικό µε τα άλλα δύο SELECT από τον πίνακα ΚΑΘΗΓΗΤΗΣ. Θεωρήστε ότι η απάντηση στην ερώτηση αρχίζει από τα
εσωτερικά επίπεδα προς τα εξωτερικά. Έτσι, αρχικά θεωρούµε ότι θα
απαντηθεί η ερώτηση «SELECT DISTINCT ΟΝΟΜΑ FROM
ΚΑΘΗΓΗΤΗΣ». Αυτή η ερώτηση θα δώσει ένα σύνολο απαντήσεων
και ειδικότερα τα (Ειρήνη, Κωνσταντίνος, Μιχαήλ, Μιχάλης, Χρήστος). Επίσης, η ερώτηση «SELECT DISTINCT ΠΑΤΡΩΝΥΜΟ
FROM ΚΑΘΗΓΗΤΗΣ» θα δώσει ένα σύνολο απαντήσεων και ειδικότερα τα (Μιχαήλ, Νικόλαος, Βασίλειος). Ο τελεστής «ΙΝ» ελέγχει,
εάν κάποιο στοιχείο που είναι αποτέλεσµα της ερώτησης του πρώτου
επιπέδου «SELECT DISTINCT ONOMA FROM FOITHTHS» ανήκει σε ένα από τα δύο σύνολα (σε ένα από τα δύο λόγω του τελεστή
«OR»). Έτσι, οι τιµές που προκύπτουν από την ερώτηση του εξωτερικού επιπέδου (Νικόλαος, Ελένη, Χρήστος, Μαρίνα) θα ελεχθούν εάν
ανήκουν στα σύνολα απαντήσεων των ερωτήσεων των εσωτερικών
επιπέδων. Η απάντηση στη συγκεκριµένη ερώτηση θα είναι φυσικά ο
δίπλα πίνακας.
Με παρόµοιο τρόπο συντάσσεται και η «ANY» που πρέπει να ακολουθεί κάποιον από τους τελεστές «=», «<», «>», «<=», «>=» και
«<>». Έτσι, η εντολή που ακολουθεί σηµαίνει «βρες το ονοµατεπώνυµο ενός φοιτητή που η ηµεροµηνία γέννησής του να είναι ίδια µε
µία τουλάχιστον ηµεροµηνία γέννησης ενός καθηγητή»:
SELECT
FROM
WHERE

ONOMA, ∂¶ø¡Àª√
º√π∆∏∆∏™
∏ª_°∂¡ = ANY
(SELECT
FROM

HM_°∂ª
∫∞£∏°∏∆∏™);

Όπως συντάσσεται η «ΑΝΥ» συντάσσεται και η «ALL» που σηµαίνει «µε όλα». Έτσι, η παρακάτω ερώτηση σηµαίνει «βρες το ονοµατεπώνυµο ενός φοιτητή που να είναι µεγαλύτερος σε ηλικία από όλους
τους καθηγητές».
SELECT
FROM
WHERE

ONOMA, ∂¶ø¡Àª√
º√π∆∏∆∏™
∏ª_°∂¡ < ALL
(SELECT
FROM

HM_°∂ª
∫∞£∏°∏∆∏™);

Ας προχωρήσουµε τώρα µε την εντολή «EXISTS (Ε)». Η εντολή αυτή

ONOMA
Νικόλαος
Xρήστος

KEºA§AIO 5: H °§ø™™∞ Eƒø∆∏™∂ø¡ SQL

132

ελέγχει αν υπάρχει έστω και µία απάντηση στην ερώτηση «Ε». Εάν
υπάρχει, τότε επιστρέφει «αληθές» στη συνθήκη. Αντίθετα η εντολή
«NOT EXISTS (E)» επιστρέφει «αληθές» στη συνθήκη µόνο εάν δεν
υπάρχει καµία απάντηση στην ερώτηση «Ε».
Η εντολή «UNIQUE (E)» εξετάζει την ερώτηση «Ε» και επιστρέφει
«αληθές» στη συνάρτηση µόνο εάν δεν υπάρχουν διπλές εγγραφές στο
αποτέλεσµα της ερώτησης «Ε».
Η SQL υποστηρίζει και τις εντολές συνόλων «UNION»,
«INTERESECT», «CONTAINS» και «EXCEPT». Η εντολή
«UNION» περιγράφει την ένωση δύο συνόλων. Ας δούµε ένα παράδειγµα:
(SELECT
(FROM
(WHERE
UNION
(SELECT
(FROM
(WHERE

ONOMA, ∂¶ø¡Àª√
º√π∆∏∆∏™
∏ª_°∂¡ LIKE ‘– – – 07– – – – – ’)
ONOMA, ∂¶ø¡Àª√
∫∞£∏°∏∆∏™
∏ª_°∂¡ LIKE ‘– – – 07– – – – – ’);

Η προηγούµενη ερώτηση σε SQL δίνει σαν απάντηση τα ονοµατεπώνυµα των φοιτητών και των καθηγητών που έχουν γεννηθεί τον 7ο
µήνα. Προσέξτε ότι έχουµε ως απάντηση τα δύο σύνολα των ονοµατεπωνύµων και χρησιµοποιούµε την εντολή «UNION» για να κάνουµε την ένωση των συνόλων.
Αντίστοιχη χρήση έχει και η εντολή «INTERSECT» που δίνει την
τοµή δύο συνόλων και η εντολή «EXEPT» που δίνει τη διαφορά δύο
συνόλων. Τέλος, η εντολή «CONTAINS» συγκρίνει δύο σύνολα και
επιστρέφει «αληθές» στη συνθήκη, εάν το πρώτο είναι υποσύνολο του
δευτέρου.
ÕÛÎËÛË
·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
5.8

∆ώστε την ερώτηση σε SQL που να βρίσκει τα διαφορετικά επώνυµα των φοιτητών της Βάσης ∆εδοµένων του παραδείγµατος 5.1 µε
τα δεδοµένα του παραδείγµατος 5.2. ∆ώστε τον πίνακα µε το αναµενόµενο αποτέλεσµα, µε την απάντηση διαταγµένη κατά φθίνουσα
σειρά.

5.2 ∞¡∞∑∏∆∏™∏ ¢∂¢√ª∂¡ø¡ ™∆∏¡ SQL

∆ώστε την ερώτηση σε SQL που να βρίσκει τα ονοµατεπώνυµα των
φοιτητών της Βάσης ∆εδοµένων του παραδείγµατος 5.1 µε τα δεδοµένα του παραδείγµατος 5.2, οι οποίοι έχουν ηµεροµηνία γέννησης
ίδια µε την ηµεροµηνία γέννησης ενός τουλάχιστον καθηγητή.
∆ώστε την ερώτηση σε SQL µε δύο τρόπους (1) χρησιµοποιώντας
την «IN» και (2) χρησιµοποιώντας την «ΑΝΥ». Tέλος, δώστε τον
πίνακα µε το αναµενόµενο αποτέλεσµα.

∆ώστε την ερώτηση σε SQL που να βρίσκει το ονοµατεπώνυµο του
φοιτητή µε τη µεγαλύτερη ηλικία από τη Βάση ∆εδοµένων του παραδείγµατος 5.1 µε τα δεδοµένα του παραδείγµατος 5.2. Eπίσης δώστε
τον πίνακα µε το αναµενόµενο αποτέλεσµα.

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

5.2.6 ™‡Ó‰ÂÛË ÈӿΈÓ

Σε αυτή την ενότητα θα µιλήσουµε για τη σύνδεση πινάκων, που είναι
µία βασική λειτουργία, όταν θέλουµε να δώσουµε πολύπλοκες ερωτήσεις. Η SQL υποστηρίζει τις συνδέσεις «INNER JOIN», «LEFT
OUTER JOIN», «RIGHT OUTER JOIN» και «FULL OUTER JOIN».
Το «INNER» και το «OUTER» κατά κανόνα παραλείπονται. Έτσι,
όταν γράφουµε σε µία ερώτηση «JOIN», τότε εννοούµε «INNER
JOIN».
Ας δούµε ένα παράδειγµα µιας πολύπλοκης ερώτησης. Έστω ότι
θέλουµε να δούµε τα ονοµατεπώνυµα των φοιτητών και το όνοµα και
το έτος ίδρυσης του τµήµατος στο οποίο ανήκουν. Αυτή είναι πολύ
απλή ερώτηση για κάποιο χρήστη της Βάσης ∆εδοµένων, αλλά στην
πραγµατικότητα απαιτεί την άντληση δεδοµένων από τρεις διαφορετικούς πίνακες: Θα χρειαστεί να πάρουµε τα ονοµατεπώνυµα των φοιτητών από τον πίνακα ΦΟΙΤΗΤΕΣ, τα έτη ίδρυσης των τµηµάτων από
τον πίνακα ΤΜΗΜΑ, ενώ θα χρειαστούµε και τον πίνακα

133

ÕÛÎËÛË
·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
5.9

ÕÛÎËÛË
·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
5.10

¢Ú·ÛÙËÚÈfiÙËÙ· 5.6

KEºA§AIO 5: H °§ø™™∞ Eƒø∆∏™∂ø¡ SQL

134

ΦΟΙΤ_ΤΜΗΜΑ για να βρούµε τη σχέση των φοιτητών µε κάθε
τµήµα. Η ερώτηση σε SQL είναι η εξής:
SELECT
FROM

º√π∆∏∆∏™.√¡√ª∞, º√π∆∏∆∏™.∂¶ø¡Àª√,
∆ª∏ª∞.√¡√ª∞, ∆ª∏ª∞.∂∆√™_π¢ƒÀ™∏™
(º√π∆∏∆∏™
INNER JOIN º√π∆_∆ª∏ª∞
ON º√π∆∏∆∏™.∞ª=º√π∆_∆ª∏ª∞.∞ª)
INNER JOIN ∆ª∏ª∞
√¡ º√π∆_∆ª∏ª∞.√¡√ª∞=∆ª∏ª∞.√¡√ª∞);

Παρατηρήστε ότι έχουµε δύο συνδέσεις (joins) ανάµεσα σε πίνακες
για να πετύχουµε το επιδιωκόµενο αποτέλεσµα. Το αποτέλεσµα αυτής
της εντολής είναι ένας πίνακας µε τα παρακάτω αποτελέσµατα:
ΟΝΟΜΑ ΦΟΙΤHTH ΕΠΩΝΥΜΟ

ΟΝΟΜΑ ΤΜΗMATOΣ

ΕΤΟΣ_Ι∆ΡΥΣΗΣ

Νικόλαος

Βασιλείου

Μαθηµατικό

1961

Ελένη

Βασιλείου

Μαθηµατικό

1961

Νικόλαος

Βαρδής

Φυσικό

1968

Χρήστος

Χρήστου

Πληροφορικής

1994

Χρήστος

Χρήστου

Πληροφορικής

1994

Μαρίνα

Χατζή

Φυσικό

1968

Προσέξτε ότι στον παραπάνω πίνακα δεν έχει γίνει λάθος µε την διπλή
εµφάνιση του «Χρήστος Χρήστου», απλά υπήρχαν δύο φοιτητές µε
ίδιο ονοµατεπώνυµο, αλλά διαφορετικό πατρώνυµο στη Βάση ∆εδοµένων του παραδείγµατος.
Ας δούµε άλλο ένα παράδειγµα µε σύνδεση. Έστω ότι θέλουµε να
απαντήσουµε στην απόλυτα λογική ερώτηση «βρείτε τον κατάλογο
των µαθηµάτων και ποιος καθηγητής διδάσκει κάθε µάθηµα». Αυτό
απαιτεί τη σύνδεση µόνο δύο πινάκων: Του πίνακα ΜΑΘΗΜΑ µε τον
πίνακα ΚΑΘ_ΜΑΘ. Παρατηρήστε ότι δεν απαιτείται η χρήση και του
πίνακα ΚΑΘΗΓΗΤΗΣ, αφού η πληροφορία που χρειαζόµαστε (όνοµα
και επώνυµο καθηγητή) είναι επίσης αποθηκευµένη στον πίνακα
ΚΑΘ_ΜΑΘ. Η ερώτηση λοιπόν σε SQL θα είναι

5.2 ∞¡∞∑∏∆∏™∏ ¢∂¢√ª∂¡ø¡ ™∆∏¡ SQL

SELECT
FROM

135

ª∞£∏ª∞.√¡√ª∞,
∫∞£_ª∞£.√¡√ª∞, ∫∞£_ª∞£.∂¶ø¡Àª√
∫∞£_ª∞£ INNER JOIN ª∞£∏ª∞
ON ∫∞£_ª∞£.∫ø¢π∫√™=ª∞£∏ª∞.∫ø¢π∫√™;

Η απάντηση σε αυτή την ερώτηση θα είναι ο επόµενος πίνακας. Παρατηρήστε ότι ζητήσαµε να εµφανίζονται πρώτα τα µαθήµατα:
ΟΝΟΜΑ ΜΑΘ

ΟΝΟΜΑ ΚΑΘ

ΕΠΩΝΥΜΟ ΚΑΘ

Φυσική

Μιχαήλ

Βαρδής

Μαθηµατικά

Ειρήνη

Νικολαΐδη

Λογικός Σχεδιασµός

Χρήστος

Χρήστου

Γραµµική Άλγεβρα

Ειρήνη

Νικολαΐδη

Βάσεις ∆εδοµένων

Μιχαήλ

Ξανθός

∆οµές ∆εδοµένων Ι

Κωνσταντίνος

Μακρύς

∆οµές ∆εδοµένων ΙΙ

Κωνσταντίνος

Μακρύς

Ποιότητα Λογισµικού

Χρήστος

Χρήστου

Marketing

Κωνσταντίνος

Μακρύς

∆ώστε την ερώτηση σε SQL που να βρίσκει το επώνυµο, όνοµα και
πατρώνυµο κάθε φοιτητή που έχει πάρει µαθήµατα και τα µαθήµατα που έχει πάρει από τη Βάση ∆εδοµένων του παραδείγµατος 5.1
µε τα δεδοµένα του παραδείγµατος 5.2. ∆ώστε επίσης τον πίνακα µε
το αναµενόµενο αποτέλεσµα.

∆ώστε την ερώτηση σε SQL που να βρίσκει το επώνυµο και τον
αριθµό µητρώου κάθε φοιτητή που έχει πάρει µαθήµατα, τον κωδικό κάθε µαθήµατος που έχει πάρει και το ονοµατεπώνυµο κάθε
καθηγητή που διδάσκει το συγκεκριµένο µάθηµα από τη Βάση ∆εδοµένων του παραδείγµατος 5.1 µε τα δεδοµένα του παραδείγµατος
5.2. ∆ώστε επίσης τον πίνακα µε το αναµενόµενο αποτέλεσµα.

Πειραµατιστείτε µε τις εντολές σύνδεσης και ειδικότερα µε τις εντολές εξωτερικής σύνδεσης, που δεν καλύψαµε σε αυτή την ενότητα.

ÕÛÎËÛË
·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
5.11

ÕÛÎËÛË
·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
5.11

¢Ú·ÛÙËÚÈfiÙËÙ· 5.7

KEºA§AIO 5: H °§ø™™∞ Eƒø∆∏™∂ø¡ SQL

136

5.2.7 ∞Ú›ıÌËÛË, ̤ÁÈÛÙ· – ÂÏ¿¯ÈÛÙ· Î·È ÔÌ·‰ÔÔ›ËÛË

Στην ενότητα αυτή θα µιλήσουµε για τις εντολές της SQL «SUM»,
«MIN», «MAX», «AVG», «COUNT», «GROUP BY» και
«HAVING». ∆εν θα επεκταθούµε πολύ σε αυτές τις εντολές για να µη
µεγαλώσει πολύ το κεφάλαιο. Έχοντας πια αποκτήσει εµπειρία στη
χρήση της SQL, σας καλούµε να πειραµατιστείτε µόνοι σας για την
καλύτερη εκµάθησή τους. Ας δούµε ένα παράδειγµα για τη χρήση της
εντολής «MIN»:
SELECT
MIN (HM_°∂¡)
FROM
º√π∆∏∆∏™;
ΗΜ_ΓΕΝ
19-07-1978

Το αποτέλεσµα της εκτέλεσης αυτής της εντολής θα είναι ο δίπλα
πίνακας.
Βλέπουµε πως πήραµε ως απάντηση τη µικρότερη ηµεροµηνία γέννησης που έχει γεννηθεί κάποιος φοιτητής. Αντίστοιχα συντάσσεται
και η εντολή «ΜΑΧ» που δίνει το µέγιστο, καθώς και η εντολή
«SUM» που δίνει το άθροισµα των τιµών µιας στήλης και που έχει
νόηµα κυρίως σε στήλες που µετρούν ποσά. Η εντολή «AVG» υπολογίζει τον µέσο όρο µίας τιµής µίας στήλης.
Η εντολή «COUNT» χρησιµοποιείται για να µετρήσει το πλήθος των
στοιχείων ενός πίνακα, ή µίας στήλης ενός πίνακα. Για παράδειγµα,
εάν θέλαµε να δούµε για πόσους καθηγητές έχει εισαχθεί η ηµεροµηνία γέννησης θα δίναµε την εντολή
SELECT
COUNT (∏ª_°∂¡)
FROM
∫∞£∏°∏∆∏™;
Η εντολή «COUNT (*)» σηµαίνει «µέτρησε όλες τις γραµµές του πίνακα», σε αντίθεση µε την προηγούµενη περίπτωση στην οποία µετρούµε µόνο τα πεδία µία στήλης για τα οποία έχουµε δώσει κάποια τιµή.
Η εντολή «GROUP BY» χρησιµοποιείται για να οµαδοποιήσει τα αποτελέσµατα, ενώ ή εντολή «HAVING» ακολουθεί προαιρετικά την
«GROUP BY» δίνοντας ένα προσδιορισµό στην οµαδοποίηση. Ας
δούµε ένα παράδειγµα:
SELECT
∞ª, COUNT (*)
FROM
º√π∆_ª∞£
GROUP BY ∞ª
HAVING
COUNT (*) > 2;

5.2 ∞¡∞∑∏∆∏™∏ ¢∂¢√ª∂¡ø¡ ™∆∏¡ SQL

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

137

ΑΜ

COUNT

19344

3

19345

3

Βλέπουµε ότι οι φοιτητές µε κωδικό «19344» και «19345» έχουν πάρει
και οι δύο από 3 µαθήµατα.

∆ώστε την ερώτηση σε SQL που να βρίσκει τα τµήµατα στα οποία
φοιτούν ένας ή κανένας φοιτητής καθώς και πόσοι φοιτητές φοιτούν
εκεί από τη Βάση ∆εδοµένων του παραδείγµατος 5.1 µε τα δεδοµένα του παραδείγµατος 5.2. ∆ώστε επίσης τον πίνακα µε το αναµενόµενο αποτέλεσµα.

∆ώστε την ερώτηση σε SQL που να βρίσκει τους καθηγητές που
διδάσκουν περισσότερα από δύο µαθήµατα καθώς και πόσα διδάσκουν από τη Βάση ∆εδοµένων του παραδείγµατος 5.1 µε τα δεδοµένα του παραδείγµατος 5.2. ∆ώστε επίσης τον πίνακα µε το αναµενόµενο αποτέλεσµα.

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

5.2.8 °ÂÓÈ΋ ÌÔÚÊ‹ ÂÓÙÔÏ‹˜ ·Ó·˙‹ÙËÛ˘

Μέχρι τώρα είδαµε τις διάφορες εντολές που απαρτίζουν µία ερώτηση σε γλώσσα SQL. Να συνοψίσουµε, αναφέροντας ότι µία εντολή
αναζήτησης σε SQL µπορεί να είναι της µορφής
SELECT
FROM
WHERE
GROUP BY
HAVING
ORDER BY

‰›·
›Ó·Î˜
Û˘Óı‹ÎË
‰›·
Û˘Óı‹ÎË Û ۯ¤ÛË Ì ÙÔ GROUP BY
‰›·

ÕÛÎËÛË
·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
5.13

ÕÛÎËÛË
·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
5.14

¢Ú·ÛÙËÚÈfiÙËÙ· 5.8

KEºA§AIO 5: H °§ø™™∞ Eƒø∆∏™∂ø¡ SQL

138

Από τις προηγούµενες εντολές οι τέσσερις τελευταίες γραµµές είναι
προαιρετικές. Υποχρεωτικά πρέπει να υπάρχουν µόνο το «SELECT»
και το «FROM».
5.3 OÚÈÛÌfi˜, ‰È·¯Â›ÚÈÛË Î·È ·ÚÔ˘Û›·ÛË ‰Â‰ÔÌ¤ÓˆÓ ÛÙËÓ
SQL

™ÎÔfi˜
Σκοπός της ενότητας είναι να παρουσιαστεί η SQL ως γλώσσα ορισµού δεδοµένων. Θα δείξουµε πολύ σύντοµα τη χρήση της SQL καθαρά για δηµιουργία πινάκων, εισαγωγή και διαγραφή δεδοµένων και
δηµιουργία όψεων.
¶ÚÔÛ‰ÔÎÒÌÂÓ· ∞ÔÙÂϤÛÌ·Ù·
Όταν θα έχετε ολοκληρώσει τη µελέτη αυτής της ενότητας θα µπορείτε να:
• χρησιµοποιήσετε τις εντολές τις SQL για να δηµιουργήσετε πίνακες
• χρησιµοποιήσετε τις εντολές τις SQL για να εισάγετε δεδοµένα σε
πίνακες, να µεταβάλλετε τις τιµές κάποιων δεδοµένων, ή για να διαγράψετε κάποια δεδοµένα
• χρησιµοποιήσετε τις εντολές τις SQL για να δηµιουργήσετε όψεις σε
πίνακες
∂ÈÛ·ÁˆÁÈΤ˜ ¶·Ú·ÙËÚ‹ÛÂȘ
Στην ενότητα αυτή παρουσιάζονται οι βασικές εντολές της γλώσσας
ερωτήσεων SQL, οι οποίες χρησιµοποιούνται για διαχείριση δεδοµένων σε µία Βάση ∆εδοµένων. Στην ενότητα 5.3.1 παρουσιάζεται η
δηµιουργία πινάκων σε SQL και η αλλαγή της µορφής πινάκων. Στην
ενότητα 5.3.2 παρουσιάζεται η εισαγωγή, διαγραφή και αλλαγή δεδοµένων σε πίνακες µε τη χρήση της SQL. Τέλος, στην ενότητα 5.3.3
παρουσιάζονται οι όψεις σε SQL.
5.3.1 Create table Î·È alter table

Στην ενότητα αυτή θα µιλήσουµε για τη δηµιουργία και αλλαγή πινάκων µε τη χρήση της SQL. H SQL παρέχει δυνατότητα δηµιουργίας
ενός πίνακα µε τη χρήση της εντολής «CREATE TABLE». Η εντολή

5.3 Oƒπ™ª√™, ¢π∞Ã∂πƒπ™∏ ∫∞π ¶∞ƒ√À™π∞™∏ ¢∂¢√ª∂¡ø¡ ™∆∏¡ SQL

139

αυτή δίνει τη δυνατότητα να περιγραφούν οι τύποι δεδοµένων και οι
περιορισµοί για κάθε πεδίο του πίνακα, καθώς και να ορισθούν τα
κλειδιά και το αν θα επιτρέπονται κενές τιµές για κάποιο πεδίο.
Σήµερα τα περισσότερα Συστήµατα ∆ιαχείρισης Βάσεων ∆εδοµένων
δίνουν πιο εύκολους τρόπους για τη δηµιουργία πινάκων από τη χρήση
εντολών σε SQL. Παρόλα αυτά οι εντολές SQL µπορούν να χρησιµοποιηθούν και µέσα σε κώδικα για τη δηµιουργία προσωρινών πινάκων. Ας δούµε ένα παράδειγµα χρήσης της εντολής «CREATE
TABLE» για τη δηµιουργία του πρώτου πίνακα του παραδείγµατος
5.1 του κεφαλαίου 5.
CREATE

TABLE
(√¡√ª∞
∂∆√™_π¢ƒÀ™∏™
PRIMARY KEY

∆ª∏ª∞
VARCHAR(30) NOT NULL,
π¡∆,
(ONOMA));

Με την εντολή αυτή ορίσαµε τον πίνακα «ΤΜΗΜΑ» µε δύο στήλες.
Η πρώτη στήλη, που είναι και το βασικό κλειδί, είναι η «ΟΝΟΜΑ»
και αποτελείται από συµβολοσειρές µεταβλητού µήκους που δεν µπορούν να ξεπερνούν τους 30 χαρακτήρες. Η δεύτερη στήλη είναι η
«ΕΤΟΣ_Ι∆ΡΥΣΗΣ» και έχει τιµές ακέραιους. Επίσης, ορίσαµε ότι η
πρώτη στήλη δεν µπορεί να έχει κενές γραµµές, ενώ η δεύτερη µπορεί να έχει και κενές γραµµές.
Ας δούµε τώρα και την εντολή «ALTER TABLE» που χρησιµοποιείται
για τη µεταβολή στοιχείων ενός πίνακα. Για παράδειγµα, εάν θέλαµε να
προσθέσουµε και άλλη µία στήλη στον πίνακα «ΤΜΗΜΑ» που θα ονοµαζόταν «ΠΡΟΕ∆ΡΟΣ» θα δίναµε την παρακάτω εντολή της SQL:
ALTER

TABLE
ADD

∆ª∏ª∞
¶ƒ√∂¢ƒ√™

VARCHAR(30);

Με την προηγούµενη εντολή προσθέσαµε µία ακόµα στήλη συµβολοσειρά µε µέγιστο µήκος 30 χαρακτήρες, που την ονοµάσαµε «ΠΡΟΕ∆ΡΟΣ».

Στο Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων που χρησιµοποιείτε,
υλοποιήστε όλους τους πίνακες του παραδείγµατος 5.1 µε τη χρήση
εντολών SQL.

¢Ú·ÛÙËÚÈfiÙËÙ· 5.9

KEºA§AIO 5: H °§ø™™∞ Eƒø∆∏™∂ø¡ SQL

140

5.3.2 Insert, delete, update

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

∆ª∏ª∞
(‘æ˘¯ÔÏÔÁ›·˜’, 1988);

Η εντολή αυτή εισάγει ένα νέο τµήµα. Η εντολή INSERT θα µπορούσε να συνδυαστεί µε µία εντολή αναζήτησης και να εισάγει δεδοµένα
σε έναν πίνακα, τα οποία θα αντλήσει από κάποιον άλλο πίνακα. ∆είτε
το παράδειγµα που ακολουθεί
INSERT INTO
VALUES

∆ª∏ª∞
SELECT
FROM
WHERE

ONOMA, ET√™_π¢ƒÀ™∏™
¶∞§∞π∞_∆ª∏ª∞∆∞
∂∆√™_π¢ƒÀ™∏™ > 1990;

Η εντολή αυτή εισάγει δεδοµένα τα οποία αντλεί από έναν πίνακα
«ΠΑΛΑΙΑ_ΤΜΗΜΑΤΑ».
Ας δούµε τώρα την αλλαγή δεδοµένων σε κάποιο πίνακα. ∆είτε το
παράδειγµα που ακολουθεί
DELETE FROM
WHERE

∆ª∏ª∞
∂∆√™_π¢ƒÀ™∏™ > 2000;

Με την εντολή αυτή σβήνουµε από τη Βάση ∆εδοµένων όσα τµήµατα έχουν εισαχθεί µε έτος ίδρυσης µεγαλύτερο του 2000. Η εντολή
DELETE µπορεί να συνδέεται και αυτή µε κάποια εντολή αναζήτησης της SQL, όπως παρουσιάζει το επόµενο παράδειγµα
DELETE FROM
WHERE

∆ª∏ª∞
∂∆√™_π¢ƒÀ™∏™ > ALL
(SELECT
∂∆√™_π¢ƒÀ™∏™
FROM
¶∞§∞π√_∆ª∏ª∞);

Τέλος, ας δούµε και ένα παράδειγµα αλλαγών σε δεδοµένα. ∆είτε το
παράδειγµα που ακολουθεί
UPDATE
SET
WHERE

TMHMA
∂∆√™_π¢ƒÀ™∏™=1963
ONOMA= ‘º˘ÛÈÎfi’;

5.3 Oƒπ™ª√™, ¢π∞Ã∂πƒπ™∏ ∫∞π ¶∞ƒ√À™π∞™∏ ¢∂¢√ª∂¡ø¡ ™∆∏¡ SQL

141

Η εντολή αυτή αλλάζει το έτος ίδρυσης στο Φυσικό Τµήµα. Η εντολή «UPDATE» µπορεί και αυτή να συντάσσεται µε κάποια εντολή
αναζήτησης της SQL.
∆ιαγράψτε από τη Βάση ∆εδοµένων του παραδείγµατος 5.1 µε τα
δεδοµένα του παραδείγµατος 5.2 όλους του φοιτητές που έχουν γεννηθεί στις 20 Αυγούστου 1978. ∆ώστε την αντίστοιχη εντολή σε
SQL και τον νέο πίνακα δεδοµένων που θα προκύψει µετά την εκτέλεση της εντολής.

Στο Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων που χρησιµοποιείτε,
εισάγετε όλα τα δεδοµένα του παραδείγµατος 5.2 µε τη χρήση εντολών SQL.

5.3.3 Ÿ„ÂȘ

Οι όψεις στην SQL είναι πίνακες που δηµιουργούνται από άλλους
πίνακες µε σκοπό να δώσουν διαφορετικές απεικονίσεις (συνήθως σε
διαφορετικές οµάδες χρηστών). Στο παράδειγµα που ακολουθεί φαίνεται µία όψη του πίνακα ΦΟΙΤΗΤΗΣ
CREATE VIEW
AS

√æ∏_1
SELECT
FROM
WHERE

ONOMA, ∂¶ø¡Àª√, ¶∞∆ƒø¡Àª√
º√π∆∏∆∏™
AM > 19000;

Οι όψεις µπορούν να σβήνονται ή να ενηµερώνονται µε τον ίδιο τρόπο
που χειρίζονται και οι πίνακες (µε τις εντολές DROP VIEW και
UPDATE).
™‡ÓÔ„Ë
Στο κεφάλαιο αυτό περιγράψαµε τη γλώσσα ερωτήσεων SQL. Εν
συντοµία στην ενότητα 5.1 παρουσιάστηκαν οι βασικές αρχές των
γλωσσών ερωτήσεων και ο σκοπός που εξυπηρετούν οι γλώσσες ερωτήσεων. Στις ενότητες 5.2 και 5.3 παρουσιάστηκαν οι εντολές της
γλώσσας ερωτήσεων SQL και δόθηκαν παραδείγµατα για το πώς µπορούν να υλοποιηθούν ερωτήσεις που αντλούν δεδοµένα από µία Βάση

ÕÛÎËÛË
·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
5.15

¢Ú·ÛÙËÚÈfiÙËÙ· 5.10

142

KEºA§AIO 5: H °§ø™™∞ Eƒø∆∏™∂ø¡ SQL

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

BÈ‚ÏÈÔÁÚ·Ê›· ÁÈ· ÂÚ·ÈÙ¤Úˆ ·Ó¿ÁÓˆÛË
Εγχειρίδια Συστήµατος. Η καλύτερη βιβλιογραφία που µπορούµε να σας
προτείνουµε για να µάθετε SQL είναι τα εγχειρίδια του συστήµατος που
χρησιµοποιείτε. Κατά κανόνα, είναι πλήρη και, το κυριότερο, αναφέρονται ακριβώς στο Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων µε το οποίο
εργάζεστε. Παρόλα αυτά, ακριβώς γιατί η SQL είναι πρότυπη γλώσσα,
µπορείτε να βρείτε και να διαβάσετε για SQL σχεδόν σε κάθε βιβλίο που
πραγµατεύεται το θέµα των Βάσεων ∆εδοµένων.
[1] Ullman J. D., Principles of Database Systems, Computer Science
Press, 1982.
Είναι ένα από το πρώτα και βασικότερα βιβλία για Βάσεις ∆εδοµένων. Η γλώσσα ερωτήσεων SQL περιγράφεται στο κεφάλαιο 6.
[2] Silberschatz A., Korth H., Sudarshan S, Database System Concepts
Third Edition, McGraw–Hill, 1986.
Η γλώσσα ερωτήσεων SQL περιγράφεται αναλυτικά στο κεφάλαιο 4
του βιβλίου.
[3] Elmasri R. & Navathe S. B., Fundamentals of Database Systems,
Addison–Wesley, 1994.
Το βιβλίο υπάρχει και σε ελληνική µετάφραση από τις εκδόσεις ∆ίαυλος σε µετάφραση Μ. Χατζόπουλου, 1996. Πιστεύουµε πως είναι ένα
καλό βιβλίο για να βασίσετε τη µελέτη σας σε περίπτωση που θέλετε
να εµβαθύνετε στις γλώσσες ερωτήσεων.
[4] C.J.Date, An Introduction to Database Systems, Volume I, Fourth
Edition, Addison–Wesley, 1986.
Στο κεφάλαιο 4 και ειδικότερα στην ενότητα 4.3 γίνεται µία συνοπτική παρουσίαση της SQL. Επίσης, στο κεφάλαιο 9 παρουσιάζεται η
embedded SQL και η χρήση της γλώσσας ερωτήσεων SQL µέσα από
µία host language που καλεί ερωτήσεις σε SQL.

∏ °ÏÒÛÛ· EÚˆÙ‹ÛÂˆÓ QBE
™ÎÔfi˜
Σκοπός του κεφαλαίου είναι να παρουσιαστεί συνοπτικά η γλώσσα
ερωτήσεων QBE και να περιγραφεί η σύνταξη των ερωτήσεων σε αυτή
τη γλώσσα ερωτήσεων. Επίσης, σκοπός του κεφαλαίου είναι να µελετηθούν ερωτήσεις για εξαγωγή δεδοµένων από τους πίνακες µίας σχεσιακής Βάσης ∆εδοµένων, χρησιµοποιώντας QBE.
¶ÚÔÛ‰ÔÎÒÌÂÓ· ∞ÔÙÂϤÛÌ·Ù·
Όταν θα έχετε ολοκληρώσει τη µελέτη αυτού του κεφαλαίου θα µπορείτε να:
• περιγράψετε τις εντολές της γλώσσας ερωτήσεων QBE που χρησιµοποιούνται για αναζήτηση και παρουσίαση δεδοµένων που αντλούνται από µία Βάση ∆εδοµένων
• χρησιµοποιήσετε εντολές της γλώσσας ερωτήσεων QBE για να
αντλήσετε δεδοµένα από παραδείγµατα Βάσεων ∆εδοµένων που
περιγράφηκαν στα προηγούµενα κεφάλαια
• µετατρέψετε ερωτήσεις προς µία Βάση ∆εδοµένων από απλή (φυσική) γλώσσα στη γλώσσα ερωτήσεων QBE
• µετατρέψετε ερωτήσεις προς µία Βάση ∆εδοµένων που είχαν αρχικά δοθεί σε SQL σε QBE.
ŒÓÓÔȘ ÎÏÂȉȿ
• Γλώσσες Ερωτήσεων (Query Languages)
• Παράδειγµα (Example)
• Πίνακας Ερώτησης (Query Table)
• Πίνακας Αποτελέσµατος (Result Table)
∂ÈÛ·ÁˆÁÈΤ˜ ¶·Ú·ÙËÚ‹ÛÂȘ
Στο κεφάλαιο αυτό περιγράφουµε τη γλώσσα ερωτήσεων QBE. Στην
ενότητα 6.1 γίνεται εισαγωγή στις βασικές αρχές της γλώσσας ερωτήσεων QBE και γενικά στη φιλοσοφία των ερωτήσεων µε βάση το

6
º

§

π

144

KEºA§AIO 6: ∏ °§ø™™∞ Eƒø∆∏™∂ø¡ QBE

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

6.1 ∏ ÊÈÏÔÛÔÊ›· Ù˘ QBE

™ÎÔfi˜
Σκοπός της ενότητας είναι να περιγραφεί γενικά η φιλοσοφία της
γλώσσας ερωτήσεων QBE, που είναι αρκετά διαφορετική από αυτή
της SQL. Επίσης, θα δώσουµε αρκετά παραδείγµατα απλών ερωτήσεων σε QBE.
¶ÚÔÛ‰ÔÎÒÌÂÓ· ∞ÔÙÂϤÛÌ·Ù·
Όταν θα έχετε ολοκληρώσει τη µελέτη αυτής της ενότητας θα µπορείτε να:
• εξηγήσετε πώς λειτουργεί η γλώσσα ερωτήσεων QBE και τη φιλοσοφία στην οποία βασίζεται
• υποβάλετε ερωτήσεις σε µία Βάση ∆εδοµένων, µετατρέποντας ερωτήσεις από φυσική γλώσσα σε QBE
• εντοπίζετε τα αναµενόµενα αποτελέσµατα από µία ερώτηση σε QBE,
ώστε να µπορείτε να ελέγχετε την ορθότητα των απαντήσεών σας.
Στο προηγούµενο κεφάλαιο περιγράψαµε τη γλώσσα ερωτήσεων SQL.
Σε αντίθεση µε την SQL, που στη σύνταξή της θυµίζει περισσότερο
γλώσσες προγραµµατισµού, η QBE είναι βασισµένη σε µία εντελώς
διαφορετική φιλοσοφία. Η φιλοσοφία της QBE είναι να είναι απλή και
φιλική προς τους χρήστες και να δίνει τη δυνατότητα στους χρήστες
να υποβάλλουν τα ερωτήµατά τους µε τρόπο που προσεγγίζει τους
πίνακες αποτελεσµάτων που γνωρίζουν.
Το όνοµα QBE σηµαίνει Query By Example και προσδιορίζει τη φιλοσοφία της γλώσσας που είναι να δίνονται οι ερωτήσεις υπό µορφή παραδειγµάτων. Η QBE αναπτύχθηκε από την IBM ως εναλλακτικός τρόπος
υποβολής ερωτήσεων στο σύστηµα DB2. Υπάρχουν αρκετές διαφορές
στον τρόπο µε τον οποίο χρησιµοποιείται η QBE από σύστηµα σε σύστηµα και για αυτό εµείς θα δώσουµε σε αυτή την ενότητα τις βασικές αρχές
της, όπως αρχικά προσδιορίστηκαν στην πρώτη έκδοση της γλώσσας.
Στην QBE χρησιµοποιούµε πίνακες ερωτήσεων για να υποβάλλουµε
την ερώτηση δίνοντας ένα παράδειγµα για το πώς θέλουµε να είναι η
απάντηση. Η απάντηση δίνεται σε πίνακες απάντησης που είναι ίδιοι

KEºA§AIO 6: ∏ °§ø™™∞ Eƒø∆∏™∂ø¡ QBE

146

µε τους πίνακες ερωτήσεων. Ανατρέξτε στο παράδειγµα 5.1 και στο
5.2 του κεφαλαίου 5, που θα το χρησιµοποιήσουµε και σε αυτό το
κεφάλαιο. Ας δούµε ένα παράδειγµα ερώτησης σε QBE. Έστω ότι ο
χρήστης θέλει να υποβάλει µία ερώτηση στον πίνακα ΦΟΙΤΗΤΗΣ.
Τότε, το Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων του εµφανίζει έναν
πίνακα ερώτησης της µορφής
ΦOITHTHΣ
ΟΝΟΜΑ

ΕΠΩΝΥΜΟ

ΠΑΤΡΩΝΥΜΟ

ΑΜ

ΗΜ_ΓΕΝ

Το σύστηµα, λοιπόν, φροντίζει να δώσει στο χρήστη πληροφορία όπως
τα ονόµατα κάθε στήλης και έτσι ο χρήστης δεν χρειάζεται να τα
θυµάται όπως στην SQL. Έστω λοιπόν ότι θέλουµε να δούµε τα ονοµατεπώνυµα και τα πατρώνυµα όλων των φοιτητών. Η εντολή σε QBE
είναι ο πίνακας ερώτησης που ακολουθεί
ΦOITHTHΣ
ΟΝΟΜΑ

ΕΠΩΝΥΜΟ

ΠΑΤΡΩΝΥΜΟ

Νίκος

_Νίκου

_Νικόλαος

ΑΜ

ΗΜ_ΓΕΝ

Σε αυτόν τον πίνακα χρήστης έχει δώσει ένα παράδειγµα µιας απάντησης στη µορφή που θέλει. Για να το κάνει αυτό χρησιµοποίησε ένα
παράδειγµα ονόµατος για κάθε περίπτωση. Τα παραδείγµατα για να
µη συγχέονται µε τις συνθήκες έπρεπε να έχουν µπροστά το χαρακτήρα «_». Η εκτέλεση της παραπάνω ερώτησης θα είχε ως αποτέλεσµα την εµφάνιση του πίνακα:
ΦOITHTHΣ
ΟΝΟΜΑ

ΕΠΩΝΥΜΟ

ΠΑΤΡΩΝΥΜΟ

Νικόλαος

Βασιλείου

Σωτήριος

Ελένη

Βασιλείου

Σωτήριος

Νικόλαος

Βαρδής

Μιχαήλ

Χρήστος

Χρήστου

Νικόλαος

Χρήστος

Χρήστου

Βασίλειος

Μαρίνα

Χατζή

Αθανάσιος

6.1 ∏ ºπ§√™√ºπ∞ ∆∏™ QBE

147

Σε κάποιες εκδόσεις της QBE, για να εκτυπωθεί µία στήλη χρειάζεται
το πρόθεµα «P.» πριν από το παράδειγµα. Έτσι η εντολή είναι η εξής:
ΦOITHTHΣ
ΟΝΟΜΑ

ΕΠΩΝΥΜΟ

ΠΑΤΡΩΝΥΜΟ

Ρ._Νίκος

Ρ._Νίκου

Ρ._Νικόλαος

ΑΜ

ΗΜ_ΓΕΝ

Επίσης, το παράδειγµα µπορεί να παραλείπεται και να υπάρχει µόνο
το «Ρ.» που σηµαίνει «εµφάνισε το συγκεκριµένο πεδίο». Τα σύγχρονα συστήµατα που χρησιµοποιούν QBE παρέχουν ένα γραφικό περιβάλλον µε το οποίο ο χρήστης µπορεί εύκολα να κινείται στους πίνακες ερωτήσεων και να προσδιορίζει ποιες στήλες θα εµφανιστούν και
ποιες όχι. Συνήθως, αυτό γίνεται µε επιλογή κάποιου πεδίου που καθορίζει την απεικόνιση ή όχι µε τη χρήση κάποιου check box.

∆ώστε τον πίνακα ερώτησης σε QBE που να ζητά τα ονοµατεπώνυµα των καθηγητών από τη Βάση ∆εδοµένων του παραδείγµατος 5.1
µε τα δεδοµένα του παραδείγµατος 5.2. Eπίσης δώστε τον πίνακα
αποτελέσµατος.

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

ÕÛÎËÛË
·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
6.1

¢Ú·ÛÙËÚÈfiÙËÙ· 6.1

KEºA§AIO 6: ∏ °§ø™™∞ Eƒø∆∏™∂ø¡ QBE

148

6.2 ™˘Óı‹Î˜

Στην προηγούµενη ενότητα δώσαµε τις βασικές αρχές των ερωτήσεων σε QBE. Σε αυτή την ενότητα θα δούµε πώς µπορούµε να δώσουµε κάποιους περιορισµούς στην εκτύπωση των αποτελεσµάτων, πώς
δηλαδή να ορίσουµε συνθήκες στη γλώσσα ερωτήσεων QBE. Θυµηθείτε το τµήµα «WHERE» στην SQL. Εκεί δίναµε µία συνθήκη που
ακολουθούσε το «WHERE» και προσδιόριζε ποιες εγγραφές θέλουµε
να εµφανισθούν. Στην QBE οι συνθήκες ορίζονται µε παρόµοιο τρόπο,
µόνο που όλα γίνονται µε παράδειγµα στον πίνακα ερώτησης.
Θυµηθείτε την πρώτη ερώτηση που παρουσιάσαµε στη γλώσσα ερωτήσεων SQL, δηλαδή να βρούµε τα ονοµατεπώνυµα των φοιτητών που
γεννήθηκαν στις 20 Αυγούστου 1976. Ο πίνακας ερώτησης στην QBE
είναι ο εξής:
ΦOITHTHΣ
ΟΝΟΜΑ

ΕΠΩΝΥΜΟ

P.

P.

ΠΑΤΡΩΝΥΜΟ

ΑΜ

ΗΜ_ΓΕΝ
20-08-1978

Προσέξτε ότι δώσαµε την ηµεροµηνία χωρίς να προηγείται πριν από
αυτή ο χαρακτήρας «_», οπότε το σύστηµα δεν το εξέλαβε ως παράδειγµα, αλλά ως συνθήκη και έτσι έψαξε να βρει τους φοιτητές που
έχουν γεννηθεί τη συγκεκριµένη ηµεροµηνία. Επίσης, προσέξτε ότι
δεν βάλαµε «Ρ.» πριν από την ηµεροµηνία, αφού το ζητούµενο ήταν
να έχουµε µόνο το ονοµατεπώνυµο. Ο πίνακας αποτελέσµατος για το
παραπάνω παράδειγµα είναι φυσικά ο επόµενος:
ΦOITHTHΣ
ONOMA

EΠΩNYMO

Νικόλαος

Βασιλείου

Χρήστος

Χρήστου

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

6.2 ™À¡£∏∫∂™

149

Ας δούµε δύο παραδείγµατα. Στην επόµενη ερώτηση ζητάµε τα ονοµατεπώνυµα των φοιτητών που έχουν γεννηθεί µετά την 1η Ιανουαρίου 1978 και έχουν επώνυµο που αρχίζει από το γράµµα «Β».
ΦOITHTHΣ
ΟΝΟΜΑ

ΕΠΩΝΥΜΟ

P.

Ρ. LIKE ‘B%’

ΠΑΤΡΩΝΥΜΟ

ΑΜ

ΗΜ_ΓΕΝ
>1-1-1978

Στις συνθήκες της γλώσσας ερωτήσεων QBE µπορούµε να χρησιµοποιήσουµε όλους τους τελεστές που χρησιµοποιούσαµε και στην SQL,
δηλαδή τους αριθµητικούς τελεστές «>», «<», «=», «>=», «<=» και «<>»,
καθώς και τους τελεστές «LIKE», «IS NULL» και «IS NOT NULL». Ο
πίνακας απάντησης της προηγούµενης ερώτησης είναι ο εξής:
ΦOITHTHΣ
ONOMA

EΠΩNYMO

Νικόλαος

Βασιλείου

Eλένη

Bασιλείου

Στο επόµενο παράδειγµα ζητάµε να βρούµε τα ονοµατεπώνυµα των φοιτητών που έχουν γεννηθεί µετά την 1η Ιανουαρίου 1978 ή που έχουν επώνυµο που αρχίζει από το γράµµα «Β». Προσέξτε τώρα τον πίνακα ερώτησης:
ΦOITHTHΣ
ΟΝΟΜΑ

ΕΠΩΝΥΜΟ

P.

P.

ΠΑΤΡΩΝΥΜΟ

ΑΜ

ΗΜ_ΓΕΝ
>1-1-1978

Ρ. LIKE ‘B%’
Βλέπετε πώς έχουµε τοποθετήσει τις δύο συνθήκες τη µία µετά την άλλη
ώστε να ισχύει το «OR». Ο πίνακας απάντησης τώρα θα είναι ο εξής:
ΦOITHTHΣ
ONOMA

EΠΩNYMO

Νικόλαος

Βασιλείου

Ελένη

Βασιλείου

Νικόλαος

Βαρδής

Χρήστος

Χρήστου

KEºA§AIO 6: ∏ °§ø™™∞ Eƒø∆∏™∂ø¡ QBE

150

Παρατηρούµε ότι για απλές ερωτήσεις η QBE είναι αρκετά απλή. Θα
δούµε τώρα τι γίνεται µε την περίπτωση της σύνδεσης. Η φιλοσοφία
παραµένει η ίδια. Χρησιµοποιούµε ένα παράδειγµα για να προετοιµάσουµε την απάντηση και έναν πίνακα απάντησης, στον οποίο σχεδιάζουµε τη ζητούµενη λύση.
Θυµηθείτε το παράδειγµα µε τη σύνδεση που συζητήσαµε στην ενότητα 5.2.6. Εκεί ζητήσαµε να δούµε τα ονοµατεπώνυµα των φοιτητών
και το όνοµα και το έτος ίδρυσης του τµήµατος στο οποίο ανήκουν.
Αυτή η ερώτηση απαιτεί την άντληση δεδοµένων από τρεις διαφορετικούς πίνακες: Θα χρειαστεί να πάρουµε τα ονοµατεπώνυµα των φοιτητών από τον πίνακα ΦΟΙΤΗΤΕΣ, τα έτη ίδρυσης των τµηµάτων από
τον πίνακα ΤΜΗΜΑ, ενώ θα χρειαστούµε και τον πίνακα
ΦΟΙΤ_ΤΜΗΜΑ για να βρούµε τη σχέση των φοιτητών µε κάθε
τµήµα. Οι πίνακες ερώτησης σε QBE είναι οι εξής:
ΦOITHTHΣ
ΟΝΟΜΑ

ΕΠΩΝΥΜΟ

_ΟΝΦ

_ΕΠΦ

ΠΑΤΡΩΝΥΜΟ

ΑΜ

ΗΜ_ΓΕΝ

_ΑΜ

TMHMA
ONOMA

ΕΤΟΣ_Ι∆ΡΥΣΗΣ

_ΟΝΤ

_ΕΤ

ΦOIT_TMHMA
AM

ONOMA

_AM

_ΟΝΤ

AΠANTHΣH
ΟΝΟΜΑ ΦΟΙΤ

ΕΠΩΝΥΜΟ

ΟΝΟΜΑ ΤΜΗ

ΕΤΟΣ_Ι∆ΡΥΣΗΣ

Ρ._ΟΝΦ

Ρ._ΕΠΦ

Ρ._ΟΝΤ

Ρ._ΕΤ

Παρατηρήστε ότι έχουµε δύο συνδέσεις ανάµεσα σε πίνακες για να
πετύχουµε το επιδιωκόµενο αποτέλεσµα. Οι συνδέσεις αυτές γίνονται
µε τη χρήση κοινών παραδειγµάτων µε µεταβλητές. Έτσι, η σύνδεση
του πίνακα ΦΟΙΤΗΤΗΣ µε τον πίνακα ΦΟΙΤ_ΤΜΗΜΑ γίνεται µε την

6.2 ™À¡£∏∫∂™

151

κοινή µεταβλητή «_ΑΜ» που συνδέει τους δύο πίνακες µε τον αριθµό µητρώου. Η σύνδεση του πίνακα ΤΜΗΜΑ µε τον πίνακα
ΦΟΙΤ_ΤΜΗΜΑ γίνεται µε την κοινή µεταβλητή «_ΟΝΤ» που συνδέει τους δύο πίνακες µε το όνοµα. Παρατηρήστε επίσης ότι χρησιµοποιούµε έναν προκαθορισµένο πίνακα του συστήµατος που ονοµάζεται απάντηση. Αυτός ο πίνακας είναι χρήσιµος για τη διάρθρωση
των αποτελεσµάτων ειδικά σε περιπτώσεις όπου τα αποτελέσµατα
έχουν στοιχεία από περισσότερους από έναν πίνακες.
Το αποτέλεσµα αυτής της εντολής είναι ένας πίνακας µε τα παρακάτω αποτελέσµατα:
ΟΝΟΜΑ ΦOIT

ΕΠΩΝΥΜΟ

ONOMA TMH

ETOΣ_I∆PYΣHΣ

Νικόλαος

Βασιλείου

Μαθηµατικό

1961

Ελένη

Βασιλείου

Μαθηµατικό

1961

Νικόλαος

Βαρδής

Φυσικό

1968

Χρήστος

Χρήστου

Πληροφορικής

1994

Χρήστος

Χρήστου

Πληροφορικής

1994

Μαρίνα

Χατζή

Φυσικό

1968

Προσέξτε ότι στον παραπάνω πίνακα δεν έχει γίνει λάθος µε τη διπλή
εµφάνιση του «Χρήστος Χρήστου», απλά υπήρχαν δύο φοιτητές µε
ίδιο ονοµατεπώνυµο, αλλά διαφορετικό πατρώνυµο στη Βάση ∆εδοµένων του παραδείγµατος.

Έστω ότι θέλουµε να βρούµε τα ονόµατα και τα επώνυµα των καθηγητών που έχουν γεννηθεί µετά την 1η Ιανουαρίου 1960, στη Βάση
∆εδοµένων του παραδείγµατος 5.1 µε τα δεδοµένα του παραδείγµατος 5.2. ∆ώστε σε QBE τόσο τον πίνακα ερώτησης όσο και τον πίνακα µε το αναµενόµενο αποτέλεσµα.

Έστω ότι θέλουµε να βρούµε το όνοµα και το επώνυµο των καθηγητών που το µικρό τους όνοµα αρχίζει από ‘Μιχ’ στη Βάση ∆εδοµένων του παραδείγµατος 5.1 µε τα δεδοµένα του παραδείγµατος
5.2. ∆ώστε σε QBE τόσο τον πίνακα ερώτησης όσο και τον πίνακα
µε το αναµενόµενο αποτέλεσµα.

ÕÛÎËÛË
·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
6.2

ÕÛÎËÛË
·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
6.3

KEºA§AIO 6: ∏ °§ø™™∞ Eƒø∆∏™∂ø¡ QBE

152

ÕÛÎËÛË
·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
6.4

ÕÛÎËÛË
·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
6.5

¢Ú·ÛÙËÚÈfiÙËÙ· 6.2

∆ώστε σε QBE τον πίνακα ερώτησης που να ζητά το επώνυµο,
όνοµα και πατρώνυµο κάθε φοιτητή που έχει επιλέξει µαθήµατα και
τα µαθήµατα που έχει πάρει από τη Βάση ∆εδοµένων του παραδείγµατος 5.1 µε τα δεδοµένα του παραδείγµατος 5.2. Eπίσης δώστε
τον πίνακα µε το αναµενόµενο αποτέλεσµα.

∆ώστε σε QBE τον πίνακα ερώτησης που να ζητά το επώνυµο και
τον αριθµό µητρώου κάθε φοιτητή που έχει επιλέξει µαθήµατα, τον
κωδικό κάθε µαθήµατος που έχει πάρει και το ονοµατεπώνυµο κάθε
καθηγητή που διδάσκει το συγκεκριµένο µάθηµα από τη Βάση
∆εδοµένων του παραδείγµατος 5.1 µε τα δεδοµένα του παραδείγµατος 5.2. Eπίσης δώστε τον πίνακα µε το αναµενόµενο αποτέλεσµα.

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

6.3 ∏ QBE ÛÂ Û˘Ó‰˘·ÛÌfi Ì ÁÚ·ÊÈÎfi ÂÚÈ‚¿ÏÏÔÓ

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

6 . 3 ∏ Q B E ™ ∂ ™ À ¡ ¢ À∞ ™ ª √ ª ∂ ° ƒ ∞ º π ∫ √ ¶ ∂ ƒ π µ ∞ § § √ ¡

153

ΦOITHTHΣ
ONOMA
EΠΩNYMO

ΦOIT_TMHMA

TMHMA

ΠATPΩNYMO

AM

ONOMA

AM

ONOMA

ETOΣ_I∆PYΣHΣ

HM_ΓEN
Έτσι, ο χρήστης µπορεί να δει το όνοµα του κάθε πίνακα και όλα τα
πεδία που τον απαρτίζουν. Επίσης, βλέπει το κλειδί κάθε πίνακα µε
πιο έντονα γράµµατα από τα άλλα πεδία. Σε περίπτωση που ο χρήστης
θέλει να κάνει µία σύνδεση, τότε απλά το µόνο που έχει να κάνει είναι
να σύρει και να αφήσει το ένα από τα δύο κλειδιά που θέλει να συνδέσει µε κάποιο άλλο πάνω σε αυτό που θέλει να συνδέσει. Αυτόµατα το σύστηµα του δείχνει ότι η σύνδεση έγινε µε µία γραµµή που συνδέει τα δύο πεδία που συνδέθηκαν. Έτσι, είναι ορατή η σύνδεση χωρίς
να χρειάζεται να γραφεί ούτε µία γραµµή από ερώτηση.
Στους πίνακες που παρουσιάστηκαν παραπάνω ο χρήστης έχει συνδέσει τον πίνακα «ΦΟΙΤΗΤΗΣ» µε τον πίνακα «ΦΟΙΤ_ΜΑΘ» µε το
πεδίο «ΑΜ». Επίσης, έχει συνδεθεί ο πίνακας «ΦΟΙΤ_ΜΑΘ» µε τον
πίνακα «ΜΑΘΗΜΑ» στο πεδίο «ΟΝΟΜΑ». Υλοποιώντας αυτή τη
σύνδεση ουσιαστικά έχει απαντηθεί η ερώτηση «ποιοι µαθητές έχουν
πάρει ποιο µάθηµα;». Τώρα, το µόνο που αποµένει είναι να βρεθεί και
ο τρόπος παρουσίασης των αποτελεσµάτων αυτής της ερώτησης. Η
QBE αυτού του συστήµατος δίνει µόνο τον πίνακα της απάντησης
στην κλασική µορφή της QBE. Φυσιολογικό, αφού έχει δώσει τρόπο
για να υλοποιηθούν οι συνδέσεις.
Η απάντηση σχηµατίζεται µε τον ίδιο τρόπο που γίνεται η σύνδεση.
∆ηλαδή ο χρήστης σύρει και αφήνει τα πεδία που θέλει να εµφανιστούν στην απάντηση από τους παραπάνω πίνακες στον πίνακα της
απάντησης και αυτά (τα πεδία) εµφανίζονται µε το όνοµά τους και το
όνοµα του πίνακα στον οποίο ανήκουν. Ακολούθως, ο χρήστης µπορεί να ορίσει κριτήρια ή να καθορίσει ποια πεδία θέλει να φαίνονται
και ποια όχι.
Ο πίνακας αποτελέσµατος είναι της µορφής που φαίνεται στο παρακάτω παράδειγµα

KEºA§AIO 6: ∏ °§ø™™∞ Eƒø∆∏™∂ø¡ QBE

154

Field:

ΟΝΟΜΑ

ΕΠΩΝΥΜΟ

ΟΝΟΜΑ

ΕΤΟΣ_Ι∆Ρ

Table:

ΦΟΙΤΗΤΗΣ

ΦΟΙΤΗΤΗΣ

ΤΜΗΜΑ

ΤΜΗΜΑ

Sort:
Show:

Ascending

Criteria:
Or:
Σε αυτόν τον πίνακα ο χρήστης έχει σύρει τα πεδία «ΟΝΟΜΑ» και
«ΕΠΩΝΥΜΟ» από τον πίνακα «ΦΟΙΤΗΤΗΣ» και τα πεδία «ΟΝΟΜΑ»
και «ΕΤΟΣ_Ι∆ΡΥΣΗΣ» από τον πίνακα «ΤΜΗΜΑ». Επίσης, έχει επιλέξει τα αποτελέσµατα να είναι διαταγµένα µε βάση το πεδίο «ΕΠΩΝΥΜΟ» κατά αύξουσα σειρά και έχει επιλέξει να εµφανιστούν όλα.
Θα µπορούσε να έχει βάλει και µία σειρά από κριτήρια τα οποία να
είναι είτε συνδεδεµένα µε «AND» µεταξύ τους (δηλαδή να βρίσκονται στην ίδια γραµµή) ή να είναι συνδεδεµένα µε «OR» µεταξύ τους
(δηλαδή να βρίσκονται σε διαδοχικές γραµµές). Έτσι, ο χρήστης µπορεί να δώσει πολύ εύκολα την εντολή σε QBE, χωρίς να χρειάζεται να
θυµάται ονόµατα και κωδικούς ή να γράψει µεταβλητές.
Τα ονόµατα που υπάρχουν δίπλα από κάθε γραµµή του πίνακα καθορίζουν τι σηµαίνει κάθε γραµµή και βοηθούν το χρήστη ώστε να σύρει
τα σωστά πεδία ή να επιλέξει τις κατάλληλες επιλογές.
ÕÛÎËÛË
·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
6.6

ÕÛÎËÛË
·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
6.7

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

∆ώστε σε QBE στη µορφή που παρουσιάσαµε παραπάνω την ερώτηση της άσκησης 6.5 προσθέτοντας τον περιορισµό ότι θέλουµε να
δούµε µόνο τους φοιτητές µε αριθµό µητρώου µικρότερο του 19400.
Επίσης, δώστε και τον πίνακα αποτελεσµάτων που παρουσιάζει τα
αποτελέσµατα µε την παρακάτω σειρά (επώνυµο φοιτητή, αριθµός
µητρώου φοιτητή, κωδικός µαθήµατος, όνοµα µαθήµατος, όνοµα
καθηγητή που το διδάσκει, επώνυµο καθηγητή που το διδάσκει).

6 . 3 ∏ Q B E ™ ∂ ™ À ¡ ¢ À∞ ™ ª √ ª ∂ ° ƒ ∞ º π ∫ √ ¶ ∂ ƒ π µ ∞ § § √ ¡

Πειραµατιστείτε στη Microsoft Access, εάν έχετε τη δυνατότητα,
δίνοντας όσο περισσότερες ερωτήσεις σε QBE µπορείτε. Φροντίστε
να υλοποιήσετε τις ίδιες ερωτήσεις που δώσατε στη γλώσσα SQL,
καθώς και να εκφράσετε ερωτήσεις σε φυσική γλώσσα και µετά να
τις µετατρέψετε σε QBE και να τις υποβάλετε. Γενικά, µη διστάζετε να πειραµατίζεστε µε ερωτήσεις σε QBE, γιατί αυτός είναι ο καλύτερος τρόπος για να µάθετε τη χρήση µίας γλώσσας (όπως είναι η
QBE) στις Βάσεις ∆εδοµένων.

™‡ÓÔ„Ë
Στο κεφάλαιο αυτό περιγράψαµε τη γλώσσα ερωτήσεων QBE. Στην
ενότητα 6.1 παρουσιάστηκε η φιλοσοφία της QBE και µερικά παραδείγµατα ερωτήσεων, στην ενότητα 6.2 µιλήσαµε για τις συνθήκες σε
QBE και, τέλος, στην ενότητα 6.3 δείξαµε πως η QBE µπορεί να χρησιµοποιηθεί σε συνεργασία µε ένα γραφικό περιβάλλον υποβολής ερωτήσεων. Σας προτείνουµε να ανατρέξετε στη βιβλιογραφία για να βρείτε περισσότερα παραδείγµατα από εντολές σε QBE και κυρίως να πειραµατιστείτε µε εντολές QBE σε κάποιο Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων (βλ. εργασίες της Θεµατικής Ενότητας 9.2).

155

¢Ú·ÛÙËÚÈfiÙËÙ· 6.3

156

KEºA§AIO 6: ∏ °§ø™™∞ Eƒø∆∏™∂ø¡ QBE

BÈ‚ÏÈÔÁÚ·Ê›· ÁÈ· ÂÚ·ÈÙ¤Úˆ ·Ó¿ÁÓˆÛË
Εγχειρίδια Συστήµατος. Η καλύτερη βιβλιογραφία που µπορούµε να
σας προτείνουµε για να µάθετε QBE είναι τα εγχειρίδια του συστήµατος
που χρησιµοποιείτε. Κατά κανόνα είναι πλήρη και, το κυριότερο, αναφέρονται ακριβώς στο Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων µε το
οποίο εργάζεστε. Παρόλα αυτά, ακριβώς γιατί η QBE είναι πρότυπη
γλώσσα, µπορείτε να βρείτε και να διαβάσετε για QBE σχεδόν σε κάθε
βιβλίο που πραγµατεύεται το θέµα των Βάσεων ∆εδοµένων.
[1] Ullman J. D., Principles of Database Systems, Computer Science
Press, 1982.
Είναι ένα από το πρώτα και βασικότερα βιβλία για Βάσεις ∆εδοµένων. Η γλώσσα ερωτήσεων QBE περιγράφεται στο κεφάλαιο 6 και
ειδικότερα στο τµήµα 6.5, όπου παρουσιάζεται ως µία «domain
calculus language».
[2] Silberschatz A., Korth H., Sudarshan S, Database System Concepts,
Third Edition, McGraw–Hill, 1986.
Η γλώσσα ερωτήσεων QBE περιγράφεται αναλυτικά στο κεφάλαιο 5
του βιβλίου, όπου γίνεται ένα αφιέρωµα στις υπόλοιπες γλώσσες ερωτήσεων, πέρα από την SQL που είχε παρουσιαστεί στο προηγούµενο
κεφάλαιο.
[3] C.J.Date, An Introduction to Database Systems, Volume I, Fourth
Edition, Addison–Wesley, 1986.
Στο κεφάλαιο 14 και ειδικότερα στην ενότητα 14.6 γίνεται µία συνοπτική παρουσίαση της γλώσσας ερωτήσεων QBE.
[4] Elmasri R. & Navathe S. B., Fundamentals of Database Systems,
Addison–Wesley, 1994.
Το βιβλίο υπάρχει και σε ελληνική µετάφραση από τις εκδόσεις ∆ίαυλος σε µετάφραση Μ. Χατζόπουλου, 1996. Θα βρείτε µία σύντοµη
αναφορά στη QBE, αλλά αρκετά καλή για να αρχίσετε τη µελέτη της
QBE. Σας προτείνουµε καλύτερα να αρχίσετε να µελετάτε από αυτό
το βιβλίο.

∞ÓÙÈÎÂÈÌÂÓÔÛÙÚ·Ê›˜ B¿ÛÂȘ ¢Â‰Ô̤ӈÓ
™ÎÔfi˜
Σκοπός του κεφαλαίου είναι να σας δώσει µία πολύ σύντοµη περιγραφή των αντικειµενοστραφών Βάσεων ∆εδοµένων. Θα περιγράψουµε
τη φιλοσοφία των αντικειµενοστραφών Βάσεων ∆εδοµένων και τις
ανάγκες που ήρθαν να καλύψουν. Τέλος, θα παρουσιάσουµε, εν συντοµία, µία γλώσσα ερωτήσεων προσανατολισµένη στα αντικείµενα.
¶ÚÔÛ‰ÔÎÒÌÂÓ· ∞ÔÙÂϤÛÌ·Ù·
Όταν θα έχετε ολοκληρώσει τη µελέτη αυτού του κεφαλαίου θα µπορείτε να:
• περιγράψετε συνοπτικά τη φιλοσοφία των αντικειµενοστραφών
Βάσεων ∆εδοµένων
• περιγράψετε τις βασικές διαφορές ανάµεσα στις Βάσεις ∆εδοµένων
που περιγράψαµε µέχρι τώρα και στις αντικειµενοστραφείς Βάσεις
∆εδοµένων
• αναφέρετε µία γλώσσα ερωτήσεων που να βασίζεται στα αντικείµενα και τη χρήση της σε µία αντικειµενοστραφή Βάση ∆εδοµένων
ŒÓÓÔȘ ÎÏÂȉȿ
• ∆οµηµένος Προγραµµατισµός (Structured Programming)
• Αντικείµενο (Object)
• Αντικειµενοστραφής (Object Oriented)
• Κλάση (Class)
• Μέθοδος (Method)
• Γλώσσα Οικοδεσπότης (Host Language)
• Γλώσσα Ορισµού ∆εδοµένων (Data Definition Language)
• Κληρονοµικότητα (Inheritance)
∂ÈÛ·ÁˆÁÈΤ˜ ¶·Ú·ÙËÚ‹ÛÂȘ
Στο κεφάλαιο αυτό µιλάµε πολύ συνοπτικά για τις αντικειµενοστραφείς Βάσεις ∆εδοµένων. Οι Βάσεις αυτές αναµένεται να αποτελούν την

7
º

§

π

158

K E º A § A I O 7 : ∞ ¡ ∆ π ∫ ∂ π ª ∂ ¡ √ ™ ∆ ƒ∞ º ∂ π ™ B ∞ ™ ∂ π ™ ¢ ∂ ¢ √ ª ∂ ¡ ø ¡

πλειοψηφία των Βάσεων ∆εδοµένων που θα χρησιµοποιούνται στο
εγγύς µέλλον, αν και σήµερα κυριαρχούν οι σχεσιακές Βάσεις ∆εδοµένων για τις οποίες µιλήσαµε στα προηγούµενα κεφάλαια. Στην ενότητα 7.1 θα µιλήσουµε για τη γενική φιλοσοφία των αντικειµενοστραφών
Βάσεων ∆εδοµένων, ενώ στην ενότητα 7.2 θα δώσουµε µερικά στοιχεία για τη γλώσσα ερωτήσεων OQL, που είναι µία γλώσσα ερωτήσεων προσανατολισµένη στα αντικείµενα, και θα µιλήσουµε για την πρότυπη γλώσσα ερωτήσεων SQL3, η οποία αποτελεί εξέλιξη της γνωστής
σας SQL µε µία σειρά αντικειµενοστραφών λειτουργιών. Τέλος, στην
ενότητα 7.3 γίνεται µία σύνοψη του κεφαλαίου 7.
Σε περίπτωση που δεν είστε εξοικειωµένοι µε τις αρχές του αντικειµενοστραφούς προγραµµατισµού, τότε καλύτερα να µην προσπαθήσετε
να εµβαθύνετε σε αυτό το κεφάλαιο. Καλύτερα να µελετήσετε αυτό το
κεφάλαιο, µετά από τη µελέτη των αντίστοιχων θεµατικών ενοτήτων
(που µιλούν για αντικειµενοστραφή προγραµµατισµό), ώστε να γνωρίζετε τις βασικές έννοιες του αντικειµενοστραφούς προγραµµατισµού.
Πάντως, σε αυτό το κεφάλαιο προσπαθήσαµε να δώσουµε τις βασικές
αρχές των αντικειµενοστραφών Bάσεων ∆εδοµένων χωρίς να προϋποθέτουµε γνώσεις αντικειµενοστραφούς προγραµµατισµού.

7.1 ∏ ÊÈÏÔÛÔÊ›· ÙˆÓ ·ÓÙÈÎÂÈÌÂÓÔÛÙÚ·ÊÒÓ ‚¿ÛÂˆÓ ‰Â‰Ô̤ӈÓ

™ÎÔfi˜
Σκοπός της ενότητας είναι να περιγραφεί γενικά η φιλοσοφία των αντικειµενοστραφών Βάσεων ∆εδοµένων σε αντίθεση µε τις σχεσιακές
Βάσεις ∆εδοµένων.
¶ÚÔÛ‰ÔÎÒÌÂÓ· ∞ÔÙÂϤÛÌ·Ù·
Όταν θα έχετε ολοκληρώσει τη µελέτη αυτής της ενότητας θα µπορείτε να:
• εξηγήσετε σε πολύ αδρές γραµµές τη γενική φιλοσοφία των αντικειµενοστραφών Βάσεων ∆εδοµένων
• περιγράψετε εν συντοµία τις διαφορές των σχεσιακών µε τις αντικειµενοστραφείς Βάσεις ∆εδοµένων
Σε αντίθεση µε τις προηγούµενες δεκαετίες που ο προγραµµατισµός
βασιζόταν στη δοµή, σε αυτή τη δεκαετία είχαµε µία βασική µεταστροφή από το λεγόµενο δοµηµένο προγραµµατισµό (structured
programming) στον προγραµµατισµό προσανατολισµένο στα αντικείµενα ή αντικειµενοστραφή προγραµµατισµό (object–oriented
programming). Γλώσσες προγραµµατισµού, όπως η C++, η Object
PASCAL και πιο πρόσφατα η Java (γλώσσα που κυριαρχεί στην ανάπτυξη εφαρµογών για τον παγκόσµιο ιστό), είναι αντικειµενοστραφείς
γλώσσες προγραµµατισµού που κυριαρχούν σταδιακά στην ανάπτυξη εφαρµογών.
Η εκτεταµένη χρήση αντικειµενοστραφών γλωσσών προγραµµατισµού και η αλλαγή φιλοσοφίας που ο αντικειµενοστραφής προγραµµατισµός έχει επιφέρει ανάγκασε και τις Βάσεις ∆εδοµένων να ακολουθήσουν. Να µην ξεχνάτε πως γύρω από τις Βάσεις ∆εδοµένων χτίζονται εφαρµογές που χειρίζονται ή παρουσιάζουν τα αποθηκευµένα
δεδοµένα ή ότι οι Βάσεις ∆εδοµένων είναι ένα τµήµα ενός µεγαλύτερου συστήµατος που αποτελείται από πολλές εφαρµογές λογισµικού.
Για την αντικειµενοστραφή φιλοσοφία δεν θα µιλήσουµε σε αυτό το
βιβλίο, αφού θεωρούµε ότι είναι είτε ήδη γνωστή, είτε ότι θα έχετε την
ευκαιρία να τη διδαχθείτε εκτενώς σε σχετικές µε το αντικείµενο θεµα-

160

K E º A § A I O 7 : ∞ ¡ ∆ π ∫ ∂ π ª ∂ ¡ √ ™ ∆ ƒ∞ º ∂ π ™ B ∞ ™ ∂ π ™ ¢ ∂ ¢ √ ª ∂ ¡ ø ¡

τικές ενότητες. Θα πούµε απλά ότι η αντικειµενοστραφής φιλοσοφία
χρησιµοποιεί κλάσεις αντικειµένων. Μία κλάση (class) έχει έναν τύπο
και µία σειρά από µεθόδους (methods), που είναι λειτουργίες που σχετίζονται µε αυτή την κλάση. Τα αντικείµενα µιας κλάσης είναι είτε τιµές
του τύπου της κλάσης, είτε έχουν τιµές του ίδιου τύπου. Οι κλάσεις είναι
οργανωµένες ιεραρχικά και υπάρχει κληρονοµικότητα των ιδιοτήτων
από τις ιεραρχικά ανώτερες κλάσεις προς τις ιεραρχικά κατώτερες.
Στο σχεδιασµό µίας Βάσης ∆εδοµένων που βασίζεται στην αντικειµενοστραφή φιλοσοφία, όλος ο κόσµος θεωρείται ότι αποτελείται από
αντικείµενα που έχουν κάποια υπόσταση. Έτσι, για παράδειγµα, αντικείµενο είναι οι φοιτητές (που συζητήσαµε στο προηγούµενο παράδειγµα), αλλά επίσης αντικείµενα είναι τα µαθήµατα και οι καρτέλες
των φοιτητών. Τα αντικείµενα οργανώνονται σε οµοειδείς κλάσεις.
Έτσι, για παράδειγµα, έχει νόηµα να οµαδοποιήσουµε όλους τους φοιτητές σε µία κλάση «ΦΟΙΤΗΤΗΣ» και όλα τα µαθήµατα σε µία κλάση
«ΜΑΘΗΜΑ», αλλά δεν θα είχε νόηµα να οµαδοποιήσουµε τους φοιτητές και τα µαθήµατα µαζί στην ίδια κλάση, αφού δεν έχουν κάτι
κοινό και έχουν διαφορετική συµµετοχή στην οργάνωση του πανεπιστηµίου. Επίσης, οι ιδιότητες και οι µέθοδοι µίας κλάσης πρέπει να
είναι κοινές για όλα τα αντικείµενα αυτής της κλάσης.
Για να ορισθούν αντικείµενα και να οργανωθούν σε κλάσεις σε µία
αντικειµενοστραφή Βάση ∆εδοµένων, πρέπει να χρησιµοποιηθεί µία
γλώσσα ορισµού δεδοµένων. Μία τέτοια γλώσσα θα πρέπει να δίνει
τη δυνατότητα να χτιστούν τα αντικείµενα (χρησιµοποιώντας τους
βασικούς τύπους που προσφέρει κάθε σύστηµα, όπως είναι οι
«integer», «char» κτλ), να ορισθούν οι σχέσεις ανάµεσα σε κλάσεις
και αντικείµενα και να περιγραφούν οι µέθοδοι που χρησιµοποιούνται
σε κάθε κλάση.
Μία τέτοια γλώσσα ορισµού δεδοµένων για αντικειµενοστραφείς Βάσεις
∆εδοµένων που τείνει να καθιερωθεί είναι η ODL (τα αρχικά σηµαίνουν
Object Definition Language, δηλαδή Γλώσσα Καθορισµού Αντικειµένων). H ODL είναι µία προσθήκη (επέκταση) της IDL (τα αρχικά σηµαίνουν Interface Description Language, δηλαδή Γλώσσα Περιγραφής του
Περιβάλλοντος Επικοινωνίας µε τον Χρήστη). Η IDL είναι τµήµα του
γνωστού CORBA (Common Object Request Broker Architecture), που
έχει καθιερωθεί στην υλοποίηση αντικειµενοστραφών εφαρµογών.

7 . 1 ∏ º π § √ ™ √ º π ∞ ∆ ø ¡ ∞ ¡ ∆ π ∫ ∂ π ª ∂ ¡ √ ™ ∆ ƒ∞ º ø ¡ µ ∞ ™ ∂ ø ¡ ¢ ∂ ¢ √ ª ∂ ¡ ø ¡

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

Μελετήστε (κατά προτίµηση από την προτεινόµενη βιβλιογραφία)
τη γλώσσα ορισµού αντικειµένων ODL και περιγράψτε τη χρήση της
στο σχεδιασµό αντικειµενοστραφών Βάσεων ∆εδοµένων.

7.2 ∏ ·ÓÙÈÎÂÈÌÂÓÔÛÙÚ·Ê‹˜ ÁÏÒÛÛ· ÂÚˆÙ‹ÛÂˆÓ OQL Î·È Ë
ÚfiÙ˘Ë ÁÏÒÛÛ· ÂÚˆÙ‹ÛÂˆÓ SQL3

™ÎÔfi˜
Σκοπός της ενότητας είναι να περιγραφεί γενικά η γλώσσα ερωτήσεων OQL, που είναι µία γλώσσα ερωτήσεων βασισµένη στα αντικείµενα, και µία σύντοµη παρουσίαση της πρότυπης γλώσσας ερωτήσεων
SQL3, που είναι εξέλιξη της SQL που παρέχει δυνατότητες χειρισµού
αντικειµένων.
¶ÚÔÛ‰ÔÎÒÌÂÓ· ∞ÔÙÂϤÛÌ·Ù·
Όταν θα έχετε ολοκληρώσει τη µελέτη αυτής της ενότητας θα µπορείτε να:
• εξηγήσετε σε πολύ αδρές γραµµές τη γενική φιλοσοφία της αντικειµενοστραφούς γλώσσας ερωτήσεων OQL
• περιγράψετε εν συντοµία τη χρήση της OQL
• περιγράψετε εν συντοµία κάποιες δυνατότητες χειρισµού αντικειµένων της γλώσσας ερωτήσεων SQL3
Σήµερα οι αντικειµενοστραφείς Βάσεις ∆εδοµένων δεν έχουν ακόµα
γνωρίσει την ευρεία αποδοχή και χρήση που έχουν γνωρίσει οι σχεσιακές Βάσεις ∆εδοµένων. Για αυτό το λόγο και δεν υπάρχουν σε
µεγάλη χρήση αντικειµενοστραφείς γλώσσες ερωτήσεων, σε αντίθεση µε την SQL και την QBE που χρησιµοποιούνται πολύ και υπάρχουν στα περισσότερα σχεσιακά Συστήµατα ∆ιαχείρισης Βάσεων
∆εδοµένων. Η νέα πρότυπη έκδοση της SQL, η SQL3, παρέχει ήδη

161

¢Ú·ÛÙËÚÈfiÙËÙ· 7.1

¢Ú·ÛÙËÚÈfiÙËÙ· 7.2

K E º A § A I O 7 : ∞ ¡ ∆ π ∫ ∂ π ª ∂ ¡ √ ™ ∆ ƒ∞ º ∂ π ™ B ∞ ™ ∂ π ™ ¢ ∂ ¢ √ ª ∂ ¡ ø ¡

162

κάποιες αντικειµενοστραφείς λειτουργίες και µπορεί να θεωρηθεί σαν
µία γλώσσα ερωτήσεων που είναι ανάµεσα στο σχεσιακό µοντέλο και
στο αντικειµενοστραφές. Σε αντίθεση µε την SQL3, η OQL είναι µία
καθαρά αντικειµενοστραφής γλώσσα ερωτήσεων.
Τα αρχικά OQL σηµαίνουν Object Query Language, δηλαδή αντικειµενοστραφής γλώσσα ερωτήσεων. Η OQL έχει σχεδιαστεί για να είναι
ενσωµατωµένη σε µία γλώσσα – οικοδεσπότη (host language) και να
παρέχει ένα καλύτερο τρόπο υποβολής ερωτήσεων. Η βασική µορφή
της OQL, µοιάζει µε την SQL όσον αφορά τη σύνταξη των εντολών.
Η διαφορά είναι ότι στις εντολές της OQL χειριζόµαστε αντικείµενα.
Μάλιστα, σε αντίθεση µε την SQL3, όπου δεν µπορεί να γίνεται χειρισµός αντικειµένων από τη γλώσσα – οικοδεσπότη, αλλά µόνο αντικείµενα από τη Βάση ∆εδοµένων και να γίνεται µεταφορά δεδοµένων,
η OQL δίνει δυνατότητα χειρισµού αντικειµένων και από τη Βάση
∆εδοµένων και αντικείµενα της γλώσσας – οικοδεσπότη, παρέχοντας
έτσι ένα µεγάλο πλεονέκτηµα στην υλοποίηση ερωτήσεων.
Ένα παράδειγµα ερώτησης σε OQL είναι η εντολή που ακολουθεί
SELECT
FROM
WHERE

º.∂¶ø¡Àª√
º√π∆∏∆∏™ AS º
º.√¡√ª∞ = ‘ªÈ¯¿Ï˘’

Παρατηρήστε τις οµοιότητες αυτής της εντολής µε τις εντολές της
γλώσσας ερωτήσεων SQL, για την οποία µιλήσαµε στο κεφάλαιο 5.
Η γλώσσα ερωτήσεων SQL3 έχει ενισχυθεί µε τους λεγόµενους
Abstract Data Types (αφηρηµένους τύπους δεδοµένων), µε τους οποίους µπορούν να οριστούν κατά κάποιο τρόπο κλάσεις. Η εντολή αυτή
είναι η εξής:
CREATE

TYPE [ŸÓÔÌ· ∆‡Ô˘] (
[∫·Ù¿ÏÔÁÔ˜ ηÙËÁÔÚËÌ¿ÙˆÓ Î·È ÔÈ Ù‡ÔÈ Î·ıÂÓfi˜]
[√ÚÈÛÌfi˜ ÙˆÓ ÏÂÈÙÔ˘ÚÁÈÒÓ EQUALS Î·È LESS THAN]
[√ÚÈÛÌfi˜ ªÂıfi‰ˆÓ]

);
Ο ορισµός των EQUALS και LESS THAN είναι προαιρετικός, ενώ οι
µέθοδοι µπορούν να ποικίλουν σε αριθµό ανάλογα µε την κάθε κλάση.
Ακολουθεί ο ορισµός της κλάσης «ΦΟΙΤΗΤΗΣ»:

7 . 2 ∏ ∞ ¡ ∆ π ∫ ∂ π ª ∂ ¡ √ ™ ∆ ƒ∞ º ∏ ™ ° § ø ™ ™ ∞ ∂ ƒ ø ∆ ∏ ™ ∂ ø ¡ O Q L ∫ ∞ π ∏ ¶ ƒ √ ∆ À ¶ ∏ ° § ø ™ ™ ∞ ∂ ƒ ø ∆ ∏ ™ ∂ ø ¡ S Q L 3

CREATE

TYPE º√π∆∏∆∏™ (
√¡√ª∞
VARCHAR (30),
∂¶ø¡Àª√
VARCHAR (30),
¶∞∆ƒø¡Àª√
VARCHAR (30),
AM
INTEGER,
HM_°∂¡
DATE,
EQUALS
DEFAULT,
LESS THAN
NONE,
FUNCTION ¶§∏ƒ∂™_√¡√ª∞
(:º1 º√π∆∏∆∏™)
RETURNS CHAR(90);
BEGIN
RETURN
(:º1.√¡√ª∞ AND ‘ ’ AND :º1.∂¶ø¡Àª√
AND ‘ ÙÔ˘ ’ AND :º1.¶∞∆ƒø¡Àª√);
END;
);
Στο προηγούµενο παράδειγµα ορίζουµε µία κλάση φοιτητής στην
οποία έχουµε περιγράψει τα κατηγορήµατα τα οποία απαρτίζουν κάθε
αντικείµενο. Επίσης, έχουµε ορίσει ότι δεν έχει νόηµα η σύγκριση
ανάµεσα σε φοιτητές, δηλαδή εάν ένα αντικείµενο Α είναι φοιτητής
και ένα αντικείµενο Β είναι φοιτητής δεν έχει νόηµα η σχέση «µικρότερο από», δηλαδή Α < Β. Τέλος, ορίσαµε και µία µέθοδο που ισχύει
για κάθε αντικείµενο φοιτητής και που επιστρέφει το πλήρες όνοµα
κάθε αντικειµένου.

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

Μελετήστε (κατά προτίµηση από την προτεινόµενη βιβλιογραφία)
τη γλώσσα ερωτήσεων SQL3 και περιγράψτε τη χρήση της στο σχεδιασµό αντικειµενοστραφών Βάσεων ∆εδοµένων. Επίσης, ορίστε τις
πιθανές κλάσεις του παραδείγµατος 5.1 του κεφαλαίου 5 και προδιαγράψτε µία τουλάχιστον µέθοδο για κάθε κλάση που έχετε ορίσει στην SQL3.

¢Ú·ÛÙËÚÈfiÙËÙ· 7.3

¢Ú·ÛÙËÚÈfiÙËÙ· 7.4

163

K E º A § A I O 7 : ∞ ¡ ∆ π ∫ ∂ π ª ∂ ¡ √ ™ ∆ ƒ∞ º ∂ π ™ B ∞ ™ ∂ π ™ ¢ ∂ ¢ √ ª ∂ ¡ ø ¡

164

™‡ÓÔ„Ë
Στο κεφάλαιο αυτό περιγράψαµε πολύ συνοπτικά τις βασικές αρχές των αντικειµενοστραφών Βάσεων ∆εδοµένων και µιλήσαµε λίγο για τη αντικειµενοστραφή γλώσσα ερωτήσεων OQL. Ειδικότερα, στην ενότητα 7.1 µιλήσαµε γενικά για αντικείµενα, κλάσεις και µεθόδους και τη χρήση τους στις Βάσεις ∆εδοµένων και στην ενότητα 7.2 µιλήσαµε για τη χρήση της OQL και της SQL3. Η παρουσίαση των αντικειµενοστραφών Βάσεων ∆εδοµένων και ακόµα περισσότερο της OQL και της
SQL3 έγινε πολύ συνοπτικά. Ο καλύτερος τρόπος για να µάθετε περισσότερα για τις
αντικειµενοστραφείς Βάσεις ∆εδοµένων είναι να µελετήσετε περισσότερα από την
προτεινόµενη βιβλιογραφία που ακολουθεί.
BÈ‚ÏÈÔÁÚ·Ê›· ÁÈ· ÂÚ·ÈÙ¤Úˆ ·Ó¿ÁÓˆÛË
[1] Ullman J. D., Widom J., A First Course in Database Systems, Prentice Hall, 1997.
Είναι ένα εισαγωγικό βιβλίο για Βάσεις ∆εδοµένων, το οποίο αναφέρει αρκετά για
αντικειµενοστραφείς Βάσεις ∆εδοµένων. Στο κεφάλαιο 1 και ειδικότερα στο 1.3 (το
µέλλον των Βάσεων ∆εδοµένων) παρουσιάζει τις βασικές αρχές της αντικειµενοστραφούς φιλοσοφίας, ενώ στο κεφάλαιο 8 µπορείτε να διαβάσετε για αντικειµενοστραφείς γλώσσες ερωτήσεων και να βρείτε µια εκτενή παρουσίαση της γλώσσας ODL. Επίσης, στο κεφάλαιο 2 παρουσιάζονται θέµατα σχεδίασης προσανατολισµένα στα αντικείµενα και γενικότερα στη φιλοσοφία των αντικειµενοστραφών
Βάσεων ∆εδοµένων. Είναι ένα αρκετά καλό βιβλίο για να αρχίσετε να µελετάτε το
θέµα των αντικειµενοστραφών Βάσεων ∆εδοµένων.
[2] Silberschatz A., Korth H., Sudarshan S, Database System Concepts, Third Edition,
McGraw–Hill, 1986.
Το βιβλίο αυτό αφιερώνει δύο κεφάλαια στις αντικειµενοστραφείς Βάσεις ∆εδοµένων. Ειδικότερα στο κεφάλαιο 8 µε τίτλο «Object – Oriented Databases» παρουσιάζονται οι αντικειµενοστραφείς Βάσεις ∆εδοµένων και τα persistent Ctt συστήµατα. Στο κεφάλαιο 9 παρουσιάζονται οι λεγόµενες Object – Relational Databases.
Κατά την άποψή µας είναι ένα από τα πολύ καλά αναγνώσµατα για το θέµα των
αντικειµενοστραφών Βάσεων ∆εδοµένων και, σε περίπτωση που θέλετε να εµβαθύνετε στο αντικείµενο, σίγουρα θα έπρεπε να το συµπεριλάβετε στη µελέτη σας.
[3] Elmasri R. & Navathe S. B., Fundamentals of Database Systems, Addison–Wesley,
1994.
Το βιβλίο υπάρχει και σε ελληνική µετάφραση από τις εκδόσεις ∆ίαυλος σε µετάφραση Μ. Χατζόπουλου, 1996. Θέµατα αντικειµενοστραφών Βάσεων ∆εδοµένων
συζητούνται στο κεφάλαιο 22 (2ος τόµος για την ελληνική έκδοση). Σε αυτό το
κεφάλαιο θα βρείτε και µία πολύ καλή σύνοψη της θεωρίας της αντικειµενοστραφoύς σχεδίασης. Στο συγκεκριµένο βιβλίο καλό είναι να διαβάσετε και το
κεφάλαιο 25, που µιλάει για αναδυόµενες τεχνολογίες και εφαρµογές και γενικά
που συζητά το µέλλον των Βάσεων ∆εδοµένων.

AÓ·ÎÂÊ·Ï·›ˆÛË
™ÎÔfi˜
Σκοπός του κεφαλαίου είναι να γίνει σύνοψη της ύλης που καλύψαµε
και να δοθούν οδηγίες για το πώς να οργανώσετε τα επόµενα στάδια
της µελέτη σας στις Βάσεις ∆εδοµένων.
¶ÚÔÛ‰ÔÎÒÌÂÓ· ∞ÔÙÂϤÛÌ·Ù·
Όταν θα έχετε ολοκληρώσει τη µελέτη αυτού του κεφαλαίου θα µπορείτε να:
• ανακεφαλαιώσετε την ύλη που διδαχθήκατε
• οργανώσετε µία καλή επανάληψη σε όσα διδαχθήκατε
• σχεδιάσετε τα επόµενα στάδια της µελέτης των Βάσεων ∆εδοµένων
ώστε να αποκτήσετε επιπλέον γνώσεις για αυτά που συζητήσαµε σε
αυτό το βιβλίο
Στο βιβλίο αυτό έγινε µία εισαγωγή στα θέµατα των Βάσεων ∆εδοµένων. Ειδικότερα, µιλήσαµε για τις βασικές έννοιες που σχετίζονται µε
τις Βάσεις ∆εδοµένων, ορίσαµε τι σηµαίνει Βάση ∆εδοµένων, πού πρέπει και πού δεν πρέπει να χρησιµοποιείται µία Βάση ∆εδοµένων. Επίσης, µιλήσαµε για τα πλεονεκτήµατα της οργάνωσης των δεδοµένων
µας µε τη βοήθεια µίας Βάσης ∆εδοµένων έναντι της παραδοσιακής
οργάνωσης των δεδοµένων µε σύστηµα αρχείων. Συζητήσαµε το Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων και βοηθήσαµε να µη συγχέετε τη
Βάση ∆εδοµένων µε το Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων.
Ακόµα, σας παρουσιάσαµε τους διάφορους χρήστες ενός Συστήµατος
∆ιαχείρισης Βάσεων ∆εδοµένων και τον ρόλο του καθενός.
Στη συνέχεια του βιβλίου µιλήσαµε για τα τρία επίπεδα της αρχιτεκτονικής ενός Συστήµατος ∆ιαχείρισης Βάσεων ∆εδοµένων και δώσαµε
µεγάλη έµφαση στο φυσικό επίπεδο. Μιλήσαµε για δείκτες, καταλόγους, ευρετήρια, τεχνικές κατακερµατισµού και για τα δέντρα τύπου Β.
Ακολούθως, περάσαµε στα µοντέλα δεδοµένων και περιγράψαµε εν
συντοµία δύο ιστορικά µοντέλα (δικτυακό και ιεραρχικό) και δώσαµε
έµφαση στο σχεσιακό µοντέλο, επεξηγώντας τους πίνακες και τις σχέ-

8
º

§

π

KEºA§AIO 1: EI™A°ø°H

166

σεις ανάµεσα σε πίνακες σε αυτό το µοντέλο. Μιλήσαµε για αρχές
σχεδίασης Βάσεων ∆εδοµένων και αναλύσαµε τα ∆ιαγράµµατα Σχέσεων–Οντοτήτων και την αξία που έχει η εφαρµογή τους στην ανάλυση ενός προβλήµατος και τη σχεδίαση µίας Βάσης ∆εδοµένων.
Στα πλαίσια αυτού του βιβλίου µιλήσαµε για κάποια γενικά θέµατα
που αφορούν τις Βάσεις ∆εδοµένων, όπως είναι η ταυτόχρονη προσπέλαση στα δεδοµένα, ο έλεγχος της ακεραιότητας των δεδοµένων
και το κλείδωµα των δεδοµένων και αναφέραµε τα προβλήµατα του
deadlock και του livelock. Στα πλαίσια της ευρύτερης παρουσίασης
των Σχεσιακών Βάσεων ∆εδοµένων έγινε µία παρουσίαση της Σχεσιακής Άλγεβρας και του Σχεσιακού Λογισµού. Μεγάλη έµφαση
δώσαµε στη γλώσσα ερωτήσεων SQL. Για την καλύτερη εκµάθηση
αυτής της γλώσσας δώσαµε αρκετά παραδείγµατα και ασκήσεις που
σίγουρα εκτελέσατε και αποκτήσατε εµπειρία στην SQL.
Ακολούθως, και µε δεδοµένη την εµπειρία σας στη γλώσσα ερωτήσεων SQL, έγινε παρουσίαση της γλώσσας ερωτήσεων QBE. Συζητήθηκε η διαφορετική φιλοσοφία της QBE και η φιλικότητά της προς το
χρήστη, καθώς και οι πίνακες ερωτήσεων και απαντήσεων. ∆ώσαµε
και για τη γλώσσα ερωτήσεων QBE αρκετά παραδείγµατα και ασκήσεις, όπως και ένα παράδειγµα από ένα σύστηµα που χρησιµοποιεί
QBE ως βασική γλώσσα ερωτήσεων.
Τέλος, έγινε µία πολύ σύντοµη αναφορά (καθαρά για ενηµέρωσή σας)
στις αντικειµενοστραφείς Βάσεις ∆εδοµένων και στην εξέλιξη που επιφέρουν στη γενικότερη φιλοσοφία των Βάσεων ∆εδοµένων. Μιλήσαµε για την αντικειµενοστραφή γλώσσα ορισµού δεδοµένων ODL, την
πρότυπη γλώσσα ερωτήσεων SQL3 και τις δυνατότητες που παρέχει
για ορισµό αφηρηµένων τύπων δεδοµένων και περιγράψαµε την αντικειµενοστραφή γλώσσα ερωτήσεων OQL.
™˘Ó¤¯ÂÈ· ÌÂϤÙ˘

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

BA™EI™ ¢E¢OMENøN

βασικές έννοιες που πρέπει να γνωρίζετε, χωρίς όµως να εµβαθύνει σε
κάποιο από τα θέµατα που συζητήσαµε.
Σε περίπτωση που θέλετε να εµβαθύνετε σε κάποιο θέµα τότε ο µόνος
τρόπος είναι να µελετήσετε τη βιβλιογραφία για αυτό το θέµα. Μάλιστα σας συµβουλεύουµε να µην περιοριστείτε σε ένα µόνο βιβλίο,
αλλά να σχεδιάσετε τη µελέτη σας διαβάζοντας από περισσότερα του
ενός βιβλία. Σε τελική ανάλυση, αυτή είναι και η φιλοσοφία της εκπαίδευσης από απόσταση. Το βασικό εγχειρίδιο να σας παρέχει κατευθυντήριες γραµµές και εσείς να µπορείτε να αντλείτε επιπλέον γνώση
(αν το επιθυµείτε) από πολλαπλές πηγές.
Τέλος, όσο αφορά τις γλώσσες ερωτήσεων (SQL και QBE) που
παρουσιάσαµε, ο καλύτερος τρόπος για να τις µάθετε είναι η εξάσκηση. Αρκετές ασκήσεις υπάρχουν και στο εργαστηριακό µάθηµα
«Βάσεις ∆εδοµένων» της Θεµατικής Ενότητας 9.2, που θα έχετε τη
δυνατότητα να παρακολουθήσετε στο µέλλον. Οι ασκήσεις που δίνονται σε αυτό το βιβλίο είναι καλό, αφού γίνουν πρώτα σε χαρτί, µετά
να εκτελεστούν και σε κάποιο Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων, από όσους από εσάς έχετε τη δυνατότητα.
Ολοκληρώνοντας, τώρα είναι ένα καλό χρονικά σηµείο για να κάνετε µία καλή επανάληψη σε όσα διαβάσατε. Χρησιµοποιήστε αυτό το
κεφάλαιο ως υπόδειγµα για να αρχίσετε να ξαναδιαβάσετε όσα συζητήσαµε.

167

E›ÏÔÁÔ˜
Φτάσατε στη µελέτη του τρίτου τόµου της Θεµατικής Ενότητας
«Αρχές Τεχνολογίας Λογισµικού».
Ελπίζουµε ότι η µελέτη του σας βοήθησε να κατανοήσετε τις βασικές
αρχές των Βάσεων ∆εδοµένων. Τώρα είστε σε θέση να προχωρήσετε
περισσότερο σε µελέτη εξειδικευµένων θεµάτων και εµβάθυνση στα
θέµατα που συζητήσαµε από τη βιβλιογραφία που σας παρέχουµε.
Σας ευχόµαστε καλή συνέχεια µε τις σπουδές σας.
Mιχάλης Ξένος – ∆ηµήτρης Xριστοδουλάκης

A·ÓÙ‹ÛÂȘ ·Û΋ÛÂˆÓ ·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
1.1
Τα {1, 2, 4, 5, 7, 9} είναι δεδοµένα. (ΣΩΣΤΟ)
Όπως ακριβώς αναφέρεται και στο παράδειγµα 1.1 του βιβλίου είναι µια συλλογή
από αριθµούς. Εάν σας µπέρδεψε το γεγονός ότι δεν έχουν λογική σειρά, προσέξτε:
Το αν έχουν λογική σειρά ή όχι δεν έχει σηµασία για το αν είναι δεδοµένα ή όχι, αλλά
για την πληροφορία που θα µπορέσουµε να εξάγουµε από αυτά.
Τα {1, “Νίκος”, 4, 5, “Ποδήλατο”} είναι δεδοµένα. (ΣΩΣΤΟ)
Είναι µια συλλογή από αριθµούς και συµβολοσειρές. Εάν σας µπέρδεψε το γεγονός
ότι αναµειγνύονται αριθµοί και συµβολοσειρές, θυµηθείτε ότι όπως και στην προηγούµενη πρόταση δεν προσπαθούµε να ερµηνεύουµε τα δεδοµένα.
Τα {“Αθήνα”, 34, “Παρίσι”, 28, “Μόσχα”, 11, “Μαδρίτη”, 37, “Ρώµη”, 33} είναι πληροφορία. (ΛΑΘΟΣ)
Θα µπορούσαν να γίνουν πληροφορία εάν µας έλεγαν ότι αντιπροσωπεύουν πόλεις
τις Ευρώπης και τις θερµοκρασίες τους σε °C. Προσοχή, εάν απαντήσατε ότι είναι
πληροφορία αυτό έγινε γιατί είσαστε αρκετά έξυπνος/η, ώστε να καταλάβετε το πλαίσιο αναφοράς, όµως µην ξεχνάτε ότι η πρόταση δεν είναι πληροφορία, στην πληροφορία καταλήξατε εσείς!
Τα {“Αθήνα”, 34, “Παρίσι”, 28, “Μόσχα”, 11, “Μαδρίτη”, 37, “Ρώµη”, 33} είναι δεδοµένα. (ΣΩΣTO)
Είναι δεδοµένα. Βλ. την απάντηση στην 2η πρόταση.
Τα δεδοµένα γίνονται πληροφορία µόλις αποθηκευτούν στον ηλεκτρονικό υπολογιστή.
(ΛΑΘΟΣ)
Τα δεδοµένα παραµένουν δεδοµένα, όταν αποθηκεύονται στον ηλεκτρονικό υπολογιστή. Εάν επιλέξατε σωστό µην απογοητεύεστε, απλά ξαναδιαβάστε την ενότητα
1.1.1 και προσπαθήστε να δηµιουργήσετε µερικά δικά σας παραδείγµατα δεδοµένων ώστε να κατανοήσετε καλύτερα τι είναι δεδοµένα και τι πληροφορία.
1.2
∆εδοµένα για την υγρασία των πόλεων. Π.χ. υγρασία 87%. (ΣΩΣΤΟ)
Είναι µετεωρολογικά δεδοµένα και βέβαια θα µπορούσαν να χρησιµοποιηθούν στη
Βάση ∆εδοµένων.

A¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™ / KEº. 1

172

∆εδοµένα και για άλλες ώρες τις ηµέρας, όπως η θερµοκρασία των πόλεων ανά ώρα.
(ΣΩΣΤΟ)
Πάλι η Βάση ∆εδοµένων θα παραµείνει µία Μετεωρολογική Βάση ∆εδοµένων.
Βέβαια θα απαιτείται µεγαλύτερη προσπάθεια για τη εισαγωγή των δεδοµένων, αφού
θα έχουµε δεδοµένα ανά ώρα, αλλά δεν παύει να είναι σωστό.
∆εδοµένα για τον αέρα και την έντασή του σε κάθε πόλη κάθε µεσηµέρι. (ΣΩΣΤΟ)
Είναι µετεωρολογικά δεδοµένα και βέβαια θα µπορούσαν να χρησιµοποιηθούν στη
Βάση ∆εδοµένων.
1.3
α) Ναι, µια Βάση ∆εδοµένων πρέπει να αποτελείται από δεδοµένα σχετικά µεταξύ τους,
όµως δεν είναι µόνο αυτό που την ορίζει ως Βάση ∆εδοµένων. Μάλλον παρασυρθήκατε και επιλέξατε την πρώτη σωστή απάντηση χωρίς να διαβάσετε όλες τις απαντήσεις.
β) Ναι, µια Βάση ∆εδοµένων πρέπει να παρέχει ένα τρόπο χειρισµού των δεδοµένων έτσι
ώστε να µπορούν να εξαχθούν πληροφορίες από αυτά, όµως δεν είναι µόνο αυτό που
την ορίζει ως Βάση ∆εδοµένων. Εάν λείπουν τα α) και γ) τότε δεν είναι Βάση ∆εδοµένων. ∆εν πειράζει που δεν απαντήσατε σωστά, αλλά ξαναδιαβάστε τον ορισµό της Βάση
∆εδοµένων στην ενότητα 1.1.2.
γ) Ναι, µια Βάση ∆εδοµένων πρέπει να σχετίζεται µε κάποιο υπαρκτό πρόβληµα το οποίο
να αναπαριστά µε δεδοµένα για κάποιο συγκεκριµένο σκοπό. Όµως δεν είναι µόνο αυτό
που την ορίζει ως Βάση ∆εδοµένων. Εάν λείπουν τα α) και β), τότε δεν είναι Βάση
∆εδοµένων. ∆εν πειράζει που δεν απαντήσατε σωστά, αλλά ξαναδιαβάστε τον ορισµό
της Βάση ∆εδοµένων στην ενότητα 1.1.2.
δ) Σωστά. Βάση ∆εδοµένων είναι αυτή που συγκεντρώνει όλα τα παραπάνω. Μπράβο ήταν
άσκηση που εύκολα µπορούσατε να παρασυρθείτε και να κάνετε λάθος. Είσαστε πολύ
προσεκτικός/ή.
1.4
Για κάθε Βάση ∆εδοµένων χρειαζόµαστε διαφορετικό Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων. (ΛΑΘΟΣ)
Είπαµε πως µε ένα Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων µπορούµε να υλοποιήσουµε και να χειριζόµαστε πολλές Βάσεις ∆εδοµένων. Εάν απαντήσατε «Σωστό»
µην απογοητεύεστε. Μιλήσαµε για πολλές έννοιες και µάλλον έχετε µπερδευτεί λίγο.
Κάντε µία επανάληψη στις ενότητες 1.1 και 1.2 και όλα θα αρχίσουν να ξεκαθαρίζουν

A¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™ / KEº. 1

Τη µεταφορά των δεδοµένων από και προς το υλικό αποθήκευσης την αναλαµβάνει το
Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων. (ΣΩΣΤΟ)
Σωστά! Ειδικότερα την µεταφορά δεδοµένων την αναλαµβάνει το τµήµα του Συστήµατος που ονοµάζεται «Λογισµικό Αποθήκευσης και Ανάκλησης ∆εδοµένων» όπως
φαίνεται στο σχήµα της ενότητας 1.2.2.
Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων είναι πολλές Βάσεις ∆εδοµένων µαζί. (ΛΑΘΟΣ)
Με ένα Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων µπορούν να υλοποιηθούν και να
χειρίζονται πολλές Βάσεις ∆εδοµένων, αλλά αυτό δεν σηµαίνει πως πολλές Βάσεις
∆εδοµένων είναι ένα Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων. Εάν απαντήσατε
«Σωστό» καλύτερα να ξαναµελετήσετε τις ενότητες 1.2, 1.2.1 και 1.2.2.
Το Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων αποτελείται από το Λογισµικό Χειρισµού
Ερωτήσεων, το Λογισµικό Αποθήκευσης και Ανάκλησης ∆εδοµένων και το Υλικό Αποθήκευσης των ∆εδοµένων. (ΛΑΘΟΣ)
Αυτή ήταν µια δύσκολη ερώτηση. Εάν επιλέξατε «Λάθος» τότε µπράβο σας. Το λάθος
είναι ότι το Υλικό Αποθήκευσης των ∆εδοµένων δεν αποτελεί τµήµα του Συστήµατος
∆ιαχείρισης Βάσεων ∆εδοµένων. Εάν απαντήσατε «Σωστό» δεν πειράζει. Θυµηθείτε
τον ορισµό του Συστήµατος ∆ιαχείρισης Βάσεων ∆εδοµένων. Είπαµε ότι είναι «…το
λογισµικό…» και όχι το υλικό.
1.5
Η χρήση της βάσης ∆εδοµένων µας εξασφαλίζει ότι δύο χρήστες δεν θα µπορέσουν να διαβάσουν ταυτόχρονα τα ίδια δεδοµένα. (ΛΑΘΟΣ)
Tο Σύστηµα ∆ιαχείρισης προστατεύει τα δεδοµένα από ταυτόχρονες αλλαγές από
δύο ή περισσότερους χρήστες. Όµως η ανάγνωση των δεδοµένων από περισσότερους από ένα χρήστη τη φορά είναι πλεονέκτηµα της χρήσης της Βάσης ∆εδοµένων.
Εάν απαντήσατε «Λάθος» µπράβο σας, ήταν µια ερώτηση που µπορούσε να σας
µπερδέψει. Εάν απαντήσατε «Σωστό» δεν πειράζει, απλά ξαναδιαβάστε την ενότητα 1.3.1.
Η Βάση ∆εδοµένων παρέχει ένα µηχανισµό που παρέχει ταχύτατα απαντήσεις σε ερωτήσεις του χρήστη. (ΣΩΣΤΟ)
Όντως η Βάση ∆εδοµένων παρέχει αυτή τη δυνατότητα. Εάν απαντήσατε λάθος µην
απογοητεύεστε, αλλά καλύτερα να κάνετε µία επανάληψη στις ενότητες 1.2 και µετά
να ξαναδιαβάσετε την ενότητα 1.3.2.

173

A¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™ / KEº. 1

174

Η Βάση ∆εδοµένων δεν επιτρέπει αλλαγές στη µορφή των δεδοµένων. (ΛΑΘΟΣ)
Όπως διαβάσατε στην ενότητα 1.3.3 η Βάση ∆εδοµένων παρέχει ευελιξία σε τέτοιου είδους αλλαγές. Εάν απαντήσατε «Σωστά» µάλλον µπερδευτήκατε. Μην απογοητεύεστε.
Η ποιότητα των δεδοµένων είναι καλύτερη εάν χρησιµοποιήσουµε αρχεία αντί για Βάση
∆εδοµένων. (ΛΑΘΟΣ)
Όπως διαβάσατε στην ενότητα 1.3.4 η ποιότητα των δεδοµένων είναι καλύτερη µε
τη χρήση Βάσης ∆εδοµένων λόγω των µηχανισµών προστασίας που παρέχει αυτή.
Εάν απαντήσατε «Σωστά» µάλλον µπερδευτήκατε. Μην απογοητεύεστε. Καλύτερα
να κάνετε µια επανάληψη σε ότι έχετε µελετήσει σε αυτή την ενότητα.
1.6
Πληροφορία είναι δεδοµένα που δεν έχουν αποθηκευτεί σε ηλεκτρονικό υπολογιστή.
(ΛΑΘΟΣ)
Θυµηθείτε τους ορισµούς που µελετήσατε στην ενότητα 1.1.1. Η πληροφορία εξάγεται από τα δεδοµένα, ανεξαρτήτως από που βρίσκονται αυτά αποθηκευµένα. Εάν
απαντήσατε «Σωστό» µάλλον δεν δώσατε πολύ βάρος στην επανάληψη που σας προτείναµε.
Στη Βάση ∆εδοµένων αποθηκεύονται δεδοµένα, από τα οποία εξάγονται πληροφορίες.
(ΣΩΣΤΟ)
Είναι σωστό. Εξάλλου αυτός είναι ακριβώς και ο σκοπός µιας Βάσης ∆εδοµένων.
Εάν απαντήσατε «Λάθος» µάλλον µπερδευτήκατε µε τον ορισµό της Βάσης ∆εδοµένων. ∆εν πειράζει, αλλά καλύτερα επαναλάβετε την επανάληψη του κεφαλαίου 1.
Κάθε συλλογή δεδοµένων αποτελεί µία Βάση ∆εδοµένων. (ΛΑΘΟΣ)
Είπαµε πως Βάση ∆εδοµένων δεν είναι απλά µία συλλογή δεδοµένων, αλλά ένα
µοντέλο του πραγµατικού κόσµου µαζί µε τον τρόπο χειρισµού των δεδοµένων. Εάν
απαντήσατε «Σωστό» ξαναµελετήστε τον ορισµό της ενότητας 1.1.2.
Βάση ∆εδοµένων δεν µπορεί να υπάρξει χωρίς ηλεκτρονικό υπολογιστή. (ΛΑΘΟΣ)
Υπάρχει και το παράδειγµα 1.2 που δεν χρησιµοποιεί ηλεκτρονικό υπολογιστή. Εάν
απαντήσατε «Σωστό» ίσως σας µπέρδεψε το γεγονός ότι είπαµε ότι αυτή η Βάση
∆εδοµένων δεν είναι καθόλου ρεαλιστική λύση. Όµως δεν παύει να είναι µία Βάση
∆εδοµένων.
Το Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων διευκολύνει τη δηµιουργία και συντήρηση

A¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™ / KEº. 1

Βάσεων ∆εδοµένων. (ΣΩΣΤΟ)
Ακριβώς αυτός είναι ο ρόλος του. Εάν απαντήσατε «Λάθος» µάλλον µπερδευτήκατε µε τον ορισµό της ενότητας 1.2. ∆εν πειράζει, αλλά καλύτερα επαναλάβετε την
επανάληψη του κεφαλαίου 1.
Ο ∆ιαχειριστής ενός Συστήµατος ∆ιαχείρισης Βάσεων ∆εδοµένων µπορεί να δηµιουργήσει Βάσεις ∆εδοµένων και να ορίσει Ιδιοκτήτες για κάθε Βάση ∆εδοµένων. (ΣΩΣΤΟ)
Ο ορισµός Βάσεων ∆εδοµένων και αρµοδιοτήτων χρηστών είναι βασική εργασία
του ∆ιαχειριστή Συστήµατος. Εάν απαντήσατε «Λάθος», καλύτερα να δώσετε έµφαση στην επανάληψη της ενότητας 1.4.
Οι Ιδιοκτήτες µίας Βάσης ∆εδοµένων µπορούν να διαγράψουν ή να ορίσουν χρήστες σε
αυτή τη Βάση ∆εδοµένων. (ΣΩΣΤΟ)
Ο ρόλος του ιδιοκτήτη είναι και ο ορισµός χρηστών, καθώς και των αρµοδιοτήτων
κάθε χρήστη (δηλαδή σε ποιο επίπεδο θα ανήκει). Εάν απαντήσατε «Λάθος», µάλλον µπερδέψατε τις αρµοδιότητες του ∆ιαχειριστή Συστήµατος µε αυτές του Ιδιοκτήτη της Βάσης ∆εδοµένων.
Οι Ιδιοκτήτες µίας Βάσης ∆εδοµένων µπορούν να διαγράψουν ή να ορίσουν µόνο τους
Χρήστες Κατώτερης ∆ιαβάθµισης σε αυτή τη Βάση ∆εδοµένων. (ΛAΘOΣ)
Μπορούν να διαγράψουν, ή να ορίσουν χρήστες κάθε επιπέδου. Βλέπε την απάντηση στην προηγούµενη ερώτηση. Tο λάθος είναι στο «µόνο».

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

175

A¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™ / KEº. 2

176

2.1
Ακολουθούν οι σωστές απαντήσεις. Μπράβο σας, εάν απαντήσατε σωστά. Σε αντίθετη
περίπτωση αφιερώστε χρόνο για να κάνετε µία επανάληψη στην ενότητα 2.1, δίνοντας ιδιαίτερη έµφαση στους ορισµούς. Μην απογοητεύεστε εάν δεν απαντήσατε σωστά, αλλά µην
παραλείψετε την επανάληψη.
α) Ως διαφάνεια ορίζεται το γεγονός ότι ο χρήστης δε γνωρίζει που βρίσκονται τα δεδοµένα και απλά βλέπει το αποτέλεσµα των εντολών που εκτελεί στο εξωτερικό επίπεδο.
β) Ως φυσικό επίπεδο της αρχιτεκτονικής µίας Βάσης ∆εδοµένων ορίζεται το επίπεδο στο
οποίο τα δεδοµένα αποθηκεύονται και οργανώνονται πραγµατικά στη Βάση ∆εδοµένων.
γ) Ως εξωτερικό επίπεδο της αρχιτεκτονικής µίας Βάσης ∆εδοµένων ορίζεται το επίπεδο
στο οποίο τα δεδοµένα της Βάσης ∆εδοµένων παρουσιάζονται στο χρήστη.
2.2
Ο χρήστης πρέπει να περιγράφει κάθε εντολή που δίνει στο εξωτερικό επίπεδο µε την αντίστοιχη εντολή στο φυσικό επίπεδο. (ΛΑΘΟΣ)
Στην ενότητα 2.1.2 είπαµε ότι ο χρήστης βλέπει µόνο τις εντολές στο εξωτερικό επίπεδο. ∆είτε επίσης και τον ορισµό της διαφάνειας στην ενότητα 2.1.3. Σύµφωνα µε
αυτόν τον ορισµό ο χρήστης δεν πρέπει να ασχολείται µε το φυσικό επίπεδο. Άρα η
σωστή απάντηση είναι (ΛΑΘΟΣ).
Το επίπεδο αντίληψης συνδέει το φυσικό επίπεδο µε το εξωτερικό επίπεδο. (ΣΩΣΤΟ)
Είναι σωστό σύµφωνα µε όσα περιγράφονται στην ενότητα 2.1.4. Εάν απαντήσατε
λάθος, διαβάστε ξανά τους ορισµούς σε αυτή την ενότητα.
Ο χρήστης βλέπει τα δεδοµένα στο εξωτερικό επίπεδο. (ΣΩΣΤΟ)
Είναι σωστό σύµφωνα µε τον ορισµό της ενότητας 2.1.2.
∆ιαφάνεια σηµαίνει ότι ο χρήστης βλέπει τη µορφή των δεδοµένων για κάθε επίπεδο.
(ΛΑΘΟΣ)
Μπράβο σας, εάν επιλέξατε (ΛΑΘΟΣ) γιατί είναι πραγµατικά δύσκολη έννοια, αφού
µπορείτε να µπερδευτείτε µε τον ετυµολογικό ορισµό της λέξης «διαφάνεια». ∆ιαβάστε ξανά τον ορισµό της ενότητας 2.1.3, εάν απαντήσατε (ΣΩΣΤΟ).
Στο επίπεδο αντίληψης δεν επιτελούνται στην πραγµατικότητα λειτουργίες, απλά είναι ένα
επίπεδο για να συνδέει το φυσικό µε το εξωτερικό επίπεδο. (ΛΑΘΟΣ)

A¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™ / KEº. 2

Βέβαια είναι λάθος. ∆ιαβάστε την ενότητα 2.1.4 και µελετήστε ξανά τα σχήµατα 2.2
και 2.3 ειδικά στο σχήµα 2.3 παρουσιάζονται µία σειρά από λειτουργίες που επιτελούνται στο επίπεδο αντίληψης.
2.3
«102», «17/12/1998», «23» (ΣΩΣΤΟ)
Είναι ένα κλασικό παράδειγµα εγγραφής, όπως την ορίσαµε στην εκφώνηση της
άσκησης. Μπράβο σας εάν απαντήσατε (ΣΩΣΤΟ).
«132», «∆εν έγινε µέτρηση», «0» (ΣΩΣΤΟ)
Μπράβο σας εάν απαντήσατε (ΣΩΣΤΟ), γιατί ήταν εύκολο να κάνετε λάθος. Θυµηθείτε ότι ως ηµεροµηνία ορίσαµε «Κείµενο (20)», άρα η τιµή «∆εν έγινε µέτρηση»
είναι αποδεκτή τιµή.
«8786117», «6201345α», «123» (ΣΩΣΤΟ)
Μπράβο σας εάν απαντήσατε (ΣΩΣΤΟ), γιατί και εδώ ήταν πολύ εύκολο να κάνετε
λάθος. Ο κωδικός δεν πρέπει να έχει µήκος 4 χαρακτήρες, αλλά να είναι 4 Bytes.
Αυτό σηµαίνει ότι αριθµοί µέχρι και τον 4.294.967.296 είναι δεκτοί, άρα και ο
8.786.117 είναι αποδεκτός. Μην απογοητεύεστε, εάν απαντήσατε λάθος.
«12», «17/11/1998», «555» (ΛΑΘΟΣ)
Η σωστή απάντηση είναι (ΛΑΘΟΣ), όχι γιατί η θερµοκρασία 555 είναι πολύ υψηλή,
αλλά γιατί ο αριθµός 555 είναι 2 Bytes και όχι 1.
«ΑΒ», «13/02/1999», «23» (ΛΑΘΟΣ)
Η σωστή απάντηση είναι (ΛΑΘΟΣ), γιατί η τιµή «ΑΒ» δεν αντιστοιχεί σε ακέραιο
αριθµό. Μπράβο σας εάν απαντήσατε σωστά σε όλες τις εγγραφές. Σε αντίθετη περίπτωση αφιερώστε λίγο χρόνο για µία επανάληψη στην ενότητα 2 του κεφαλαίου 2.
2.4
1) Η σωστή απάντηση είναι 29 blocks.
2) Η σωστή απάντηση είναι 143 blocks.
3) Η σωστή απάντηση είναι 1 block.
Η λογική των λύσεων είναι η εξής: Κάθε block έχει διαθέσιµα 200–20=180 Bytes
(είπαµε ότι τα 20 δεσµεύονται). Άρα σε κάθε block χωράνε 7 εγγραφές (180 Bytes

177

A¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™ / KEº. 2

178

έχει το block και 25 Bytes για κάθε εγγραφή, 180/25=7,2. Όµως, δεν µπορούµε να
έχουµε 7,2 εγγραφές αφού είπαµε ότι µία εγγραφή πρέπει να είναι ολόκληρη στο ίδιο
block, άρα η απάντηση είναι 7). Εφόσον κάθε block χωράει 7 εγγραφές για τις 200
εγγραφές θα χρειαστούµε 200/7=28,57 blocks, δηλαδή για το (1) το αρχείο θα πρέπει να έχει 29 blocks (δεν µπορεί να έχει 28,57 blocks). Με τον ίδιο τρόπο η απάντηση στο (2) προκύπτει 143 blocks. Τέλος η απάντηση στο (3) είναι 1 block, αφού
δεν µπορούµε να έχουµε λιγότερα από 1 block ανά αρχείο.
2.5
1) Η απάντηση είναι 5%.
Έχουµε 2000 εγγραφές και κάθε block έχει 20 εγγραφές, άρα έχουµε 2000/20=100
blocks. Για κάθε block απαιτείται µία νέα εγγραφή για τον κατάλογο, άρα έχουµε
100 νέες εγγραφές που χρειάζονται 100/20=5 νέα blocks. Έτσι αντί για 100 blocks
χρησιµοποιούµε 105 blocks δηλαδή µία αύξηση 5%.
2) Η απάντηση είναι 11%.
Έχουµε 2000 εγγραφές και κάθε block έχει 10 εγγραφές, άρα έχουµε 2000/10=200
blocks. Για κάθε block απαιτείται µία νέα εγγραφή για τον κατάλογο του πρώτου
επιπέδου, άρα έχουµε 200 νέες εγγραφές που χρειάζονται 200/10=20 νέα blocks για
το πρώτο επίπεδο. Έχουµε επίσης 20 εγγραφές για το δεύτερο επίπεδο, που χρειάζονται 20/10=2 νέα blocks για το δεύτερο επίπεδο. Έτσι αντί για 200 blocks χρησιµοποιούµε επιπλέον 20+2=22, άρα σύνολο 222 blocks δηλαδή µία αύξηση 11%.
3) Η λύση είναι 11,5%.
Προσοχή είναι ίδια µε την προηγούµενη (2) µέχρι το δεύτερο επίπεδο, µόνο που για
να δεικτοδοτήσουµε τα δύο blocks του δευτέρου επιπέδου χρησιµοποιούµε ένα
ακόµα block στο τρίτο επίπεδο. Άρα 22+1=23 blocks αντί για 200 ή ποσοστό αύξησης 11,5%.

A¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™ / KEº. 3

3.1
Ακολουθούν οι σωστές απαντήσεις. Μπράβο σας, εάν απαντήσατε σωστά. Σε αντίθετη
περίπτωση αφιερώστε χρόνο για να κάνετε µία επανάληψη στην ενότητα 3.1.
i.

Είναι η εγγραφή µε κωδικό 106. Η µόνη εγγραφή που δεν έχει γονιό.

ii. Είναι οι εγγραφές µε κωδικούς 11, 13, 17, 621, 21, 24 και 35. Προσέξτε τον ορισµό.
Φύλλα είναι οι εγγραφές που δεν έχουν κανένα παιδί. Άρα και η εγγραφή µε κωδικό
621 είναι φύλλο.
iii. Έχει τις εγγραφές µε κωδικούς 21 και 24. Όπως φαίνεται στο σχήµα.
iv. Είναι η εγγραφή µε κωδικό 177. Προσοχή όχι η εγγραφή που βρίσκεται ακριβώς πάνω
της στο σχέδιο, αλλά η εγγραφή που είναι ιεραρχικά συνδεδεµένη µε αυτή, δηλαδή ο
γονιός της. Η εγγραφή που είναι πάνω από την εγγραφή µε κωδικό 17 είναι η εγγραφή
13, αλλά δεν υπάρχει σύνδεση από την εγγραφή αυτή στην εγγραφή µε κωδικό 17.
v. Καµία. Είπαµε στο (ii) ότι η εγγραφή 621 είναι φύλλο, άρα δεν έχει παιδιά.
3.2
Μπράβο σας, εάν απαντήσατε σε όλες τις προτάσεις σωστά. ∆εν ήταν εύκολη άσκηση. Σε
αντίθετη περίπτωση διαβάστε ξανά την ενότητα 3.1 και επαναλάβατε την άσκηση.
Η εγγραφή µε κωδικό 177 είναι η ρίζα των εγγραφών µε κωδικούς 11, 13 και 17. (ΛΑΘΟΣ)
Λάθος. Είναι ο γονιός των παραπάνω εγγραφών, αλλά όχι η ρίζα. Κάθε δέντρο έχει
µία ρίζα και το συγκεκριµένο έχει ως ρίζα την εγγραφή µε κωδικό 106.
Η εγγραφή µε κωδικό 177 είναι παιδί της εγγραφής µε κωδικό 106. (ΣΩΣΤΟ)
Προφανές από το σχήµα.
Η εγγραφή µε κωδικό 411 είναι παιδί της εγγραφής µε κωδικό 621. (ΛΑΘΟΣ)
Αν και σχηµατικά είναι κάτω από την εγγραφή µε κωδικό 621, δεν είναι παιδί της,
γιατί δεν συνδέονται ιεραρχικά. Η εγγραφή µε κωδικό 621 είναι φύλλο, άρα δεν έχει
παιδιά.
Η εγγραφή µε κωδικό 621 είναι φύλλο. (ΣΩΣΤΟ)
Είναι σωστό. (Βλ. την προηγούµενη απάντηση και την απάντηση ii της άσκησης
3.1.)
Η εγγραφή µε κωδικό 13 είναι γονιός της εγγραφής µε κωδικό 17. (ΛΑΘΟΣ)
Λάθος. Είναι και οι δύο παιδιά της εγγραφής µε κωδικό 177.

179

A¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™ / KEº. 3

180

3.3
Μπράβο σας, εάν απαντήσατε σε όλες τις προτάσεις σωστά. ∆εν ήταν εύκολη άσκηση. Σε
αντίθετη περίπτωση διαβάστε ξανά τις ενότητες 3.1 και 3.2 και επαναλάβατε την άσκηση.
1) ∆εν είναι ιεραρχικό δέντρο, γιατί οι εγγραφή 2 δεν έχει κανένα γονιό. Μελετήστε τους
περιορισµούς της ενότητας 3.1 για τα ιεραρχικά δέντρα.
2) Είναι ιεραρχικό δέντρο, αφού κάθε εγγραφή έχει µόνο ένα γονέα. Η ρίζα είναι η εγγραφή 1 και τα φύλλα οι εγγραφές 6, 7 και 8. Η διαδροµή των συνδέσεων που θέλει προσοχή είναι η (1,2), (2,5), (5,3), (3,4) και (4,8).
3) Επίσης είναι ιεραρχικό δέντρο, αφού κάθε εγγραφή έχει µόνο ένα γονέα. Η ρίζα είναι
πάλι η εγγραφή 1 και τα φύλλα οι εγγραφές 5, 6, 7 και 8.
3.4
Οι σωστές προτάσεις είναι οι παρακάτω. Σε περίπτωση που αντιµετωπίσατε πρόβληµα
αφιερώστε χρόνο για επανάληψη στην ενότητα 3.3.1.
Οντότητα στο διάγραµµα σχέσεων – οντοτήτων είναι ένα στοιχείο του πραγµατικού περιβάλλοντος µε αυτόνοµη πραγµατική ή θεωρητική υπόσταση.
Κατηγορήµατα για µία οντότητα του διαγράµµατος σχέσεων – οντοτήτων είναι στοιχεία
που καθορίζουν χαρακτηριστικά της συγκεκριµένης οντότητας.
Κλειδί για µία οντότητα του διαγράµµατος σχέσεων – οντοτήτων είναι το σύνολο των κατηγορηµάτων της οντότητας τα οποία είναι µοναδικά για κάθε εγγραφή και τη διακρίνουν πλήρως από τις άλλες.
3.5
Μπράβο σας, εάν απαντήσατε σε όλες τις προτάσεις σωστά. ∆εν ήταν εύκολη άσκηση. Σε
αντίθετη περίπτωση διαβάστε ξανά την ενότητα 3.3 και ειδικότερα τις ενότητες 3.3.1 και
3.3.2 και επαναλάβατε την άσκηση.
Οι σχέσεις δεν αναπαριστώνται στο φυσικό επίπεδο. Στο φυσικό επίπεδο, µε εγγραφές αντιστοιχούν µόνο οντότητες. (ΛΑΘΟΣ)
Φυσικά και στο φυσικό επίπεδο αναπαριστώνται και οι σχέσεις. ∆ιαβάστε αναλυτικά την ενότητα 3.3 και ειδικά το 3.3.2 και θα βρείτε την εξήγηση µετά τον ορισµό
των σχέσεων.
Κάθε σχέση στην οποία µετέχουν δύο οντότητες θα έχει βαθµό 2. (ΣΩΣΤΟ)

A¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™ / KEº. 4

Σύµφωνα µε τον ορισµό του βαθµού µίας σχέσης, αφού έχει δύο οντότητες έχει και
βαθµό δύο.
Κάθε σχέση ISA είναι και σχέση 1 προς 1. (ΣΩΣΤΟ)
Ορίσαµε τη σχέση ISA ως µία εξειδίκευση της σχέσης 1 προς 1. Προσοχή όµως, το
αντίστροφο φυσικά και δεν ισχύει.
Μία σχέση είναι Ν προς Μ, εάν µία εγγραφή από µία οντότητα συµµετέχει δύο ή περισσότερες φορές στη σχέση. (ΛΑΘΟΣ)
Θα µπορούσε να είναι 1 προς Ν. Αν λέγαµε «Μία σχέση είναι Ν προς Μ, εάν µία
εγγραφή από κάθε οντότητα συµµετέχει δύο ή περισσότερες φορές», τότε θα ισχύει η πρόταση.
Κάθε σχέση Ν προς Μ έχει βαθµό Ν. (ΛΑΘΟΣ)
Μη συγχέετε το βαθµό µίας σχέσης µε την κατηγορία στην οποία αυτή ανήκει. Η
σχέση Ν προς Ν που αναφέρουµε στην επεξήγηση της ενότητας 3.3.2 είναι σχέση
µε βαθµό 2.

181

A¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™ / KEº. 4

182

4.1
Ακολουθούν οι απαντήσεις για τα ερωτήµατα της άσκησης:
1. Για κάθε οντότητα έχουµε τα εξής:
Οµάδα:
Κατηγορία:
Παίκτης:
Μάνατζερ:

5
2
7
3

Αντίστοιχα για κάθε σχέση έχουµε ως arity το άθροισµα των κλειδιών κάθε οντότητας που
συµµετέχει στη σχέση, συν τα επιπλέον κατηγορήµατα αυτής της σχέσης. Έτσι προκύπτουν
τα εξής:
Χρησιµοποιεί:
Συµµετέχει:
Παίζει:
Συνεργάζεται:
Αγώνας:

4
4
3
3
5

2. Οι πίνακες για τις οντότητες είναι οι ακόλουθοι (µε έντονα γράµµατα είναι τα πεδία που
αποτελούν το κλειδί για κάθε πίνακα):
ΟΜΑ∆Α
Ονοµασία

Ιδιοκτήτης

Έδρα

Χορηγός

Έτος Ίδρυσης

KΑΤΗΓΟΡΙΑ
Ονοµασία

Xρονιά

ΠΑΙΚΤΗΣ
Α. Μητρ.

Όνοµα

Επώνυµο

Πατρ/µο

MΑΝΑΤΖΕΡ
Όνοµα

Επώνυµο

Tηλέφωνο

Ύψος

Ηµ. Γέν.

Πόλης

A¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™ / KEº. 4

183

3. Οι πίνακες για τις σχέσεις είναι:
ΧΡΗΣΙΜΟΠΟΙΕΙ
Όνοµα Μαν.

Επώνυµο Μαν.

Ονοµασία Οµ.

Έδρα Οµ.

ΣΥΜΜΕΤΕΧΕΙ
Oνοµασία K.

Xρονιά K.

Ονοµασία Οµ.

Έδρα Οµ.

ΠΑΙΖΕΙ
Α.Μ. Παικ.

Ονοµασία Οµ.

Έδρα Οµ.

ΣΥΝΕΡΓΑΖΕΤΑΙ
Όνοµα Μαν.

Επώνυµο Μαν.

Α.Μ. Παικ.

AΓΩΝΑΣ
Ονοµασία Ο 1

Ονοµασία Ο 1

Γήπεδο

Ηµεροµηνία

Σκορ

Παρατηρήστε ότι στις σχέσεις αναφέρουµε, δίπλα στο όνοµα κάθε κλειδιού και το όνοµα
της οντότητας στην οποία είναι κλειδί (τα αρχικά της οντότητας), ώστε να γίνεται η διάκριση ανάµεσα σε κατηγορήµατα µε ίδια ονοµασία.
Μπράβο σας, εάν απαντήσατε σωστά σε όλα τα ερωτήµατα αυτής της άσκησης. Αυτό δείχνει ότι έχετε κατανοήσει τις έννοιες που µελετήσατε. Σε αντίθετη περίπτωση, αφιερώστε
λίγο χρόνο για µία καλή επανάληψη σε όλες τις έννοιες που περιγράφονται στην ενότητα
4.1 και ίσως και στα διαγράµµατα σχέσεων – οντοτήτων που περιγράψαµε στην ενότητα
3.3 και 3.4.
4.2
Η ενηµέρωση δεν µπορεί να δηµιουργήσει προβλήµατα ακεραιότητας. Τα προβλήµατα
δηµιουργούνται µόνο στην εισαγωγή ή στη διαγραφή. (ΛΑΘΟΣ)

A¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™ / KEº. 4

184

Μπράβο σας, εάν απαντήσατε «λάθος». Είπαµε ότι η ενηµέρωση αντιστοιχεί σε διαγραφή και εισαγωγή όταν γίνονται αλλαγές σε κλειδιά, αλλά όχι ότι η ενηµέρωση
δεν δηµιουργεί προβλήµατα.
Κάθε εισαγωγή δεδοµένων παραβιάζει την ακεραιότητα της Βάσης ∆εδοµένων, όταν γίνεται εισαγωγή σε κλειδί. (ΛΑΘΟΣ)
Μεγάλο λάθος! Κάθε εισαγωγή δεδοµένων θα έχει ως αποτέλεσµα να γίνει εισαγωγή σε κλειδί, αφού δεν µπορεί να υπάρξει πίνακας χωρίς κλειδί. Άρα αυτό που λέει
η πρόταση είναι ότι κάθε εισαγωγή δεδοµένων παραβιάζει την ακεραιότητα, κάτι
που φυσικά δεν µπορεί να ισχύει.
Η επιλογή δεν επηρεάζει την ακεραιότητα. (ΣΩΣΤΟ)
Μπράβο σας, εάν επιλέξατε «σωστό». Προκύπτει από τον ορισµό της επιλογής.
Ξαναδιαβάστε τους ορισµούς εάν δεν απαντήσατε σωστά.
Κλείδωµα δεδοµένων δεν χρειάζεται να γίνει κατά την επιλογή. (ΣΩΣΤΟ)
Επιλογή σηµαίνει ανάγνωση δεδοµένων. Εφόσον τα δεδοµένα δεν αλλάζουν δεν
χρειάζεται να κλειδωθούν. Το κλείδωµα γίνεται µόνο όταν υπάρχει αλλαγή στα δεδοµένα.
Όταν δύο χρήστες κάνουν επιλογή των ίδιων δεδοµένων την ίδια χρονική στιγµή η Βάση
∆εδοµένων κλειδώνει τα δεδοµένα και επιτρέπει µόνο σε ένα χρήστη κάθε φορά να τα διαβάζει. (ΛΑΘΟΣ)
Μπράβο σας, εάν επιλέξατε «λάθος». ∆ιαβάστε την απάντηση στην προηγούµενη
ερώτηση. Είπαµε ότι κατά την επιλογή δεν χρειάζεται να γίνει κλείδωµα.
4.3
1. Ζητήσαµε τους παίκτες µε όνοµα «Νίκος» και ύψος µεγαλύτερο του 1,96. Άρα και ο παίκτης µε ύψος 1,96 δεν µετέχει στην απάντηση που είναι η εξής:
Α. Μητρ.

Όνοµα

Επώνυµο

Πατρ/µο

Ύψος

Ηµ. Γέν.

Πόλη

23711

Νίκος

Ιωάννου

Κώστας

1,99

20/11/80

Πάτρα

2. Ζητήσαµε τους Μάνατζερ µε µικρό όνοµα Νίκος.
Όνοµα

Επώνυµο

Τηλέφωνο

Νίκος

Βασιλείου

061-555666

A¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™ / KEº. 4

185

4.4

4.4

1. Ζητήσαµε αναδιάταξη του πίνακα παίκτης και
επιλογή µόνο των στηλών «Όνοµα», «Επώνυµο», «Πόλη». H απάντηση είναι η εξής:

2. Ζητήσαµε επιλογή µόνο των επωνύµων των µάνατζερ, άρα:

Όνοµα

Επώνυµο

Πόλη

Επώνυµο

Νίκος

Ιωάννου

Πάτρα

Βασιλείου

Μιχάλης

Ξανθός

Αθήνα

Χρήστου

Πέτρος

Ηλίου

Πάτρα

Ιωάννου

Νίκος

Μιχαήλ

Νίκος

Ξανθός

Λάρισα

Πέτρος

Πέτρου

Αθήνα

Ηλίου
Βασιλείου

4.5
Μπράβο σας, εάν το υλοποιήσατε, γιατί είχε µία παγίδα. Πρώτα έπρεπε να γίνει η επιλογή
και µετά η προβολή, γιατί αλλιώς δεν θα µπορούσατε να επιλέξετε την «Πόλη». Η σωστή
λύση είναι π Επώνυµο, Ύψος (σ Πόλη=Πάτρα (Παίκτης)).
4.6
Μπράβο σας, εάν το υλοποιήσατε, γιατί ήταν δύσκολη άσκηση.
1. Είναι η ένωση δύο
πινάκων, άρα έχουµε
τα ακόλουθα αποτελέσµατα:

Παίκτης

Mάνατζερ

Παίκτης » Mάνατζερ

Όνοµα

Όνοµα

Όνοµα

Νίκος

Νίκος

Νίκος

Μιχάλης

Κώστας

Μιχάλης

Πέτρος

Πέτρος

Πέτρος

Νίκος

Ηλίας

Νίκος

Νίκος

Μιχάλης

Νίκος

Πέτρος

Πέτρος
Νίκος
Κώστας
Πέτρος
Ηλίας
Μιχάλης

A¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™ / KEº. 4

186

2. Είναι η τοµή δύο πινάκων, άρα έχουµε τα εξής:

Παίκτης

Mάνατζερ

Παίκτης « Mάνατζερ

Όνοµα

Όνοµα

Όνοµα

Νίκος

Νίκος

Νίκος

Μιχάλης

Κώστας

Μιχάλης

Πέτρος

Πέτρος

Πέτρος

Νίκος

Ηλίας

Νίκος

Μιχάλης

Πέτρος
3. Είναι η διαφορά δύο
πινάκων, άρα έχουµε τα
εξής:

Παίκτης

Mάνατζερ

Παίκτης – Mάνατζερ

Όνοµα

Όνοµα

Όνοµα

Νίκος

Νίκος

Μιχάλης

Κώστας

Πέτρος

Πέτρος

Νίκος

Ηλίας

Νίκος

Μιχάλης

Πέτρος

4.7
Μπράβο σας, εάν το υλοποιήσατε γιατί ήταν δύσκολη άσκηση. Ακολουθούν οι απαντήσεις.
Απάντηση 1

Απάντηση 2

Απάντηση 3

A

B

Γ

E

B

Γ

E

A

B

Γ

1

3

6

7

1

1

7

4

5

3

1

7

4

1

6

6

6

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

A¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™ / KEº. 4 & 5

του κεφαλαίου:
1) { x | A(x) Ÿ E}
∆ηλαδή οι εγγραφές x του συνόλου Α για τις οποίες ισχύει η σχέση Ε.
2) {x(2) | ($y) (A (y) Ÿ x [1] = y [Σ1] Ÿ x [2] = y [Σ2])}
∆ηλαδή οι εγγραφές x µε arity 2 για τις οποίες η πρώτη είναι ίδια µε τη στήλη Σ1 του
πίνακα Α και η δεύτερη ίδια µε τη στήλη Σ2 του πίνακα Α.
3) {x | A(x) Ú B(x)}
Προφανώς τα x που είναι ή στον πίνακα Α ή στον πίνακα Β ή και στους δύο πίνακες.
4) {x | A(x) Ÿ ÿ B(x)}
Πάλι πολύ απλά τα x που είναι στον πίνακα Α και δεν είναι στον πίνακα Β.
5) {x(a+b) | ($ y(a)) ($z(b)) (A (y) Ÿ B (z) Ÿ x [1] = y [1] Ÿ … Ÿ x [a] = y [a] Ÿ x [a + 1] = z [1]
Ÿ … Ÿ x [a + b] = z [b])}
Ουσιαστικά ζητάµε τα x µε arity ίσο µε το arity του Α και του Β µε κοινά στοιχεία, όπως
καθορίζονται οι σχέσεις.

5.1
Ακολουθεί η απάντηση στις παρακάτω συντοµογραφίες:
1) SQL

Structured Query Language

2) SEQUEL

Structured English Query Language

3) QBE

Query by Example

5.2
Η ερώτηση σε SQL στην πιο απλή µορφή της είναι
SELECT
ONOMA
FROM
ª∞£∏ª∞
WHERE
∫ø¢π∫√™<1100;
Φυσικά η ίδια ερώτηση µπορεί να γραφεί στην πιο αναλυτική µορφή της
SELECT
ª∞£∏ª∞.ONOMA
FROM
ª∞£∏ª∞
WHERE
ª∞£∏ª∞.∫ø¢π∫√™<1100;

187

A¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™ / KEº. 5

188

Όποιον τρόπο και να επιλέξατε είναι απόλυτα σωστός. Καλύτερα, όταν γράφετε ερωτήσεις
σε SQL, να έχετε ένα ενιαίο τρόπο γραφής. Ακολουθεί και ο πίνακας που θα προκύψει ως
αποτέλεσµα της απάντησης:
ONOMA
Φυσική
Mαθηµατικά
Μπράβο σας, εάν απαντήσατε σε όλα σωστά. Σε αντίθετη περίπτωση, ξαναδιαβάστε τα
παραδείγµατα και πειραµατιστείτε πριν προχωρήσετε στις επόµενες ασκήσεις.
5.3
Η ερώτηση σε SQL είναι (δίνουµε τη λύση στην πιο απλή µορφή της, αλλά φυσικά και η
πλήρης µορφή, όπως είδαµε στην προηγούµενη άσκηση, είναι επίσης σωστή)
SELECT
ONOMA, ∂¶ø¡Àª√
FROM
∫∞£∏°∏∆∏™
WHERE
∏ª_°∂¡>1/1/1960;
Ακολουθεί και ο πίνακας που θα προκύψει ως αποτέλεσµα της απάντησης
ONOMA

EΠΩNYMO

Κωνσταντίνος

Μακρύς

Μιχαήλ

Ξανθός

Χρήστος

Χρήστου

Μπράβο σας, εάν απαντήσατε σε όλα σωστά. Σε αντίθετη περίπτωση, ξαναδιαβάστε τα
παραδείγµατα και πειραµατιστείτε πριν προχωρήσετε στις επόµενες ασκήσεις.
5.4
Η ερώτηση σε SQL είναι
SELECT
ª∞£∏ª∞.ONOMA, ∆ª∏ª∞.√¡√ª∞
FROM
ª∞£∏ª∞, ∆ª∏ª∞
WHERE
(ª∞£∏ª∞.∂∆√™_¢π¢∞™∫= ‘∞’) AND
(∆ª∏ª∞.∂∆√™_π¢ƒÀ™∏™<1980);
Προσοχή ότι εδώ δεν θα µπορούσε να υπάρχει απλή µορφή, αφού πρέπει να ξεχωρίζει για
ποιο όνοµα µιλάµε (το όνοµα του τµήµατος ή το όνοµα του µαθήµατος). Ακολουθεί και ο
πίνακας που θα προκύψει ως αποτέλεσµα της απάντησης

A¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™ / KEº. 5

189

ONOMA MAΘ

ONOMA TMH

Φυσική

Μαθηµατικό

Μαθηµατικά

Μαθηµατικό

Φυσική

Φυσικό

Μαθηµατικά

Φυσικό

Μπράβο σας, εάν απαντήσατε σε όλα σωστά. Σε αντίθετη περίπτωση, ξαναδιαβάστε τα
παραδείγµατα και πειραµατιστείτε πριν προχωρήσετε στις επόµενες ασκήσεις.
5.5
1. Η ερώτηση σε SQL είναι
SELECT
ª∞£∏ª∞.ONOMA
FROM
ª∞£∏ª∞
WHERE
ª∞£∏ª∞.∫ø¢π∫√™<1100
ORDER BY ª∞£∏ª∞.√¡√ª∞;
Ακολουθεί και ο πίνακας που θα προκύψει ως αποτέλεσµα της απάντησης
ONOMA MAΘ
Μαθηµατικά
Φυσική
Μπράβο σας, εάν απαντήσατε σωστά. Σε αντίθετη περίπτωση, ξαναδιαβάστε τα παραδείγµατα και πειραµατιστείτε πριν προχωρήσετε στο επόµενο τµήµα της άσκησης.
2. Η ερώτηση σε SQL είναι
SELECT
ONOMA, ∂¶ø¡Àª√
FROM
∫∞£∏°∏∆∏™
WHERE
∏ª_°∂¡>1/1/1960
ORDER BY ∂¶ø¡Àª√ DESC, √¡√ª∞ DESC;
Ακολουθεί και ο πίνακας που θα προκύψει ως αποτέλεσµα της απάντησης
ONOMA

EΠΩNYMO

Χρήστος

Χρήστου

Μιχαήλ

Ξανθός

Κωνσταντίνος

Μακρύς

A¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™ / KEº. 5

190

Μπράβο σας, εάν απαντήσατε σωστά. Σε αντίθετη περίπτωση, ξαναδιαβάστε τα παραδείγµατα και πειραµατιστείτε πριν προχωρήσετε στο επόµενο τµήµα της άσκησης.
3. Η ερώτηση σε SQL είναι
SELECT
FROM
WHERE
ORDER BY

ª∞£∏ª∞.ONOMA, ∆ª∏ª∞.√¡√ª∞
ª∞£∏ª∞, ∆ª∏ª∞
(ª∞£∏ª∞.∂∆√™_¢π¢∞™∫= ‘∞’) AND
(∆ª∏ª∞.∂∆√™_π¢ƒÀ™∏™<1980)
ª∞£∏ª∞.√¡√ª∞ DESC, ∆ª∏ª∞.√¡√ª∞ ASC;

Ακολουθεί και ο πίνακας που θα προκύψει ως αποτέλεσµα της απάντησης
ONOMA MAΘ

ONOMA TMH

Φυσική

Μαθηµατικό

Φυσική

Φυσικό

Μαθηµατικά

Μαθηµατικό

Μαθηµατικά

Φυσικό

Μπράβο σας, εάν απαντήσατε σε όλα σωστά. Σε αντίθετη περίπτωση, ξαναδιαβάστε τα
παραδείγµατα και πειραµατιστείτε πριν προχωρήσετε στις επόµενες ασκήσεις.
5.6
Η ερώτηση σε SQL είναι
SELECT
FROM
WHERE

ONOMA, ∂¶ø¡Àª√
∫∞£∏°∏∆∏™
√¡√ª∞ LIKE ‘Mȯ%’;

Προσοχή, στα δεδοµένα που έχουµε εισάγει έχουµε δώσει δύο καθηγητές µε όνοµα ‘Μιχάλης’, µόνο που τον ένα τον εισάγαµε ως ‘Μιχάλης’ και τον άλλον ως ‘Μιχαήλ’. Με την
εντολή αυτή θα βρούµε και τους δύο, ενώ αν ζητάγαµε ONOMA= ‘Μιχάλης’ θα βρίσκαµε µόνο τον ένα. Ακολουθεί ο πίνακας που θα προκύψει ως αποτέλεσµα της απάντησης
ONOMA

EΠΩNYMO

Μιχαήλ

Βαρδής

Μιχάλης

Ξανθός

Μπράβο σας, εάν απαντήσατε σε όλα σωστά. Σε αντίθετη περίπτωση, ξαναδιαβάστε τα
παραδείγµατα και πειραµατιστείτε πριν προχωρήσετε στις επόµενες ασκήσεις.

A¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™ / KEº. 5

5.7
Η ερώτηση σε SQL είναι:
SELECT
FROM
WHERE

ONOMA
∆ª∏ª∞
∂∆√™_π¢ƒÀ™∏™ IS NULL;

Επειδή έχουµε εισάγει το έτος ίδρυσης σε κάθε τµήµα, ο πίνακας που θα προκύψει ως αποτέλεσµα της απάντησης δεν θα έχει καθόλου στοιχεία. Μπράβο σας, εάν απαντήσατε
σωστά. Σε αντίθετη περίπτωση, ξαναδιαβάστε τα παραδείγµατα και πειραµατιστείτε πριν
προχωρήσετε στις επόµενες ασκήσεις.
5.8
Η ερώτηση σε SQL είναι
SELECT
FROM
ORDER BY

DISTINCT ∂¶ø¡Àª√
º√π∆∏∆∏™
∂¶ø¡Àª√ DESC;

Ακολουθεί ο πίνακας που θα προκύψει ως αποτέλεσµα της απάντησης. Προσέξτε ότι τα
διπλά επώνυµα «Βασιλείου» και «Χρήστου» εµφανίζονται µόνο µία φορά.
EΠΩNYMO
Xρήστου
Xατζή
Bασιλείου
Bαρδής
Μπράβο σας, εάν απαντήσατε σωστά. Σε αντίθετη περίπτωση, ξαναδιαβάστε τα παραδείγµατα και πειραµατιστείτε πριν προχωρήσετε στις επόµενες ασκήσεις.
5.9
Θα δώσουµε πρώτα την ερώτηση σε SQL µε τη χρήση του «ΙΝ»
SELECT
FROM
WHERE

º√π∆∏∆∏™.√¡√ª∞, º√π∆∏∆∏™.∂¶ø¡Àª√
º√π∆∏∆∏™
º√π∆∏∆∏™.∏ª_°∂¡
π¡
(SELECT
∏ª_°∂¡
FROM
∫∞£∏°∏∆∏™);

191

A¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™ / KEº. 5

192

Αντίστοιχα, η ερώτηση σε SQL µε τη χρήση του «ANY» είναι
SELECT
FROM
WHERE

º√π∆∏∆∏™.√¡√ª∞, º√π∆∏∆∏™.∂¶ø¡Àª√
º√π∆∏∆∏™
º√π∆∏∆∏™.∏ª_°∂¡
= ANY
(SELECT
∏ª_°∂¡
FROM
∫∞£∏°∏∆∏™);

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

EΠΩNYMO

Μπράβο σας, εάν απαντήσατε σωστά και για τις δύο περιπτώσεις. ∆εν ήταν εύκολη άσκηση. Σε αντίθετη περίπτωση, ξαναδιαβάστε τα παραδείγµατα και πειραµατιστείτε πριν προχωρήσετε στις επόµενες ασκήσεις.
5.10
Η ερώτηση σε SQL είναι
SELECT
FROM
WHERE

º√π∆∏∆∏™.ONOMA, º√π∆∏∆∏™.∂¶ø¡Àª√
º√π∆∏∆∏™
º√π∆∏∆∏™.∏ª_°∂¡ <= ALL
(SELECT
º√π∆∏∆∏™.∏ª_°∂¡
FROM
º√π∆∏∆∏™);

Προσοχή, χρησιµοποιούµε τον τελεστή «<= ALL» και όχι τον τελεστή «< ALL» γιατί στην
εσωτερική ερώτηση θα έχουµε όλους τους φοιτητές, άρα καθένας θα συγκριθεί µε τον
εαυτό του και για αυτό χρειαζόµαστε και την ισότητα. Ακολουθεί και ο πίνακας που θα
προκύψει ως αποτέλεσµα της απάντησης:
ONOMA

EΠΩNYMO

Χρήστος

Χρήστου

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

A¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™ / KEº. 5

193

στο να πειραµατιστείτε µε τα επίπεδα ερωτήσεων και τις εντολές «ANY» «ALL» και «ΙΝ».
Επίσης, ξαναδιαβάστε τα παραδείγµατα και πειραµατιστείτε πριν προχωρήσετε στις επόµενες ασκήσεις.
5.11
Η ερώτηση σε SQL είναι
SELECT

º√π∆∏∆∏™.∂¶ø¡Àª√, º√π∆∏∆∏™.√¡√ª∞
º√π∆∏∆∏™.¶∞∆ƒø¡Àª√, ª∞£∏ª∞.√¡√ª∞
FROM
(º√π∆∏∆∏™
INNER JOIN
º√π∆_ª∞£
√¡ º√π∆∏∆∏™.∞ª=º√π∆_ª∞£.∞ª)
INNER JOIN
ª∞£∏ª∞
ON º√π∆_ª∞£.∫ø¢π∫√™=ª∞£∏ª∞.∫ø¢π∫√™
ORDER BY º√π∆∏∆∏™.∂¶ø¡Àª√, º√π∆∏∆∏™.√¡√ª∞;
Στην προηγούµενη ερώτηση βάλαµε και διάταξη κατά επώνυµο και όνοµα φοιτητή για να
είναι πιο εύκολη η παρουσίαση των αποτελεσµάτων, παρόλο που δεν ήταν ζητούµενο.
(∆ηλαδή η τελευταία γραµµή, της ερώτησης σε SQL θα µπορούσε και να παραλείπεται.
Ακολουθεί και ο πίνακας που θα προκύψει ως αποτέλεσµα της απάντησης
ΕΠΩΝΥΜΟ

ΟΝΟΜΑ

ΠΑΤΡΩΝΥΜΟ

ΟΝΟΜΑ ΜΑΘΗΜΑΤΟΣ

Βαρδής

Νικόλαος

Μιχαήλ

Φυσική

Βασιλείου

Ελένη

Σωτήριος

Γραµµική Άλγεβρα

Βασιλείου

Ελένη

Σωτήριος

Μαθηµατικά

Βασιλείου

Νικόλαος

Σωτήριος

Μαθηµατικά

Χατζή

Μαρίνα

Αθανάσιος

Βάσεις ∆εδοµένων

Χατζή

Μαρίνα

Αθανάσιος

Φυσική

Χρήστου

Χρήστος

Βασίλειος

Marketing

Χρήστου

Χρήστος

Βασίλειος

∆οµές ∆εδοµένων ΙΙ

Χρήστου

Χρήστος

Βασίλειος

Λογικός Σχεδιασµός

Χρήστου

Χρήστος

Νικόλαος

∆οµές ∆εδοµένων Ι

Χρήστου

Χρήστος

Νικόλαος

Λογικός Σχεδιασµός

Χρήστου

Χρήστος

Νικόλαος

Ποιότητα Λογισµικού

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

A¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™ / KEº. 5

194

5.12
Η ερώτηση σε SQL είναι
SELECT

FROM

º√π∆∏∆∏™.∂¶ø¡Àª√, º√π∆∏∆∏™.AM,
ª∞£∏ª∞.∫ø¢π∫√™, ∫∞£∏°∏∆∏™.ONOMA,
∫∞£∏°∏∆∏™.∂¶ø¡Àª√
(∫∞£_ª∞£
INNER JOIN ((º√π∆∏∆∏™ INNER JOIN º√π∆_ª∞£
ON º√π∆∏∆∏™.AM=º√π∆_ª∞£.AM)
INNER JOIN ª∞£∏ª∞
ON º√π∆_ª∞£.∫ø¢π∫√™=ª∞£∏ª∞.∫ø¢π∫√™)
ON ∫∞£_ª∞£.∫ø¢π∫√™=ª∞£∏ª∞.∫ø¢π∫√™)
INNER JOIN ∫∞£∏°∏∆∏™
ON (∫∞£_ª∞£.∂¶ø¡Àª√=∫∞£∏°∏∆∏™.∂¶ø¡Àª√)
AND (∫∞£_ª∞£.ONOMA=∫∞£∏°∏∆∏™.ONOMA);

Ακολουθεί και ο πίνακας που θα προκύψει ως αποτέλεσµα της απάντησης
ΕΠΩΝΥΜΟ Φ

ΑΜ ΦΟΙΤ

ΚΩ∆ΙΚΟΣ Μ

ΟΝΟΜΑ Κ

ΕΠΩΝΥΜΟ Κ

Βασιλείου

19071

1089

Ειρήνη

Νικολαΐδη

Βασιλείου

19071

1239

Ειρήνη

Νικολαΐδη

Βασιλείου

19072

1089

Ειρήνη

Νικολαΐδη

Βαρδής

19109

1045

Μιχαήλ

Βαρδής

Χατζή

19409

1045

Μιχαήλ

Βαρδής

Χατζή

19409

1667

Μιχαήλ

Ξανθός

Χρήστου

19345

1134

Χρήστος

Χρήστου

Χρήστου

19345

1891

Κωνσταντίνος

Μακρύς

Χρήστου

19345

1992

Χρήστος

Χρήστου

Χρήστου

19344

1134

Χρήστος

Χρήστου

Χρήστου

19344

1998

Κωνσταντίνος

Μακρύς

Χρήστου

19344

1892

Κωνσταντίνος

Μακρύς

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

A¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™ / KEº. 5

195

5.13
Η ερώτηση σε SQL είναι:
SELECT
FROM
GROUP BY
HAVING

º√π∆_∆ª∏ª∞.ONOMA, COUNT (*)
º√π∆_∆ª∏ª∞
º√π∆_∆ª∏ª∞.ONOMA
COUNT (*) <=1;

Με δεδοµένο ότι σε κάθε τµήµα έχουµε εισάγει από δύο φοιτητές ο πίνακας που θα προκύψει θα είναι κενός. Μπράβο σας, εάν απαντήσατε σωστά σε αυτή την άσκηση, γιατί ήταν
αρκετά δύσκολη άσκηση. Σε αντίθετη περίπτωση, µην απογοητεύεστε, αλλά αφιερώστε
λίγο χρόνο στο να πειραµατιστείτε µε τη σύνδεση των πινάκων.
5.14
Η ερώτηση σε SQL είναι:
SELECT
FROM
GROUP BY
HAVING

∫∞£_ª∞£.ONOMA, ∫∞£_ª∞£.∂¶ø¡Àª√, COUNT (*)
∫∞£_ª∞£
∫∞£_ª∞£.∂¶ø¡Àª√, ∫∞£_ª∞£.ONOMA
COUNT(*)>2;

Προσέξτε ότι στο GROUP BY χρησιµοποιούµε τόσο το όνοµα και το επώνυµο αφού κλειδί στους καθηγητές είναι και τα δύο. Ο πίνακας που θα προκύψει ακολουθεί
ONOMA

EΠΩNYMO

Κωνσταντίνος

Μακρύς

3

Μπράβο σας, εάν απαντήσατε σωστά σε αυτή την άσκηση, γιατί ήταν αρκετά δύσκολη. Σε
αντίθετη περίπτωση, µην απογοητεύεστε, αλλά αφιερώστε λίγο χρόνο στο να πειραµατιστείτε µε τη σύνδεση των πινάκων.
5.15
Η εντολή διαγραφής στη γλώσσα SQL είναι
DELETE FROM º√π∆∏∆∏™
WHERE
∏ª_°∂¡ = 20–08–1978;
Ο πίνακας που θα προκύψει θα έχει δύο φοιτητές λιγότερους, οι οποίοι και διαγράφηκαν
ως αποτέλεσµα της εντολής και ακολουθεί

A¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™ / KEº. 5 & 6

196

ΦOITHTHΣ
ΟΝΟΜΑ

ΕΠΩΝΥΜΟ

ΠΑΤΡΩΝΥΜΟ

ΑΜ

ΗΜ_ΓΕΝ

Ελένη

Βασιλείου

Σωτήριος

19071

22-03-1980

Νικόλαος

Βαρδής

Μιχαήλ

19109

03-01-1977

Χρήστος

Χρήστου

Βασίλειος

19344

19-07-1976

Μαρίνα

Χατζή

Αθανάσιος

19409

10-10-1977

Μπράβο σας, εάν απαντήσατε σωστά σε αυτή την άσκηση. Σε αντίθετη περίπτωση, µην
απογοητεύεστε, αλλά αφιερώστε λίγο χρόνο στο να πειραµατιστείτε µε τις εντολές
«INSERT», «DELETE» και «UPDATE».

6.1
Ο πίνακας ερώτησης είναι ο εξής:
KAΘHΓHTHΣ
ΟΝΟΜΑ

ΕΠΩΝΥΜΟ

Ρ.

Ρ.

ΠΑΤΡΩΝΥΜΟ

ΒΑΘΜΙ∆Α

ΗΜ_ΓΕΝ

Στο συγκεκριµένο παράδειγµα επιλέξαµε να χρησιµοποιήσουµε το συµβολισµό «Ρ.». Φυσικά και οι συµβολισµοί «Ρ._Κάτι» ή «_Κάτι» είναι απόλυτα σωστοί. Ο πίνακας αποτελεσµάτων ακολουθεί
KAΘHΓHTHΣ
ΟΝΟΜΑ

ΕΠΩΝΥΜΟ

Ειρήνη

Νικολαΐδη

Κωνσταντίνος Μακρύς
Μιχαήλ

Βαρδής

Μιχάλης

Ξανθός

Χρήστος

Χρήστου

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

A¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™ / KEº. 6

197

6.2
Η ερώτηση σε QBE είναι η εξής:
ΦOITHTHΣ
ΟΝΟΜΑ

ΕΠΩΝΥΜΟ

P.

P.

ΠΑΤΡΩΝΥΜΟ

ΑΜ

ΗΜ_ΓΕΝ
> 1–1–1960

Ακολουθεί και ο πίνακας αποτελεσµάτων:
ΟΝΟΜΑ

ΕΠΩΝΥΜΟ

Κωνσταντίνος

Μακρύς

Μιχαήλ

Βαρδής

Χρήστος

Χρήστου

Μπράβο σας, εάν απαντήσατε σε όλα σωστά. Σε αντίθετη περίπτωση, ξαναδιαβάστε τα
παραδείγµατα και πειραµατιστείτε πριν προχωρήσετε στις επόµενες ασκήσεις.
6.3
Η ερώτηση σε QBE είναι:
KAΘHΓHTHΣ
ΟΝΟΜΑ

ΕΠΩΝΥΜΟ

P.

P.

ΠΑΤΡΩΝΥΜΟ

BAΘMI∆A

ΗΜ_ΓΕΝ

LIKE ‘Μιχ%’
Θυµηθείτε ότι, όπως είπαµε και σε αντίστοιχη άσκηση στην SQL, στα δεδοµένα που έχουµε εισάγει έχουµε δώσει δύο καθηγητές µε όνοµα ‘Μιχάλης’, µόνο που τον ένα τον εισάγαµε ως ‘Μιχάλης’ και τον άλλον ως ‘Μιχαήλ’. Με την εντολή αυτή θα βρούµε και τους
δύο, ενώ αν βάζαµε κάτω από το όνοµα ‘Μιχάλης’ θα βρίσκαµε µόνο τον ένα. Ακολουθεί
και ο πίνακας που θα προκύψει ως αποτέλεσµα της απάντησης
ΟΝΟΜΑ

ΕΠΩΝΥΜΟ

Μιχαήλ

Βαρδής

Μιχάλης

Ξανθός

Μπράβο σας εάν απαντήσατε σε όλα σωστά. Σε αντίθετη περίπτωση, ξαναδιαβάστε τα
παραδείγµατα και πειραµατιστείτε πριν προχωρήσετε στις επόµενες ασκήσεις.

A¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™ / KEº. 6

198

6.4
Η ερώτηση σε QBE θα αποτελείται από πολλούς πίνακες, αφού είναι ερώτηση σύνδεσης
και από έναν πίνακα για τον καθορισµό του αποτελέσµατος. Οι πίνακες είναι οι εξής:
ΦOITHTHΣ
ΟΝΟΜΑ

ΕΠΩΝΥΜΟ

ΠΑΤΡΩΝΥΜΟ

AM

_ΟΝ

_ΕΠ

_ΠΑ

_ΑΜ

ΦOIT_MAΘ

ΗΜ_ΓΕΝ

MAΘHMA

AM

KΩ∆IKOΣ

KΩ∆IKOΣ

ΟΝΟΜΑ

_ΑΜ

_KΩ∆

_KΩ∆

_ONMAΘ

ETOΣ_∆I∆AΣK

AΠANTHΣH
ΕΠΩΝΥΜΟ

ΟΝΟΜΑ

ΠΑΤΡΩΝΥΜΟ

ONOMA MAΘHMATOΣ

Ρ._ΟΝ

Ρ._ΕΠ

Ρ._ΠΑ

Ρ._ΟΝΜΑΘ

Στους παραπάνω πίνακες χρησιµοποιήσαµε τις µεταβλητές «_ΑΜ» και «_ΚΩ∆» για να
κάνουµε τη σύνδεση ανάµεσα στους πίνακες. Ακολουθεί και ο πίνακας που θα προκύψει
ως αποτέλεσµα της απάντησης
AΠANTHΣH
ΕΠΩΝΥΜΟ

ΟΝΟΜΑ

ΠΑΤΡΩΝΥΜΟ

ONOMA MAΘHMATOΣ

Βαρδής

Νικόλαος

Μιχαήλ

Φυσική

Βασιλείου

Ελένη

Σωτήριος

Γραµµική Άλγεβρα

Βασιλείου

Ελένη

Σωτήριος

Μαθηµατικά

Βασιλείου

Νικόλαος

Σωτήριος

Μαθηµατικά

Χατζή

Μαρίνα

Αθανάσιος

Βάσεις ∆εδοµένων

Χατζή

Μαρίνα

Αθανάσιος

Φυσική

Χρήστου

Χρήστος

Βασίλειος

Marketing

Χρήστου

Χρήστος

Βασίλειος

∆οµές ∆εδοµένων ΙΙ

Χρήστου

Χρήστος

Βασίλειος

Λογικός Σχεδιασµός

Χρήστου

Χρήστος

Νικόλαος

∆οµές ∆εδοµένων Ι

Χρήστου

Χρήστος

Νικόλαος

Λογικός Σχεδιασµός

Χρήστου

Χρήστος

Νικόλαος

Ποιότητα Λογισµικού

A¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™ / KEº. 6

199

Μπράβο σας, εάν απαντήσατε σωστά σε αυτή την άσκηση, γιατί ήταν µία πραγµατικά
δύσκολη άσκηση. Σε αντίθετη περίπτωση, µην απογοητεύεστε, αλλά αφιερώστε λίγο χρόνο
στο να πειραµατιστείτε µε τη σύνδεση των πινάκων στη γλώσσα ερωτήσεων QBE.
6.5
Η ερώτηση σε QBE θα αποτελείται από τους παρακάτω πίνακες:
ΦOITHTHΣ
ΟΝΟΜΑ

ΕΠΩΝΥΜΟ

ΠΑΤΡΩΝΥΜΟ

_ΟΝΦ

ΗΜ_ΓΕΝ

ΑΜ
_ΑΜ

ΦΟΙΤ_ΜΑΘ
ΑΜ

ΚΩ∆ΙΚΟΣ

_KΩ∆

_ΑΜ

MAΘHMA
ΟΝΟΜΑ

ETOΣ_∆I∆AΣK

ΟΝΟΜΑ

EΠΩNYMO

KΩ∆IKOΣ

_ONK

_EΠK

_KΩ∆

KΩ∆IKOΣ
_KΩ∆
KAΘ_ΜΑΘ

KAΘHΓHTHΣ
ΟΝΟΜΑ

ΕΠΩΝΥΜΟ

_ΟΝK

_EΠK

ΠΑΤΡΩΝΥΜΟ

BAΘMI∆A

ΗΜ_ΓΕΝ

AΠANTHΣH
ΕΠΩΝΥΜΟ

AM ΦOIT

KΩ∆IKOΣ M

ONOMA K

EΠΩNYMO K

Ρ._ΟΝΦ

Ρ._ΑΜ

Ρ._ΚΩ∆

Ρ._ΟΝΚ

Ρ._ΕΠΚ

Στους παραπάνω πίνακες χρησιµοποιήσαµε τις µεταβλητές «_ΑΜ», «_ΚΩ∆», «_ΟΝΚ»
και «_ΕΠΚ» για να κάνουµε τη σύνδεση ανάµεσα στους πίνακες. Ακολουθεί ο πίνακας που
θα προκύψει ως αποτέλεσµα της απάντησης

A¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™ / KEº. 6

200

AΠANTHΣH
ΕΠΩΝΥΜΟ

AM ΦOIT

KΩ∆IKOΣ M

ONOMA K

EΠΩNYMO K

Βασιλείου

19071

1089

Ειρήνη

Νικολαΐδη

Βασιλείου

19071

1239

Ειρήνη

Νικολαΐδη

Βασιλείου

19072

1089

Ειρήνη

Νικολαΐδη

Βαρδής

19109

1045

Μιχαήλ

Βαρδής

Χατζή

19409

1045

Μιχαήλ

Βαρδής

Χατζή

19409

1667

Μιχαήλ

Ξανθός

Χρήστου

19345

1134

Χρήστος

Χρήστου

Χρήστου

19345

1891

Κωνσταντίνος

Μακρύς

Χρήστου

19345

1992

Χρήστος

Χρήστου

Χρήστου

19344

1134

Χρήστος

Χρήστου

Χρήστου

19344

1998

Κωνσταντίνος

Μακρύς

Χρήστου

19344

1892

Κωνσταντίνος

Μακρύς

Μπράβο σας, εάν απαντήσατε σωστά σε αυτή την άσκηση, γιατί ήταν η πιο δύσκολη άσκηση που έχετε καταπιαστεί σε αυτό το κεφάλαιο. Σε αντίθετη περίπτωση, µην απογοητεύεστε, αλλά αφιερώστε λίγο χρόνο στο να πειραµατιστείτε µε τη σύνδεση των πινάκων στη
γλώσσα ερωτήσεων QBE.
6.6
Οι πίνακες που αποτελούν τη Βάση ∆εδοµένων σε γραφική µορφή είναι όπως περίπου φαίνεται παρακάτω
ΦOITHTHΣ
ONOMA
EΠΩNYMO

ΦOIT_TMHMA

MAΘHMA

ΠATPΩNYMO

AM

KΩ∆IKOΣ

AM

KΩ∆IKOΣ

ONOMA

HM_ΓEN

ETOΣ_∆I∆AΣK

Οι συνδέσεις έχουν γίνει στα κλειδιά κάθε πίνακα και συγκεκριµένα στα «ΑΜ» και
«ΚΩ∆ΙΚΟΣ».
Ο πίνακας αποτελέσµατος είναι της µορφής που φαίνεται στο επόµενο παράδειγµα.

A¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™ / KEº. 6

201

Field:

ΕΠΩΝΥΜΟ

ΟΝΟΜΑ

ΠATPΩNYMO

ΟΝΟΜΑ

Table:

ΦΟΙΤΗΤΗΣ

ΦΟΙΤΗΤΗΣ

ΦΟΙΤΗΤΗΣ

MAΘHMA

Sort:

Ascending

Ascending

Show:
Criteria:
Or:

Σε αυτόν τον πίνακα ο χρήστης έχει σύρει τα πεδία «ΟΝΟΜΑ», «ΕΠΩΝΥΜΟ» και
«ΠΑΤΡΩΝΥΜΟ» από τον πίνακα «ΦΟΙΤΗΤΗΣ» και «ΟΝΟΜΑ» από τον πίνακα
«ΜΑΘΗΜΑ». Επίσης, έχει επιλέξει να είναι όλα εµφανίσιµα στο αποτέλεσµα και να υπάρχει διάταξη πρώτα µε το επώνυµο και µετά µε το όνοµα.
Μπράβο σας, εάν τα καταφέρατε µε αυτή την άσκηση. ∆οκιµάστε να την υλοποιήσετε και
στην πράξη σε κάποιο σύστηµα.
6.7
Οι πίνακες που αποτελούν τη Βάση ∆εδοµένων σε γραφική µορφή είναι όπως περίπου φαίνεται παρακάτω
ΦOITHTHΣ
ONOMA
EΠΩNYMO

ΦOIT_TMHMA

MAΘHMA

ΠATPΩNYMO

AM

KΩ∆IKOΣ

AM

KΩ∆IKOΣ

ONOMA
ETOΣ_∆I∆AΣK

HM_ΓEN

KAΘ_MAΘ

KAΘHΓHTHΣ

KΩ∆IKOΣ

ONOMA

ONOMA

EΠΩNYMO

EΠΩNYMO

ΠATPΩNYMO
BAΘMI∆A
HM_ΓEN

Οι συνδέσεις έχουν γίνει στα κλειδιά κάθε πίνακα και συγκεκριµένα στα «ΑΜ» που συνδέει τους πίνακες «ΦΟΙΤΗΤΗΣ» και «ΦΟΙΤ_ΜΑΘ», στο πεδίο «ΚΩ∆ΙΚΟΣ» που συνδέ-

A¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™ / KEº. 6

202

ει τόσο τον πίνακα «ΦΟΙΤ_ΜΑΘ» µε τον πίνακα «ΜΑΘΗΜΑ», όσο και τον πίνακα
«ΜΑΘΗΜΑ» µε τον πίνακα «ΚΑΘ_ΜΑΘ» και στο κλειδί «ΟΝΟΜΑ – ΕΠΩΝΥΜΟ», που
συνδέει τους πίνακες «ΚΑΘ_ΜΑΘ» και «ΚΑΘΗΓΗΤΗΣ».
Ο πίνακας αποτελέσµατος είναι της µορφής που φαίνεται στο παρακάτω παράδειγµα
Field:

ΕΠΩΝΥΜΟ

AM

KΩ∆IKOΣ

ΟΝΟΜΑ

ΟΝΟΜΑ

Table:

ΦΟΙΤΗΤΗΣ

ΦΟΙΤΗΤΗΣ

MAΘHMA

MAΘHMA KAΘHΓ.

EΠΩNYMO
KAΘHΓ.

Sort:

Show:
Criteria:

< 19400

Or:
Σε αυτόν τον πίνακα ο χρήστης έχει σύρει τα πεδία «ΕΠΩΝΥΜΟ» και «ΑΜ» από τον πίνακα «ΦΟΙΤΗΤΗΣ», τα πεδία «ΟΝΟΜΑ» και «ΚΩ∆ΙΚΟΣ» από τον πίνακα «ΜΑΘΗΜΑ»
και τα πεδία «ΟΝΟΜΑ» και «ΕΠΩΝΥΜΟ» από τον πίνακα «ΚΑΘΗΓΗΤΗΣ». Επίσης,
έχει επιλέξει να είναι όλα εµφανίσιµα στο αποτέλεσµα και έχει δώσει ως κριτήριο
«<19400» στο πεδίο «ΑΜ». Τέλος, δεν έχει καθορίσει αν θα υπάρχει διάταξη των αποτελεσµάτων.
Ο πίνακας µε τα αποτελέσµατα ακολουθεί
ΕΠΩΝΥΜΟ
ΦOITHTH

AM
ΦOITHTH

KΩ∆IKOΣ
MAΘHMATOΣ

ONOMA
MAΘHMAT.

ONOMA
KAΘHΓHTH

EΠΩNYMO
KAΘHΓHTH

Βασιλείου

19071

1089

Μαθηµατικά

Ειρήνη

Νικολαΐδη

Βασιλείου

19071

1239

Γραµµική
Άλγεβρα

Ειρήνη

Νικολαΐδη

Ειρήνη

Νικολαΐδη

Βασιλείου

19072

1089

Μαθηµατικά

Βαρδής

19109

1045

Φυσική

Χρήστου

19345

1134

Λογικός
Σχεδιασµός

Χρήστος

Χρήστου

∆οµές
∆εδοµένων Ι

Κωνσταντίνος

Μακρύς

Ποιότητα
Λογισµικού

Χρήστος

Χρήστου

Λογικός
Σχεδιασµός

Χρήστος

Χρήστου

Χρήστου
Χρήστου
Χρήστου

19345
19345
19344

1891
1992
1134

A¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™ / KEº. 6

203

Χρήστου

19344

1998

Marketing

Κωνσταντίνος

Μακρύς

Χρήστου

19344

1892

∆οµές
∆εδοµένων ΙΙ

Κωνσταντίνος

Μακρύς

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

O‰ËÁ›Â˜ Î·È Î·Ù¢ı‡ÓÛÂȘ ÁÈ· ÙȘ ‰Ú·ÛÙËÚÈfiÙËÙ˜
1.1
Περιγράψτε παραδείγµατα του πραγµατικού κόσµου τα οποία γνωρίζετε αρκετά καλά. Για
παράδειγµα εάν έχετε εργαστεί σε κάποιο κατάστηµα σκεφτείτε εάν θα είχε εφαρµογή µία
Βάση ∆εδοµένων για αυτό το κατάστηµα και το σκοπό και τη µορφή των δεδοµένων που
θα εισαχθούν σε αυτή τη Βάση ∆εδοµένων. Σκεφτείτε το Ελληνικό Ανοικτό Πανεπιστήµιο στο οποίο σπουδάζετε και πως µια Βάση ∆εδοµένων θα µπορούσε να µοντελοποιήσει
τα δεδοµένα του.
1.2
Θυµηθείτε ότι όλοι οι χρήστες δεν θα πρέπει να έχουν πρόσβαση σε όλα τα δεδοµένα. Για
παράδειγµα δύο επίπεδα χρηστών θα ήταν «Υπεύθυνος Λειτουργίας της Βάση ∆εδοµένων»
µε δικαίωµα να εισάγει στη Βάση ∆εδοµένων τις µετεωρολογικές πληροφορίες και «Απλός
Χρήστης» ο οποίος µόνο διαβάζει τις πληροφορίες. Απλοί χρήστες θα µπορούσαν να είναι
τηλεοπτικοί και ραδιοφωνικοί σταθµοί, εφηµερίδες κτλ. Εάν δεν τα καταφέρατε να εντοπίσετε τη διαφορά ανάµεσα σε απλούς χρήστες και χρήστες που έχουν την ευθύνη διαχείρισης των δεδοµένων µην απογοητεύεστε, αλλά επαναλάβατε τη µελέτη της ενότητας 1.2.
1.3
Σκεφτείτε ένα λογοτεχνικό βιβλίο. Η µεταφορά του υλικού του σε µία Βάση ∆εδοµένων
και η οργάνωσή τους δεν θα είχε νόηµα, αφού η πληροφορία είναι στατική και προορίζεται για σειριακή ανάγνωση. Ισχύει όµως το ίδιο για µία εγκυκλοπαίδεια; (Προφανώς όχι
και µπράβο σας εάν τη συµπεριλάβατε στις επιλογές σας.)
1.4
Ανατρέξτε στις οδηγίες για τη δραστηριότητα 1.1 και δείτε τι προτείναµε για τους χρήστες
της Βάσης ∆εδοµένων. Τώρα µε βάσει την εµπειρία που έχετε αποκτήσει καθορίστε τα
όρια των δυνατοτήτων που πρέπει να επιτρέπει η Βάση ∆εδοµένων σε καθέναν από αυτούς.
Για παράδειγµα ο απλός χρήστης (από ένα τηλεοπτικό σταθµό) θα πρέπει να µπορεί να διαβάζει τα δεδοµένα, αλλά δεν θα πρέπει να έχει καµία δυνατότητα µεταβολής των.
1.5
Σε αυτή τη δραστηριότητα σας ζητάµε να «παίξετε το ρόλο» του αναλυτή, δηλαδή του επιστήµονα που συζητά µε κάποιον πελάτη, εντοπίζει τις ανάγκες του και προτείνει τεχνολογικές λύσεις που να τον εξυπηρετούν (όταν αυτό είναι εφικτό). Με την εµπειρία που έχετε

O ¢ ∏ ° π ∂ ™ ∫ ∞ π ∫ ∞∆ ∂ À £ À ¡ ™ ∂ π ™ ° π ∞ ∆ π ™ ¢ ƒ∞ ™ ∆ ∏ ƒ π √ ∆ ∏ ∆ ∂ ™ / K E º . 1 & 2

206

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

2.1
Το ζητούµενο από αυτή τη δραστηριότητα ήταν να σχεδιαστούν τα σχήµατα 2.2 και 2.3
του κεφαλαίου 2 για τις τρεις εντολές που επιλέξατε. Έτσι σε κάθε περίπτωση και χρησιµοποιώντας το σχήµα 2.2 η εντολή του χρήστη θα εµφανισθεί στο εξωτερικό επίπεδο και
τα δεδοµένα που θα αντληθούν από τους δίσκους στο φυσικό επίπεδο. Το επίπεδο αντίληψης θα το αντλήσετε από το σχήµα 2.3 και θα ενσωµατωθεί στο σχέδιο σας.
2.2
Χρησιµοποιώντας την εµπειρία σας από την άσκηση 3 δεν θα έπρεπε να αντιµετωπίσατε
κανένα πρόβληµα. Ενδεικτικά σας δίνουµε 10 εγγραφές: (101, 17/3/1998, 23), (105, ∆ευτέρα, 67), (882, 11/8/97, 23), (171, ΑΒΓ, 3), (999, Τρίτη, 88), (192, 23/12/1997, 11), (185,
Μάρτιος, 7), (22, 11/1/1994, 3), (1271, ∆ευτέρα, 7), (8939, 18/1/91, 8).
2.3
Μπράβο σας, εάν δεν αντιµετωπίσατε κανένα πρόβληµα. Το βασικό ήταν να εντοπίσετε τα
δοµικά στοιχεία του αρχείου, δηλαδή τα blocks και τις εγγραφές. Κάθε block έχει 200 bytes,
από τα οποία τα 20 είναι δεσµευµένα, και κάθε εγγραφή 25 Bytes. Άρα σε κάθε block
χωρούν 7 εγγραφές και µένουν και αδιάθετα 5 Bytes. Ακολουθεί ένα σχήµα µε τις 10 παραπάνω εγγραφές. Τα blocks χωρίζονται µε bold γραµµές και κάθε κουτάκι αντιστοιχεί σε 1
Byte, ενώ τα γκρίζα κουτάκια είναι κενά.

O ¢ ∏ ° π ∂ ™ ∫ ∞ π ∫ ∞∆ ∂ À £ À ¡ ™ ∂ π ™ ° π ∞ ∆ π ™ ¢ ƒ∞ ™ ∆ ∏ ƒ π √ ∆ ∏ ∆ ∂ ™ / K E º . 2

20 Bytes δεσµευµένα για το block
Kωδικός 101
1
7
/
3
/
23
Kωδικός 105¦

207

1

67

9
9
8
ε
υ
τ
έ
Kωδικός 882¦

2
11

3
/
1
2
Kωδικός 185¦

7
B Γ
Kωδικός 999

T
88

ρ
ί
τ
η
Kωδικός 192¦

ς
20 Bytes δεσµευµένα για το block
Kωδικός 22
1
1
/
1
/
3
Kωδικός 1271¦
1

ρ
1
23

α
1
/
8
/
Kωδικός 171¦

/
M

1
ά

9
A
3

9
ρ

9
τ

7
ι

ο

α
8
/
Kτλ…

1

/

9

7
1

7

9
9
4
ε
υ
τ
έ
Kωδικός 8939¦

ρ
1
7

2.4
Βασικό στοιχείο αυτής της δραστηριότητας είναι να προσέξετε ποιες εγγραφές έχουν διαγραφεί και να γράψετε στη θέση τους τις νέες. Προσέξτε ότι στην πραγµατικότητα οι εγγραφές δεν διαγράφονται από το δίσκο, αλλά ενεργοποιείται το bit διαγραφής. Εάν αντιµετωπίσατε προβλήµατα µε τη δραστηριότητα, επαναλάβατε την ενότητα 2.3.1 και τις δραστηριότητες 2 και 3 του κεφαλαίου 2.
2.5
Θα έχετε 11 blocks στο χαρτί (το τελευταίο block θα έχει µόνο 4 πόλεις). Ο πρώτος κατάλογος θα έχει 3 blocks µε 5 πόλεις στα δύο πρώτα και 1 µόνο πόλη στο τελευταίο. Θα χρειαστείτε και δεύτερο επίπεδο µε ένα block και τρεις πόλεις. Μπράβο σας, εάν το υλοποιήσατε, γιατί ήταν δύσκολο. Εάν είχατε προβλήµατα µελετήστε την ενότητα 2.3.3 και ειδικότερα το σχήµα 2.6.

O ¢ ∏ ° π ∂ ™ ∫ ∞ π ∫ ∞∆ ∂ À £ À ¡ ™ ∂ π ™ ° π ∞ ∆ π ™ ¢ ƒ∞ ™ ∆ ∏ ƒ π √ ∆ ∏ ∆ ∂ ™ / K E º . 3

208

3.1
Μπράβο σας, εάν δεν αντιµετωπίσατε κανένα πρόβληµα. Το βασικό ήταν να εντοπίσετε τα
ονόµατα και να τα διατάξετε ιεραρχικά αρχίζοντας από τα παλαιότερα µέλη του γενεαλογικού δέντρου (π.χ. τον προπάππο σας).
1. Εάν έχετε βάλει τα στοιχεία για όλα τα µέλη της οικογένειά σας, δεν θα πρέπει να είναι
Iεραρχικό ∆έντρο! Φυσικό είναι, αφού εσείς θα έχετε ως κόµβους γονιούς τους κόµβους
των γονέων σας, δηλαδή θα έχετε δύο κόµβους γονιούς, κάτι που έρχεται σε αντίθεση
µε τον ορισµό της ενότητας 3.1.
2. Όχι, αφού δεν είναι ιεραρχικό δέντρο.
3. Μία απλή αλλαγή θα ήταν να ετοιµάσετε το δέντρο αναφέροντας µόνο ένα µέλος κάθε
ζευγαριού (π.χ. µόνο τον πατέρα). Άλλη λύση να αναφέρετε και τους δύο γονείς σε µία
εγγραφή. Μπράβο σας, εάν δεν αντιµετωπίσατε πρόβληµα, γιατί ήταν µία δύσκολη δραστηριότητα.
3.2
Μπράβο σας, εάν δεν αντιµετωπίσατε κανένα πρόβληµα. Το βασικό ήταν να εντοπίσετε τα
ονόµατα και να τα διατάξετε ιεραρχικά αρχίζοντας από τα παλαιότερα µέλη του γενεαλογικού δέντρου (π.χ. τον προπάππο σας). Τώρα δεν υπήρχε πρόβληµα να έχετε ως εγγραφές
και τους δύο γονείς για κάθε παιδί.
3.3
Μπράβο σας, εάν δεν αντιµετωπίσατε κανένα πρόβληµα. Το βασικό ήταν να εντοπίσετε τις
βασικές οντότητες (όπως π.χ. η οντότητα πόλη) και να επιλέξετε τα χαρακτηριστικά που
περιγράφουν κάθε πόλη (όπως π.χ. η ονοµασία της κάθε πόλης). Εάν αντιµετωπίσατε προβλήµατα, µην ανησυχείτε. Θα περιγράψουµε περισσότερο τα διαγράµµατα σχέσεων – οντοτήτων στις επόµενες ενότητες και θα ξεκαθαρίσουν καλύτερα.
3.4
Μπράβο σας, εάν δεν αντιµετωπίσατε κανένα πρόβληµα. Έχουµε δύο οντότητες (τις
«Οµάδα» και «Παίκτης») και δύο σχέσεις: α) τη σχέση «Παίζει», που αναφέρεται σε παίκτη που παίζει σε οµάδα και είναι σχέση 1 προς Ν (ένας παίκτης παίζει σε µία µόνο οµάδα,
αλλά µία οµάδα έχει πολλούς παίκτες), και β) τη σχέση αγώνας, που είναι σχέση Ν προς
Μ στην οντότητα «Οµάδα» (δηλαδή συµµετέχουν εγγραφές από την οντότητα οµάδα).

O ¢ ∏ ° π ∂ ™ ∫ ∞ π ∫ ∞∆ ∂ À £ À ¡ ™ ∂ π ™ ° π ∞ ∆ π ™ ¢ ƒ∞ ™ ∆ ∏ ƒ π √ ∆ ∏ ∆ ∂ ™ / K E º . 3

3.5
Μπράβο σας, εάν δεν αντιµετωπίσατε κανένα πρόβληµα. Το βασικό ήταν να εντοπίσετε τις
βασικές οντότητες (όπως π.χ. η οντότητα «πόλη» και η νέα οντότητα «µέτρηση») και τις
µεταξύ τους σχέσεις. Προσέξτε την έννοια της ηµεροµηνίας για κάθε «µέτρηση».
3.6
Αυτή είναι µία δύσκολη δραστηριότητα, γιατί είναι η πρώτη φορά που αντιµετωπίζετε το
θέµα των σχέσεων οντοτήτων σχεδιαστικά. Μπράβο σας, εάν δεν αντιµετωπίσατε κανένα
πρόβληµα. Το βασικό ήταν να χρησιµοποιήσετε τα δοµικά στοιχεία που περιγράψαµε στην
ενότητα 3.3.3 και να αναπαραστήσετε τις σχέσεις και τις οντότητες του προβλήµατος.
Έτσι, θα έπρεπε να έχετε δύο τετράγωνα (ένα για κάθε οντότητα) και δύο ρόµβους (ένα για
κάθε σχέση. Προσέξτε ο ρόµβος που περιγράφει τη σχέση «Αγώνας» ξεκινάει από την οντότητα οµάδα και καταλήγει πάλι στην οντότητα οµάδα και είναι σχέση Ν προς Μ. Μην παραλείψετε να σχεδιάσετε και τις ελλείψεις για τα κατηγορήµατα και να σηµειώσετε τα κατηγορήµατα που είναι κλειδιά. Επίσης θυµηθείτε ότι η σχέση αγώνας έχει κατηγορήµατα και
συµπεριλάβετέ τα στο σχήµα.
3.7
Με βάση την εµπειρία που αποκτήσατε στη δραστηριότητα 6 που προηγήθηκε δεν θα έπρεπε να αντιµετωπίσατε κάποιο πρόβληµα. Σε περίπτωση όµως που είχατε προβλήµατα είτε
µε αυτή τη δραστηριότητα, είτε µε την προηγούµενη, τότε καλύτερα να αφιερώσετε χρόνο
για µία καλή επανάληψη της ενότητας 3.3.
3.8
Μπράβο σας, εάν δεν αντιµετωπίσατε πρόβληµα σε αυτή τη δραστηριότητα. Το ζητούµενο είναι να εντοπίσετε τα στοιχεία που είναι κοινά τόσο για τους παίκτες όσο και για τους
µάνατζερ (στην περίπτωση αυτή είναι µόνο το όνοµα και το επώνυµο) και να τα θέσετε ως
στοιχεία της οντότητας «Άνθρωπος». Τα ειδικά στοιχεία για κάθε οντότητα θα πρέπει να
περιοριστούν στις οντότητες που θα περιγράφονται µε σχέση ISA.
3.9
Σε αυτή τη ΠΠσας ζητήθηκαν στοιχεία που αναφέραµε στο κεφάλαιο 2. Σε περίπτωση που
αντιµετωπίσατε πρόβληµα, ίσως θα έπρεπε να αφιερώσετε κάποιο χρόνο για µία επανάληψη τόσο στο κεφάλαιο 2 όσο και στο κεφάλαιο 3. Πάντως, εάν µεταφέρατε στο χαρτί
ότι ακριβώς παρουσιάζεται στο σχήµα 3.9, δεν θα έπρεπε να είχατε πρόβληµα. Θυµηθείτε

209

O ¢ ∏ ° π ∂ ™ ∫ ∞ π ∫ ∞∆ ∂ À £ À ¡ ™ ∂ π ™ ° π ∞ ∆ π ™ ¢ ƒ∞ ™ ∆ ∏ ƒ π √ ∆ ∏ ∆ ∂ ™ / K E º . 3 & 4

210

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

4.1
Λογικά δεν θα έπρεπε να αντιµετωπίσετε προβλήµατα και µπράβο σας, εάν τα καταφέρατε. Το ζητούµενο ήταν να εισάγετε 10 παραδείγµατα για κάθε οντότητα και 5 παραδείγµατα από εγγραφές για κάθε σχέση. Τα σηµεία που έπρεπε να προσέξετε ήταν να χρησιµοποιήστε στις σχέσεις εγγραφές (δηλαδή τα κλειδιά από εγγραφές) που είχατε ήδη εισάγει
στις οντότητες και φυσικά να προσέξετε να µην υπάρχουν κενές τιµές στα κλειδιά.
4.2
Λογικά δεν θα έπρεπε να αντιµετωπίσετε προβλήµατα µε δεδοµένο ότι είχατε υλοποιήσει
τη δραστηριότητα 1 του κεφαλαίου 4 και µπράβο σας, εάν τα καταφέρατε. Εάν αντιµετωπίσατε πρόβληµα στο να εντοπίσετε τις εγγραφές που δηµιουργούν προβλήµατα ακεραιότητας, τότε αφιερώστε λίγο χρόνο για µία επανάληψη της ενότητας 4.1.2 και επαναλάβετε τη δραστηριότητα.
4.3
Λογικά δεν θα έπρεπε να αντιµετωπίσετε προβλήµατα µε δεδοµένο ότι έχετε εµπειρία στις
προβολές από τις προηγούµενες ασκήσεις. Θα έπρεπε να πάρετε προβολές είτε µε µόνο το
«Όνοµα», είτε µε µόνο το «Επώνυµο», είτε και µε τα δύο από τους πίνακες «Παίκτης» και
«Μάνατζερ» και να επιβεβαιώσετε την ισότητα συγκρίνοντας τα αποτελέσµατα των πράξεων.

O ¢ ∏ ° π ∂ ™ ∫ ∞ π ∫ ∞∆ ∂ À £ À ¡ ™ ∂ π ™ ° π ∞ ∆ π ™ ¢ ƒ∞ ™ ∆ ∏ ƒ π √ ∆ ∏ ∆ ∂ ™ / K E º . 4 & 5

4.4
∆εν θα σας δώσουµε την πλήρη λύση για αυτή τη δραστηριότητα γιατί θα προκύψει ένας
τεράστιος πίνακας. Αυτός ο πίνακας θα πρέπει να έχει arity 10 (ο πίνακας «Παίκτης» έχει 7
στήλες και ο πίνακας «Μάνατζερ» 3, άρα το άθροισµά τους είναι 10) και cardinality 30 (6
γραµµές που έχει ο πίνακας «Παίκτης» επί 5 γραµµές που έχει ο πίνακας «Μάνατζερ» µας
δίνει 30). Μπράβο σας, εάν υλοποιήσατε τον πίνακα µε όλα τα παραπάνω χαρακτηριστικά.
4.5
Αυτή η δραστηριότητα ήταν αρκετά δύσκολη. Εάν δεν τα καταφέρατε, µην απογοητεύεστε, αλλά αφιερώστε χρόνο για να διαβάσετε περισσότερα για το σχεσιακό υπολογισµό
από τη βιβλιογραφία που αναγράφεται στο τέλος του κεφαλαίου. Ουσιαστικά από τις πράξεις που περιγράψαµε στην ενότητα 4.2 τις περισσότερες τις καλύψαµε στην προηγούµενη άσκηση αυτοαξιολόγησης (άσκηση 8 του κεφαλαίου 4).
Η πράξη τοµή δεν θα σας δυσκόλεψε, εάν θυµηθήκατε ότι είναι δύο αφαιρέσεις. Όσο για
τις συνδέσεις, είπαµε ότι είναι προβολές και επιλογές πάνω σε ένα καρτεσιανό γινόµενο.
Μπράβο σας, εάν τα καταφέρατε για όλες τις πράξεις.

5.1
Μπράβο σας, εάν τα καταφέρατε, γιατί αυτή ήταν µία δραστηριότητα που απαιτούσε αρκετή εργασία και αναζήτηση. Η απάντησή σας θα πρέπει να περιέχει αρκετά συστήµατα, µερικά από αυτά ίσως να µην είναι σε µεγάλη χρήση σήµερα. Επίσης, θα πρέπει να έχετε συµπεριλάβει στην απάντησή σας τόσο µικρά συστήµατα, όπως η Microsoft Access (που υποστηρίζει τόσο SQL και QBE, µε κύρια γλώσσα ερωτήσεων τη QBE), όσο και µεγάλα
συστήµατα, όπως για παράδειγµα η ORACLE. Εάν δεν τα καταφέρατε, µην απογοητεύεστε. Μπορείτε να αναζητήσετε πληροφορίες από υπολογιστικά κέντρα τµηµάτων Πανεπιστηµίων, καθώς και στον επαγγελµατικό χώρο. Εκεί θα εντοπίσετε αρκετά συστήµατα για
να µπορέσετε να ολοκληρώσετε τη δραστηριότητα.
5.2
Μπράβο σας, εάν τα καταφέρατε, αν και δεν θα πρέπει να δυσκολευτήκατε. Μπορείτε να
χρησιµοποιείτε τη Βάση ∆εδοµένων που δηµιουργήσατε για να ελέγχετε την ορθότητα των
ασκήσεων του κεφαλαίου και για να εντοπίζετε και να διορθώνετε πιθανά λάθη σας.
5.3
Μπράβο σας, εάν τα καταφέρατε. Γενικά, µη διστάζετε να πειραµατίζεστε µε τη Βάση

211

O ¢ ∏ ° π ∂ ™ ∫ ∞ π ∫ ∞∆ ∂ À £ À ¡ ™ ∂ π ™ ° π ∞ ∆ π ™ ¢ ƒ∞ ™ ∆ ∏ ƒ π √ ∆ ∏ ∆ ∂ ™ / K E º . 5

212

∆εδοµένων που δηµιουργήσατε. Αυτός είναι και ο καλύτερος τρόπος για να µάθετε SQL.
Μπορείτε να δηµιουργήσετε ένα αντίγραφο της Βάσης ∆εδοµένων σας και να πειραµατίζεστε συνεχώς µε αυτό το αντίγραφο, χωρίς να υπάρχει φόβος να καταστρέψετε τα αρχικά δεδοµένα που έχετε δηµιουργήσει στο πρωτότυπο. Με αυτό τον τρόπο θα µάθετε πολλά
περισσότερα από κάθε άλλη µορφή µελέτης.
5.4
Μπράβο σας, εάν τα καταφέρατε. Όπως σας είπαµε και στην προηγούµενη δραστηριότητα ο καλύτερος τρόπος για να µάθετε SQL είναι να πειραµατίζεστε συνεχώς πάνω στο
Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων, που επιλέξατε να χρησιµοποιείτε.
5.5
Στη δραστηριότητα αυτή πρέπει να προσέξετε να µην χρησιµοποιήσετε την ίδια µετονοµασία για διαφορετικούς πίνακες και φυσικά να µην κάνετε λάθος στη χρήση των νέων
ονοµάτων. Μπράβο σας, εάν τα καταφέρατε µε αυτή τη δραστηριότητα.
5.6
Βασικό σε αυτή τη δραστηριότητα ήταν να προσέξετε ποιες εντολές εκτελούν πράξεις σε
σύνολα (όπως για παράδειγµα η «UNION») και ποιες εντολές επιστρέφουν «αληθές» ή
«ψευδές» στη συνθήκη του «WHERE». Λογικά δεν θα έπρεπε να αντιµετωπίσατε σηµαντικά προβλήµατα και µπράβο σας, εάν τα καταφέρατε να υλοποιήσετε µία τουλάχιστον
ερώτηση για κάθε εντολή που συζητήσαµε σε αυτή την ενότητα.
5.7
Μπράβο σας, εάν τα καταφέρατε και υλοποιήσατε ερωτήσεις µε συνδέσεις. Όπως επαναλαµβάνουµε συνεχώς σε αυτό το κεφάλαιο, ο καλύτερος τρόπος για να µάθετε SQL είναι
να πειραµατίζεστε συνεχώς πάνω στο Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων που επιλέξατε να χρησιµοποιείτε.
5.8
Μπράβο σας, εάν τα καταφέρατε και δεν αντιµετωπίσατε πρόβληµα µε αυτή την εργασία.
Γενικά ο καλύτερος τρόπος εκµάθησης είναι ο συνεχής πειραµατισµός.
5.9
Η εκτέλεση αυτής της δραστηριότητας σχετίζεται άµεσα µε το σύστηµα που χρησιµοποιείτε. Σε περίπτωση που αντιµετωπίσατε δυσκολίες, αυτό µπορεί και να οφείλεται στο

O ¢ ∏ ° π ∂ ™ ∫ ∞ π ∫ ∞∆ ∂ À £ À ¡ ™ ∂ π ™ ° π ∞ ∆ π ™ ¢ ƒ∞ ™ ∆ ∏ ƒ π √ ∆ ∏ ∆ ∂ ™ / K E º . 5 & 6

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

6.1
Ένα καλό σύστηµα που µπορείτε να χρησιµοποιήσετε είναι η Microsoft Access που παρέχει την QBE ως βασική γλώσσα υποβολής ερωτήσεων. Μπράβο σας, εάν τα καταφέρατε
και αποκτήσατε εξοικείωση µε την υποβολή ερωτήσεων σε QBE, γιατί αυτή η γνώση θα
σας φανεί χρήσιµη για τις επόµενες ασκήσεις και δραστηριότητες.
6.2
Μπράβο σας, εάν τα καταφέρατε και υλοποιήσατε τις ερωτήσεις στο Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων που χρησιµοποιείτε. Σε περίπτωση που αντιµετωπίσατε πρόβληµα, είναι πολύ πιθανό αυτό να οφείλεται σε µικρές διαφοροποιήσεις της QBE που χρησιµοποιεί το σύστηµά σας. Καλύτερα µελετήστε τα εγχειρίδια του συστήµατος και επαναλάβατε τη δραστηριότητα.
6.3
Ένα βασικό πλεονέκτηµα του συστήµατος αυτού είναι ότι µπορείτε να δώσετε την ερώτηση σε µία από τις γλώσσες που µάθαµε (SQL ή QBE) και να δείτε την ίδια ερώτηση αυτόµατα και στην άλλη γλώσσα. Μπράβο σας, εάν το ανακαλύψατε και πειραµατιστήκατε µε
αυτό.

213

O ¢ ∏ ° π ∂ ™ ∫ ∞ π ∫ ∞∆ ∂ À £ À ¡ ™ ∂ π ™ ° π ∞ ∆ π ™ ¢ ƒ∞ ™ ∆ ∏ ƒ π √ ∆ ∏ ∆ ∂ ™ / K E º . 7

214

7.1
Μπράβο σας, εάν τα καταφέρατε. Υπήρχαν πολλές τέτοιες Βάσεις,
όταν γραφόταν το βιβλίο και σίγουρα θα έχουν ήδη κυκλοφορήσει
αρκετές ακόµα. Η δραστηριότητα αυτή είχε κυρίως ως σκοπό να σας
δείξει ότι οι αντικειµενοστραφείς Βάσεις ∆εδοµένων κάνουν σταδιακά την εµφάνισή τους στην αγορά.
7.2
Μπράβο σας, εάν τα καταφέρατε. Όπως είπαµε, σε αυτό το βιβλίο δεν
θα αφιερώσουµε πολύ µεγάλο χώρο στην παρουσίαση των αντικειµενοστραφών Βάσεων ∆εδοµένων και για αυτό είναι σαφώς καλύτερα
να πειραµατιστείτε και να διαβάσετε αρκετά από την προτεινόµενη
βιβλιογραφία.
7.3
Μπράβο σας, εάν τα καταφέρατε. Όπως είπαµε και στην προηγούµενη δραστηριότητα, σε αυτό το βιβλίο δεν θα αφιερώσουµε πολύ µεγάλο χώρο στην παρουσίαση της OQL και για αυτό είναι σαφώς καλύτερα να πειραµατιστείτε και να διαβάσετε αρκετά από την προτεινόµενη βιβλιογραφία.
7.4
Μπράβο σας, εάν τα καταφέρατε. Επειδή σε αυτό το βιβλίο δεν θα
αφιερώσουµε πολύ µεγάλο χώρο στην παρουσίαση της SQL3 είναι
σαφώς καλύτερα να πειραµατιστείτε και να διαβάσετε αρκετά από την
προτεινόµενη βιβλιογραφία.

AÏÊ·‚ËÙÈÎfi ¢ÚÂÙ‹ÚÈÔ fiÚˆÓ (ÂÏÏËÓÈο – ·ÁÁÏÈο)
Aδιέξοδο

Deadlock

Ακεραιότητα

Integrity

Αντικείµενο

Object

Αντικειµενοστραφής

Object Oriented

Αριθµός Γραµµών Πίνακα

Cardinality

Αριθµός Στηλών Πίνακα

Arity

Αρχεία

Files

Ασθενής Οντότητα

Weak Entity

Βάση ∆εδοµένων

Database

Γλώσσα Οικοδεσπότης

Host Language

Γλώσσα Ορισµού ∆εδοµένων

Data Definition Language

Γλώσσα Χειρισµού ∆εδοµένων

Data Manipulation Language

Γλώσσες Ερωτήσεων

Query Languages

Γονιός

Parent

∆εδοµένα

Data

∆είκτες

Pointers

∆εικτοδότηση

Indexing

∆έντρα τύπου Β

B–Trees

∆έντρο

Tree

∆ιαγραφή

Delete

∆ιάταξη

Sorting

∆οµηµένος Προγραµµατισµός

Structured Programming

Εγγραφές

Records

Εισαγωγή

Insert

Ενηµέρωση

Update

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

External Level

Επιλογή

Select

Επίπεδα Προσπέλασης Βάσης ∆εδοµένων

Database User Levels

Επίπεδο Αντίληψης

Conceptual Level

Εσωτερικό (Φυσικό) Επίπεδο

Internal (Physical) Level

A§º∞µ∏∆π∫√ ∂Àƒ∂∆∏ƒπ√ √ƒø¡ (∂§§∏¡π∫∞ – ∞°°§π∫∞)

216

Ιεραρχικό Μοντέλο

Hierarchic Model

Κατακερµατισµός

Hashing

Κατηγόρηµα

Attribute

Κενή Τιµή

Null Value

Κλάση

Class

Κλειδί

Key

Κλείδωµα

Lock

Κληρονοµικότητα

Inheritance

Μέθοδος

Method

Μετονοµασίες

Aliases

Οντότητα

Entity

Οργάνωση ∆εδοµένων

Data Organization

Όψεις ∆εδοµένων

Data Views

Παιδί

Child

Παράδειγµα

Example

Πεδία

Fields

Πίνακας Αποτελέσµατος

Result Table

Πίνακας Ερώτησης

Query Table

Πίνακας

Table

Πληροφορία

Information

Συµβολοσειρά

String

Σύνδεση

Link

Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων

Database Management System (DBMS)

Σχέση

Relation

Σχεσιακή Άλγεβρα

Relational Algebra

Σχεσιακός Υπολογισµός

Relational Calculus

Τύπος ∆εδοµένων

Data Type

Φύλλο

Leaf

Χρήστες Βάσης ∆εδοµένων

Database Users

AÏÊ·‚ËÙÈÎfi ¢ÚÂÙ‹ÚÈÔ fiÚˆÓ (·ÁÁÏÈο – ÂÏÏËÓÈο)
Aliases

Μετονοµασίες

Arity

Αριθµός Στηλών Πίνακα

Attribute

Κατηγόρηµα

B–Trees

∆έντρα τύπου Β

Cardinality

Αριθµός Γραµµών Πίνακα

Child

Παιδί

Class

Κλάση

Conceptual Level

Επίπεδο Αντίληψης

Data Definition Language

Γλώσσα Ορισµού ∆εδοµένων

Data Manipulation Language

Γλώσσα Χειρισµού ∆εδοµένων

Data Organization

Οργάνωση ∆εδοµένων

Data Type

Τύπος ∆εδοµένων

Data Views

Όψεις ∆εδοµένων

Data

∆εδοµένα

Database Management System (DBMS)

Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων

Database User Levels

Επίπεδα Προσπέλασης Βάσης ∆εδοµένων

Database Users

Χρήστες Βάσης ∆εδοµένων

Database

Βάση ∆εδοµένων

Deadlock

Aδιέξοδο

Delete

∆ιαγραφή

Entity

Οντότητα

Example

Παράδειγµα

External Level

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

Fields

Πεδία

Files

Αρχεία

Hashing

Κατακερµατισµός

Hierarchic Model

Ιεραρχικό Μοντέλο

Host Language

Γλώσσα Οικοδεσπότης

Indexing

∆εικτοδότηση

Information

Πληροφορία

A§º∞µ∏∆π∫√ ∂Àƒ∂∆∏ƒπ√ √ƒø¡ (∞°°§π∫∞ – ∂§§∏¡π∫∞)

218

Inheritance

Κληρονοµικότητα

Insert

Εισαγωγή

Integrity

Ακεραιότητα

Internal (Physical) Level

Εσωτερικό (Φυσικό) Επίπεδο

Key

Κλειδί

Leaf

Φύλλο

Link

Σύνδεση

Lock

Κλείδωµα

Method

Μέθοδος

Null Value

Κενή Τιµή

Object Oriented

Αντικειµενοστραφής

Object

Αντικείµενο

Parent

Γονιός

Pointers

∆είκτες

Query Languages

Γλώσσες Ερωτήσεων

Query Table

Πίνακας Ερώτησης

Records

Εγγραφές

Relation

Σχέση

Relational Algebra

Σχεσιακή Άλγεβρα

Relational Calculus

Σχεσιακός Υπολογισµός

Result Table

Πίνακας Αποτελέσµατος

Select

Επιλογή

Sorting

∆ιάταξη

String

Συµβολοσειρά

Structured Programming

∆οµηµένος Προγραµµατισµός

Table

Πίνακας

Tree

∆έντρο

Update

Ενηµέρωση

Weak Entity

Ασθενής Οντότητα

°ÏˆÛÛ¿ÚÈÔ
Αρχεία
Τα Αρχεία είναι συλλογές από εγγραφές.
Βάση ∆εδοµένων
Η Βάση ∆εδοµένων είναι µια αυστηρά τυποποιηµένη συλλογή από σχετικά µεταξύ
τους δεδοµένα, που παρέχει ένα αυτόµατο, κεντρικό και κοινό τρόπο χειρισµού τους.
Βαθµός Σχέσης
Βαθµός µιας σχέσης ονοµάζεται ο αριθµός των οντοτήτων που συµµετέχουν στη
σχέση.
∆εδοµένα
Ως δεδοµένα ορίζονται στοιχεία, έννοιες και οδηγίες, τυποποιηµένα σε καθορισµένη µορφή, κατάλληλα για επεξεργασία από ανθρώπους ή µηχανές.
∆ιαφάνεια
Ως ∆ιαφάνεια ορίζεται το γεγονός ότι ο χρήστης δεν γνωρίζει πού βρίσκονται τα
δεδοµένα του και απλά βλέπει το αποτέλεσµα των εντολών που εκτελεί στο εξωτερικό επίπεδο.
∆έντρα τύπου Β+
Τα δέντρα τύπου Β+ είναι εξειδίκευση των δέντρων τύπου Β. Στα δέντρα τύπου Β+
υπάρχει ο επιπλέον περιορισµός ότι τα δεδοµένα (δείκτες προς τα blocks που περιέχουν δεδοµένα) αποθηκεύονται µόνο στα φύλλα του δέντρου και, συνήθως, τα φύλλα
ενός δέντρου τύπου Β+ είναι συνδεδεµένα µεταξύ τους παρέχοντας µια ενιαία διατεταγµένη µορφή καταλόγου.
Εγγραφές
Εγγραφές είναι συλλογές από τιµές για ένα καθορισµένο αριθµό στοιχείων, τα οποία
ονοµάζονται πεδία.
Εξωτερικό Επίπεδο
Ως εξωτερικό επίπεδο της αρχιτεκτονικής µίας Βάσης ∆εδοµένων ορίζεται το επίπεδο στο οποίο τα δεδοµένα της Βάσης ∆εδοµένων παρουσιάζονται στο χρήστη.
Ιδεατό επίπεδο
Ως επίπεδο αντίληψης (ιδεατό επίπεδο) της αρχιτεκτονικής µίας Βάσης ∆εδοµένων
ορίζεται το επίπεδο στο οποίο περιγράφεται το σχήµα της Βάσης ∆εδοµένων µε
αυστηρά καθορισµένο τρόπο, σε επίπεδο αφαίρεσης αµέσως υψηλότερο από αυτό
του φυσικού επιπέδου.

220

BA™EI™ ¢E¢OMENøN

Εσωτερικό (Φυσικό) Επίπεδο
Ως φυσικό επίπεδο της αρχιτεκτονικής µίας Βάσης ∆εδοµένων ορίζεται το επίπεδο
στο οποίο τα δεδοµένα αποθηκεύονται και οργανώνονται υπό τη µορφή bytes και
σελίδων στο µηχανισµό αποθήκευσης της Βάσης ∆εδοµένων.
Κατηγορήµατα
Κατηγορήµατα µίας οντότητας του διαγράµµατος σχέσεων – οντοτήτων είναι τα
στοιχεία που καθορίζουν τα χαρακτηριστικά της συγκεκριµένης οντότητας.
Κλειδί
Κλειδί για µία οντότητα του διαγράµµατος σχέσεων – οντοτήτων είναι το σύνολο
των κατηγορηµάτων της οντότητας τα οποία είναι µοναδικά για κάθε εγγραφή και
τη χαρακτηρίζουν απόλυτα.
Οντότητα
Οντότητα στο διάγραµµα σχέσεων – οντοτήτων είναι ένα στοιχείο του πραγµατικού περιβάλλοντος µε αυτόνοµη πραγµατική ή θεωρητική υπόσταση.
Πεδία
Τα Πεδία είναι στοιχεία µε καθορισµένο τύπο δεδοµένων που δεσµεύουν αποθηκευτικό χώρο.
Πίνακας
Ο πίνακας σε µία σχεσιακή Βάση ∆εδοµένων αποτελείται από µία ή περισσότερες,
στήλες που αντιστοιχούν σε τιµές πεδίων και από γραµµές που αντιστοιχούν σε τιµές
για αυτά τα πεδία.
Πληροφορία
Η πληροφορία εξάγεται από τα δεδοµένα και χρησιµοποιείται στην επίλυση προβληµάτων.
Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων
Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων είναι το λογισµικό το οποίο επιτρέπει
στους χρήστες να δηµιουργούν και να χρησιµοποιούν Βάσεις ∆εδοµένων.
Σχέση
Η σχέση ανάµεσα σε οντότητες καθορίζει ένα σύνολο από συσχετισµούς ανάµεσα
σε εγγραφές των οντοτήτων αυτών.
Τύποι ∆εδοµένων
Οι Τύποι ∆εδοµένων καθορίζουν τη µορφή των δεδοµένων και τον αποθηκευτικό
χώρο που θα δεσµεύσουν.

°§ø™™APIO

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

221

Sign up to vote on this title
UsefulNot useful