You are on page 1of 224

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 Βασικοί ορισµοί .......................................................................................................... 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
1.3 Τι παρέχει η βάση δεδοµένων ........................................................................ 27
1.3.1 Tαυτόχρονη προσπέλαση ..................................................................... 28
1.3.2 Ταχύτατη εξαγωγή απαντήσεων ..................................................... 28
1.3.3 Eυελιξία ............................................................................................................... 29
1.3.4 Υψηλή ποιότητα δεδοµένων .............................................................. 29
1.3.5 Αιτίες για µη χρήση βάσεων δεδοµένων ................................ 30
1.4 Επίπεδα χρηστών ....................................................................................................... 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
6 BA™EI™ ¢E¢OMENøN

2.1 Eπίπεδα Aρχιτεκτονικής ..................................................................................... 41


2.1.1 Aρχιτεκτονική βάσεων δεδοµένων .............................................. 42
2.1.2 Το εξωτερικό επίπεδο .............................................................................. 42
2.1.3 Tο φυσικό επίπεδο ...................................................................................... 43
2.1.4 Το επίπεδο αντίληψης .............................................................................. 44
2.2 Το φυσικό επίπεδο .................................................................................................... 48
2.2.1 Τύποι δεδοµένων και πεδία ................................................................ 48
2.2.2 Εγγραφές και αρχεία ................................................................................ 48
2.2.3 Μονάδες αποθήκευσης ........................................................................... 50
2.3 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 Το ιεραρχικό µοντέλο ............................................................................................ 65
3.2 Το δικτυακό µοντέλο .............................................................................................. 69
3.3 ∆ιαγράµµατα σχέσεων – 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 Σχεσιακή άλγεβρα ........................................................................................ 104
4.2.1 Eπιλογή ............................................................................................................. 106
4.2.2 Προβολή .......................................................................................................... 106
4.2.3 Ένωση ................................................................................................................ 107
4.2.4 Tοµή .................................................................................................................... 107
4.2.5 ∆ιάφορα ............................................................................................................ 107
4.2.6 Καρτεσιανό γινόµενο ............................................................................ 108
4.2.7 Σύνδεση ............................................................................................................ 108
4.2.8 Φυσική σύνδεση ....................................................................................... 108
4.3 Σχεσιακός υπολογισµός .................................................................................... 109
Σύνοψη ............................................................................................................................................. 112
Bιβλιογραφία για περαιτέρω µελέτη ......................................................................... 112

K∂º∞§∞π√ 5
H °ÏÒÛÛ· EÚˆÙ‹ÛÂˆÓ SQL

Σκοπός, Προσδοκώµενα αποτελέσµατα, Έννοιες κλειδιά


Eισαγωγικές παρατηρήσεις .............................................................................................. 113
5.1 Αρχές των γλωσσών ερωτήσεων .............................................................. 115
5.2 Αναζήτηση δεδοµένων στην SQL ............................................................ 117
5.2.1 Select… From… Where… .............................................................. 118
5.2.2 ∆ιάταξη των αποτελεσµάτων ........................................................ 125
5.2.3 Λοιπές εντολές στη συνθήκη ......................................................... 127
5.2.4 Μετονοµασία πινάκων ........................................................................ 129
5.2.5 Εντολές συνόλων ..................................................................................... 130
5.2.6 Σύνδεση πινάκων ..................................................................................... 133
5.2.7 Αρίθµηση, µέγιστα – ελάχιστα και οµαδοποίηση ....... 136
5.2.8 Γενική µορφή εντολής αναζήτησης ......................................... 137
5.3 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
8 BA™EI™ ¢E¢OMENøN

K∂º∞§∞π√ 6
H °ÏÒÛÛ· EÚˆÙ‹ÛÂˆÓ QBE

Σκοπός, Προσδοκώµενα αποτελέσµατα, Έννοιες κλειδιά


Eισαγωγικές παρατηρήσεις ............................................................................................. 143
6.1 Η φιλοσοφία της QBE ....................................................................................... 145
6.2 Συνθήκες ........................................................................................................................ 148
6.3 Η QBE σε συνδυασµό µε γραφικό περιβάλλον ........................... 152
Σύνοψη ............................................................................................................................................. 155
Bιβλιογραφία για περαιτέρω µελέτη ........................................................................ 156

K∂º∞§∞π√ 7
∞ÓÙÈÎÂÈÌÂÓÔÛÙÚ·Ê›˜ B¿ÛÂȘ ¢Â‰Ô̤ӈÓ

Σκοπός, Προσδοκώµενα αποτελέσµατα, Έννοιες κλειδιά


Eισαγωγικές παρατηρήσεις ............................................................................................. 157
7.1 Η φιλοσοφία
των αντικειµενοστραφών βάσεων δεδοµένων .............................. 159
7.2 Η αντικειµενοστραφής γλώσσα ερωτήσεων 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ο κεφάλαιο κάνουµε µία σύνοψη της ύλης που παρουσιάσαµε και σας
10 BA™EI™ ¢E¢OMENøN

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

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


θα σας βοηθήσουν να κατανοήσετε καλύτερα την ύλη του τόµου αυτού.

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

Στο τέλος του τόµου θα πρέπει να γνωρίζετε:

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

• τα Μοντέλα Βάσεων ∆εδοµένων,

• την οργάνωση των δεδοµένων στο φυσικό επίπεδο,

• τις βασικές αρχές των Σχεσιακών και Αντικειµενοστραφών Βάσεων ∆εδοµέ-


νων.

Επίσης, θα πρέπει να µπορείτε να:

• σχεδιάζετε το διάγραµµα Σχέσεων – Οντοτήτων για κάθε Βάση ∆εδοµένων,

• περιγράφετε ερωτήσεις σε Σχεσιακή Άλγεβρα και Σχεσιακό Υπολογισµό,

• περιγράφετε ερωτήσεις και εντολές σε SQL και QBE.

Oι συγγραφείς θέλουν να ευχαριστήσουν όλους εκείνους που συντέλεσαν σηµαντι-


κά στη βελτίωση του βιβλίου αυτού και βοήθησαν στην παραγωγή του.

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

Mιχάλης Ξένος – ∆ηµήτρης Xριστοδουλάκης


EÈÛ·ÁˆÁ‹

™ÎÔfi˜

Σκοπός αυτού του κεφαλαίου είναι: α) Να σας εισάγει στις βασικές


έννοιες των βάσεων δεδοµένων, β) να σας ενηµερώσει για την ύλη που
καλύπτεται σε αυτό το βιβλίο και γ) να σας προτείνει εναλλακτικούς
τρόπους οργάνωσης της µελέτης σας.
∫ ∂

1
º ∞ § ∞ π √

¶ÚÔÛ‰ÔÎÒÌÂÓ· ∞ÔÙÂϤÛÌ·Ù·

Όταν θα έχετε ολοκληρώσει τη µελέτη αυτού του κεφαλαίου θα µπο-


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

ŒÓÓÔȘ ÎÏÂȉȿ
• Βάση ∆εδοµένων (Database)
• Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων (Database Management
System (DBMS))
• ∆εδοµένα (Data)
• Πληροφορία (Information)
• Οργάνωση ∆εδοµένων (Data Organization)
12 KEºA§AIO 1: EI™A°ø°H

• Χρήστες Βάσης ∆εδοµένων (Database Users)


• Όψεις ∆εδοµένων (Data Views)
• Επίπεδα Προσπέλασης Βάσης ∆εδοµένων (Database User Levels)

∂ÈÛ·ÁˆÁÈΤ˜ ¶·Ú·ÙËÚ‹ÛÂȘ

Στο κεφάλαιο αυτό εισάγεται η έννοια των Βάσεων ∆εδοµένων και


των αναγκών που έρχονται να καλύψουν. Θα συζητήσουµε τις βασι-
κές έννοιες που πρέπει να γνωρίζετε για τις Βάσεις ∆εδοµένων, θα
περιγράψουµε το Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων (DBMS)
και τις διαφορές του από τη Βάση ∆εδοµένων, θα αναλύσουµε τις
δυνατότητες που σας παρέχουν οι Βάσεις ∆εδοµένων και θα δούµε
τους πιθανούς χρήστες µιας Βάσης ∆εδοµένων και τι ζητάει κάθε ένας
από αυτούς.
1.1 µ·ÛÈÎÔ› ÔÚÈÛÌÔ›

™ÎÔfi˜

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

¶ÚÔÛ‰ÔÎÒÌÂÓ· ∞ÔÙÂϤÛÌ·Ù·

Όταν θα έχετε ολοκληρώσει τη µελέτη αυτής της ενότητας θα µπο-


ρείτε να:
• εξηγήσετε τους όρους Βάση ∆εδοµένων, δεδοµένα, πληροφορία και
χρήστες
• διακρίνετε ανάµεσα στις έννοιες «δεδοµένα» και «πληροφορία»
• δώσετε τουλάχιστον τρία παραδείγµατα Βάσεων ∆εδοµένων
• αναγνωρίσετε Βάσεις ∆εδοµένων που χρησιµοποιούµε στη ζωή µας
• αναφέρετε ένα πρόβληµα που σχετίζεται µε Βάσεις ∆εδοµένων χρη-
σιµοποιώντας τεχνικούς όρους

∂ÈÛ·ÁˆÁÈΤ˜ ¶·Ú·ÙËÚ‹ÛÂȘ

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

1.1.1 ¢Â‰Ô̤ӷ Î·È ÏËÚÔÊÔÚ›· ■ Ως δεδοµένα


Πριν προχωρήσουµε στην έννοια της Βάσης ∆εδοµένων πρέπει να δια- ορίζονται στοιχεία, έννοιες
κρίνουµε µεταξύ των εννοιών δεδοµένα (data) και πληροφορία και οδηγίες, τυποποιηµένα
(information). Από τα πρώτα χρόνια της χρήσης των Ηλεκτρονικών σε καθορισµένη µορφή,
Υπολογιστών οι έννοιες δεδοµένα και πληροφορία συγχέονταν µετα- κατάλληλα για επεξεργασία
ξύ τους. ■ από ανθρώπους ή µηχανές.
14 KEºA§AIO 1: EI™A°ø°H

Έτσι τα δεδοµένα µπορούν να είναι λέξεις π.χ. {“Νίκος”, “Μιχάλης”,


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

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

ÕÛÎËÛË Ακολουθούν µερικές προτάσεις.


·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
Ποιες από αυτές είναι σωστές και ποιες λάθος;
1.1
Σωστό Λάθος
Τα {1, 2, 4, 5, 7, 9} είναι δεδοµένα. ❏ ❏
Τα {1, “Νίκος”, 4, 5, “Ποδήλατο”} είναι δεδοµένα. ❏ ❏
Τα {“Αθήνα”, 34, “Παρίσι”, 28, “Μόσχα”, 11,
“Μαδρίτη”, 37, “Ρώµη”, 33} είναι πληροφορία. ❏ ❏
1.1 µ∞™π∫√π √ƒπ™ª√π 15

Τα {“Αθήνα”, 34, “Παρίσι”, 28, “Μόσχα”, 11,


“Μαδρίτη”, 37, “Ρώµη”, 33} είναι δεδοµένα. ❏ ❏
Τα δεδοµένα γίνονται πληροφορία µόλις
αποθηκευτούν στον ηλεκτρονικό υπολογιστή. ❏ ❏

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

Ένα βασικό χαρακτηριστικό των δεδοµένων, έτσι όπως τα παρουσιά-


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

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


στον υπολογιστή ένα πρόβληµα και να διευκολύνει τη λύση του. Αυτό
συνήθως σηµαίνει ότι τα δεδοµένα που χειρίζεται δεν είναι στατικά
αλλά δυναµικά, δηλαδή αλλάζουν συνεχώς. Η Βάση ∆εδοµένων περιέ-
χει τα δεδοµένα που περιγράφουν τη συγκεκριµένη χρονική στιγµή το
«πρόβληµα», µπορεί όµως να περιέχει και δεδοµένα από την ιστορία
του προβλήµατος.
16 KEºA§AIO 1: EI™A°ø°H

¶·Ú¿‰ÂÈÁÌ· 1.1

Ας δούµε µία αρκετά απλή Βάση ∆εδοµένων: Έστω ότι θέλουµε να


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

Η Βάση ∆εδοµένων που περιγράφουµε στο παράδειγµα 1.1 έχει όλα


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

Θα προσπαθήσουµε να επεκτείνουµε τη µετεωρολογική Βάση ∆εδο- ÕÛÎËÛË


·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
µένων που αναφέραµε ως παράδειγµα, επαυξάνοντας την και µε άλλες
1.2
πληροφορίες. Ποια από τα δεδοµένα που ακολουθούν πιστεύετε πως
µπορούν να ενταχθούν στη Βάση ∆εδοµένων του παραδείγµατος ώστε
αυτή να παραµείνει µία µετεωρολογική Βάση ∆εδοµένων;
Σωστό Λάθος
∆εδοµένα για την υγρασία των πόλεων.
Π.χ. υγρασία 87%. ❏ ❏
∆εδοµένα και για άλλες ώρες τις ηµέρας,
όπως η θερµοκρασία των πόλεων ανά ώρα. ❏ ❏
∆εδοµένα για τον αέρα και την έντασή του
σε κάθε πόλη κάθε µεσηµέρι. ❏ ❏

Eπιλέξτε την πιο σωστή από τις παρακάτω προτάσεις. ÕÛÎËÛË


·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
Μια συλλογή από δεδοµένα για να αποτελεί µία Βάση ∆εδοµένων 1.3
πρέπει να:

α) Αποτελείται από δεδοµένα σχετικά µεταξύ τους.

β) Παρέχει ένα τρόπο χειρισµού των δεδοµένων έτσι ώστε να µπο-


ρούν να εξαχθούν πληροφορίες από αυτά.

γ) Σχετίζεται µε κάποιο υπαρκτό πρόβληµα το οποίο να αναπαρι-


στά µε δεδοµένα για κάποιο συγκεκριµένο σκοπό.

δ) Όλα τα παραπάνω.

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

Οι Βάσεις ∆εδοµένων δεν προϋποθέτουν την ύπαρξη ηλεκτρονικού


υπολογιστή. Οι πρώτες Βάσεις ∆εδοµένων δεν βασίζονταν σε ηλε-
κτρονικό υπολογιστή, αλλά σε χαρτί και οργανώνονταν µε φακέλους
ή καρτέλες. Αρκετές υπηρεσίες δυστυχώς λειτουργούν µε παρόµοιο
τρόπο ακόµα και σήµερα. Η Βάση ∆εδοµένων του παραδείγµατος θα
µπορούσε κάλλιστα να χρησιµοποιεί καρτέλες της µορφής του παρα-
δείγµατος 1.2.
18 KEºA§AIO 1: EI™A°ø°H

¶·Ú¿‰ÂÈÁÌ· 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.

Σκεφτείτε και περιγράψτε τουλάχιστον άλλα τρία παραδείγµατα ¢Ú·ÛÙËÚÈfiÙËÙ· 1.1


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

* 1terabyte = 1012 bytes ή 1.000.000.000.000 bytes


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

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

™ÎÔfi˜
Σκοπός της ενότητας είναι η περιγραφή του Συστήµατος ∆ιαχείρισης
Βάσεων ∆εδοµένων και των δυνατοτήτων που παρέχει, καθώς και η
περιγραφή του υλικού και του λογισµικού που συνεργάζονται σε ένα
Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων.

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

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


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

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


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

µοντέλο της Βάσης ∆εδοµένων, να ορίσει τους τύπους δεδοµένων που


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

1.2.1 ¢È·ÊÔÚ¿ ‚¿Û˘ ‰Â‰ÔÌ¤ÓˆÓ Ì ۇÛÙËÌ· ‰È·¯Â›ÚÈÛ˘


‚¿ÛÂˆÓ ‰Â‰Ô̤ӈÓ

Σε αυτό το σηµείο πρέπει να είναι ξεκάθαρη σε εσάς η διαφορά µετα-


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

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


να οµαδοποιηθούν στις παρακάτω: εισαγωγή δεδοµένων, διαγραφή
δεδοµένων, αλλαγή δεδοµένων και ανάκληση δεδοµένων. Όλες οι
παραπάνω λειτουργίες προϋποθέτουν επικοινωνία µε το υλικό του
υπολογιστή (π.χ. το µαγνητικό δίσκο του υπολογιστή). Αυτή η επι-
κοινωνία γίνεται µέσω του λογισµικού του Συστήµατος ∆ιαχείρισης
Βάσεων ∆εδοµένων. Η επικοινωνία αυτή συνήθως δεν είναι ορατή
από τον χρήστη της Βάσης ∆εδοµένων, ο οποίος απλά βλέπει τα απο-
τελέσµατα από τις λειτουργίες που ζήτησε να επιτελούνται. Αυτό είναι
22 KEºA§AIO 1: EI™A°ø°H

και το σηµείο που κάνει αρκετούς χρήστες να συγχέουν τις έννοιες


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

1.2.2 ¢ÔÌ‹ ÂÓfi˜ Û˘ÛÙ‹Ì·ÙÔ˜ ‰È·¯Â›ÚÈÛ˘ ‚¿ÛÂˆÓ ‰Â‰Ô̤ӈÓ

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


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

Bάση
δεδοµένων 1 Λογισµικό
Λογισµικό αποθήκευσης
χειρισµού και

Aποθηκευµένα
™¯‹Ì· 1.1 ερωτήσεων ανάκλησης δεδοµένα
Bάση δεδοµένων
Σύστηµα ∆ιαχείρισης δεδοµένων N
Βάσεων ∆εδοµένων

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


λογισµικό του Συστήµατος ∆ιαχείρισης Βάσεων ∆εδοµένων που στο
σχήµα 1.1 ονοµάζεται «Λογισµικό Αποθήκευσης και Ανάκλησης ∆εδο-
µένων». Αυτό το λογισµικό αναλαµβάνει να µεταφέρει όλες τις εντολές
του χρήστη προς το υλικό. Το λογισµικό αυτό συνεργάζεται µε το άλλο
τµήµα του Συστήµατος ∆ιαχείρισης Βάσεων ∆εδοµένων που είναι το
«Λογισµικό Χειρισµού Ερωτήσεων». Όλα τα Συστήµατα ∆ιαχείρισης
Βάσεων ∆εδοµένων παρέχουν µία γλώσσα υποβολής ερωτήσεων προς
τη Βάση ∆εδοµένων. Αυτές οι ερωτήσεις επεξεργάζονται από το Λογι-
σµικό Χειρισµού Ερωτήσεων και στη συνέχεια µετατρέπονται σε εντο-
λές για ανάκληση συγκεκριµένων δεδοµένων από το υλικό και µεταφέ-
ρονται στο Λογισµικό Αποθήκευσης και Ανάκλησης ∆εδοµένων.
Στο αριστερό µέρος του σχήµατος 1.1 απεικονίζονται Ν Βάσεις ∆εδο-
µένων. (Με το σύστηµα µπορούν να υλοποιηθούν αρκετές Βάσεις
∆εδοµένων που ο αριθµός τους στο σχήµα 1.1 ορίζεται ως Ν.) Ο χρή-
στης µίας Βάσης ∆εδοµένων δεν αντιλαµβάνεται τη διαδικασία, όπως
την υλοποιεί το Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων. Συνήθως
1.2 ™À™∆∏ª∞ ¢π∞Ã∂πƒπ™∏™ µ∞™∂ø¡ ¢∂¢√ª∂¡ø¡ 23

δεν γνωρίζει που βρίσκονται τα δεδοµένα (δηλαδή σε ποιο υλικό είναι


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

Ακολουθούν µερικές προτάσεις. Ποιες από αυτές είναι σωστές και ÕÛÎËÛË
·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
ποιες λάθος Επιλέξτε Σωστό ή Λάθος.
1.4
Σωστό Λάθος
Για κάθε Βάση ∆εδοµένων χρειαζόµαστε
διαφορετικό Σύστηµα ∆ιαχείρισης Βάσεων
∆εδοµένων. ❏ ❏
Τη µεταφορά των δεδοµένων από και προς
το υλικό αποθήκευσης την αναλαµβάνει
το Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων. ❏ ❏
Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων
είναι πολλές Βάσεις ∆εδοµένων µαζί. ❏ ❏
Το Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων
αποτελείται από το Λογισµικό Χειρισµού
Ερωτήσεων, το Λογισµικό Αποθήκευσης και
Ανάκλησης ∆εδοµένων και το Υλικό
Αποθήκευσης των ∆εδοµένων. ❏ ❏
24 KEºA§AIO 1: EI™A°ø°H

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


‰Â‰Ô̤ӈÓ

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

∂À∫√§π∞ ™∆∏ ™Ã∂¢π∞™∏ ∫∞π À§√¶√π∏™∏

Όπως ήδη γνωρίζετε ένας χρήστης µίας Βάσης ∆εδοµένων θέλει


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

∂¶π¶∂¢∞ Ã∏™∆ø¡ ∫∞π ∂§∂°Ã√™ ¶ƒ√™µ∞™∏™

Επειδή µία Βάση ∆εδοµένων µπορεί να χρησιµοποιείται από πολλούς


χρήστες µε διαφορετικές ανάγκες και γνώσεις, το Σύστηµα ∆ιαχείρι-
σης Βάσεων ∆εδοµένων παρέχει τη δυνατότητα ορισµού διαφορετι-
κών κατηγοριών χρηστών. Για κάθε κατηγορία χρηστών ορίζονται τα
όρια εξουσιοδότησης που παρέχονται σε κάθε επίπεδο. Κάποια δεδο-
µένα είναι πιθανόν να είναι εµπιστευτικά και να µην επιτρέπεται να
έχουν πρόσβαση σε αυτά όλοι οι χρήστες. Επίσης, κάθε κατηγορία
χρηστών θα πρέπει να έχει το δικαίωµα να επιτελεί διαφορετικές λει-
τουργίες από τις άλλες κατηγορίες. Κάποιοι χρήστες για παράδειγµα
θα µπορούν µόνο να διαβάζουν δεδοµένα, ενώ άλλοι θα µπορούν να
εισάγουν ή να κάνουν αλλαγές στα δεδοµένα. Σκεφτείτε το παράδειγ-
µα 1.1 µε τη Μετεωρολογική Βάση ∆εδοµένων που συζητήσαµε στην
1.2 ™À™∆∏ª∞ ¢π∞Ã∂πƒπ™∏™ µ∞™∂ø¡ ¢∂¢√ª∂¡ø¡ 25

ενότητα 1.1.2. Εισαγωγή και τροποποίηση δεδοµένων θα µπορεί να


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

¶ƒ√™∆∞™π∞ ∞¶√ µ§∞µ∂™ À§π∫√À

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


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

¢À¡∞∆√∆∏∆∞ ¶∂ƒπ°ƒ∞º∏™ ¶∂ƒπ√ƒπ™ªø¡ √ƒ£√∆∏∆∞™

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


Τέτοιοι περιορισµοί σχετίζονται µε την οργάνωση των δεδοµένων στη
Βάση, ή τις τιµές που µπορούν να λάβουν κάποια δεδοµένα. Για παρά-
δειγµα στη Μετεωρολογική Βάση ∆εδοµένων που αναφέραµε στο
παράδειγµα 1.1, θα µπορούσαµε να ορίσουµε ότι η τιµή της θερµο-
κρασίας θα κυµαίνεται από –50 έως +50 βαθµούς. Με αυτόν τον
τρόπο αν κάποιος εισήγαγε κατά λάθος την τιµή «177» αντί για «17»
το Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων θα εντόπιζε το λάθος και
δε θα δεχόταν την τιµή. (Θα αντιλαµβανόταν δηλαδή ότι η τιµή 177
δεν µπορεί να είναι πραγµατική τιµή για θερµοκρασία.) Με αυτό τον
τρόπο το σύστηµα υλοποιεί ελέγχους και προστατεύει τη Βάση ∆εδο-
26 KEºA§AIO 1: EI™A°ø°H

µένων από λαθεµένες εισαγωγές δεδοµένων. Προσέξτε όµως: Ακόµα


και µε τον παραπάνω περιορισµό, κάποιος θα µπορούσε να κάνει
λάθος και αντί για «17» να εισάγει «27». Αυτό το λάθος δεν µπορεί
να εντοπιστεί από το Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων, αλλά
µόνο από τους χρήστες.

¢À¡∞∆√∆∏∆∞ ∂§∂°Ã√À ¶§∂√¡∞™ªø¡

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


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

¢Ú·ÛÙËÚÈfiÙËÙ· 1.2 Στο παράδειγµα 1.1 παρουσιάσαµε µία Μετεωρολογική Βάση ∆εδο-
µένων. Σε αυτή τη Βάση ∆εδοµένων δεν µιλήσαµε ούτε για επίπεδα
χρηστών, ούτε για περιορισµούς ορθότητας. Με βάση την εµπειρία
που αποκτήσατε από τη µελέτη της παραπάνω ενότητας προτείνετε
τουλάχιστον δύο επίπεδα χρηστών (και περιγράψτε ποιες δυνατότη-
τες θα επιτρέπει το Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων για
κάθε κατηγορία). Επίσης προτείνετε τουλάχιστον τρεις περιορισµούς
ορθότητας και τεκµηριώστε γιατί τους προτείνετε.
1.3 ∆π ¶∞ƒ∂Ã∂π ∏ µ∞™∏ ¢∂¢√ª∂¡ø¡ 27

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

™ÎÔfi˜

Σκοπός αυτής της ενότητας είναι να τονίσει τα πλεονεκτήµατα που


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

¶ÚÔÛ‰ÔÎÒÌÂÓ· ∞ÔÙÂϤÛÌ·Ù·

Όταν θα έχετε ολοκληρώσει τη µελέτη αυτής της ενότητας θα µπορείτε να:


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

∂ÈÛ·ÁˆÁÈΤ˜ ¶·Ú·ÙËÚ‹ÛÂȘ

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


του πραγµατικού κόσµου παρέχει τα παρακάτω πλεονεκτήµατα, όπως
τα αναφέρουµε επιγραµµατικά:
1. ∆υνατότητα ταυτόχρονης προσπέλασης πολλών χρηστών στα δεδο-
µένα και έλεγχο της προσπέλασης.
2. ∆υνατότητα ταχύτατης εξαγωγής απαντήσεων σε απλές ερωτήσεις.
3. Ευελιξία σε πιθανές αλλαγές και γενικότερα ευκολία παρακολού-
θησης των αλλαγών του µοντέλου του πραγµατικού κόσµου.
4. Υψηλή ποιότητα δεδοµένων.

Στις ενότητες 1.3.1 έως 1.3.5 που ακολουθούν θα αναλύσουµε τα


παρακάτω πλεονεκτήµατα.
28 KEºA§AIO 1: EI™A°ø°H

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

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

Επίσης, το Σύστηµα ∆ιαχείρισης της Bάσης ∆εδοµένων φροντίζει για


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

1.3.2 ∆·¯‡Ù·ÙË ÂÍ·ÁˆÁ‹ ··ÓÙ‹ÛˆÓ

Ένα µεγάλο πρόβληµα της οργάνωσης ενός µοντέλου του πραγµατι-


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

Θυµηθείτε τις ερωτήσεις που συζητήσαµε στο παράδειγµα 1.2. Σε ένα


παραδοσιακό σύστηµα αρχείων σε ηλεκτρονικό υπολογιστή η απά-
ντηση στην ερώτηση «∆ώσε µας την πόλη που είχε την υψηλότερη
θερµοκρασία για κάθε ηµέρα από το 1990 µέχρι σήµερα», θα σήµαι-
νε άνοιγµα εκατοντάδων αρχείων και ανθρώπινη εργασία για την
καταγραφή και σύγκριση δεδοµένων. Ακριβώς επειδή τα δεδοµένα
συνήθως συλλέγονται για την απόκτηση πληροφορίας µε την µορφή
απαντήσεων σε τέτοιου είδους ερωτήσεις, η χρήση παραδοσιακών
µοντέλων οργάνωσης δεν είναι εξυπηρετική, αφού η παροχή τέτοιου
είδους πληροφορίας είναι πρακτικά ανέφικτη. Ο λόγος είναι ότι η
οργάνωση των δεδοµένων δεν υποστηρίζει την αυτόµατη εξαγωγή
τέτοιους είδους απαντήσεων σε ερωτήσεις.
1.3 ∆π ¶∞ƒ∂Ã∂π ∏ µ∞™∏ ¢∂¢√ª∂¡ø¡ 29

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


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

1.3.3 E˘ÂÏÈÍ›·

Πολλές φορές το µοντέλο του πραγµατικού κόσµου αλλάζει. Αυτό


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

1.3.4 À„ËÏ‹ ÔÈfiÙËÙ· ‰Â‰Ô̤ӈÓ

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


Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων και ελέγχει για πλεονα-
σµούς και παραβιάσεις της ορθότητας των δεδοµένων, καθώς και για
ταυτόχρονες προσπελάσεις και µη εξουσιοδοτηµένες εγγραφές. Έτσι
τα δεδοµένα προστατεύονται από ένα µηχανισµό που δεν θα µπορού-
σε να υπάρξει σε ένα παραδοσιακό σύστηµα οργάνωσης. Με αυτό τον
τρόπο διασφαλίζεται η ποιότητα των δεδοµένων, δηλαδή ο χρήστης
έχει µεγαλύτερη ασφάλεια ότι τα δεδοµένα που παίρνει ως απάντηση
στις ερωτήσεις του είναι σωστά.
30 KEºA§AIO 1: EI™A°ø°H

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

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

Όπως είπαµε, η Βάση ∆εδοµένων παρέχει πολλά πλεονεκτήµατα ένα-


ντι του παραδοσιακού µοντέλου µε αρχεία στο υπολογιστή ή µε χει-
ρόγραφες εγγραφές σε καρτέλες και αρχεία. Παρόλα αυτά η χρήση
Βάσης ∆εδοµένων δεν είναι πάντα επιβεβληµένη. Σίγουρα θα χρησι-
µοποιήσουµε Βάση ∆εδοµένων όταν έχουµε µεγάλο όγκο οµοειδών
δεδοµένων ή δεδοµένων που µπορούν να κατηγοριοποιηθούν, συνε-
χή εισροή δεδοµένων (δυναµικότητα) και ανάγκη για απάντηση σε
ερωτήσεις. Ωστόσο υπάρχουν λόγοι που πολλές φορές µας αναγκά-
ζουν να µην χρησιµοποιήσουµε Βάση ∆εδοµένων.
Ένας συνηθισµένος λόγος παλαιότερα ήταν το κόστος. Η υλοποίηση
µίας Βάσης ∆εδοµένων συνεπάγεται το κόστος αγοράς ενός Συστή-
µατος ∆ιαχείρισης Βάσεων ∆εδοµένων που παλαιότερα ήταν σηµα-
ντικός παράγοντας και φυσικά το κόστος της ανάπτυξης και συντή-
ρησης της Βάσης ∆εδοµένων. Σήµερα όµως, που το κόστος των
Συστηµάτων ∆ιαχείρισης Βάσεων ∆εδοµένων έχει µειωθεί σηµαντι-
κά και που υπάρχουν Συστήµατα που λειτουργούν σε προσωπικό υπο-
1.3 ∆π ¶∞ƒ∂Ã∂π ∏ µ∞™∏ ¢∂¢√ª∂¡ø¡ / 1.4 ∂¶π¶∂¢∞ Ã∏™∆ø¡ 31

λογιστή ο λόγος αυτός τείνει να εκλείψει.


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

Αναφέρατε τουλάχιστον δύο περιπτώσεις από παραδείγµατα µοντέ- ¢Ú·ÛÙËÚÈfiÙËÙ· 1.3


λων του πραγµατικού κόσµου για το οποία δεν απαιτείται η υλοποί-
ηση Βάσης ∆εδοµένων. Για κάθε περίπτωση αναφέρατε τα δεδοµέ-
να του µοντέλου και αιτιολογήστε τους λόγους που σας κάνουν να
πιστεύεται ότι η υλοποίηση µίας Βάσης ∆εδοµένων δεν θα ήταν επι-
βεβληµένη. Καταγράψτε τις απόψεις σας προσπαθώντας να µην
υπερβείτε την µία σελίδα ανά παράδειγµα.
32 KEºA§AIO 1: EI™A°ø°H

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

™ÎÔfi˜
Έχοντας ολοκληρώσει τις ενότητες 1.1 έως 1.3 έχετε µάθει τη χρησι-
µότητα των Βάσεων ∆εδοµένων και γνωρίζετε τις λειτουργίες που
παρέχει ένα Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων. Ο σκοπός
αυτής της ενότητας είναι να µελετήσετε τους χρήστες ενός Συστήµατος
∆ιαχείρισης Βάσεων ∆εδοµένων, καθώς και τους χρήστες των Βάσε-
ων ∆εδοµένων που δηµιουργούνται µε αυτό και να εξετάσετε τις αρµο-
διότητες και τα δικαιώµατα καθενός από αυτούς.

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

∂ÈÛ·ÁˆÁÈΤ˜ ¶·Ú·ÙËÚ‹ÛÂȘ

Στην ενότητα αυτή θα εξετάσουµε τέσσερα επίπεδα χρηστών. Αν και


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

1.4.1 ¢È·¯ÂÈÚÈÛÙ‹˜ Û˘ÛÙ‹Ì·ÙÔ˜

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


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

κατά κανόνα τεχνικός µε υψηλό επίπεδο κατάρτισης. Αρµοδιότητά του


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

1.4.2 π‰ÈÔÎÙ‹Ù˘ ‚¿Û˘ ‰Â‰Ô̤ӈÓ

Ο Ιδιοκτήτης µιας Βάσης ∆εδοµένων ονοµάζεται συχνά και ∆ιαχειρι-


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

1.4.3 XÚ‹ÛÙ˜ ˘„ËÏ‹˜ ‰È·‚¿ıÌÈÛ˘

Χρήστες Υψηλής ∆ιαβάθµισης µιας Βάσης ∆εδοµένων είναι χρήστες της


συγκεκριµένης Βάσης ∆εδοµένων στους οποίους ο Ιδιοκτήτης της Βάσης
∆εδοµένων έχει δώσει αυξηµένες αρµοδιότητες. Όπως µελετήσατε στις
προηγούµενες ενότητες, οι δυνατότητες ενός χρήστη µιας Βάσης ∆εδο-
34 KEºA§AIO 1: EI™A°ø°H

µένων συνοπτικά περιγράφονται ως εισαγωγή δεδοµένων, διαγραφή


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

1.4.4 XÚ‹ÛÙ˜ ηÙÒÙÂÚ˘ ‰È·‚¿ıÌÈÛ˘

Οι Χρήστες Κατώτερης ∆ιαβάθµισης είναι χρήστες που χρησιµοποι-


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

¢Ú·ÛÙËÚÈfiÙËÙ· 1.4 Α. Στη δραστηριότητα 1.2 σας ζητήθηκε να αναφέρετε δύο κατηγο-
ρίες χρηστών για τη Μετεωρολογική Βάση ∆εδοµένων του παρα-
δείγµατος 1.1. Τώρα µε την εµπειρία που έχετε αποκτήσει από τη
µελέτη αυτής της ενότητας, αναφέρετε όλες τις κατηγορίες χρη-
στών για αυτή τη Βάση ∆εδοµένων και περιγράψτε αναλυτικά τις
αρµοδιότητες καθενός.
Β. Στα πλαίσια της δραστηριότητας 1.1 σας ζητήθηκε να αναφέρα-
τε και να περιγράψετε τρία ακόµα παραδείγµατα Βάσεων ∆εδο-
µένων. Για αυτά τα παραδείγµατα αναφέρετε όλες τις κατηγορίες
χρηστών για κάθε µία Βάση ∆εδοµένων που έχετε ήδη αναφέρει
και περιγράψτε αναλυτικά τις αρµοδιότητες καθενός.
BA™EI™ ¢E¢OMENøN 35

™‡ÓÔ„Ë
Στο κεφάλαιο αυτό σας εισάγαµε στις βασικές έννοιες των Βάσεων
∆εδοµένων. Με την εµπειρία που έχετε αποκτήσει από τη µελέτη αυτού
του κεφαλαίου µπορείτε να διακρίνετε ανάµεσα σε έννοιες που σχετί-
ζονται µε τις Βάσεις ∆εδοµένων και που πολλοί σπουδαστές τις συγχέ-
ουν, όπως δεδοµένα και πληροφορία, Βάση ∆εδοµένων και Σύστηµα
∆ιαχείρισης Βάσεων ∆εδοµένων. Γνωρίζετε τι είναι Βάση ∆εδοµένων,
τι παρέχει στους χρήστες της, πότε πρέπει να χρησιµοποιείται και πότε
όχι. Επίσης γνωρίζετε τι είναι Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµέ-
νων, ποια είναι η δοµή του, τι παρέχει στους χρήστες, ποιοι είναι οι χρή-
στες ενός τέτοιου συστήµατος και σε τι κατηγορίες χωρίζονται.
Είναι σαφές ότι µε τη µελέτη αυτού του κεφαλαίου έχετε αποκτήσει
εµπειρία σε βασικές έννοιες Βάσεων ∆εδοµένων. Αυτή την εµπειρία
πρέπει να την καλλιεργήσετε, είτε µε περισσότερες δραστηριότητες, είτε
µε παραπάνω µελέτη. Ακολουθούν µία συγκεντρωτική άσκηση αυτοα-
ξιολόγησης και µία δραστηριότητα που θα σας βοηθήσουν στην επα-
νάληψη της ύλης και στον έλεγχο των γνώσεων που αποκτήσατε. Σας
προτείνουµε πριν προχωρήσετε στην επίλυση των ασκήσεων να ολο-
κληρώσετε µία επανάληψη του κεφαλαίου και επίσης να συµβουλευ-
τείτε και τη βιβλιογραφία προαιρετικής ανάγνωσης που έπεται.
36 KEºA§AIO 1: EI™A°ø°H

ÕÛÎËÛË Ακολουθούν µερικές προτάσεις. Ποιες από αυτές είναι σωστές και
·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
ποιες λάθος;
1.6
Σωστό Λάθος
Πληροφορία είναι δεδοµένα που δεν έχουν
αποθηκευτεί σε ηλεκτρονικό υπολογιστή. ❏ ❏
Στη Βάση ∆εδοµένων αποθηκεύονται
δεδοµένα, από τα οποία εξάγονται
πληροφορίες. ❏ ❏
Κάθε συλλογή δεδοµένων αποτελεί
µία Βάση ∆εδοµένων. ❏ ❏
Βάση ∆εδοµένων δεν µπορεί να υπάρξει
χωρίς ηλεκτρονικό υπολογιστή. ❏ ❏
Το Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων
διευκολύνει τη δηµιουργία και συντήρηση
Βάσεων ∆εδοµένων. ❏ ❏
Ο ∆ιαχειριστής ενός Συστήµατος ∆ιαχείρισης
Βάσεων ∆εδοµένων µπορεί να δηµιουργήσει
Βάσεις ∆εδοµένων και να ορίσει Ιδιοκτήτες
για κάθε Βάση ∆εδοµένων. ❏ ❏
Οι Ιδιοκτήτες µίας Βάσης ∆εδοµένων
µπορούν να διαγράψουν ή να ορίσουν χρήστες
σε αυτή τη Βάση ∆εδοµένων. ❏ ❏
Οι Ιδιοκτήτες µίας Βάσης ∆εδοµένων µπορούν
να διαγράψουν ή να ορίσουν µόνο
τους Χρήστες Κατώτερης ∆ιαβάθµισης
σε αυτή τη Βάση ∆εδοµένων. ❏ ❏
BA™EI™ ¢E¢OMENøN 37

Βρείτε µια µικρή επιχείρηση, κατά προτίµηση κάποιο κατάστηµα ¢Ú·ÛÙËÚÈfiÙËÙ· 1.5
ενός συγγενή ή ενός γνωστού σας, η οποία να έχει πελάτες και προϊ-
όντα. Μιλήστε µε τον ιδιοκτήτη της επιχείρησης για τους πελάτες,
την αποθήκη (στοκ), τα προϊόντα και τις πωλήσεις του. Προσπαθή-
στε να κατανοήσετε τα δεδοµένα που χρησιµοποιεί και τις πληρο-
φορίες που θέλει να αντλεί από αυτά τα δεδοµένα. Σκεφτείτε την
προοπτική οργάνωσής των µε τη χρήση µίας Βάσης ∆εδοµένων.
Στην περίπτωση που κρίνετε πως η χρήση Βάσης ∆εδοµένων είναι
λογική, περιγράψτε αναλυτικά τα δεδοµένα που θα αποθηκευτούν,
τις πιθανές ερωτήσεις προς τη Βάση ∆εδοµένων, τους πιθανούς χρή-
στες και τα οφέλη που θα προσκοµίσει η επιχείρηση από τη Βάση
∆εδοµένων. Σε αντίθετη περίπτωση τεκµηριώστε αναλυτικά την
άποψή σας γιατί δεν απαιτείται η χρήση Βάσης ∆εδοµένων.
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,


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

Third Edition, McGraw–Hill, 1986.


Ένα πολύ καλό βιβλίο που προτείνουµε σε όσους γνωρίζουν καλά
αγγλικά και θέλουν «το κάτι παραπάνω», να το χρησιµοποιήσουν για
µελέτη παράλληλα µε το µάθηµα. Στο κεφάλαιο 1 υπάρχουν εισαγω-
γικές έννοιες για Βάσεις ∆εδοµένων.
[4] Abiteboul, Hull and Vianou, Foundations of Databases,
Addison–Wesley, 1995.
Στα κεφάλαια 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) περιγρά-
φονται συνοπτικά τα τρία επίπεδα της αρχιτεκτονικής. Η αρχή γίνεται
από το επίπεδο που «βλέπει» πρώτα ο χρήστης, δηλαδή το εξωτερικό
επίπεδο και µετά ακολουθεί το φυσικό επίπεδο, δηλαδή αυτό που υφί-
σταται πραγµατικά. Το επίπεδο αντίληψης περιγράφεται τελευταίο,
αφού προϋποθέτει την περιγραφή των άλλων δύο.
42 K E º A § A I O 2 : A ƒ Ã π ∆ ∂ ∫ ∆ √ ¡ π ∫ ∏ ∫ ∞ π º À ™ π ∫ ∏ O ƒ °∞ ¡ ø ™ ∏ A ƒ Ã ∂ π ø ¡

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, όπου θα περιγραφεί και ο
τρόπος αποθήκευσης των δεδοµένων στη Βάση ∆εδοµένων. αποθηκεύονται και οργανώνο-
νται υπό τη µορφή bytes και
Στο φυσικό επίπεδο δεν µας απασχολούν οι έννοιες και οι πληροφο- σελίδων στο µηχανισµό απο-
ρίες, αλλά το πώς τα δεδοµένα αποθηκεύονται στη Βάση ∆εδοµένων, θήκευσης της Βάσης ∆εδοµέ-
πώς κατανέµονται στους διάφορους αποθηκευτικούς µηχανισµούς και νων.
πώς οργανώνονται. Αντιµετωπίζονται οι έννοιες του χώρου που κατα-
λαµβάνει κάθε πεδίο στους χώρους (συνήθως µαγνητικούς δίσκους)
αποθήκευσης της Βάσης ∆εδοµένων. Όπως παρουσιάζεται στο σχήµα
2.1, το φυσικό επίπεδο είναι µία συλλογή από χώρους αποθήκευσης
όπως µαγνητικοί δίσκοι, οπτικοί δίσκοι (µίας εγγραφής ή και µε δυνα-
τότητα επανεγγραφής), µαγνητικές ταινίες (παλαιότερα), ροµπότ ται-
νιών, συστοιχίες δίσκων, συστοιχίες οπτικών δίσκων, κτλ.

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


ακριβώς είναι αποθηκευµένα τα δεδοµένα του. Απλά δίνει µία ερώ-
τηση προς τη Βάση ∆εδοµένων και αυτή αναλαµβάνει να τη µετα-
■ Ως διαφάνεια ορίζεται το
τρέψει σε εντολές προς το φυσικό επίπεδο, να αντλήσει τα δεδοµένα
γεγονός ότι ο χρήστης δεν
από τους αντίστοιχους αποθηκευτικούς χώρους και να τα επιστρέψει
γνωρίζει που βρίσκονται τα
στο χρήστη. Το φαινόµενο αυτό ονοµάζεται διαφάνεια. ■
δεδοµένα του και απλά βλέπει
Ο συνδετικός κρίκος ανάµεσα στο εξωτερικό επίπεδο και στο φυσικό το αποτέλεσµα των εντολών
επίπεδο είναι το επίπεδο αντίληψης το οποίο θα περιγράψουµε στην που εκτελεί στο εξωτερικό επί-
επόµενη ενότητα. πεδο.
44 K E º A § A I O 2 : A ƒ Ã π ∆ ∂ ∫ ∆ √ ¡ π ∫ ∏ ∫ ∞ π º À ™ π ∫ ∏ O ƒ °∞ ¡ ø ™ ∏ A ƒ Ã ∂ π ø ¡

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

Στην ενότητα 2.1.2 περιγράψαµε το εξωτερικό επίπεδο και στην ενότη-


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

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

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

Ποιά είναι η
θερµοκρασία … 101, 36116
Eπίπεδο
αντίληψης 101, 36116, 17
17
17 βαθµοί
2.1 E¶π¶∂¢∞ AƒÃπ∆∂∫∆√¡π∫∏™ 45

στα δεδοµένα και από τα δεδοµένα στο αποτέλεσµα υπό τη µορφή


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

Select temp
Ποιά είναι η from city 101, 36116
θερµοκρασία … where day = …
Storage
manager

17 βαθµοί 17° C 17 17

Στο σχήµα 2.3 φαίνεται ότι η εντολή του χρήστη έχει µεταφραστεί σε
µία γλώσσα δεδοµένων. Αυτή η γλώσσα δεδοµένων έχει περάσει από
ένα µηχανισµό µετάφρασης (parser) και έχει δηµιουργηθεί ένα δέντρο
µε τα σχετικά δεδοµένα. Τα δεδοµένα αυτά έχουν δοθεί σε ένα µηχα-
νισµό αποθήκευσης και ανάκλησης (storage manager) ο οποίος τα µετέ-
τρεψε σε εντολές προς το φυσικό επίπεδο. Αντίστοιχη διαδικασία έγινε
και για να δοθεί η απάντηση σε µορφή κατανοητή από τον χρήστη.
Βασική λειτουργία που εκτελείται στο επίπεδο αντίληψης είναι η µετά-
φραση των εντολών του χρήστη από κάποια γλώσσα εντολών στις αντί-
στοιχες εντολές του µηχανισµού ανάκλησης και αποθήκευσης δεδοµέ-
νων. Για τις γλώσσες εντολών θα µιλήσουµε αναλυτικά στα κεφάλαια
5 και 6.
46 K E º A § A I O 2 : A ƒ Ã π ∆ ∂ ∫ ∆ √ ¡ π ∫ ∏ ∫ ∞ π º À ™ π ∫ ∏ O ƒ °∞ ¡ ø ™ ∏ A ƒ Ã ∂ π ø ¡

ÕÛÎËÛË Ακολουθούν τρεις ορισµοί. Συµπληρώστε τα κενά µε λέξεις ή φρά-


·˘ÙÔ·ÍÈÔÏfiÁËÛ˘ σεις επιλέγοντας από αυτές που ακολουθούν κάθε ορισµό. Προσο-
2.1 χή, τον κάθε ορισµό ακολουθούν περισσότερες λέξεις ή φράσεις από
όσες χρειάζεστε, οπότε κάποιες θα περισσέψουν.
α) Ως διαφάνεια ορίζεται το γεγονός ότι ο χρήστης δεν γνωρίζει που
βρίσκονται …………………… και απλά βλέπει το αποτέλεσµα
των …………………… που εκτελεί στο …………………… .
(οι µεταβλητές, τα δεδοµένα, οι Βάσεις ∆εδοµένων, εντολών, δεδο-
µένων, γλωσσών, φυσικό επίπεδο, επίπεδο αντίληψης, εξωτερικό
επίπεδο)
β) Ως φυσικό επίπεδο της …………………… µίας Βάσης ∆εδοµέ-
νων ορίζεται το επίπεδο στο οποίο …………………… αποθη-
κεύονται και οργανώνονται πραγµατικά στη ……………………
(αρχιτεκτονικής, διαχείρισης, λειτουργίας, χρήσης, τα πεδία, τα
δεδοµένα, οι εντολές, οι εντολές του χρήστη, αρχιτεκτονική, Βάση
∆εδοµένων)
γ) Ως εξωτερικό …………………… της αρχιτεκτονικής µίας
Βάσης ∆εδοµένων ορίζεται το επίπεδο στο οποίο τα ………
…………… της Βάσης ∆εδοµένων παρουσιάζονται στο
…………………… .
(στοιχείο, επίπεδο, δεδοµένο, δεδοµένα, στοιχεία, περιεχόµενα,
σύστηµα, χρήστη, µαγνητικό δίσκο)
2.1 E¶π¶∂¢∞ AƒÃπ∆∂∫∆√¡π∫∏™ 47

Ακολουθούν µερικές προτάσεις. Ποιες από αυτές είναι σωστές και ÕÛÎËÛË
·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
ποιες λάθος;
2.2
Σωστό Λάθος
Ο χρήστης πρέπει να περιγράφει κάθε εντολή
που δίνει στο εξωτερικό επίπεδο µε την
αντίστοιχη εντολή στο φυσικό επίπεδο. ❏ ❏
Το επίπεδο αντίληψης συνδέει το φυσικό
επίπεδο µε το εξωτερικό επίπεδο. ❏ ❏
Ο χρήστης βλέπει τα δεδοµένα στο
εξωτερικό επίπεδο. ❏ ❏
∆ιαφάνεια σηµαίνει ότι ο χρήστης βλέπει
τη µορφή των δεδοµένων για κάθε επίπεδο. ❏ ❏
Στο επίπεδο αντίληψης δεν επιτελούνται
στην πραγµατικότητα λειτουργίες, απλά είναι
ένα επίπεδο για να συνδέει το φυσικό
µε το εξωτερικό επίπεδο. ❏ ❏

Βασισµένοι στο παράδειγµα 1.1 δώστε τρεις εντολές για τη Βάση ¢Ú·ÛÙËÚÈfiÙËÙ· 2.1
∆εδοµένων του παραδείγµατος. Για κάθε µία από αυτές τις εντολές
σχεδιάστε τις εντολές όπως θα τις βλέπει ο χρήστης στο εξωτερικό
επίπεδο και όπως φαντάζεστε ότι θα εµφανίζονται στο φυσικό επί-
πεδο.
48 K E º A § A I O 2 : A ƒ Ã π ∆ ∂ ∫ ∆ √ ¡ π ∫ ∏ ∫ ∞ π º À ™ π ∫ ∏ O ƒ °∞ ¡ ø ™ ∏ A ƒ Ã ∂ π ø ¡

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

™ÎÔfi˜
Σκοπός της ενότητας είναι να παρουσιάσουµε τις βασικές έννοιες
που σχετίζονται µε την οργάνωση των δεδοµένων στο φυσικό επίπε-
δο, καθώς και τον τρόπο µε τον οποίο οργανώνονται τα δεδοµένα
στις µονάδες αποθήκευσης του υπολογιστή.

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

∂ÈÛ·ÁˆÁÈΤ˜ ¶·Ú·ÙËÚ‹ÛÂȘ
Στην ενότητα 2.2.1 παρουσιάζονται οι ορισµοί των τύπων δεδοµένων
και των πεδίων, ενώ στην ενότητα 2.2.2 οι ορισµοί των εγγραφών και
των αρχείων. Τέλος στην ενότητα 2.2.3 περιγράφονται οι µονάδες απο-
θήκευσης που χρησιµοποιεί µία Βάση ∆εδοµένων.

2.2.1 ∆‡ÔÈ ‰Â‰ÔÌ¤ÓˆÓ Î·È ‰›·

Το αντικείµενο του φυσικού επιπέδου είναι η αποθήκευση και η οργά-


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

µένων καθορίζουν το χώρο που θα δεσµευτεί στους αποθηκευτικούς


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

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

Όπως αναφέραµε στην ενότητα 2.2.1 οι εγγραφές είναι συλλογές


τιµών για καθορισµένα πεδία. Ο τρόπος οµαδοποίησης των εγγραφών
σε αρχεία και ο αποτελεσµατικός τρόπος αποθήκευσης και ανάκλη-
σης των εγγραφών είναι το αντικείµενο του φυσικού επιπέδου. ■ ■ Εγγραφές είναι συλλογές
Ας ανατρέξουµε πάλι στο παράδειγµα 1.1. Η έννοια «Πόλη» θα µπο- από τιµές για ένα καθορισµένο
ρούσε να αποτελείται από το πεδίο «Κωδικός Πόλης» µε τύπο δεδοµέ- αριθµό πεδίων.
νων «Ακέραιος» και το πεδίο «Ονοµασία Πόλης» µε τύπο δεδοµένων
«Κείµενο (20)». Οι εγγραφές λοιπόν για τις πόλεις θα ήταν τιµές για δύο
πεδία µε την πρώτη τιµή να είναι ακέραιος και τη δεύτερη µια συµβο-
λοσειρά µέχρι 20 χαρακτήρες. Έτσι αποδεκτές τιµές θα ήταν για παρά-
δειγµα οι «101, Αθήνα», «109, Θεσσαλονίκη», «145, Κόρινθος» κτλ.
Οι εγγραφές αποθηκεύονται στη Βάση ∆εδοµένων σε αρχεία. ■ ■ Τα Αρχεία είναι συλλογές
Τα αρχεία αποθηκεύονται σε ένα ή περισσότερα blocks (το block είναι από εγγραφές.
η µονάδα δεδοµένων που διαβάζει το σύστηµα αρχείων). Οι βασικές
λειτουργίες που πρέπει να επιτελεί η Βάση ∆εδοµένων σε ένα αρχείο
είναι η αναζήτηση εγγραφής, εισαγωγή νέας εγγραφής, η διαγραφή
εγγραφής και η µεταβολή εγγραφής.
50 K E º A § A I O 2 : A ƒ Ã π ∆ ∂ ∫ ∆ √ ¡ π ∫ ∏ ∫ ∞ π º À ™ π ∫ ∏ O ƒ °∞ ¡ ø ™ ∏ A ƒ Ã ∂ π ø ¡

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

Η λειτουργία της Βάσης ∆εδοµένων στο φυσικό επίπεδο καθορίζεται


από το λειτουργικό σύστηµα του υπολογιστή στον οποίο φιλοξενεί-
Aρχείο 1 Aρχείο 2 ται. Τα δεδοµένα οργανώνονται στο δίσκο του υπολογιστή, όπως
παρουσιάζεται στο σχήµα 2.4, και από το δίσκο µεταφέρονται στη
Block 1
µνήµη για να επεξεργαστούν από τον επεξεργαστή.
Block 2
Στο δίσκο του υπολογιστή υπάρχουν πολλά αρχεία (στο σχήµα 2.4 για
Block 3 λόγους απλότητας σχεδιάσαµε µόνο δύο) διαφορετικών µεγεθών.
Κάθε αρχείο κατανέµεται σε ένα ή περισσότερα blocks. Για παρά-
δειγµα στο σχήµα 2.4 το αρχείο 1 κατανέµεται σε 3 blocks. (Φυσικά
και το αρχείο 2 κατανέµεται σε blocks, αλλά για λόγους απλότητας
δεν έχουµε σχεδιάσει στο σχήµα τα αντίστοιχα blocks, ώστε να συζη-
™¯‹Ì· 2.4 τήσουµε για το αρχείο 1. Κάθε block περιέχει ένα αριθµό εγγραφών
Οργάνωση Αρχείων και Blocks και κάθε εγγραφή αποτελείται από ένα ή περισσότερα πεδία. Όταν η
Βάση ∆εδοµένων θέλει πληροφορίες για κάποιο πεδίο (π.χ. τη θερµο-
κρασία µιας πόλης, όπως στο παράδειγµα 1.1), πρέπει να οδηγήσει τον
επεξεργαστή στο block που περιέχει την αντίστοιχη εγγραφή. (∆ηλα-
δή να διαβάσει το συγκεκριµένο block στη µνήµη ώστε να το επεξερ-
γαστεί ο υπολογιστής.)
Για να µπορεί η Βάση ∆εδοµένων να λειτουργεί γρήγορα και αποδο-
τικά πρέπει να έχει τρόπους ώστε να εντοπίζει γρήγορα το block στο
οποίο είναι αποθηκευµένη η ζητούµενη εγγραφή (ώστε να µειώνει τον
χρόνο αναζήτησης) και να οµαδοποιεί εγγραφές σε blocks ώστε να
µειώνεται ο αριθµός των blocks που θα χρειαστούν σε περίπτωση ανα-
ζητήσεως οµοειδών εγγραφών. Για αυτούς τους τρόπους θα µιλήσου-
µε στην επόµενη ενότητα.
Πρέπει να γίνει κατανοητό ότι τα δεδοµένα που αποθηκεύονται στις
Βάσεις ∆εδοµένων δεν µπορούν να αποθηκευτούν όλα στη µνήµη του
υπολογιστή. Έτσι προκύπτει η ανάγκη να µεταφέρονται από τα µέσα
µαγνητικής αποθήκευσης στη µνήµη και το αντίστροφο. Σε σχέση µε
τις ―σχετικά χρονοβόρες― µηχανικές κινήσεις των συσκευών απο-
θήκευσης αυτό δηµιουργεί τα προβλήµατα τα οποία και καλούνται να
λύσουν οι Βάσεις ∆εδοµένων σήµερα.
2.2 ∆√ ºÀ™π∫√ ∂¶π¶∂¢√ 51

Θεωρήστε το παράδειγµα 1.1. Για να αποθηκεύσουµε τη θερµοκρα- ÕÛÎËÛË


σία µίας πόλης χρησιµοποιούµε τα πεδία «Κωδικός Πόλης», «Ηµε- ·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
ροµηνία» και «Θερµοκρασία». Οι τύποι δεδοµένων είναι αντίστοι- 2.3
χα «Ακέραιος µε µέγεθος 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. Θεωρήστε ότι: α) κάθε ·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
εγγραφή χρειάζεται ακριβώς 4 + 20 + 1 = 25 Bytes ανεξάρτητα µε 2.4
το περιεχόµενό της (δεν χρησιµοποιούνται δηλαδή παραπάνω Bytes
από το σύστηµα), β) το σύστηµα χρησιµοποιεί blocks µε µέγεθος 200
Bytes, γ) κάθε block χρειάζεται 20 Bytes για ειδικούς σκοπούς
(δηλαδή 20 bytes, που συµπεριλαµβάνονται στα 200, δεσµεύονται
από το σύστηµα) και δ) µία εγγραφή πρέπει να είναι ολόκληρη στο
ίδιο block.
Απαντήστε στις παρακάτω ερωτήσεις:
1) Έστω ότι θέλουµε να αποθηκεύσουµε σε ένα αρχείο 200 εγγρα-
φές. Πόσα blocks θα έχει το αρχείο αυτό;
2) Έστω ότι θέλουµε να αποθηκεύσουµε σε ένα αρχείο 1.000 εγγρα-
φές. Πόσα blocks θα έχει το αρχείο αυτό;
3) Έστω ότι θέλουµε να αποθηκεύσουµε σε ένα αρχείο 2 εγγραφές.
Πόσα blocks θα έχει το αρχείο αυτό;
52 K E º A § A I O 2 : A ƒ Ã π ∆ ∂ ∫ ∆ √ ¡ π ∫ ∏ ∫ ∞ π º À ™ π ∫ ∏ O ƒ °∞ ¡ ø ™ ∏ A ƒ Ã ∂ π ø ¡

¢Ú·ÛÙËÚÈfiÙËÙ· 2.2 Με βάση τις προδιαγραφές της άσκησης αυτοαξιολόγησης 2.3


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

¢Ú·ÛÙËÚÈfiÙËÙ· 2.3 Χρησιµοποιώντας τις εγγραφές που έχετε δώσει στην απάντηση της
δραστηριότητας 2.2, σχεδιάστε τον τρόπο που θα είχαν αποθηκευτεί
αυτές οι 20 εγγραφές σε ένα αρχείο. Χρησιµοποιήστε τετραγωνι-
σµένο χαρτί και αναγράψτε τις εγγραφές χρησιµοποιώντας τα µεγέ-
θη (για εγγραφή και block) της άσκησης αυτοαξιολόγησης 4 του
κεφαλαίου 2.

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

™ÎÔfi˜
Σκοπός της ενότητας είναι να παρουσιάσουµε τον τρόπο µε τον
οποίο οργανώνονται τα αρχεία στο σύστηµα αποθήκευσης του υπο-
λογιστή και να περιγράψουµε βασικές τεχνικές που διευκολύνουν την
αναζήτηση των δεδοµένων από τα αρχεία, όπως η χρήση δεικτών
και καταλόγων.

¶ÚÔÛ‰ÔÎÒÌÂÓ· ∞ÔÙÂϤÛÌ·Ù·
Όταν θα έχετε ολοκληρώσει τη µελέτη αυτής της ενότητας θα µπο-
ρείτε να:
• σχεδιάσετε τη µορφή ενός αρχείου στο δίσκο µετά από µία ακολου-
θία πράξεων
• περιγράψετε τις έννοιες «κατάλογοι», «δείκτες», «αναδιάταξη αρχεί-
ου» και «διατεταγµένα αρχεία»
• εξηγήσετε τις διαφορές ανάµεσα σε αρχεία µε εγγραφές σταθερού
µήκους και αρχεία µε εγγραφές µεταβλητού µήκους
• υπολογίσετε την επιβάρυνση σε χώρο αποθήκευσης από τη χρήση
καταλόγων
• περιγράψετε τις βασικές αρχές των δέντρων τύπου Β και των
δέντρων τύπου Β+
2 . 3 O ƒ °∞ ¡ ø ™ ∏ ∞ ƒ Ã ∂ π ø ¡ ™ ∆ √ º À ™ π ∫ √ ∂ ¶ π ¶ ∂ ¢ √ 53

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

2.3.1 µ·ÛÈΤ˜ ¤ÓÓÔȘ Ù˘ ÔÚÁ¿ÓˆÛ˘ ·Ú¯Â›ˆÓ

Στη δραστηριότητα 2.3 περιγράψαµε πώς µπορούν να αποθηκευτούν


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

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


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

Χρησιµοποιώντας τις εγγραφές που έχετε δώσει στην απάντηση της ¢Ú·ÛÙËÚÈfiÙËÙ· 2.4
δραστηριότητας 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 αυτού του τµήµατος µόνο, αγνοώντας τα υπόλοιπα.
56 K E º A § A I O 2 : A ƒ Ã π ∆ ∂ ∫ ∆ √ ¡ π ∫ ∏ ∫ ∞ π º À ™ π ∫ ∏ O ƒ °∞ ¡ ø ™ ∏ A ƒ Ã ∂ π ø ¡

™¯‹Ì· 2.5
Κατακερµατισµένο Αρχείο
1 Block 1 Block 2
2 Block 3
3
Block 4 Block 5
4
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 ƒ °∞ ¡ ø ™ ∏ ∞ ƒ Ã ∂ π ø ¡ ™ ∆ √ º À ™ π ∫ √ ∂ ¶ π ¶ ∂ ¢ √ 57

Aθήνα
Aµαλιάδα
AθήνᐠAµφιλοχία
Bέρροιᐠ…
∆ράµα

Bέροια
Bόλος
Γρεβενܐ
AθήνᐠΘεσσαλονίκη …
Θεσσαλονίκη Kαλαµάτα
Tρίπολη Kόρινθος

Tρίπολη
… Xαλκίδα
ΦλώρινᐠXίος
Xαλκίδα Ψαρܐ ™¯‹Ì· 2.6

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

από τα δύο επίπεδα του σχήµατος 2.6). Μια ενδιαφέρουσα µορφή


καταλόγου µε πολλά επίπεδα είναι το δέντρο τύπου Β, το οποίο είναι
δεικτοδότηση µε πολλούς καταλόγους σε µορφή δέντρου που εξα-
σφαλίζει ότι δεν θα αποµένει κενός χώρος από διαγραφές και ότι το
δέντρο θα είναι ισοζυγισµένο. Τα δέντρα τύπου Β συζητούνται στην
ενότητα 2.3.4, που ακολουθεί.
Σε ένα αρχείο µπορούµε να έχουµε περισσότερους από έναν καταλό-
γους. Ο κατάλογος που παρουσιάζεται στο σχήµα 2.6 αναφέρεται στο
πεδίο «Πόλη» κάθε εγγραφής. Θα µπορούσαν να υλοποιηθούν και
άλλοι κατάλογοι για κάποια άλλα πεδία της εγγραφής (π.χ. κατάλογος
για τον κωδικό της πόλης). Έτσι, σε κάθε αρχείο θεωρητικά (και χωρίς
αυτό να σηµαίνει καλή σχεδίαση) θα µπορούσαν να υπάρχουν πολλοί
κατάλογοι µε πολλά επίπεδα για κάθε κατάλογο. Πέρα από το προ-
φανές όφελος στην ταχύτητα της αναζήτησης των δεδοµένων, οι κατά-
λογοι επιβαρύνουν το σύστηµα. Kατ' αρχήν το επιβαρύνουν γιατί
αυξάνεται η απαίτηση σε αποθηκευτικό χώρο. ∆είτε το σχήµα 2.6.
Αντί για 50 blocks τελικά χρησιµοποιήθηκαν 54 blocks. Επίσης, σε
περίπτωση εισαγωγής ή διαγραφής θα πρέπει να γίνουν οι απαραίτη-
τες αλλαγές στους καταλόγους και πολλές φορές θα πρέπει να ανα-
διαρθρωθούν πλήρως οι κατάλογοι, γεγονός που τελικά επιβαρύνει το
58 K E º A § A I O 2 : A ƒ Ã π ∆ ∂ ∫ ∆ √ ¡ π ∫ ∏ ∫ ∞ π º À ™ π ∫ ∏ O ƒ °∞ ¡ ø ™ ∏ A ƒ Ã ∂ π ø ¡

σύστηµα. Η επιλογή της χρήσης ή όχι δεικτοδότησης για κάποια


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

ÕÛÎËÛË Έστω ότι στο παράδειγµα που απεικονίζεται στο σχήµα 2.6 έχουµε
·˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 2000 εγγραφές και ότι είναι διατεταγµένες τέλεια (δηλαδή δεν υπάρ-
2.5 χουν κενές εγγραφές ανάµεσά τους). Υπολογίστε το ποσοστό των
blocks που αυξάνονται από τη χρήση των καταλόγων στις εξής περι-
πτώσεις:
1) Κάθε block (τόσο στο αρχείο όσο και στον κατάλογο) χωράει 20
εγγραφές και υλοποιούµε κατάλογο ενός επιπέδου.
2) Κάθε block (τόσο στο αρχείο όσο και στον κατάλογο) χωράει 10
εγγραφές και υλοποιούµε κατάλογο δύο επιπέδων.
3) Κάθε block (τόσο στο αρχείο όσο και στον κατάλογο) χωράει 10
εγγραφές και υλοποιούµε κατάλογο πολλαπλών επιπέδων µέχρι
που το τελευταίο επίπεδο να χωράει σε ένα block.

¢Ú·ÛÙËÚÈfiÙËÙ· 2.5 Γράψτε σε ένα κοµµάτι χαρτί τις 54 πόλεις πρωτεύουσες νοµών της
Ελλάδας διατεταγµένες αλφαβητικά. Υποθέσετε ότι το χαρτί είναι
το αρχείο σας στο δίσκο. Χωρίστε τις σε blocks των 5 πόλεων (τρα-
βήξτε µία γραµµή ανάµεσα τους) και δεικτοδοτήστε τις µε καταλό-
γους πολλαπλών επιπέδων. Αναγράψτε όλα τα ονόµατα των πόλεων
στα blocks κάθε κατάλογου.
2 . 3 O ƒ °∞ ¡ ø ™ ∏ ∞ ƒ Ã ∂ π ø ¡ ™ ∆ √ º À ™ π ∫ √ ∂ ¶ π ¶ ∂ ¢ √ 59

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

Στην ενότητα 2.3.3 που προηγήθηκε µιλήσαµε για καταλόγους δεδο-


µένων και για δείκτες. Κατάλογοι δεδοµένων (ευρετήρια) µπορούν να
δηµιουργηθούν µε τη χρήση γνωστών δοµών δεδοµένων, όπως είναι
τα δέντρα τύπου Β (B–trees). Τα δέντρα τύπου Β χρησιµοποιούνται
στις Βάσεις ∆εδοµένων σήµερα τόσο ως δέντρα αναζήτησης, όσο και
ως πρωτεύουσες οργανώσεις αρχείων. Στην ενότητα αυτή θα περι-
γράψουµε σε πολύ αδρές γραµµές τα δέντρα τύπου Β και τα δέντρα
τύπου Β+, τα οποία είναι και η συχνότερη µορφή υλοποίησης των
δυναµικών ευρετηρίων πολλαπλών επιπέδων. Προτείνουµε, πάντως,
να ανατρέξετε στην προτεινόµενη βιβλιογραφία για περισσότερες πλη-
ροφορίες για τα τύπου Β και τα δέντρα τύπου Β+.
Όπως συζητήσαµε και στην ενότητα 2.3.3, ένα αρχείο µπορεί να δει-
κτοδοτηθεί και να δηµιουργηθεί κάποιος κατάλογος. Ένας τέτοιος
κατάλογος µπορεί να έχει τη µορφή ενός δένδρου. Ας εξηγήσουµε τι
εννοούµε: Ένα δένδρο είναι µία συλλογή από κόµβους συνδεδεµένους
µεταξύ τους. Υπάρχει ένας ειδικός κόµβος που ονοµάζεται ρίζα του
δένδρου και βρίσκεται στην κορυφή του δέντρου. Όλοι οι κόµβοι του
δένδρου εκτός από τη ρίζα έχουν ένα γονέα και, (προαιρετικά), ένα ή
περισσότερα παιδιά. Ένας κόµβος που δεν έχει παιδιά ονοµάζεται
φύλλο. Κάθε κόµβος έχει ένα επίπεδο, το οποίο κατά σύµβαση είναι
0 για τη ρίζα και για κάθε άλλο κόµβο είναι το επίπεδο του γονέα του
αυξηµένο κατά ένα.
Τα δέντρα τύπου Β είναι δέντρα στα οποία ισχύει µία σειρά από περιο-
ρισµούς (τους οποίους δεν θα συζητήσουµε εδώ, αλλά συνιστούµε να
τους διαβάσετε οπωσδήποτε στην προτεινόµενη βιβλιογραφία). Οι
περιορισµοί αυτοί εξασφαλίζουν ότι τα δέντρα θα είναι πλήρη σε
βαθµό τουλάχιστον 50% µετά από διαγραφές και ότι θα είναι ισοζυ-
γισµένα. Για να γίνει αυτό, οι αλγόριθµοι εισαγωγής και διαγραφής
είναι σχετικά πολύπλοκοι (αν και στις περισσότερες περιπτώσεις η
εισαγωγή και η διαγραφή γίνεται µε απλό τρόπο) και, µερικές φορές,
απαιτείται επανασχεδίαση του δένδρου.
Στα δέντρα τύπου Β σε κάθε κόµβο (είτε είναι ρίζα, είτε εσωτερικός κόµ-
βος, είτε φύλλο) αποθηκεύονται δείκτες προς τους κόµβους–παιδιά του
κόµβου και δείκτες προς τα δεδοµένα. Ένα δέντρο τύπου Β αρχίζει να
γεµίζει µε τη δηµιουργία ενός κόµβου που περιέχει δείκτες για δεδοµέ-
60 K E º A § A I O 2 : A ƒ Ã π ∆ ∂ ∫ ∆ √ ¡ π ∫ ∏ ∫ ∞ π º À ™ π ∫ ∏ O ƒ °∞ ¡ ø ™ ∏ A ƒ Ã ∂ π ø ¡

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

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

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, µπορείτε
να βρείτε ένα αναλυτικό τρόπο παρουσίασης της οργάνωσης στο φυσι-
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
º ∞ § ∞ π √

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


µοντέλου σχέσεων – οντοτήτων. Θα περιγράψουµε τα ∆ιαγράµµατα
Σχέσεων – Οντοτήτων και την εφαρµογή τους στις Βάσεις ∆εδοµένων.

¶ÚÔÛ‰ÔÎÒÌÂÓ· ∞ÔÙÂϤÛÌ·Ù·

Όταν θα έχετε ολοκληρώσει τη µελέτη αυτού του κεφαλαίου θα µπο-


ρείτε να:
• εξηγήσετε τους βασικούς όρους του ιεραρχικού µοντέλου
• περιγράψετε τις έννοιες «δέντρο», «ρίζα», «φύλλα», «σύνδεση»,
«σύνδεση γονιού µε παιδί»
• διακρίνετε ανάµεσα σε ιεραρχικά δέντρα και σε δικτυακές δοµές
• δώσετε παραδείγµατα ιεραρχικών δέντρων και παραδείγµατα
δικτυακών δοµών δεδοµένων
• περιγράψετε το ρόλο των εγγραφών στο ιεραρχικό και στο δικτυα-
κό µοντέλο
• προτείνετε µετατροπές σε δικτυακά µοντέλα δεδοµένων ώστε να
προκύψουν ιεραρχικά µοντέλα δεδοµένων
• περιγράψετε τις έννοιες «οντότητα», «σχέση», «κλειδί» και «κατη-
γόρηµα» που χαρακτηρίζουν ένα διάγραµµα σχέσεων – οντοτήτων
• διακρίνετε το είδος κάθε σχέσης σε ένα διάγραµµα σχέσεων – οντο-
τήτων
• σχεδιάσετε τα βασικά δοµικά στοιχεία ενός διαγράµµατος σχέσεων
– οντοτήτων και να εξηγήσετε τι είναι το καθένα
• εντοπίσετε τις οντότητες και τις σχέσεις από την περιγραφή ενός
προβλήµατος του πραγµατικού κόσµου
• σχεδιάσετε το διάγραµµα σχέσεων – οντοτήτων από την περιγραφή
ενός προβλήµατος του πραγµατικού κόσµου
• εντοπίσετε προβλήµατα και προτείνετε αλλαγές σε ένα διάγραµµα
σχέσεων – οντοτήτων
64 K E º A § A I O 3 : ª √ ¡ ∆ ∂ § √ ¶ √ π ∏ ™ ∏ ∫ ∞ π £ ∂ ª ∞∆ ∞ ™ Ã ∂ ¢ π ∞ ™ ∏ ™

ŒÓÓÔȘ ÎÏÂȉȿ

• Ιεραρχικό Μοντέλο (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). Η φιλοσοφία του ιεραρχικού µοντέλου είναι αυτή ακριβώς που
υποδηλώνει το όνοµά του, δηλαδή η ιεράρχηση των δεδοµένων που
ενσωµατώνονται στο σύστηµα.

Ένα σύστηµα Βάσεων ∆εδοµένων βασισµένο στο ιεραρχικό µοντέλο


αποτελείται από δέντρα. Κάθε δέντρο είναι µία σειρά από εγγραφές
διαταγµένες µε συγκεκριµένο τρόπο, έτσι ώστε κάθε εγγραφή να έχει
66 K E º A § A I O 3 : ª √ ¡ ∆ ∂ § √ ¶ √ π ∏ ™ ∏ ∫ ∞ π £ ∂ ª ∞∆ ∞ ™ Ã ∂ ¢ π ∞ ™ ∏ ™

ορισµένη θέση ιεραρχικά. Στο σχήµα 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 Mετρήσεις Eργαστήριο

177 Bασιλείου Bοηθός 621 Nικολάου Eπιµελήτρια 777 Ξανθός Bοηθός

11 Mακρής Φοιτητής 411 Γεωργίου Eπιµελητής

13 Παπαδόπουλος Φοιτητής
35 Mακρή Φοιτήτρια

17 Pασσιά Φοιτήτρια 21 Aντωνίου Φοιτήτρια

™¯‹Ì· 3.2
24 Bασιλάκη Φοιτήτρια Ιεραρχικό ∆έντρων Εγγραφών

Εάν πληρούνται οι παραπάνω προϋποθέσεις, τότε το δέντρο µπορεί


να συµµετέχει στο µοντέλο. Ένα τέτοιο δέντρο θα το ονοµάζουµε
ιεραρχικό δέντρο. Έτσι, το ιεραρχικό µοντέλο αποτελείται από ιεραρ-
χικά δέντρα, τα οποία έχουν ως κόµβους τους εγγραφές µε τα δεδο-
µένα της Βάσης ∆εδοµένων.
Στο σχήµα 3.2 παρουσιάζεται ένα ιεραρχικό δέντρο µε εγγραφές
εκπαιδευτών και µαθητών για ένα εργαστήριο. (Για το εργαστήριο
«µετρήσεις» που βρίσκεται στη ρίζα του δέντρου.) Προσέξτε ότι τα
παιδιά κάθε γονιού πρέπει να είναι διατεταγµένα (για λόγους σύµβα-
σης στο σχήµα εµφανίζονται από αριστερά προς τα δεξιά ή από πάνω
προς τα κάτω). Στο σχήµα 3.2 δεν έχουν αναπαρασταθεί οι βασικές
λεπτοµέρειες της δοµής (όπως παράδειγµα ο χώρος που καταλαµβά-
νουν οι δείκτες), αφού ο στόχος είναι να φανεί η θεωρητική οργάνω-
ση των δεδοµένων στο ιεραρχικό µοντέλο.
∆εν θα επεκταθούµε περισσότερο στο ιεραρχικό µοντέλο. Ως µοντέ-
λο χρησιµοποιείται σήµερα σε µερικά συστήµατα (όπως το MARS VI
και το S–200), αλλά γενικά το µοντέλο που κυριάρχησε ως σήµερα
είναι το σχεσιακό µοντέλο, ενώ το µοντέλο που αναµένεται να κυριαρ-
χήσει µελλοντικά είναι το αντικειµενοστραφές. Για τα δύο αυτά µοντέ-
λα θα αφιερώσουµε χωριστά κεφάλαια.
68 K E º A § A I O 3 : ª √ ¡ ∆ ∂ § √ ¶ √ π ∏ ™ ∏ ∫ ∞ π £ ∂ ª ∞∆ ∞ ™ Ã ∂ ¢ π ∞ ™ ∏ ™

ÕÛÎËÛË Μελετήστε το δέντρο του σχήµατος 3.2. Κάθε εγγραφή στο σχήµα
·˘ÙÔ·ÍÈÔÏfiÁËÛ˘ έχει ένα κωδικό (στο αριστερό της µέρος) και θα αναφερόµαστε στην
3.1 κάθε εγγραφή µε αυτό τον κωδικό. Απαντήστε στις παρακάτω ερω-
τήσεις:
i. Ποια εγγραφή είναι η ρίζα του δέντρου;
ii. Ποιες εγγραφές είναι τα φύλλα του δέντρου;
iii. Η εγγραφή µε κωδικό 411 ποιες εγγραφές έχει ως παιδιά;
iv. Η εγγραφή µε κωδικό 17 ποια εγγραφή έχει ως γονιό;
v. Ποιες εγγραφές είναι τα παιδιά της εγγραφής µε κωδικό 621;

ÕÛÎËÛË Ποιες από τις προτάσεις που ακολουθούν είναι σωστές και ποιες όχι
·˘ÙÔ·ÍÈÔÏfiÁËÛ˘ όταν αναφερόµαστε στο δέντρο του σχήµατος 2.6;
3.2
Σωστό Λάθος
Η εγγραφή µε κωδικό 177 είναι η ρίζα
των εγγραφών µε κωδικούς 11, 13 και 17. ❏ ❏
Η εγγραφή µε κωδικό 177 είναι παιδί
της εγγραφής µε κωδικό 106. ❏ ❏
Η εγγραφή µε κωδικό 411 είναι παιδί
της εγγραφής µε κωδικό 621. ❏ ❏
Η εγγραφή µε κωδικό 621 είναι φύλλο. ❏ ❏
Η εγγραφή µε κωδικό 13 είναι γονιός
της εγγραφής µε κωδικό 17. ❏ ❏

¢Ú·ÛÙËÚÈfiÙËÙ· 3.1 Σχεδιάστε το γενεαλογικό σας δέντρο χρησιµοποιώντας εγγραφές µε


τα παρακάτω πεδία (κωδικός, επώνυµο, όνοµα). Προσπαθήστε να
καταγράψετε τουλάχιστον τέσσερις γενεές.
1) Είναι το δέντρο που προέκυψε ιεραρχικό δέντρο;
2) Θα µπορούσε να εισαχθεί σε µία ιεραρχική Βάση ∆εδοµένων;
3) Τι αλλαγές πρέπει να γίνουν για να µπορεί να εισαχθεί σε µία
ιεραρχική Βάση ∆εδοµένων;
3 . 2 ∆ √ ¢ π ∫ ∆ À∞ ∫ √ ª √ ¡ ∆ ∂ § √ 69

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

™ÎÔfi˜
Σκοπός της ενότητας είναι να γίνει µία εισαγωγή στις έννοιες του
δικτυακού µοντέλου. Η ενότητα αυτή παρουσιάζει συνοπτικά το
δικτυακό µοντέλο και σας παραπέµπει σε βιβλιογραφία προαιρετικής
ανάγνωσης για περαιτέρω εµβάθυνση στο συγκεκριµένο µοντέλο.

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

∂ÈÛ·ÁˆÁÈΤ˜ ¶·Ú·ÙËÚ‹ÛÂȘ
Στην ενότητα αυτή παρουσιάζεται εν συντοµία το δικτυακό µοντέλο.
Για πιο εκτενή µελέτη του µοντέλου αυτού µπορείτε να ανατρέξετε στις
βιβλιογραφικές πηγές που σας δίνουµε στο τέλος του κεφαλαίου.

Το δικτυακό µοντέλο είναι επίσης ένα σχετικά παλαιό µοντέλο. Τα


πρώτα συστήµατα Βάσεων ∆εδοµένων που βασίστηκαν στο δικτυα-
κό µοντέλο εκδόθηκαν στις αρχές της δεκαετίας του 1970, όπως το
IDMS. Η φιλοσοφία του δικτυακού µοντέλου είναι αυτό ακριβώς που
υποδηλώνει το όνοµά του, δηλαδή η σύνδεση των δεδοµένων ώστε να
αποτελούν ένα δίκτυο.
Στην προηγούµενη ενότητα µιλήσαµε για το ιεραρχικό µοντέλο. Το
δικτυακό µοντέλο θα µπορούσε να αντιµετωπισθεί ως επέκταση του
ιεραρχικού µοντέλου. Η ειδοποιός διαφορά είναι ότι στο δικτυακό
µοντέλο δεν υπάρχει ο περιορισµός ότι κάθε εγγραφή πρέπει να έχει
ένα µόνο γονιό. Έτσι κάθε εγγραφή θα µπορούσε να έχει κανένα, ένα
ή περισσότερους γονιούς. Με αυτή τη λογική οι εγγραφές σε αυτό το
µοντέλο διατάσσονται δηµιουργώντας ένα δίκτυο.
Στο δικτυακό µοντέλο ουσιαστικά αναφερόµαστε σε δύο σύνολα. Ένα
σύνολο που αποτελείται από εγγραφές και ένα σύνολο που αποτελείται
70 K E º A § A I O 3 : ª √ ¡ ∆ ∂ § √ ¶ √ π ∏ ™ ∏ ∫ ∞ π £ ∂ ª ∞∆ ∞ ™ Ã ∂ ¢ π ∞ ™ ∏ ™

από συνδέσεις ανάµεσα στις εγγραφές. Οι συνδέσεις είναι διαταγµένες


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

Eγγραφή 1

Eγγραφή 2 Eγγραφή 3 Eγγραφή 4

Eγγραφή 5

™¯‹Ì· 3.3
Eγγραφή 6 Eγγραφή 7 Eγγραφή 8
Παράδειγµα ∆ικτύου

Βασικό πλεονέκτηµα του δικτυακού µοντέλου είναι ότι µε τη λογική


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

ÕÛÎËÛË Μελετήστε το δίκτυο του σχήµατος 3.3. Θα µπορούσε να µετατρα-


·˘ÙÔ·ÍÈÔÏfiÁËÛ˘ πεί σε δέντρο; Ακολούθως δίνουµε κάποιες συνδέσεις, οι οποίες εάν
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 ¡ ∆ √ ∆ ∏ ∆ ø ¡ 71

Σχεδιάστε το γενεαλογικό σας δέντρο χρησιµοποιώντας εγγραφές µε ¢Ú·ÛÙËÚÈfiÙËÙ· 3.2


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

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

™ÎÔfi˜
Σκοπός της ενότητας αυτής είναι η περιγραφή των διαγραµµάτων
σχέσεων – οντοτήτων, η ανάλυση των δοµικών στοιχείων ενός δια-
γράµµατος σχέσεων – οντοτήτων και η εξήγηση των εννοιών που
χρησιµοποιούνται σε αυτό. Βασικός σκοπός είναι, µετά τη µελέτη
αυτού του κεφαλαίου, να είστε σε θέση να σχεδιάζετε διαγράµµατα
σχέσεων – οντοτήτων και να τα χρησιµοποιείτε στις Βάσεις ∆εδοµέ-
νων που θα δηµιουργήσετε.
Τα διαγραµµάτων σχέσεων – οντοτήτων είναι βασικά για τη σχεδίαση
των Βάσεων δεδοµένων και θα τα χρησιµοποιήσουµε και στα παρα-
δείγµατα του σχεσιακού µοντέλου που θα ακολουθήσουν.

¶ÚÔÛ‰ÔÎÒÌÂÓ· ∞ÔÙÂϤÛÌ·Ù·
Όταν θα έχετε ολοκληρώσει τη µελέτη αυτής της ενότητας θα µπορείτε να:
• εξηγήσετε τους ορισµούς των οντοτήτων, κατηγορηµάτων, κλειδιών
και σχέσεων
• περιγράψετε τις οντότητες και τις σχέσεις για κάθε πρόβληµα του
πραγµατικού κόσµου, να εντοπίσετε τα κατηγορήµατα και να επιλέ-
ξετε τα κατάλληλα κλειδιά για κάθε οντότητα
• εντοπίσετε τον τύπο κάθε σχέσης για κάθε πρόβληµα του πραγµατι-
κού κόσµου και τις οντότητες που συµµετέχουν σε αυτή
• περιγράψετε τους τύπων σχέσεων σε ένα διάγραµµα σχέσεων –
οντοτήτων
• σχεδιάστε τα δοµικά συστατικά ενός διαγράµµατος σχέσεων – οντο-
τήτων, να περιγράψετε τι είναι κάθε ένα από αυτά, καθώς και που
χρησιµοποιούνται
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 ¡ ∆ √ ∆ ∏ ∆ ø ¡ 73

σε εγγραφές στο φυσικό επίπεδο της Βάσης ∆εδοµένων και ειδικότε-


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

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

Με όσα γνωρίζετε µέχρι τώρα για τα διαγράµµατα σχέσεων – οντοτή-


των θα µπορούσατε να εντοπίσετε τρεις οντότητες στο παράδειγµα 3.1:
• Οµάδα
• Παίκτης
• Αγώνας
Τα κατηγορήµατα για κάθε οντότητα είναι τα εξής:
• Για την οντότητα «Οµάδα»: ονοµασία, όνοµα ιδιοκτήτη, όνοµα
σπόνσορα, έτος ίδρυσης, έδρα.
• Για την οντότητα «Παίκτης»: όνοµα, επώνυµο, πατρώνυµο, αριθ-
µός µητρώου, ύψος, ηµεροµηνία γέννησης, καταγωγή.
• Για την οντότητα «Αγώνας»: γηπεδούχος οµάδα, φιλοξενούµενη
οµάδα, γήπεδο διεξαγωγής, ηµεροµηνία, σκορ γηπεδούχου, σκορ
φιλοξενούµενης.
Με τον παραπάνω τρόπο έχουµε περιγράψει τη Βάση ∆εδοµένων που
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
Οντότητα στο διάγραµµα σχέσεων – οντοτήτων είναι ένα ………
………… του πραγµατικού …………………. µε ………………..
πραγµατική ή θεωρητική ……………………..
(δεδοµένο, στοιχείο, σύνολο, συνόλου, περιβάλλοντος, µοναδική, αυτό-
νοµη, συνολική, οντότητα, υπόσταση, εξουσία).
Κατηγορήµατα µίας ……………………. του διαγράµµατος σχέσε-
ων – οντοτήτων είναι τα στοιχεία που καθορίζουν τα ……………….
της συγκεκριµένης ………………….
(ύπαρξη, οντότητα, περιγραφή, χαρακτηριστικά, δεδοµένα, σύνολα,
ύπαρξης, οντότητας, περιγραφής).
Κλειδί για µία …………………. του διαγράµµατος σχέσεων – οντο-
τήτων είναι το σύνολο των ………………… της ……………….. τα
οποία είναι µοναδικά για κάθε …………………. και τη διακρίνουν
76 K E º A § A I O 3 : ª √ ¡ ∆ ∂ § √ ¶ √ π ∏ ™ ∏ ∫ ∞ π £ ∂ ª ∞∆ ∞ ™ Ã ∂ ¢ π ∞ ™ ∏ ™

πλήρως από τις άλλες.


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

¢Ú·ÛÙËÚÈfiÙËÙ· 3.3 Εντοπίστε τις πιθανές οντότητες στο παράδειγµα 1.1 του κεφαλαίου
1 και τα πιθανά κατηγορήµατα. Εντοπίστε τέλος και τα πιθανά κλει-
διά για κάθε οντότητα. Περιγράψτε τους περιορισµούς που θεωρεί-
τε ότι ισχύουν για να επιλέξετε αυτά τα κλειδιά.

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

Στην προηγούµενη ενότητα µιλήσαµε για οντότητες σε ένα διάγραµ-


µα σχέσεων – οντοτήτων. Όπως ορίζει και το όνοµά του, το διάγραµ-
µα σχέσεων – οντοτήτων περιγράφει σχέσεις ανάµεσα σε οντότητες.
Θυµηθείτε το παράδειγµα 3.1. Εκεί µιλήσαµε για τρεις οντότητες
(Οµάδα, Παίκτης, Αγώνας). Θεωρητικά αυτό το σχήµα θα µπορούσε
να είναι ένα σωστό διάγραµµα σχέσεων – οντοτήτων, αλλά ίσως όχι
το καλύτερο δυνατό. Ο αγώνας είναι στην πραγµατικότητα µία σχέση
ανάµεσα σε δύο οµάδες. Αλλά ας αφήσουµε προς το παρόν τον αγώνα
και ας δούµε τους παίκτες και τις οµάδες.
Είναι φανερό ότι υπάρχει µία σχέση ανάµεσα σε οµάδες και παίκτες.
Κάθε οµάδα αποτελείται από κάποιους παίκτες της. Άρα οι οντότητες
µπορούν να έχουν σχέσεις µεταξύ τους, σχέσεις που είναι ουσιαστικές
για τη Βάση ∆εδοµένων. Για παράδειγµα η ερώτηση «σε ποια οµάδα
■ Η σχέση ανάµεσα σε οντό- παίζει ο Τάδε παίκτης;» είναι µια πολύ φυσιολογική ερώτηση στη Βάση
τητες καθορίζει ένα σύνολο από ∆εδοµένων του παραδείγµατος 3.1. Η ερώτηση αυτή δεν αφορά κάποια
συσχετισµούς ανάµεσα σε συγκεκριµένη οντότητα, αλλά τη σχέση δύο οντοτήτων (της οντότητας
εγγραφές των οντοτήτων αυτών. παίκτης µε την οντότητα οµάδα). Ακολουθεί ο ορισµός. ■
Προσέξτε ότι στον ορισµό δεν αναφέραµε σχέση ανάµεσα σε δύο
οντότητες, αλλά ανάµεσα σε οντότητες. Σε µία σχέση λοιπόν µπορούν
■ Βαθµός µιας σχέσης ονο-
να συµµετέχουν περισσότερες των δύο οντοτήτων. ■
µάζεται ο αριθµός των οντοτή-
των που συµµετέχουν στη Επίσης µία σχέση µπορεί να έχει κατηγορήµατα που προσδιορίζουν
σχέση. τη σχέση, ακριβώς όπως έχουν και οι οντότητες.
3 . 3 ¢ π ∞ ° ƒ∞ ª ª ∞∆∞ ™ à ∂ ™ ∂ ø ¡ – O ¡ ∆ √ ∆ ∏ ∆ ø ¡ 77

Ας επιστρέψουµε στο παράδειγµα 3.1. Αρχικά είχαµε µιλήσει για τρεις


οντότητες. Μήπως θα µπορούσαν να γίνουν δύο οντότητες και η οντό-
τητα «Αγώνας» να θεωρηθεί σχέση; Φυσικά και θα µπορούσαν και
αυτή η λύση είναι καλύτερη σχεδιαστικά. Ας µελετήσουµε λίγο τη
σχέση «Αγώνας». Θα πρέπει να έχει κατηγορήµατα τα κατηγορήµατα
που προσδιορίζουν τη σχέση, δηλαδή τα «γήπεδο διεξαγωγής», «ηµε-
ροµηνία», «σκορ γηπεδούχου», «σκορ φιλοξενούµενης». Παρατηρή-
σατε ότι δεν αναγράψαµε ως κατηγορήµατα τα «γηπεδούχος οµάδα»
και «φιλοξενούµενη οµάδα» που είχαµε αναφέρει στην οντότητα
«Αγώνας». Αυτό έγινε, γιατί τα στοιχεία για τις οµάδες θα µπορέσουν
να αντληθούν από την οντότητα «Οµάδα».
Πώς όµως θα µεταφερθεί η σχέση «Αγώνας» στο φυσικό επίπεδο;
Φυσικά θα είναι πάλι µία εγγραφή που θα έχει ως πεδία τα κατηγορή-
µατα που αναφέραµε παραπάνω. Επειδή όµως πρέπει να έχει και
τρόπο να αναφέρεται και στις οµάδες θα χρησιµοποιεί επίσης ως πεδία
τα κατηγορήµατα που χαρακτηρίζουν απόλυτα τις οµάδες, δηλαδή τα
κλειδιά.
Έτσι µία εγγραφή για ένα αγώνα θα είχε ως πεδία τα εξής: «κωδικός
γηπεδούχου οµάδας», «κωδικός φιλοξενούµενης οµάδας», «γήπεδο
διεξαγωγής», «ηµεροµηνία», «σκορ γηπεδούχου», «σκορ φιλοξενού-
µενης». Προσέξτε ότι θεωρήσαµε ότι η οντότητα «Οµάδα» έχει ένα
κατηγόρηµα κλειδί, το οποίο ονοµάσαµε «κωδικό». Αυτό είναι κάτι
σύνηθες στις Βάσεις ∆εδοµένων, δηλαδή να ορίζουµε έναν κωδικό για
κλειδί, όπου δεν µπορούµε να έχουµε µοναδικά κλειδιά. (Θυµηθείτε
ότι το όνοµα της οµάδας δεν αρκούσε για κλειδί.)

∫∞∆∏°√ƒπ∂™ ™Ã∂™∂ø¡

Μέχρι αυτό το σηµείο µιλήσαµε για σχέσεις στις οποίες συµµετέχουν


οντότητες χωρίς να αναλύσουµε το είδος κάθε σχέσης ως προς τις
εγγραφές που συµµετέχουν από κάθε οντότητα σε µία σχέση. Οι σχέ-
σεις διακρίνονται στις παρακάτω κατηγορίες:
Σχέσεις 1 προς 1
Σχέσεις ISA
Σχέσεις 1 προς Ν
Σχέσεις Ν προς M
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.

Ποιες από τις προτάσεις που ακολουθούν είναι σωστές και ποιες όχι; ÕÛÎËÛË
Επιλέξτε «Σωστό» ή «Λάθος» ανάλογα µε την περίπτωση. ·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
3.5
Σωστό Λάθος
Οι σχέσεις δεν αναπαριστώνται στο
φυσικό επίπεδο. Στο φυσικό επίπεδο µε
εγγραφές αντιστοιχούν µόνο οντότητες. ❏ ❏
Κάθε σχέση στην οποία µετέχουν δύο
οντότητες θα έχει βαθµό 2. ❏ ❏
Κάθε σχέση ISA είναι και σχέση 1 προς 1. ❏ ❏
Μία σχέση είναι Ν προς M εάν µία
εγγραφή από µία οντότητα συµµετέχει
δύο ή περισσότερες φορές στη σχέση. ❏ ❏
Κάθε σχέση Ν προς M έχει βαθµό Ν. ❏ ❏
80 K E º A § A I O 3 : ª √ ¡ ∆ ∂ § √ ¶ √ π ∏ ™ ∏ ∫ ∞ π £ ∂ ª ∞∆ ∞ ™ Ã ∂ ¢ π ∞ ™ ∏ ™

¢Ú·ÛÙËÚÈfiÙËÙ· 3.4 Περιγράψτε τις σχέσεις και τις οντότητες για το παράδειγµα 3.1 µετά
τις εξηγήσεις που δώσαµε στην ενότητα 3.3.2. Περιγράψτε τι σχέση
είναι κάθε σχέση ανάµεσα στις οντότητες και δώστε τουλάχιστον
πέντε (5) παραδείγµατα εγγραφών για κάθε σχέση και κάθε οντότητα.

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

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


Kατηγόρηµα
Μέχρι αυτό το σηµείο του κεφαλαίου παρουσιάσαµε τη βασική θεω-
Kατηγόρηµα
ρία που σχετίζεται µε τα διαγράµµατα σχέσεων – οντοτήτων. Tα δια-
γράµµατα σχέσεων–οντοτήτων είναι διαγράµµατα ακριβώς γιατί όσα
Oντότητα συζητήσαµε στις δύο προηγούµενες ενότητες αναπαριστάνονται καλύ-
Kλειδί
τερα µε γραφικό τρόπο (ως διάγραµµα).
Η ιδέα των διαγραµµάτων σχέσεων – οντοτήτων είναι να µπορούµε
™¯‹Ì· 3.4
να έχουµε µία εποπτική εικόνα της Βάσης ∆εδοµένων βλέποντας ένα
Οντότητα
σχέδιο που την περιγράφει. Το σχεδιαστικό µοντέλο που βασίζεται στα
διαγράµµατα σχέσεων – οντοτήτων παρέχει τη δυνατότητα σχεδίασης
των οντοτήτων και των σχέσεων µε εύκολο τρόπο, µε βάση τους συµ-
βολισµούς που θα αναλύσουµε σε αυτή την ενότητα. Στο σχήµα 3.4
παρουσιάζεται το σχέδιο µίας οντότητας.
Οι οντότητες στο διάγραµµα σχέσεων – οντοτήτων αναπαριστάνονται
µε παραλληλόγραµµα και τα κατηγορήµατα µίας οντότητας µε ελλεί-
ψεις. Το όνοµα της οντότητας αναγράφεται µέσα στο παραλληλό-
γραµµο, ενώ τα ονόµατα των κατηγορηµάτων αναγράφονται µέσα στις
ελλείψεις. Το κατηγόρηµα ή τα κατηγορήµατα που είναι κλειδιά υπο-
γραµµίζονται.
Έτσι στο σχήµα 3.4 βλέπουµε µία οντότητα µε τρία κατηγορήµατα ένα
από τα οποία είναι το κλειδί. Ένας εναλλακτικός τρόπος παρουσίασης
3 . 3 ¢ π ∞ ° ƒ∞ ª ª ∞∆∞ ™ à ∂ ™ ∂ ø ¡ – O ¡ ∆ √ ∆ ∏ ∆ ø ¡ 81

B1
Σ1
A1
B2
A 1
Σ N B ™¯‹Ì· 3.5
A2 B3
Σχέση 1 προς Ν

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


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

∞™£∂¡∂π™ √¡∆√∆∏∆∂™ ∫∞π ™Ã∂™∏ d

Εκτός από τις οντότητες που περιγράψαµε στην ενότητα 3.3.2 υπάρ-
χουν και κάποιες οντότητες που ονοµάζονται ασθενείς οντότητες.
Αυτές οι οντότητες δεν έχουν κατηγορήµατα κλειδιά δικά τους και
προσδιορίζονται από µία άλλη οντότητα. Οι ασθενείς οντότητες
παρουσιάζονται στο διάγραµµα σχέσεων – οντοτήτων µε παραλληλό-
γραµµα µε διπλό πλαίσιο και οι αντίστοιχες σχέσεις (σχέση µε την
οντότητα που τις χαρακτηρίζει) ως ρόµβος µε διπλό επίσης πλαίσιο.
Η σχέση d (το d προκύπτει από το discover που σηµαίνει ανακαλύ-
πτω) είναι µια σχέση που χρησιµοποιείται για να περιγραφεί αναλυτι-
82 K E º A § A I O 3 : ª √ ¡ ∆ ∂ § √ ¶ √ π ∏ ™ ∏ ∫ ∞ π £ ∂ ª ∞∆ ∞ ™ Ã ∂ ¢ π ∞ ™ ∏ ™

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

A2 A1 B3

™¯‹Ì· 3.6
A Σ B
Ασθενής Οντότητα

Στο σχήµα 3.6 παρουσιάζεται µία ασθενής οντότητα Β, η οποία χαρα-


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

B1
A2 A1
B
Γ1

A d Γ
∆1

E1
E
™¯‹Ì· 3.7
E2
Σχέση d

Το βασικό είναι να γνωρίζετε τα δοµικά στοιχεία του σχεδίου και τι


αναπαριστά καθένα από αυτά. Μετά, η µεταφορά ενός µοντέλου Βάσης
∆εδοµένων στο χαρτί µε τη χρήση του διαγράµµατος σχέσεων – οντο-
τήτων είναι σχετικά εύκολη υπόθεση. Φυσικά χρειάζεστε εξάσκηση και
σε αυτό µπορούν να σας βοηθήσουν οι δύο δραστηριότητες που ακο-
3 . 3 ¢ π ∞ ° ƒ∞ ª ª ∞∆∞ ™ à ∂ ™ ∂ ø ¡ – O ¡ ∆ √ ∆ ∏ ∆ ø ¡ 83

λουθούν. Αφιερώστε λίγο χρόνο για να αναζητήσετε στη βιβλιογραφία


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

Στη δραστηριότητα 4 του κεφαλαίου 3 σας ζητήθηκε να περιγράψ- ¢Ú·ÛÙËÚÈfiÙËÙ· 3.6


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

Στη δραστηριότητα 5 του κεφαλαίου 3 σας ζητήθηκε να περιγράψ- ¢Ú·ÛÙËÚÈfiÙËÙ· 3.7


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

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

Σε αυτό το σηµείο της µελέτης σας έχετε αποκτήσει µία καλή εµπει-
ρία στα σχεδιαστικά στοιχεία των διαγραµµάτων σχέσεων – οντοτή-
των. Στην ενότητα αυτή θα δούµε πώς θα σχεδιάζαµε το διάγραµµα
σχέσεων – οντοτήτων για ένα πρόβληµα του πραγµατικού κόσµου.
Θυµάστε το παράδειγµα 3.1 που περιγράψαµε στην ενότητα 3.3.1. Θα
δώσουµε ένα νέο παράδειγµα βασισµένο σε αυτό και θα προσπαθή-
σουµε να δούµε βήµα προς βήµα τις ενέργειες που πρέπει να γίνουν
µέχρι να σχεδιάσουµε το διάγραµµα σχέσεων – οντοτήτων. Ας δούµε
το παρακάτω νέο παράδειγµα.
84 K E º A § A I O 3 : ª √ ¡ ∆ ∂ § √ ¶ √ π ∏ ™ ∏ ∫ ∞ π £ ∂ ª ∞∆ ∞ ™ Ã ∂ ¢ π ∞ ™ ∏ ™

¶·Ú¿‰ÂÈÁÌ· 3.2
Στο παράδειγµα αυτό εξετάζουµε το πρωτάθληµα καλαθοσφαίρισης που
περιγράψαµε στο προηγούµενο παράδειγµα µε αρκετές όµως προσθήκες.
Το πρωτάθληµα αποτελείται από κατηγορίες στις οποίες συµµετέχουν
οµάδες. Κάθε κατηγορία έχει ένα όνοµα (Α1, Α2, Β, Γ, ∆ και Τοπικά πρω-
ταθλήµατα). Σε κάθε κατηγορία συµµετέχουν οµάδες που µπορούν να
αλλάξουν από χρονιά σε χρονιά. Μία οµάδα µπορεί να συµµετέχει µόνο
σε µία κατηγορία (ανάλογα µε την επίδοσή της την προηγούµενη χρονιά).
Οι οµάδες µπορούν να «ανέβουν» σε άλλη κατηγορία ή να υποβιβαστούν
από µία κατηγορία σε άλλη µικρότερη. Η σειρά των κατηγοριών διαταγ-
µένες από την ανώτερη προς την κατώτερη είναι Α1, Α2, Β, Γ, ∆ και Τοπι-
κά Πρωταθλήµατα. Στις οµάδες συµµετέχουν παίκτες και κάθε παίκτης
συµµετέχει µόνο σε µία οµάδα κάθε χρονιά. Στη Βάση ∆εδοµένων δεν
χρειαζόµαστε να έχουµε τις οµάδες που έχει συµµετάσχει κάποιος παί-
κτης, παρά µόνο την οµάδα στην οποία συµµετέχει αυτή τη χρονιά.
Για τις ανάγκες του πρωταθλήµατος γίνονται αγώνες ανάµεσα σε οµά-
δες. Κάθε αγώνας ανήκει σε µία συγκεκριµένη κατηγορία και κάθε αγώ-
νας τελειώνει µε κάποιο συγκεκριµένο αποτέλεσµα. Για λόγους απλότη-
τας θεωρούµε ότι δεν γίνονται αγώνες ανάµεσα σε οµάδες που δεν ανή-
κουν στην ίδια κατηγορία (π.χ. δεν προβλέπονται αγώνες κυπέλλου). Επί-
σης για λόγους απλότητας υποθέτουµε ότι τα στοιχεία που χαρακτηρί-
ζουν κάθε οµάδα είναι η ονοµασία της, το όνοµα του ιδιοκτήτη της, το
όνοµα του σπόνσορά της, το έτος που ιδρύθηκε και η πόλη στην οποία
εδρεύει. Επίσης κάθε παίκτης χαρακτηρίζεται από το όνοµά του, το επώ-
νυµό του, το πατρώνυµό του, τον αριθµό µητρώου του στην οµοσπονδία
καλαθοσφαίρισης, το ύψος του, την ηµεροµηνία γέννησης του και την
πόλη καταγωγής του. Τέλος, πάλι για λόγους απλότητας, ένας αγώνας
χαρακτηρίζεται µόνο από τις οµάδες που συµµετείχαν, το γήπεδο στο
οποίο έγινε, την ηµεροµηνία διεξαγωγής του και το τελικό σκορ.
Στη Βάση ∆εδοµένων θέλουµε να διατηρούµε πληροφορίες και για τους
µάνατζερ των παικτών και των οµάδων. Μία οµάδα µπορεί να χρησιµο-
ποιεί πολλούς µάνατζερ, αλλά ένας παίκτης µόνο ένα µάνατζερ. Οι µάνα-
τζερ είναι ελεύθεροι να εκπροσωπούν όσες οµάδες ή παίκτες επιθυµούν.
Για λόγους απλότητας υποθέτουµε ότι τα στοιχεία που µας ενδιαφέρουν
για τους µάνατζερ είναι το όνοµα, το επώνυµο και το τηλέφωνό τους.
3 . 3 ¢ π ∞ ° ƒ∞ ª ª ∞∆∞ ™ à ∂ ™ ∂ ø ¡ – O ¡ ∆ √ ∆ ∏ ∆ ø ¡ 85

Το ζητούµενο είναι να οδηγηθούµε από την ασαφή περιγραφή του


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

∂¡∆√¶π™ª√™ µ∞™π∫ø¡ ∂¡¡√πø¡

Είναι φανερό ότι µέσα στο κείµενο του παραδείγµατος υπάρχει πλη-
ροφορία που δεν σχετίζεται µε τη σχεδίαση της Βάσης ∆εδοµένων,
αλλά µε τα ίδια τα δεδοµένα. Τέτοιου είδους πληροφορία π.χ. είναι οι
ονοµασίες των κατηγοριών ή ο τρόπος µε τον οποίο υποβιβάζονται οι
οµάδες. Οι βασικές έννοιες που πρέπει να αποµονώσουµε είναι οι
86 K E º A § A I O 3 : ª √ ¡ ∆ ∂ § √ ¶ √ π ∏ ™ ∏ ∫ ∞ π £ ∂ ª ∞∆ ∞ ™ Ã ∂ ¢ π ∞ ™ ∏ ™

παρακάτω (αντιγράφουµε από το κείµενο):


• Στις κατηγορίες συµµετέχουν οµάδες.
• Στις οµάδες συµµετέχουν παίκτες.
• Γίνονται αγώνες ανάµεσα σε οµάδες.
• Μία οµάδα χρησιµοποιεί µάνατζερ.
• Ένας παίκτης χρησιµοποιεί µάνατζερ.
Με αυτά τα στοιχεία µπορούµε να αρχίσουµε να εντοπίζουµε τις οντό-
τητες και τις σχέσεις που συνθέτουν τη Βάση ∆εδοµένων.

∂¶π§√°∏ √¡∆√∆∏∆ø¡

Έχοντας εµπειρία από το παράδειγµα 3.1 που συζητήσαµε σίγουρα θα


αναγνωρίσατε τις βασικές οντότητες του παραδείγµατος που είναι οι
εξής:
• Κατηγορία
• Οµάδα
• Παίκτης
• Μάνατζερ
Προσέξτε, θεωρητικά θα µπορούσαµε να έχουµε ορίσει µία οντότητα
«Άνθρωπος» και να περιγράψουµε τόσο τους παίκτες όσο και τους
µάνατζερ µε σχέσεις ISA µε αυτή την οντότητα. Όµως, επειδή τα µόνα
κοινά στοιχεία ανάµεσα στους παίκτες και τους µάνατζερ είναι το
όνοµα και το επώνυµο, αυτή η επιλογή είναι µάλλον περιττή.
Παίρνοντας τα δεδοµένα από την περιγραφή µπορούµε εύκολα να
εντοπίσουµε και τα κατηγορήµατα για κάθε οντότητα. Αν και για
λόγους ευκολίας θα µπορούσαµε να ορίσουµε ένα κατηγόρηµα «κωδι-
κός» σε κάθε οντότητα, ώστε να διευκολυνθούµε µε θέµατα κλειδιών,
δεν θα το κάνουµε για να αναζητήσουµε τα κλειδιά για κάθε οντότη-
τα από τα κατηγορήµατα που τη χαρακτηρίζουν.
Οι οντότητες λοιπόν µε τα κατηγορήµατα είναι οι εξής (δίνουµε τα
κλειδιά µε πλάγιους χαρακτήρες):
• Κατηγορία (Ονοµασία Κατηγορίας, Χρονιά)
• Οµάδα (Ονοµασία, Ιδιοκτήτης, Χορηγός, Έτος Ίδρυσης,
Πόλη/Έδρα)
3 . 3 ¢ π ∞ ° ƒ∞ ª ª ∞∆∞ ™ à ∂ ™ ∂ ø ¡ – O ¡ ∆ √ ∆ ∏ ∆ ø ¡ 87

• Παίκτης (Όνοµα, Επώνυµο, Πατρώνυµο, Αριθµός µητρώου, Ύψος,


Ηµεροµηνία γέννησης, Πόλη Καταγωγής)
• Μάνατζερ (Όνοµα, Επώνυµο, Αριθµός Τηλεφώνου)
Παρατηρήστε ότι επιλέξαµε ως κλειδί για την κατηγορία την ονοµα-
σία της κατηγορίας και το έτος. Έτσι η (Α1, 1999) είναι µία µοναδική
κατηγορία, αφού θα υπάρξουν πολλές Α1 για άλλες χρονιές και άλλες
κατηγορίες για το 1999, αλλά καµία (Α1, 1999).
Επίσης έγιναν οι παραδοχές ότι δεν υπάρχουν δύο οµάδες µε το ίδιο
όνοµα στην ίδια πόλη, ότι δεν υπάρχουν δύο παίκτες µε τον ίδιο αριθ-
µό µητρώου και ότι δεν υπάρχουν δύο µάνατζερ µε το ίδιο ονοµατε-
πώνυµο.

∂¶π§√°∏ ™Ã∂™∂ø¡

Έχοντας εντοπίσει τις οντότητες πρέπει να προχωρήσουµε και στον


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

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

™¯‹Ì· 3.8
Kατηγορία
Αρχικό Πλάνο

Τώρα µπορούµε να αρχίσουµε να σχεδιάζουµε το πλάνο του δια-


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

∆∂§π∫√ ¢π∞°ƒ∞ªª∞ ™Ã∂™∂ø¡ – √¡∆√∆∏∆ø¡

Αφού ελέγξουµε το πλάνο και αποφασίσουµε για την ορθότητά του (ή


κάνουµε τις απαραίτητες διορθώσεις), τότε «γεµίζουµε» το σχήµα και
µε τις υπόλοιπες πληροφορίες (δηλαδή µε κατηγορήµατα, κλειδιά, είδη
σχέσεων κτλ). Η διαδικασία των αλλαγών είναι επαναλαµβανόµενη,
δηλαδή νέες αλλαγές µπορούν να δροµολογούνται συνεχώς.
Να σηµειωθεί ότι η εργασία της σχεδίασης του διαγράµµατος σχέσε-
90 K E º A § A I O 3 : ª √ ¡ ∆ ∂ § √ ¶ √ π ∏ ™ ∏ ∫ ∞ π £ ∂ ª ∞∆ ∞ ™ Ã ∂ ¢ π ∞ ™ ∏ ™

ων – οντοτήτων γίνεται από εξειδικευµένα εργαλεία τα οποία παρέ-


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

Oνοµασία Γήπεδο
Όνοµα
Aγώνας Hµερ/νία
Iδιοκτήτης
Eπώνυµο
Σκορ
Xορηγός Tηλέφωνο
M N
Έτος Iδρ.
Oµάδα M N
Xρησιµοποιεί Mάνατζερ

Έδρα M 1 1

Παίζει Συνεργάζεται
Συµµετέχει

N N
N
Aρ. Mητρώου Hµ. Γέν.
Kατηγορία Παίκτης
Όνοµα Πόλη

Oνοµασία Xρονιά Eπώνυµο Πατρώνυµο Ύψος

¢Ú·ÛÙËÚÈfiÙËÙ· 3.8 Αλλάξτε το παραπάνω σχήµα και υλοποιήστε µία οντότητα «Άνθρω-
πος» και περιγράψτε µε βάση αυτή τις οντότητες «Παίκτης» και
«Μάνατζερ».
3 . 3 ¢ π ∞ ° ƒ∞ ª ª ∞∆∞ ™ à ∂ ™ ∂ ø ¡ – O ¡ ∆ √ ∆ ∏ ∆ ø ¡ 91

Υλοποιήστε παραδείγµατα εγγραφών για το παράδειγµα 3.1 βασι- ¢Ú·ÛÙËÚÈfiÙËÙ· 3.9


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

Παρουσιάσαµε σε αυτό το κεφάλαιο ένα παράδειγµα (το πρωτά- ¢Ú·ÛÙËÚÈfiÙËÙ· 3.10


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

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

4
º ∞ § ∞ π √

υπολογισµός, και γίνεται µία εισαγωγή στις έννοιες του κλειδώµατος


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

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

ŒÓÓÔȘ ÎÏÂȉȿ
• Πίνακας (Table)
• Αριθµός Στηλών Πίνακα (Arity)
• Αριθµός Γραµµών Πίνακα (Cardinality)
• Κενή Τιµή (Null Value)
• Επιλογή (Select)
94 KEºA§AIO 4: ™Ã∂™π∞∫∂™ B∞™∂π™ ¢∂¢√ª∂¡ø¡

• Εισαγωγή (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 παρουσιάζονται οι βασικές έννοιες των
96 KEºA§AIO 4: ™Ã∂™π∞∫∂™ B∞™∂π™ ¢∂¢√ª∂¡ø¡

σχεσιακών Βάσεων ∆εδοµένων και οι πράξεις που µπορούν να γίνουν


σε µία σχεσιακή Βάση ∆εδοµένων, ενώ στην ενότητα 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
Περιστέρι Αθήνα Εθνική 1977

Παρατηρήστε ότι, αν και υπάρχουν δύο οµάδες µε την ίδια ονοµασία


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

Ο αριθµός των στηλών ενός πίνακα σε µία σχεσιακή Βάση ∆εδοµέ-


νων ονοµάζεται arity και ο αριθµός των γραµµών του cardinality. Έτσι,
ένας πίνακας που περιγράφει µία οντότητα µε 3 κατηγορήµατα θα έχει
arity 3. Αντίστοιχα, ένας πίνακας µε cardinality 500 σηµαίνει ότι έχουν
εισαχθεί σε αυτόν 500 εγγραφές.

Οι βασικές πράξεις που µπορούν να γίνουν σε µία σχεσιακή Βάση


∆εδοµένων είναι οι ίδιες µε αυτές που γίνονται σε κάθε Βάση ∆εδο-
µένων, δηλαδή Επιλογή, Εισαγωγή, Ενηµέρωση και ∆ιαγραφή.
98 KEºA§AIO 4: ™Ã∂™π∞∫∂™ B∞™∂π™ ¢∂¢√ª∂¡ø¡

Επιλογή σηµαίνει αναζήτηση µίας συγκεκριµένης εγγραφής και η


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

ÕÛÎËÛË
Μελετήστε το σχήµα 3.9 του προηγούµενου κεφαλαίου. Στο σχήµα
·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
αυτό περιγράφεται ένα διάγραµµα σχέσεων – οντοτήτων µε 4 οντό-
4.1
τητες και 5 σχέσεις.
1. Υπολογίστε την arity που θα πρέπει να έχει κάθε πίνακας σε µία
σχεσιακή Βάση ∆εδοµένων για κάθε οντότητα και σχέση που
περιγράφεται σε αυτό το διάγραµµα σχέσεων – οντοτήτων.
2. Ετοιµάστε τους πίνακες για µία σχεσιακή Βάση ∆εδοµένων για
τις οντότητες που περιγράφονται στο διάγραµµα σχέσεων – οντο-
τήτων.
3. Ετοιµάστε τους πίνακες για µία σχεσιακή Βάση ∆εδοµένων για
τις σχέσεις που περιγράφονται στο διάγραµµα σχέσεων – οντο-
τήτων, προσέχοντας τα κλειδιά για κάθε οντότητα που συµµετέ-
χει στη σχέση.

¢Ú·ÛÙËÚÈfiÙËÙ· 4.1
Περάστε τυχαία δεδοµένα στους πίνακες που ετοιµάσατε ως απά-
ντηση για την άσκηση αυτοαξιολόγησης 4.1. Προσέξτε να µην υπάρ-
χει πρόβληµα µε τα κλειδιά στις οντότητες και στις σχέσεις. Φρο-
ντίστε ώστε κάθε πίνακας που περιγράφει σχέση να έχει cardinality
5 και κάθε πίνακας που περιγράφει οντότητα να έχει cardinality 10.
4.1 ∆√ ™Ã∂™π∞∫√ ª√¡∆∂§√ 99

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

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


είπαµε ότι δεν µπορούν να εισαχθούν κενές τιµές σε ένα κλειδί. Αυτός
είναι ένας περιορισµός. Σε περίπτωση που αυτός ο περιορισµός δεν
είχε τηρηθεί θα είχαµε πρόβληµα µε τη Βάση ∆εδοµένων, αφού θα
είχαµε τιµές χωρίς τα πεδία που τις χαρακτηρίζουν. Αυτό θα σήµαινε
ότι θα είχαµε πρόβληµα ακεραιότητας στη Βάση ∆εδοµένων και για
αυτό το λόγο ο περιορισµός που αναφέραµε παραπάνω ονοµάζεται
περιορισµός ακεραιότητας.
Υπάρχουν δύο τύποι περιορισµών ακεραιότητας, οι περιορισµοί που
περιορίζονται µόνο σε έναν πίνακα και οι περιορισµοί που σχετίζονται
µε πολλούς πίνακες. Στην πρώτη περίπτωση ανήκουν οι περιορισµοί
όπως «ένα κλειδί δεν µπορεί να έχει ως τιµή το κενό» ή όπως «δεν
µπορούν να υπάρχουν δύο εγγραφές µε το ίδιο κλειδί». Στη δεύτερη
περίπτωση ανήκουν περιορισµοί που σχετίζονται µε δεδοµένα που
αναφέρονται από ένα πίνακα σε κάποιον άλλο. Για παράδειγµα, δεν
µπορεί να υπάρχει µία εγγραφή σε µία σχέση που δεν αντιστοιχεί σε
καµία οντότητα και δεν µπορούν να υπάρχουν δύο εγγραφές σε µία
σχέση που να περιγράφουν τη σχέση δύο ίδιων οντοτήτων µε τα ίδια
κατηγορήµατα.
Οι περιορισµοί αυτοί επιβάλλονται από το ίδιο το σύστηµα. Έτσι, όταν
δηµιουργείται µία Βάση ∆εδοµένων µεταφέρει µαζί της και ένα σύνο-
λο περιορισµών ακεραιότητας για την τήρηση των οποίων φροντίζει
το σύστηµα. Για παράδειγµα, εάν στην οντότητα «Οµάδα» που περι-
γράψαµε στο παράδειγµα 3.2 είχε εισαχθεί µία οµάδα µε ονοµασία
«ΑΕΚ» και Έδρα «Αθήνα», τότε το σύστηµα δεν θα επέτρεπε την
εισαγωγή και µίας δεύτερης οµάδας µε το ίδιο όνοµα και έδρα, αλλά
θα έδινε ένα µήνυµα της µορφής «Υπάρχει ήδη εγγραφή µε το ίδιο
κλειδί».
Εκτός από τους δύο τύπους περιορισµών ακεραιότητας που αναφέρα-
µε παραπάνω υπάρχει και άλλη µία κατηγορία περιορισµών που σχε-
τίζονται µε τη γνώση της εφαρµογής και όχι µε τη σχεδίαση της Βάσης
∆εδοµένων. Για παράδειγµα, στη Βάση ∆εδοµένων που περιγράφεται
στο διάγραµµα σχέσεων – οντοτήτων του σχήµατος 3.9 µπορούµε να
ορίσουµε περιορισµούς όπως «Κανένας παίκτης δεν µπορεί να έχει
100 KEºA§AIO 4: ™Ã∂™π∞∫∂™ B∞™∂π™ ¢∂¢√ª∂¡ø¡

γεννηθεί πριν από την τρέχουσα ηµεροµηνία» ή «Καµία οµάδα δεν


µπορεί να έχει ιδρυθεί πριν από το 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

Ακολουθούν κάποιες προτάσεις. Απαντήστε σωστό ή λάθος, ανά- ÕÛÎËÛË


λογα µε το τι πιστεύετε για κάθε πρόταση, επιλέγοντας το αντίστοι- ·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
χο τετραγωνάκι. 4.2
Σωστό Λάθος
Η ενηµέρωση δεν µπορεί να δηµιουργήσει
προβλήµατα ακεραιότητας. Τα προβλήµατα
δηµιουργούνται µόνο στην εισαγωγή ή
στη διαγραφή. ❏ ❏
Κάθε εισαγωγή δεδοµένων παραβιάζει την
ακεραιότητα της Βάσης ∆εδοµένων, όταν
γίνεται εισαγωγή σε κλειδί. ❏ ❏
Η επιλογή δεν επηρεάζει την ακεραιότητα. ❏ ❏
Κλείδωµα δεδοµένων δεν χρειάζεται να γίνει
κατά την επιλογή. ❏ ❏
Όταν δύο χρήστες κάνουν επιλογή των ίδιων
δεδοµένων την ίδια χρονική στιγµή, η Βάση
∆εδοµένων κλειδώνει τα δεδοµένα και
επιτρέπει µόνο σε ένα χρήστη κάθε φορά
να τα διαβάζει. ❏ ❏

Στους πίνακες που έχουν προκύψει ως απάντηση στη δραστηριότητα ¢Ú·ÛÙËÚÈfiÙËÙ· 4.2
4.1 πραγµατοποιήστε πράξεις εισαγωγής, διαγραφής και ενηµέρωσης.
Υλοποιήστε τουλάχιστον 5 πράξεις για κάθε περίπτωση και ελέγξτε
εάν η πράξη σας προσκρούει σε κάποιους περιορισµούς ακεραιότη-
τας. Εντοπίστε τι αλλαγές θα έπρεπε να κάνετε στα δεδοµένα σας ώστε
να µην υπάρχει πρόβληµα µε τους περιορισµούς.
104 KEºA§AIO 4: ™Ã∂™π∞∫∂™ B∞™∂π™ ¢∂¢√ª∂¡ø¡

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 Αθήνα

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


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

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 Λάρισα

ÕÛÎËÛË Υπολογίστε τα παρακάτω στους πίνακες του παραδείγµατος 4.1:


·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
σ Όνοµα=Νίκος AND Ύψος > 1,96 (Παίκτης)
4.3
σ Όνοµα=Νίκος (Μάνατζερ)

4.2.2 ¶ÚÔ‚ÔÏ‹

Η πράξη της προβολής δίνει τη δυνατότητα επιλογής κάποιων στηλών


από ένα πίνακα, ή την αναδιάταξη των στηλών του πίνακα. ∆ίνεται
από τον τύπο:
Επώνυµο Ύψος π Σ1, Σ2, … Σn (Α) (4.2)
Ιωάννου 1,99
Σηµαίνει επιλογή µόνο των στηλών Σ1, Σ2, …, Σn από τον πίνακα Α
Ξανθός 2,03 και εµφάνισή τους µε αυτή τη σειρά. Έτσι, η εντολή π Επώνυµο, Ύψος (Παί-
Ηλίου 2,00 κτης) θα είχε ως αποτέλεσµα τον δίπλα πίνακα.
Μιχαήλ 1,96
Ξανθός 1,88
Πέτρου 2,09
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)
Σηµαίνει επιλογή των γραµµών από τους πίνακες Α, Β που υπάρχουν
στον Α και δεν υπάρχουν στον Β.

Ισχύει ότι Α « Β = Α – (Α – Β). Χρησιµοποιώντας προβολές από ¢Ú·ÛÙËÚÈfiÙËÙ· 4.3


τους πίνακες του παραδείγµατος 4.1 δείξτε παραδείγµατα της παρα-
πάνω ισότητας.
108 KEºA§AIO 4: ™Ã∂™π∞∫∂™ B∞™∂π™ ¢∂¢√ª∂¡ø¡

ÕÛÎËÛË Kάντε τις παρακάτω πράξεις:


·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
π Όνοµα (Παίκτης) » π Όνοµα (Μάνατζερ)
4.6
π Όνοµα (Παίκτης) « π Όνοµα (Μάνατζερ)
π Όνοµα (Παίκτης) – π Όνοµα (Μάνατζερ)

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

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


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

¢Ú·ÛÙËÚÈfiÙËÙ· 4.4 Υπολογίστε το καρτεσιανό γινόµενο Παίκτης ¥ Μάνατζερ.

4.2.7 ™‡Ó‰ÂÛË

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

Η πράξη της σύνδεσης αντιστοιχεί στην πράξη σ Ε (Α ¥ Β) και σηµαί-


νει την επιλογή από το καρτεσιανό γινόµενο Α ¥ Β µόνο των γραµ-
µών που ικανοποιούν τη συνθήκη Ε. Η συνθήκη Ε µπορεί να περιέχει
τους αριθµητικούς τελεστές <, >, Θ, ≥, Ι και =, καθώς και τους λογι-
κούς τελεστές AND, OR, και NOT.

4.2.8 º˘ÛÈ΋ Û‡Ó‰ÂÛË

Η πράξη της φυσικής σύνδεσης δύο συνόλων Α και Β δίνεται από τον
τύπο:
A >< B (4.8)
Η πράξη της φυσικής σύνδεσης εφαρµόζεται σε πίνακες που έχουν
4 . 2 ™ à ∂ ™ π ∞ ∫ ∏ ∞ § ° ∂ µ ƒ∞ / 4 . 3 ™ à ∂ ™ π ∞ ∫ √ ™ À ¶ √ § √ ° π ™ ª √ ™ 109

στήλες µε κοινά κατηγορήµατα και σηµαίνει την επιλογή από το καρ-


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

∆ίνονται οι παρακάτω πίνακες Α, Β και Γ (για λόγους απλότητας ÕÛÎËÛË


έχουµε ως δεδοµένα αριθµούς). Υπολογίστε τα εξής: ·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
4.7
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˜
Σκοπός της ενότητας είναι να παρουσιάσει το σχεσιακό υπολογισµό και
παραδείγµατα µετατροπής από σχεσιακή άλγεβρα σε σχεσιακό υπολογισµό.

¶ÚÔÛ‰ÔÎÒÌÂÓ· ∞ÔÙÂϤÛÌ·Ù·
Όταν θα έχετε ολοκληρώσει τη µελέτη αυτής της ενότητας θα µπο-
ρείτε να:
• περιγράψετε τι είναι ο σχεσιακός υπολογισµός και πού χρησιµοποι-
είται
• υλοποιήσετε ερωτήσεις µε τη βοήθεια πράξεων του σχεσιακού υπο-
λογισµού
• µετατρέψετε ερωτήσεις και πράξεις τις σχεσιακής άλγεβρας σε ερω-
τήσεις και πράξεις του σχεσιακού υπολογισµού
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».

Υλοποιήστε µε σχεσιακό υπολογισµό τις πράξεις τις σχεσιακής άλγε- ÕÛÎËÛË


βρας που ακολουθούν: ·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
4.8
σ Ε (Α)
π Σ1, Σ2 (Α)
Α»Β
Α–Β
Α¥B

¢Ú·ÛÙËÚÈfiÙËÙ· 4.5
Εκφράστε µε σχεσιακό υπολογισµό όλες τις πράξεις της σχεσιακής
άλγεβρας για τις οποίες µιλήσαµε στην ενότητα 4.2.
112 KEºA§AIO 4: ™Ã∂™π∞∫∂™ B∞™∂π™ ¢∂¢√ª∂¡ø¡

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

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.
Επίσης, σκοπός του κεφαλαίου είναι να µελετηθούν ερωτήσεις τόσο
για εξαγωγή δεδοµένων από τους πίνακες µίας σχεσιακής Βάσης ∆εδο-
∫ ∂

5
º ∞ § ∞ π √

µένων, όσο και να παρουσιαστεί η χρήση εντολών SQL για τη δηµι-


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

¶ÚÔÛ‰ÔÎÒÌÂÓ· ∞ÔÙÂϤÛÌ·Ù·

Όταν θα έχετε ολοκληρώσει τη µελέτη αυτού του κεφαλαίου θα µπο-


ρείτε να:

• περιγράψετε το σκοπό των γλωσσών ερωτήσεων και τη χρήση µίας


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

• περιγράψετε τις εντολές της γλώσσας ερωτήσεων SQL που χρησι-


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

• χρησιµοποιήσετε εντολές της γλώσσας ερωτήσεων SQL για να


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

• µετατρέψετε ερωτήσεις προς µία Βάση ∆εδοµένων εκφρασµένες


αρχικά σε απλή (φυσική) γλώσσα στη γλώσσα ερωτήσεων SQL

ŒÓÓÔȘ ÎÏÂȉȿ

• Γλώσσες Ερωτήσεων (Query Languages)


• Γλώσσα Ορισµού ∆εδοµένων (Data Definition Language)
• Γλώσσα Χειρισµού ∆εδοµένων (Data Manipulation Language)
114 KEºA§AIO 5: H °§ø™™∞ Eƒø∆∏™∂ø¡ SQL

• Συµβολοσειρά (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.

Γράψτε τι σηµαίνουν οι παρακάτω συντοµογραφίες: ÕÛÎËÛË


·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
1) SQL ………………………………………………………………………………
5.1
2) SEQUEL ………………………………………………………………………………

3) QBE ………………………………………………………………………………

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

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

™ÎÔfi˜
Σκοπός της ενότητας είναι να παρουσιαστεί η SQL ως γλώσσα χειρισµού
δεδοµένων. Θα δείξουµε τη χρήση της SQL καθαρά για αναζήτηση δεδο-
µένων, δηλαδή θα δείξουµε πώς ερωτήσεις που θέλαµε να µπορούµε να
υποβάλλουµε στη Βάση ∆εδοµένων µπορούν να δοθούν σε SQL.

¶ÚÔÛ‰ÔÎÒÌÂÓ· ∞ÔÙÂϤÛÌ·Ù·
Όταν θα έχετε ολοκληρώσει τη µελέτη αυτής της ενότητας θα µπορεί-
τε να:
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 119

σε όλο το κεφάλαιο 5, αλλά και στο κεφάλαιο 6, όταν θα παρουσιά-


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

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

Για να µπορέσουµε να µιλήσουµε πιο συγκεκριµένα στα παραδείγµα-


τα και στις ασκήσεις, θεωρούµε ότι έχουν εισαχθεί σε µία Βάση ∆εδο-
µένων τα παρακάτω δεδοµένα που περιγράφονται στο παράδειγµα 5.2.
120 KEºA§AIO 5: H °§ø™™∞ Eƒø∆∏™∂ø¡ SQL

¶·Ú¿‰ÂÈÁÌ· 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

ΦOITHTHΣ
ΟΝΟΜΑ 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
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 Φυσικό
122 KEºA§AIO 5: H °§ø™™∞ Eƒø∆∏™∂ø¡ SQL

ΦΟΙΤ_ΜΑΘ
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 123

Χρησιµοποιώντας ένα σύστηµα που έχετε στο σπίτι σας, εάν φυσι- ¢Ú·ÛÙËÚÈfiÙËÙ· 5.2
κά έχετε, (για παράδειγµα, τη 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 º√π∆∏∆∏™
124 KEºA§AIO 5: H °§ø™™∞ Eƒø∆∏™∂ø¡ SQL

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 125

Έστω ότι θέλουµε να βρούµε τα ονόµατα των µαθηµάτων που έχουν ÕÛÎËÛË
κωδικό µικρότερο από 1100, στη Βάση ∆εδοµένων του παραδείγ- ·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
µατος 5.1 µε τα δεδοµένα του παραδείγµατος 5.2. ∆ώστε την ερώ- 5.2
τηση σε SQL και τον πίνακα µε το αναµενόµενο αποτέλεσµα.

Έστω ότι θέλουµε να βρούµε τα ονόµατα και τα επώνυµα των καθη- ÕÛÎËÛË
γητών που έχουν γεννηθεί µετά την 1η Ιανουαρίου 1960, στη Βάση ·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
∆εδοµένων του παραδείγµατος 5.1 µε τα δεδοµένα του παραδείγµα- 5.3
τος 5.2. ∆ώστε την ερώτηση σε SQL και τον πίνακα µε το αναµενό-
µενο αποτέλεσµα.

Έστω ότι θέλουµε να βρούµε το καρτεσιανό γινόµενο του πίνακα µε ÕÛÎËÛË


τα ονόµατα των µαθηµάτων που διδάσκονται στο 1ο έτος και των ·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
τµηµάτων που έχουν ιδρυθεί πριν το 1980, στη Βάση ∆εδοµένων του 5.4
παραδείγµατος 5.1 µε τα δεδοµένα του παραδείγµατος 5.2. ∆ώστε την
ερώτηση σε SQL και τον πίνακα µε το αναµενόµενο αποτέλεσµα.

Πειραµατιστείτε σε ένα Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων ¢Ú·ÛÙËÚÈfiÙËÙ· 5.3


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

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

Στην προηγούµενη ενότητα παρουσιάσαµε τη βασική εντολή


SELECT…FROM…WHERE… των ερωτήσεων σε SQL. ∆εν µιλήσαµε
όµως καθόλου για διάταξη των αποτελεσµάτων της ερώτησης. Αυτή
η διάταξη επιτυγχάνεται µε την εντολή ORDER BY την οποία θα
παρουσιάσουµε σε αυτή την ενότητα.
Η εντολή ORDER BY ακολουθεί το WHERE και προσδιορίζει τα
πεδία µε βάση τα οποία θα γίνει η διάταξη των γραµµών των πινάκων.
Ας δούµε ένα παράδειγµα. Στην προηγούµενη ενότητα δώσαµε σε
SQLτην εντολή:
126 KEºA§AIO 5: H °§ø™™∞ Eƒø∆∏™∂ø¡ SQL

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) τα ονόµατα των ·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
µαθηµάτων της άσκησης 2 κατά αύξουσα σειρά, (2) τους καθηγητές 5.5
της άσκησης 3 κατά φθίνουσα σειρά των επωνύµων και των µικρών
ονοµάτων και (3) τα ονόµατα των µαθηµάτων της άσκησης 4 κατά
φθίνουσα σειρά και τα ονόµατα των τµηµάτων κατά αύξουσα σειρά.
∆ώστε τις ερωτήσεις σε SQL και τους πίνακες µε τα αναµενόµενα
αποτελέσµατα για κάθε περίπτωση.

Πειραµατιστείτε σε ένα Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων ¢Ú·ÛÙËÚÈfiÙËÙ· 5.4


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

5.2.3 §ÔÈ¤˜ ÂÓÙÔϤ˜ ÛÙË Û˘Óı‹ÎË

Στην ενότητα 5.2.1 µιλήσαµε για τη συνθήκη που ακολουθεί το


WHERE και είπαµε για τους τελεστές που χρησιµοποιεί. Σε αυτή την
ενότητα θα µιλήσουµε για τους τελεστές «LIKE» και «NULL», που η
SQL επιτρέπει να χρησιµοποιούνται στη συνθήκη.
Ο τελεστής «LIKE» επιτρέπει τη σύγκριση strings (συµβολοσειρών).
Χρησιµοποιεί το «%» που σηµαίνει «οποιαδήποτε σειρά χαρακτήρων»
και το «–» που σηµαίνει «ένας οποιοσδήποτε χαρακτήρας». Έτσι, η
εντολή
LIKE ‘%˘%’
σηµαίνει οποιοδήποτε κείµενο που έχει µέσα του τους χαρακτήρες
(substring) «ης». Ενώ η εντολή
128 KEºA§AIO 5: H °§ø™™∞ Eƒø∆∏™∂ø¡ SQL

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 129

Έστω ότι θέλουµε να βρούµε το όνοµα και το επώνυµο των καθη- ÕÛÎËÛË
γητών που το µικρό τους όνοµα αρχίζει από ‘Μιχ’ στη Βάση ∆εδο- ·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
µένων του παραδείγµατος 5.1 µε τα δεδοµένα του παραδείγµατος 5.6
5.2. ∆ώστε την ερώτηση σε SQL και τον πίνακα µε το αναµενόµενο
αποτέλεσµα.

Έστω ότι θέλουµε να βρούµε τα ονόµατα των τµηµάτων που έχουν ÕÛÎËÛË
κενό έτος ίδρυσης στη Βάση ∆εδοµένων του παραδείγµατος 5.1 µε ·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
τα δεδοµένα του παραδείγµατος 5.2. ∆ώστε την ερώτηση σε SQL 5.7
και τον πίνακα µε το αναµενόµενο αποτέλεσµα.

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

Μέχρι τώρα µιλήσαµε για απλές εντολές σε SQL, χωρίς να συζητή-


σουµε για µετονοµασία πινάκων. Σε αυτή την ενότητα θα µιλήσουµε
για πιο πολύπλοκες ερωτήσεις σε SQL. Αρκετές φορές σε µερικές
ερωτήσεις έχουµε πολλούς πίνακες και τότε είναι πρακτικό να µετο-
νοµάζουµε κάποιους πίνακες για µεγαλύτερη ευκολία στη συγγραφή
των ερωτήσεων σε SQL. Ας δούµε ξανά το παράδειγµα της ενότητας
5.2.2 έχοντας µετονοµάσει τους πίνακες:
SELECT º.√¡√ª∞, º.∂¶ø¡Àª√,
∫.√¡√ª∞, ∫.∂¶ø¡Àª√
FROM º√π∆∏∆∏™ º.∫∞£∏°∏∆∏™ ∫
WHERE (∫.µ∞£ªπ¢∞ ="∫·ıËÁËÙ‹˜") AND
(º.∞ª<19100)
ORDER BY º.∂¶ø¡Àª√, º.√¡√ª∞;
Παρατηρήστε ότι µετονοµάσαµε τον πίνακα ΦΟΙΤΗΤΗΣ σε Φ και τον
πίνακα ΚΑΘΗΓΗΤΗΣ σε Κ και χρησιµοποιήσαµε τα σύντοµα ονό-
µατα για µεγαλύτερη ευκολία στη συγγραφή της ερώτησης.

Επαναλάβατε όλες τις ερωτήσεις που έχετε γράψει σε SQL, οι οποίες ¢Ú·ÛÙËÚÈfiÙËÙ· 5.5
έχουν περισσότερους από ένα πίνακα, µετονοµάζοντας τους πίνακες.
130 KEºA§AIO 5: H °§ø™™∞ Eƒø∆∏™∂ø¡ SQL

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

Σε αυτή την ενότητα θα µιλήσουµε για ερωτήσεις SQL που είναι σε


πολλά επίπεδα και γενικά για το πώς εντολές από τη θεωρία συνόλων
µπορούν να χρησιµοποιηθούν στις ερωτήσεις SQL. Ας αρχίσουµε
όµως µε τον τελεστή «DISTINCT», ο οποίος θα µας φανεί χρήσιµος
ONOMA
στη συνέχεια. Ας δούµε την παρακάτω ερώτηση σε SQL:
Βασίλειος
SELECT ¶∞∆ƒø¡Àª√
Μιχαήλ
FROM ∫∞£∏°∏∆∏™
Νικόλαος ORDER BY ¶∞∆ƒø¡Àª√;
Νικόλαος
Αυτή η εντολή θα µας δώσει έναν πίνακα µε όλα τα πατρώνυµα των
Νικόλαος καθηγητών που υπάρχουν στη Βάση δεδοµένων, όπως φαίνεται δίπλα.
Αν όµως για εµάς δεν έχει αξία να εµφανιστεί το ίδιο πατρώνυµο
περισσότερες από µία φορές, τότε η εντολή θα µπορούσε να γίνει
SELECT DISTINCT ¶∞∆ƒø¡Àª√
ONOMA
FROM ∫∞£∏°∏∆∏™
Βασίλειος ORDER BY ¶∞∆ƒø¡Àª√;
Μιχαήλ
Με αυτόν το τρόπο εξασφαλίζουµε ότι κάθε πατρώνυµο θα εµφανι-
Νικόλαος στεί µόνο µία φορά και τα αποτελέσµατα δίνονται στον πίνακα δίπλα.
Ο τελεστής «DISTINCT» είναι πολύ χρήσιµος στις εντολές συνόλων
που θα αναλύσουµε ακολούθως. Θα µιλήσουµε για τη χρήση των
«IN», «ALL», «ANY», «EXISTS», «NOT EXISTS» και «UNIQUE»
στις ερωτήσεις µε SQL. Επίσης, θα παρουσιάσουµε εν συντοµία τις
πράξεις συνόλων «UNION», «INTERESECT», «CONTAINS» και
«EXCEPT». Ας αρχίσουµε µε ένα παράδειγµα:
SELECT DISTINCT ONOMA
FROM º√π∆∏∆∏™
WHERE ONOMA IN (SELECT DISTINCT ONOMA
FROM ∫∞£∏°∏∆∏™)
OR
√¡√ª∞ IN (SELECT DISTINCT ¶∞∆ƒø¡Àª√
FROM ∫∞£∏°∏∆∏™);

Στο παράδειγµα αυτό ζητάµε τα ονόµατα των φοιτητών που έχουν


όνοµα τέτοιο που να το έχει και ένας τουλάχιστο καθηγητής ή ο πατέ-
ρας του. Αυτή η ερώτηση είναι δοµηµένη σε δύο επίπεδα: ένα εξωτε-
5.2 ∞¡∞∑∏∆∏™∏ ¢∂¢√ª∂¡ø¡ ™∆∏¡ SQL 131

ρικό επίπεδο (το SELECT DISTINCT ΟΝΟΜΑ FROM ΦΟΙΤΗΤΗΣ)


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

Με παρόµοιο τρόπο συντάσσεται και η «ANY» που πρέπει να ακο-


λουθεί κάποιον από τους τελεστές «=», «<», «>», «<=», «>=» και
«<>». Έτσι, η εντολή που ακολουθεί σηµαίνει «βρες το ονοµατεπώ-
νυµο ενός φοιτητή που η ηµεροµηνία γέννησής του να είναι ίδια µε
µία τουλάχιστον ηµεροµηνία γέννησης ενός καθηγητή»:
SELECT ONOMA, ∂¶ø¡Àª√
FROM º√π∆∏∆∏™
WHERE ∏ª_°∂¡ = ANY (SELECT HM_°∂ª
FROM ∫∞£∏°∏∆∏™);
Όπως συντάσσεται η «ΑΝΥ» συντάσσεται και η «ALL» που σηµαί-
νει «µε όλα». Έτσι, η παρακάτω ερώτηση σηµαίνει «βρες το ονοµα-
τεπώνυµο ενός φοιτητή που να είναι µεγαλύτερος σε ηλικία από όλους
τους καθηγητές».
SELECT ONOMA, ∂¶ø¡Àª√
FROM º√π∆∏∆∏™
WHERE ∏ª_°∂¡ < ALL (SELECT HM_°∂ª
FROM ∫∞£∏°∏∆∏™);
Ας προχωρήσουµε τώρα µε την εντολή «EXISTS (Ε)». Η εντολή αυτή
132 KEºA§AIO 5: H °§ø™™∞ Eƒø∆∏™∂ø¡ SQL

ελέγχει αν υπάρχει έστω και µία απάντηση στην ερώτηση «Ε». Εάν
υπάρχει, τότε επιστρέφει «αληθές» στη συνθήκη. Αντίθετα η εντολή
«NOT EXISTS (E)» επιστρέφει «αληθές» στη συνθήκη µόνο εάν δεν
υπάρχει καµία απάντηση στην ερώτηση «Ε».
Η εντολή «UNIQUE (E)» εξετάζει την ερώτηση «Ε» και επιστρέφει
«αληθές» στη συνάρτηση µόνο εάν δεν υπάρχουν διπλές εγγραφές στο
αποτέλεσµα της ερώτησης «Ε».
Η SQL υποστηρίζει και τις εντολές συνόλων «UNION»,
«INTERESECT», «CONTAINS» και «EXCEPT». Η εντολή
«UNION» περιγράφει την ένωση δύο συνόλων. Ας δούµε ένα παρά-
δειγµα:
(SELECT ONOMA, ∂¶ø¡Àª√
(FROM º√π∆∏∆∏™
(WHERE ∏ª_°∂¡ LIKE ‘– – – 07– – – – – ’)
UNION
(SELECT ONOMA, ∂¶ø¡Àª√
(FROM ∫∞£∏°∏∆∏™
(WHERE ∏ª_°∂¡ LIKE ‘– – – 07– – – – – ’);
Η προηγούµενη ερώτηση σε SQL δίνει σαν απάντηση τα ονοµατεπώ-
νυµα των φοιτητών και των καθηγητών που έχουν γεννηθεί τον 7ο
µήνα. Προσέξτε ότι έχουµε ως απάντηση τα δύο σύνολα των ονοµα-
τεπωνύµων και χρησιµοποιούµε την εντολή «UNION» για να κάνου-
µε την ένωση των συνόλων.
Αντίστοιχη χρήση έχει και η εντολή «INTERSECT» που δίνει την
τοµή δύο συνόλων και η εντολή «EXEPT» που δίνει τη διαφορά δύο
συνόλων. Τέλος, η εντολή «CONTAINS» συγκρίνει δύο σύνολα και
επιστρέφει «αληθές» στη συνθήκη, εάν το πρώτο είναι υποσύνολο του
δευτέρου.

ÕÛÎËÛË ∆ώστε την ερώτηση σε SQL που να βρίσκει τα διαφορετικά επώνυ-


·˘ÙÔ·ÍÈÔÏfiÁËÛ˘ µα των φοιτητών της Βάσης ∆εδοµένων του παραδείγµατος 5.1 µε
5.8 τα δεδοµένα του παραδείγµατος 5.2. ∆ώστε τον πίνακα µε το ανα-
µενόµενο αποτέλεσµα, µε την απάντηση διαταγµένη κατά φθίνουσα
σειρά.
5.2 ∞¡∞∑∏∆∏™∏ ¢∂¢√ª∂¡ø¡ ™∆∏¡ SQL 133

∆ώστε την ερώτηση σε SQL που να βρίσκει τα ονοµατεπώνυµα των ÕÛÎËÛË


φοιτητών της Βάσης ∆εδοµένων του παραδείγµατος 5.1 µε τα δεδο- ·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
µένα του παραδείγµατος 5.2, οι οποίοι έχουν ηµεροµηνία γέννησης 5.9
ίδια µε την ηµεροµηνία γέννησης ενός τουλάχιστον καθηγητή.
∆ώστε την ερώτηση σε SQL µε δύο τρόπους (1) χρησιµοποιώντας
την «IN» και (2) χρησιµοποιώντας την «ΑΝΥ». Tέλος, δώστε τον
πίνακα µε το αναµενόµενο αποτέλεσµα.

∆ώστε την ερώτηση σε SQL που να βρίσκει το ονοµατεπώνυµο του ÕÛÎËÛË


φοιτητή µε τη µεγαλύτερη ηλικία από τη Βάση ∆εδοµένων του παρα- ·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
δείγµατος 5.1 µε τα δεδοµένα του παραδείγµατος 5.2. Eπίσης δώστε 5.10
τον πίνακα µε το αναµενόµενο αποτέλεσµα.

Στην ενότητα αυτή δεν δώσαµε πολλά παραδείγµατα για τις εντολές ¢Ú·ÛÙËÚÈfiÙËÙ· 5.6
που παρουσιάσαµε, για να µπορέσουµε να καλύψουµε όλες τις εντο-
λές. Πειραµατιστείτε µε τις εντολές συνόλων και ειδικότερα αυτές
που δεν καλύψαµε µε τις ασκήσεις αυτοαξιολόγησης.

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

Σε αυτή την ενότητα θα µιλήσουµε για τη σύνδεση πινάκων, που είναι


µία βασική λειτουργία, όταν θέλουµε να δώσουµε πολύπλοκες ερω-
τήσεις. Η SQL υποστηρίζει τις συνδέσεις «INNER JOIN», «LEFT
OUTER JOIN», «RIGHT OUTER JOIN» και «FULL OUTER JOIN».
Το «INNER» και το «OUTER» κατά κανόνα παραλείπονται. Έτσι,
όταν γράφουµε σε µία ερώτηση «JOIN», τότε εννοούµε «INNER
JOIN».
Ας δούµε ένα παράδειγµα µιας πολύπλοκης ερώτησης. Έστω ότι
θέλουµε να δούµε τα ονοµατεπώνυµα των φοιτητών και το όνοµα και
το έτος ίδρυσης του τµήµατος στο οποίο ανήκουν. Αυτή είναι πολύ
απλή ερώτηση για κάποιο χρήστη της Βάσης ∆εδοµένων, αλλά στην
πραγµατικότητα απαιτεί την άντληση δεδοµένων από τρεις διαφορε-
τικούς πίνακες: Θα χρειαστεί να πάρουµε τα ονοµατεπώνυµα των φοι-
τητών από τον πίνακα ΦΟΙΤΗΤΕΣ, τα έτη ίδρυσης των τµηµάτων από
τον πίνακα ΤΜΗΜΑ, ενώ θα χρειαστούµε και τον πίνακα
134 KEºA§AIO 5: H °§ø™™∞ Eƒø∆∏™∂ø¡ SQL

ΦΟΙΤ_ΤΜΗΜΑ για να βρούµε τη σχέση των φοιτητών µε κάθε


τµήµα. Η ερώτηση σε SQL είναι η εξής:
SELECT º√π∆∏∆∏™.√¡√ª∞, º√π∆∏∆∏™.∂¶ø¡Àª√,
∆ª∏ª∞.√¡√ª∞, ∆ª∏ª∞.∂∆√™_π¢ƒÀ™∏™
FROM (º√π∆∏∆∏™ INNER JOIN º√π∆_∆ª∏ª∞
ON º√π∆∏∆∏™.∞ª=º√π∆_∆ª∏ª∞.∞ª)
INNER JOIN ∆ª∏ª∞
√¡ º√π∆_∆ª∏ª∞.√¡√ª∞=∆ª∏ª∞.√¡√ª∞);
Παρατηρήστε ότι έχουµε δύο συνδέσεις (joins) ανάµεσα σε πίνακες
για να πετύχουµε το επιδιωκόµενο αποτέλεσµα. Το αποτέλεσµα αυτής
της εντολής είναι ένας πίνακας µε τα παρακάτω αποτελέσµατα:

ΟΝΟΜΑ ΦΟΙΤHTH ΕΠΩΝΥΜΟ ΟΝΟΜΑ ΤΜΗMATOΣ ΕΤΟΣ_Ι∆ΡΥΣΗΣ


Νικόλαος Βασιλείου Μαθηµατικό 1961
Ελένη Βασιλείου Μαθηµατικό 1961
Νικόλαος Βαρδής Φυσικό 1968
Χρήστος Χρήστου Πληροφορικής 1994
Χρήστος Χρήστου Πληροφορικής 1994
Μαρίνα Χατζή Φυσικό 1968

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

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

Η απάντηση σε αυτή την ερώτηση θα είναι ο επόµενος πίνακας. Παρα-


τηρήστε ότι ζητήσαµε να εµφανίζονται πρώτα τα µαθήµατα:

ΟΝΟΜΑ ΜΑΘ ΟΝΟΜΑ ΚΑΘ ΕΠΩΝΥΜΟ ΚΑΘ


Φυσική Μιχαήλ Βαρδής
Μαθηµατικά Ειρήνη Νικολαΐδη
Λογικός Σχεδιασµός Χρήστος Χρήστου
Γραµµική Άλγεβρα Ειρήνη Νικολαΐδη
Βάσεις ∆εδοµένων Μιχαήλ Ξανθός
∆οµές ∆εδοµένων Ι Κωνσταντίνος Μακρύς
∆οµές ∆εδοµένων ΙΙ Κωνσταντίνος Μακρύς
Ποιότητα Λογισµικού Χρήστος Χρήστου
Marketing Κωνσταντίνος Μακρύς

∆ώστε την ερώτηση σε SQL που να βρίσκει το επώνυµο, όνοµα και ÕÛÎËÛË
πατρώνυµο κάθε φοιτητή που έχει πάρει µαθήµατα και τα µαθήµα- ·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
τα που έχει πάρει από τη Βάση ∆εδοµένων του παραδείγµατος 5.1 5.11
µε τα δεδοµένα του παραδείγµατος 5.2. ∆ώστε επίσης τον πίνακα µε
το αναµενόµενο αποτέλεσµα.

∆ώστε την ερώτηση σε SQL που να βρίσκει το επώνυµο και τον ÕÛÎËÛË
αριθµό µητρώου κάθε φοιτητή που έχει πάρει µαθήµατα, τον κωδι- ·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
κό κάθε µαθήµατος που έχει πάρει και το ονοµατεπώνυµο κάθε 5.11
καθηγητή που διδάσκει το συγκεκριµένο µάθηµα από τη Βάση ∆εδο-
µένων του παραδείγµατος 5.1 µε τα δεδοµένα του παραδείγµατος
5.2. ∆ώστε επίσης τον πίνακα µε το αναµενόµενο αποτέλεσµα.

Πειραµατιστείτε µε τις εντολές σύνδεσης και ειδικότερα µε τις εντο- ¢Ú·ÛÙËÚÈfiÙËÙ· 5.7
λές εξωτερικής σύνδεσης, που δεν καλύψαµε σε αυτή την ενότητα.
136 KEºA§AIO 5: H °§ø™™∞ Eƒø∆∏™∂ø¡ SQL

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 που να βρίσκει τα τµήµατα στα οποία ÕÛÎËÛË
φοιτούν ένας ή κανένας φοιτητής καθώς και πόσοι φοιτητές φοιτούν ·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
εκεί από τη Βάση ∆εδοµένων του παραδείγµατος 5.1 µε τα δεδοµέ- 5.13
να του παραδείγµατος 5.2. ∆ώστε επίσης τον πίνακα µε το αναµε-
νόµενο αποτέλεσµα.

∆ώστε την ερώτηση σε SQL που να βρίσκει τους καθηγητές που ÕÛÎËÛË
διδάσκουν περισσότερα από δύο µαθήµατα καθώς και πόσα διδά- ·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
σκουν από τη Βάση ∆εδοµένων του παραδείγµατος 5.1 µε τα δεδο- 5.14
µένα του παραδείγµατος 5.2. ∆ώστε επίσης τον πίνακα µε το ανα-
µενόµενο αποτέλεσµα.

Πειραµατιστείτε µε τις εντολές που περιγράψαµε σε αυτή την ενό- ¢Ú·ÛÙËÚÈfiÙËÙ· 5.8
τητα ώστε να αποκτήσετε εξοικείωση.

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

Μέχρι τώρα είδαµε τις διάφορες εντολές που απαρτίζουν µία ερώτη-
ση σε γλώσσα SQL. Να συνοψίσουµε, αναφέροντας ότι µία εντολή
αναζήτησης σε SQL µπορεί να είναι της µορφής
SELECT ‰›·
FROM ›Ó·Î˜
WHERE Û˘Óı‹ÎË
GROUP BY ‰›·
HAVING Û˘Óı‹ÎË Û ۯ¤ÛË Ì ÙÔ GROUP BY
ORDER BY ‰›·
138 KEºA§AIO 5: H °§ø™™∞ Eƒø∆∏™∂ø¡ SQL

Από τις προηγούµενες εντολές οι τέσσερις τελευταίες γραµµές είναι


προαιρετικές. Υποχρεωτικά πρέπει να υπάρχουν µόνο το «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 ∆ª∏ª∞
(√¡√ª∞ VARCHAR(30) NOT NULL,
∂∆√™_π¢ƒÀ™∏™ π¡∆,
PRIMARY KEY (ONOMA));
Με την εντολή αυτή ορίσαµε τον πίνακα «ΤΜΗΜΑ» µε δύο στήλες.
Η πρώτη στήλη, που είναι και το βασικό κλειδί, είναι η «ΟΝΟΜΑ»
και αποτελείται από συµβολοσειρές µεταβλητού µήκους που δεν µπο-
ρούν να ξεπερνούν τους 30 χαρακτήρες. Η δεύτερη στήλη είναι η
«ΕΤΟΣ_Ι∆ΡΥΣΗΣ» και έχει τιµές ακέραιους. Επίσης, ορίσαµε ότι η
πρώτη στήλη δεν µπορεί να έχει κενές γραµµές, ενώ η δεύτερη µπο-
ρεί να έχει και κενές γραµµές.
Ας δούµε τώρα και την εντολή «ALTER TABLE» που χρησιµοποιείται
για τη µεταβολή στοιχείων ενός πίνακα. Για παράδειγµα, εάν θέλαµε να
προσθέσουµε και άλλη µία στήλη στον πίνακα «ΤΜΗΜΑ» που θα ονο-
µαζόταν «ΠΡΟΕ∆ΡΟΣ» θα δίναµε την παρακάτω εντολή της SQL:
ALTER TABLE ∆ª∏ª∞
ADD ¶ƒ√∂¢ƒ√™ VARCHAR(30);
Με την προηγούµενη εντολή προσθέσαµε µία ακόµα στήλη συµβο-
λοσειρά µε µέγιστο µήκος 30 χαρακτήρες, που την ονοµάσαµε «ΠΡΟ-
Ε∆ΡΟΣ».

Στο Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων που χρησιµοποιείτε, ¢Ú·ÛÙËÚÈfiÙËÙ· 5.9


υλοποιήστε όλους τους πίνακες του παραδείγµατος 5.1 µε τη χρήση
εντολών SQL.
140 KEºA§AIO 5: H °§ø™™∞ Eƒø∆∏™∂ø¡ SQL

5.3.2 Insert, delete, update

Η εντολή της SQL «INSERT» χρησιµοποιείται για την εισαγωγή


τιµών σε ένα πίνακα. Η σύνταξή της είναι όπως στο παράδειγµα που
ακολουθεί
INSERT INTO ∆ª∏ª∞
VALUES (‘æ˘¯ÔÏÔÁ›·˜’, 1988);
Η εντολή αυτή εισάγει ένα νέο τµήµα. Η εντολή INSERT θα µπορού-
σε να συνδυαστεί µε µία εντολή αναζήτησης και να εισάγει δεδοµένα
σε έναν πίνακα, τα οποία θα αντλήσει από κάποιον άλλο πίνακα. ∆είτε
το παράδειγµα που ακολουθεί
INSERT INTO ∆ª∏ª∞
VALUES SELECT ONOMA, ET√™_π¢ƒÀ™∏™
FROM ¶∞§∞π∞_∆ª∏ª∞∆∞
WHERE ∂∆√™_π¢ƒÀ™∏™ > 1990;
Η εντολή αυτή εισάγει δεδοµένα τα οποία αντλεί από έναν πίνακα
«ΠΑΛΑΙΑ_ΤΜΗΜΑΤΑ».
Ας δούµε τώρα την αλλαγή δεδοµένων σε κάποιο πίνακα. ∆είτε το
παράδειγµα που ακολουθεί
DELETE FROM ∆ª∏ª∞
WHERE ∂∆√™_π¢ƒÀ™∏™ > 2000;
Με την εντολή αυτή σβήνουµε από τη Βάση ∆εδοµένων όσα τµήµα-
τα έχουν εισαχθεί µε έτος ίδρυσης µεγαλύτερο του 2000. Η εντολή
DELETE µπορεί να συνδέεται και αυτή µε κάποια εντολή αναζήτη-
σης της SQL, όπως παρουσιάζει το επόµενο παράδειγµα
DELETE FROM ∆ª∏ª∞
WHERE ∂∆√™_π¢ƒÀ™∏™ > ALL
(SELECT ∂∆√™_π¢ƒÀ™∏™
FROM ¶∞§∞π√_∆ª∏ª∞);
Τέλος, ας δούµε και ένα παράδειγµα αλλαγών σε δεδοµένα. ∆είτε το
παράδειγµα που ακολουθεί
UPDATE TMHMA
SET ∂∆√™_π¢ƒÀ™∏™=1963
WHERE ONOMA= ‘º˘ÛÈÎfi’;
5.3 Oƒπ™ª√™, ¢π∞Ã∂πƒπ™∏ ∫∞π ¶∞ƒ√À™π∞™∏ ¢∂¢√ª∂¡ø¡ ™∆∏¡ SQL 141

Η εντολή αυτή αλλάζει το έτος ίδρυσης στο Φυσικό Τµήµα. Η εντο-


λή «UPDATE» µπορεί και αυτή να συντάσσεται µε κάποια εντολή
αναζήτησης της SQL.

∆ιαγράψτε από τη Βάση ∆εδοµένων του παραδείγµατος 5.1 µε τα ÕÛÎËÛË


δεδοµένα του παραδείγµατος 5.2 όλους του φοιτητές που έχουν γεν- ·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
νηθεί στις 20 Αυγούστου 1978. ∆ώστε την αντίστοιχη εντολή σε 5.15
SQL και τον νέο πίνακα δεδοµένων που θα προκύψει µετά την εκτέ-
λεση της εντολής.

Στο Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων που χρησιµοποιείτε, ¢Ú·ÛÙËÚÈfiÙËÙ· 5.10


εισάγετε όλα τα δεδοµένα του παραδείγµατος 5.2 µε τη χρήση εντο-
λών SQL.

5.3.3 Ÿ„ÂȘ

Οι όψεις στην SQL είναι πίνακες που δηµιουργούνται από άλλους


πίνακες µε σκοπό να δώσουν διαφορετικές απεικονίσεις (συνήθως σε
διαφορετικές οµάδες χρηστών). Στο παράδειγµα που ακολουθεί φαί-
νεται µία όψη του πίνακα ΦΟΙΤΗΤΗΣ
CREATE VIEW √æ∏_1
AS SELECT ONOMA, ∂¶ø¡Àª√, ¶∞∆ƒø¡Àª√
FROM º√π∆∏∆∏™
WHERE AM > 19000;
Οι όψεις µπορούν να σβήνονται ή να ενηµερώνονται µε τον ίδιο τρόπο
που χειρίζονται και οι πίνακες (µε τις εντολές DROP VIEW και
UPDATE).

™‡ÓÔ„Ë
Στο κεφάλαιο αυτό περιγράψαµε τη γλώσσα ερωτήσεων SQL. Εν
συντοµία στην ενότητα 5.1 παρουσιάστηκαν οι βασικές αρχές των
γλωσσών ερωτήσεων και ο σκοπός που εξυπηρετούν οι γλώσσες ερω-
τήσεων. Στις ενότητες 5.2 και 5.3 παρουσιάστηκαν οι εντολές της
γλώσσας ερωτήσεων SQL και δόθηκαν παραδείγµατα για το πώς µπο-
ρούν να υλοποιηθούν ερωτήσεις που αντλούν δεδοµένα από µία Βάση
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 και να περιγραφεί η σύνταξη των ερωτήσεων σε αυτή
τη γλώσσα ερωτήσεων. Επίσης, σκοπός του κεφαλαίου είναι να µελε-
τηθούν ερωτήσεις για εξαγωγή δεδοµένων από τους πίνακες µίας σχε-
∫ ∂

6
º ∞ § ∞ π √

σιακής Βάσης ∆εδοµένων, χρησιµοποιώντας QBE.

¶ÚÔÛ‰ÔÎÒÌÂÓ· ∞ÔÙÂϤÛÌ·Ù·

Όταν θα έχετε ολοκληρώσει τη µελέτη αυτού του κεφαλαίου θα µπο-


ρείτε να:
• περιγράψετε τις εντολές της γλώσσας ερωτήσεων QBE που χρησι-
µοποιούνται για αναζήτηση και παρουσίαση δεδοµένων που αντλού-
νται από µία Βάση ∆εδοµένων
• χρησιµοποιήσετε εντολές της γλώσσας ερωτήσεων QBE για να
αντλήσετε δεδοµένα από παραδείγµατα Βάσεων ∆εδοµένων που
περιγράφηκαν στα προηγούµενα κεφάλαια
• µετατρέψετε ερωτήσεις προς µία Βάση ∆εδοµένων από απλή (φυσι-
κή) γλώσσα στη γλώσσα ερωτήσεων QBE
• µετατρέψετε ερωτήσεις προς µία Βάση ∆εδοµένων που είχαν αρχι-
κά δοθεί σε SQL σε QBE.

ŒÓÓÔȘ ÎÏÂȉȿ
• Γλώσσες Ερωτήσεων (Query Languages)
• Παράδειγµα (Example)
• Πίνακας Ερώτησης (Query Table)
• Πίνακας Αποτελέσµατος (Result Table)

∂ÈÛ·ÁˆÁÈΤ˜ ¶·Ú·ÙËÚ‹ÛÂȘ

Στο κεφάλαιο αυτό περιγράφουµε τη γλώσσα ερωτήσεων QBE. Στην


ενότητα 6.1 γίνεται εισαγωγή στις βασικές αρχές της γλώσσας ερωτή-
σεων QBE και γενικά στη φιλοσοφία των ερωτήσεων µε βάση το
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 χρησιµοποιούµε πίνακες ερωτήσεων για να υποβάλλουµε
την ερώτηση δίνοντας ένα παράδειγµα για το πώς θέλουµε να είναι η
απάντηση. Η απάντηση δίνεται σε πίνακες απάντησης που είναι ίδιοι
146 KEºA§AIO 6: ∏ °§ø™™∞ Eƒø∆∏™∂ø¡ QBE

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


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

ΦOITHTHΣ
ΟΝΟΜΑ ΕΠΩΝΥΜΟ ΠΑΤΡΩΝΥΜΟ ΑΜ ΗΜ_ΓΕΝ

Το σύστηµα, λοιπόν, φροντίζει να δώσει στο χρήστη πληροφορία όπως


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

ΦOITHTHΣ
ΟΝΟΜΑ ΕΠΩΝΥΜΟ ΠΑΤΡΩΝΥΜΟ ΑΜ ΗΜ_ΓΕΝ
Νίκος _Νίκου _Νικόλαος

Σε αυτόν τον πίνακα χρήστης έχει δώσει ένα παράδειγµα µιας απά-
ντησης στη µορφή που θέλει. Για να το κάνει αυτό χρησιµοποίησε ένα
παράδειγµα ονόµατος για κάθε περίπτωση. Τα παραδείγµατα για να
µη συγχέονται µε τις συνθήκες έπρεπε να έχουν µπροστά το χαρα-
κτήρα «_». Η εκτέλεση της παραπάνω ερώτησης θα είχε ως αποτέλε-
σµα την εµφάνιση του πίνακα:

ΦOITHTHΣ
ΟΝΟΜΑ ΕΠΩΝΥΜΟ ΠΑΤΡΩΝΥΜΟ
Νικόλαος Βασιλείου Σωτήριος
Ελένη Βασιλείου Σωτήριος
Νικόλαος Βαρδής Μιχαήλ
Χρήστος Χρήστου Νικόλαος
Χρήστος Χρήστου Βασίλειος
Μαρίνα Χατζή Αθανάσιος
6.1 ∏ ºπ§√™√ºπ∞ ∆∏™ QBE 147

Σε κάποιες εκδόσεις της QBE, για να εκτυπωθεί µία στήλη χρειάζεται


το πρόθεµα «P.» πριν από το παράδειγµα. Έτσι η εντολή είναι η εξής:

ΦOITHTHΣ
ΟΝΟΜΑ ΕΠΩΝΥΜΟ ΠΑΤΡΩΝΥΜΟ ΑΜ ΗΜ_ΓΕΝ
Ρ._Νίκος Ρ._Νίκου Ρ._Νικόλαος

Επίσης, το παράδειγµα µπορεί να παραλείπεται και να υπάρχει µόνο


το «Ρ.» που σηµαίνει «εµφάνισε το συγκεκριµένο πεδίο». Τα σύγχρο-
να συστήµατα που χρησιµοποιούν QBE παρέχουν ένα γραφικό περι-
βάλλον µε το οποίο ο χρήστης µπορεί εύκολα να κινείται στους πίνα-
κες ερωτήσεων και να προσδιορίζει ποιες στήλες θα εµφανιστούν και
ποιες όχι. Συνήθως, αυτό γίνεται µε επιλογή κάποιου πεδίου που καθο-
ρίζει την απεικόνιση ή όχι µε τη χρήση κάποιου check box.

∆ώστε τον πίνακα ερώτησης σε QBE που να ζητά τα ονοµατεπώνυ- ÕÛÎËÛË


µα των καθηγητών από τη Βάση ∆εδοµένων του παραδείγµατος 5.1 ·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
µε τα δεδοµένα του παραδείγµατος 5.2. Eπίσης δώστε τον πίνακα 6.1
αποτελέσµατος.

Πειραµατιστείτε σε ένα Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων ¢Ú·ÛÙËÚÈfiÙËÙ· 6.1


υλοποιώντας αρκετές εντολές σε QBE και ελέγχοντας την ορθότη-
τα των αποτελεσµάτων σας. Βεβαιωθείτε ότι γνωρίζετε αρκετά
καλά το αντικείµενο αυτής της ενότητας, πριν προχωρήσετε στην
επόµενη.
148 KEºA§AIO 6: ∏ °§ø™™∞ Eƒø∆∏™∂ø¡ QBE

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
Νικόλαος Βασιλείου
Ελένη Βασιλείου
Νικόλαος Βαρδής
Χρήστος Χρήστου
150 KEºA§AIO 6: ∏ °§ø™™∞ Eƒø∆∏™∂ø¡ QBE

Παρατηρούµε ότι για απλές ερωτήσεις η 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, στη Βάση ·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
∆εδοµένων του παραδείγµατος 5.1 µε τα δεδοµένα του παραδείγµα- 6.2
τος 5.2. ∆ώστε σε QBE τόσο τον πίνακα ερώτησης όσο και τον πίνα-
κα µε το αναµενόµενο αποτέλεσµα.

Έστω ότι θέλουµε να βρούµε το όνοµα και το επώνυµο των καθη- ÕÛÎËÛË
γητών που το µικρό τους όνοµα αρχίζει από ‘Μιχ’ στη Βάση ∆εδο- ·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
µένων του παραδείγµατος 5.1 µε τα δεδοµένα του παραδείγµατος 6.3
5.2. ∆ώστε σε QBE τόσο τον πίνακα ερώτησης όσο και τον πίνακα
µε το αναµενόµενο αποτέλεσµα.
152 KEºA§AIO 6: ∏ °§ø™™∞ Eƒø∆∏™∂ø¡ QBE

ÕÛÎËÛË ∆ώστε σε QBE τον πίνακα ερώτησης που να ζητά το επώνυµο,


·˘ÙÔ·ÍÈÔÏfiÁËÛ˘ όνοµα και πατρώνυµο κάθε φοιτητή που έχει επιλέξει µαθήµατα και
6.4 τα µαθήµατα που έχει πάρει από τη Βάση ∆εδοµένων του παρα-
δείγµατος 5.1 µε τα δεδοµένα του παραδείγµατος 5.2. Eπίσης δώστε
τον πίνακα µε το αναµενόµενο αποτέλεσµα.

ÕÛÎËÛË ∆ώστε σε QBE τον πίνακα ερώτησης που να ζητά το επώνυµο και
·˘ÙÔ·ÍÈÔÏfiÁËÛ˘ τον αριθµό µητρώου κάθε φοιτητή που έχει επιλέξει µαθήµατα, τον
6.5 κωδικό κάθε µαθήµατος που έχει πάρει και το ονοµατεπώνυµο κάθε
καθηγητή που διδάσκει το συγκεκριµένο µάθηµα από τη Βάση
∆εδοµένων του παραδείγµατος 5.1 µε τα δεδοµένα του παραδείγµα-
τος 5.2. Eπίσης δώστε τον πίνακα µε το αναµενόµενο αποτέλεσµα.

¢Ú·ÛÙËÚÈfiÙËÙ· 6.2 Πειραµατιστείτε σε ένα Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων


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

6.3 ∏ QBE ÛÂ Û˘Ó‰˘·ÛÌfi Ì ÁÚ·ÊÈÎfi ÂÚÈ‚¿ÏÏÔÓ

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


χρησιµοποιούν σήµερα QBE υπάρχει κάποιο γραφικό περιβάλλον για
τη διευκόλυνση των χρηστών. Με τη χρήση κάποιου τέτοιου περι-
βάλλοντος ο χρήστης µπορεί πολύ εύκολα να υλοποιήσει εντολές σε
QBE. Σε αυτή την ενότητα θα παρουσιάσουµε σύντοµα πώς υλοποι-
ούνται ερωτήσεις στη γλώσσα QBE στο σύστηµα Microsoft Access.
Σε αυτό το σύστηµα, ο χρήστης κατά τη σχεδίαση µίας ερώτησης, έχει
στη διάθεσή του τους πίνακες που αποτελούν τη Βάση ∆εδοµένων σε
γραφική µορφή, όπως περίπου φαίνεται παρακάτω:
6 . 3 ∏ Q B E ™ ∂ ™ À ¡ ¢ À∞ ™ ª √ ª ∂ ° ƒ ∞ º π ∫ √ ¶ ∂ ƒ π µ ∞ § § √ ¡ 153

ΦOITHTHΣ
ONOMA
ΦOIT_TMHMA TMHMA
EΠΩNYMO
AM ONOMA
ΠATPΩNYMO
ONOMA ETOΣ_I∆PYΣHΣ
AM
HM_ΓEN

Έτσι, ο χρήστης µπορεί να δει το όνοµα του κάθε πίνακα και όλα τα
πεδία που τον απαρτίζουν. Επίσης, βλέπει το κλειδί κάθε πίνακα µε
πιο έντονα γράµµατα από τα άλλα πεδία. Σε περίπτωση που ο χρήστης
θέλει να κάνει µία σύνδεση, τότε απλά το µόνο που έχει να κάνει είναι
να σύρει και να αφήσει το ένα από τα δύο κλειδιά που θέλει να συν-
δέσει µε κάποιο άλλο πάνω σε αυτό που θέλει να συνδέσει. Αυτόµα-
τα το σύστηµα του δείχνει ότι η σύνδεση έγινε µε µία γραµµή που συν-
δέει τα δύο πεδία που συνδέθηκαν. Έτσι, είναι ορατή η σύνδεση χωρίς
να χρειάζεται να γραφεί ούτε µία γραµµή από ερώτηση.
Στους πίνακες που παρουσιάστηκαν παραπάνω ο χρήστης έχει συν-
δέσει τον πίνακα «ΦΟΙΤΗΤΗΣ» µε τον πίνακα «ΦΟΙΤ_ΜΑΘ» µε το
πεδίο «ΑΜ». Επίσης, έχει συνδεθεί ο πίνακας «ΦΟΙΤ_ΜΑΘ» µε τον
πίνακα «ΜΑΘΗΜΑ» στο πεδίο «ΟΝΟΜΑ». Υλοποιώντας αυτή τη
σύνδεση ουσιαστικά έχει απαντηθεί η ερώτηση «ποιοι µαθητές έχουν
πάρει ποιο µάθηµα;». Τώρα, το µόνο που αποµένει είναι να βρεθεί και
ο τρόπος παρουσίασης των αποτελεσµάτων αυτής της ερώτησης. Η
QBE αυτού του συστήµατος δίνει µόνο τον πίνακα της απάντησης
στην κλασική µορφή της QBE. Φυσιολογικό, αφού έχει δώσει τρόπο
για να υλοποιηθούν οι συνδέσεις.
Η απάντηση σχηµατίζεται µε τον ίδιο τρόπο που γίνεται η σύνδεση.
∆ηλαδή ο χρήστης σύρει και αφήνει τα πεδία που θέλει να εµφανι-
στούν στην απάντηση από τους παραπάνω πίνακες στον πίνακα της
απάντησης και αυτά (τα πεδία) εµφανίζονται µε το όνοµά τους και το
όνοµα του πίνακα στον οποίο ανήκουν. Ακολούθως, ο χρήστης µπο-
ρεί να ορίσει κριτήρια ή να καθορίσει ποια πεδία θέλει να φαίνονται
και ποια όχι.
Ο πίνακας αποτελέσµατος είναι της µορφής που φαίνεται στο παρα-
κάτω παράδειγµα
154 KEºA§AIO 6: ∏ °§ø™™∞ Eƒø∆∏™∂ø¡ QBE

Field: ΟΝΟΜΑ ΕΠΩΝΥΜΟ ΟΝΟΜΑ ΕΤΟΣ_Ι∆Ρ


Table: ΦΟΙΤΗΤΗΣ ΦΟΙΤΗΤΗΣ ΤΜΗΜΑ ΤΜΗΜΑ
Sort: Ascending
Show: ✔ ✔ ✔ ✔
Criteria:
Or:

Σε αυτόν τον πίνακα ο χρήστης έχει σύρει τα πεδία «ΟΝΟΜΑ» και


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

ÕÛÎËÛË ∆ώστε σε QBE στη µορφή που παρουσιάσαµε παραπάνω την ερώ-
·˘ÙÔ·ÍÈÔÏfiÁËÛ˘ τηση της άσκησης 6.4. Μη δώσετε τον πίνακα αποτελεσµάτων, αφού
6.6 αυτός είναι ήδη διαθέσιµος από την άσκηση 6.4.

ÕÛÎËÛË ∆ώστε σε QBE στη µορφή που παρουσιάσαµε παραπάνω την ερώ-
·˘ÙÔ·ÍÈÔÏfiÁËÛ˘ τηση της άσκησης 6.5 προσθέτοντας τον περιορισµό ότι θέλουµε να
6.7 δούµε µόνο τους φοιτητές µε αριθµό µητρώου µικρότερο του 19400.
Επίσης, δώστε και τον πίνακα αποτελεσµάτων που παρουσιάζει τα
αποτελέσµατα µε την παρακάτω σειρά (επώνυµο φοιτητή, αριθµός
µητρώου φοιτητή, κωδικός µαθήµατος, όνοµα µαθήµατος, όνοµα
καθηγητή που το διδάσκει, επώνυµο καθηγητή που το διδάσκει).
6 . 3 ∏ Q B E ™ ∂ ™ À ¡ ¢ À∞ ™ ª √ ª ∂ ° ƒ ∞ º π ∫ √ ¶ ∂ ƒ π µ ∞ § § √ ¡ 155

Πειραµατιστείτε στη Microsoft Access, εάν έχετε τη δυνατότητα, ¢Ú·ÛÙËÚÈfiÙËÙ· 6.3


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

™‡ÓÔ„Ë
Στο κεφάλαιο αυτό περιγράψαµε τη γλώσσα ερωτήσεων QBE. Στην
ενότητα 6.1 παρουσιάστηκε η φιλοσοφία της QBE και µερικά παρα-
δείγµατα ερωτήσεων, στην ενότητα 6.2 µιλήσαµε για τις συνθήκες σε
QBE και, τέλος, στην ενότητα 6.3 δείξαµε πως η QBE µπορεί να χρη-
σιµοποιηθεί σε συνεργασία µε ένα γραφικό περιβάλλον υποβολής ερω-
τήσεων. Σας προτείνουµε να ανατρέξετε στη βιβλιογραφία για να βρεί-
τε περισσότερα παραδείγµατα από εντολές σε QBE και κυρίως να πει-
ραµατιστείτε µε εντολές QBE σε κάποιο Σύστηµα ∆ιαχείρισης Βάσε-
ων ∆εδοµένων (βλ. εργασίες της Θεµατικής Ενότητας 9.2).
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˜

Σκοπός του κεφαλαίου είναι να σας δώσει µία πολύ σύντοµη περιγρα-
φή των αντικειµενοστραφών Βάσεων ∆εδοµένων. Θα περιγράψουµε
τη φιλοσοφία των αντικειµενοστραφών Βάσεων ∆εδοµένων και τις
ανάγκες που ήρθαν να καλύψουν. Τέλος, θα παρουσιάσουµε, εν συντο-
∫ ∂

7
º ∞ § ∞ π √

µία, µία γλώσσα ερωτήσεων προσανατολισµένη στα αντικείµενα.

¶ÚÔÛ‰ÔÎÒÌÂÓ· ∞ÔÙÂϤÛÌ·Ù·

Όταν θα έχετε ολοκληρώσει τη µελέτη αυτού του κεφαλαίου θα µπο-


ρείτε να:
• περιγράψετε συνοπτικά τη φιλοσοφία των αντικειµενοστραφών
Βάσεων ∆εδοµένων
• περιγράψετε τις βασικές διαφορές ανάµεσα στις Βάσεις ∆εδοµένων
που περιγράψαµε µέχρι τώρα και στις αντικειµενοστραφείς Βάσεις
∆εδοµένων
• αναφέρετε µία γλώσσα ερωτήσεων που να βασίζεται στα αντικείµε-
να και τη χρήση της σε µία αντικειµενοστραφή Βάση ∆εδοµένων

ŒÓÓÔȘ ÎÏÂȉȿ
• ∆οµηµένος Προγραµµατισµός (Structured Programming)
• Αντικείµενο (Object)
• Αντικειµενοστραφής (Object Oriented)
• Κλάση (Class)
• Μέθοδος (Method)
• Γλώσσα Οικοδεσπότης (Host Language)
• Γλώσσα Ορισµού ∆εδοµένων (Data Definition Language)
• Κληρονοµικότητα (Inheritance)

∂ÈÛ·ÁˆÁÈΤ˜ ¶·Ú·ÙËÚ‹ÛÂȘ

Στο κεφάλαιο αυτό µιλάµε πολύ συνοπτικά για τις αντικειµενοστρα-


φείς Βάσεις ∆εδοµένων. Οι Βάσεις αυτές αναµένεται να αποτελούν την
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 ∏ º π § √ ™ √ º π ∞ ∆ ø ¡ ∞ ¡ ∆ π ∫ ∂ π ª ∂ ¡ √ ™ ∆ ƒ∞ º ø ¡ µ ∞ ™ ∂ ø ¡ ¢ ∂ ¢ √ ª ∂ ¡ ø ¡ 161

Αναζητήστε στη βιβλιογραφία και αναφέρατε (απλώς αναφέρατε) ¢Ú·ÛÙËÚÈfiÙËÙ· 7.1


όσες περισσότερες αντικειµενοστραφείς Βάσεις ∆εδοµένων µπορεί-
τε να βρείτε.

Μελετήστε (κατά προτίµηση από την προτεινόµενη βιβλιογραφία) ¢Ú·ÛÙËÚÈfiÙËÙ· 7.2


τη γλώσσα ορισµού αντικειµένων ODL και περιγράψτε τη χρήση της
στο σχεδιασµό αντικειµενοστραφών Βάσεων ∆εδοµένων.

7.2 ∏ ·ÓÙÈÎÂÈÌÂÓÔÛÙÚ·Ê‹˜ ÁÏÒÛÛ· ÂÚˆÙ‹ÛÂˆÓ OQL Î·È Ë


ÚfiÙ˘Ë ÁÏÒÛÛ· ÂÚˆÙ‹ÛÂˆÓ SQL3

™ÎÔfi˜
Σκοπός της ενότητας είναι να περιγραφεί γενικά η γλώσσα ερωτήσε-
ων OQL, που είναι µία γλώσσα ερωτήσεων βασισµένη στα αντικείµε-
να, και µία σύντοµη παρουσίαση της πρότυπης γλώσσας ερωτήσεων
SQL3, που είναι εξέλιξη της SQL που παρέχει δυνατότητες χειρισµού
αντικειµένων.

¶ÚÔÛ‰ÔÎÒÌÂÓ· ∞ÔÙÂϤÛÌ·Ù·
Όταν θα έχετε ολοκληρώσει τη µελέτη αυτής της ενότητας θα µπορεί-
τε να:
• εξηγήσετε σε πολύ αδρές γραµµές τη γενική φιλοσοφία της αντικει-
µενοστραφούς γλώσσας ερωτήσεων OQL
• περιγράψετε εν συντοµία τη χρήση της OQL
• περιγράψετε εν συντοµία κάποιες δυνατότητες χειρισµού αντικειµέ-
νων της γλώσσας ερωτήσεων SQL3
Σήµερα οι αντικειµενοστραφείς Βάσεις ∆εδοµένων δεν έχουν ακόµα
γνωρίσει την ευρεία αποδοχή και χρήση που έχουν γνωρίσει οι σχε-
σιακές Βάσεις ∆εδοµένων. Για αυτό το λόγο και δεν υπάρχουν σε
µεγάλη χρήση αντικειµενοστραφείς γλώσσες ερωτήσεων, σε αντίθε-
ση µε την SQL και την QBE που χρησιµοποιούνται πολύ και υπάρ-
χουν στα περισσότερα σχεσιακά Συστήµατα ∆ιαχείρισης Βάσεων
∆εδοµένων. Η νέα πρότυπη έκδοση της SQL, η SQL3, παρέχει ήδη
162 K E º A § A I O 7 : ∞ ¡ ∆ π ∫ ∂ π ª ∂ ¡ √ ™ ∆ ƒ∞ º ∂ π ™ B ∞ ™ ∂ π ™ ¢ ∂ ¢ √ ª ∂ ¡ ø ¡

κάποιες αντικειµενοστραφείς λειτουργίες και µπορεί να θεωρηθεί σαν


µία γλώσσα ερωτήσεων που είναι ανάµεσα στο σχεσιακό µοντέλο και
στο αντικειµενοστραφές. Σε αντίθεση µε την SQL3, η OQL είναι µία
καθαρά αντικειµενοστραφής γλώσσα ερωτήσεων.
Τα αρχικά OQL σηµαίνουν Object Query Language, δηλαδή αντικει-
µενοστραφής γλώσσα ερωτήσεων. Η OQL έχει σχεδιαστεί για να είναι
ενσωµατωµένη σε µία γλώσσα – οικοδεσπότη (host language) και να
παρέχει ένα καλύτερο τρόπο υποβολής ερωτήσεων. Η βασική µορφή
της OQL, µοιάζει µε την SQL όσον αφορά τη σύνταξη των εντολών.
Η διαφορά είναι ότι στις εντολές της OQL χειριζόµαστε αντικείµενα.
Μάλιστα, σε αντίθεση µε την SQL3, όπου δεν µπορεί να γίνεται χει-
ρισµός αντικειµένων από τη γλώσσα – οικοδεσπότη, αλλά µόνο αντι-
κείµενα από τη Βάση ∆εδοµένων και να γίνεται µεταφορά δεδοµένων,
η OQL δίνει δυνατότητα χειρισµού αντικειµένων και από τη Βάση
∆εδοµένων και αντικείµενα της γλώσσας – οικοδεσπότη, παρέχοντας
έτσι ένα µεγάλο πλεονέκτηµα στην υλοποίηση ερωτήσεων.
Ένα παράδειγµα ερώτησης σε OQL είναι η εντολή που ακολουθεί
SELECT º.∂¶ø¡Àª√
FROM º√π∆∏∆∏™ AS º
WHERE º.√¡√ª∞ = ‘ªÈ¯¿Ï˘’
Παρατηρήστε τις οµοιότητες αυτής της εντολής µε τις εντολές της
γλώσσας ερωτήσεων 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 163

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;
);

Στο προηγούµενο παράδειγµα ορίζουµε µία κλάση φοιτητής στην


οποία έχουµε περιγράψει τα κατηγορήµατα τα οποία απαρτίζουν κάθε
αντικείµενο. Επίσης, έχουµε ορίσει ότι δεν έχει νόηµα η σύγκριση
ανάµεσα σε φοιτητές, δηλαδή εάν ένα αντικείµενο Α είναι φοιτητής
και ένα αντικείµενο Β είναι φοιτητής δεν έχει νόηµα η σχέση «µικρό-
τερο από», δηλαδή Α < Β. Τέλος, ορίσαµε και µία µέθοδο που ισχύει
για κάθε αντικείµενο φοιτητής και που επιστρέφει το πλήρες όνοµα
κάθε αντικειµένου.

Μελετήστε (κατά προτίµηση από την προτεινόµενη βιβλιογραφία) ¢Ú·ÛÙËÚÈfiÙËÙ· 7.3


τη γλώσσα ερωτήσεων OQL και περιγράψτε τη χρήση της στην υπο-
βολή ερωτήσεων σε αντικειµενοστραφείς Βάσεις ∆εδοµένων.

Μελετήστε (κατά προτίµηση από την προτεινόµενη βιβλιογραφία) ¢Ú·ÛÙËÚÈfiÙËÙ· 7.4


τη γλώσσα ερωτήσεων SQL3 και περιγράψτε τη χρήση της στο σχε-
διασµό αντικειµενοστραφών Βάσεων ∆εδοµένων. Επίσης, ορίστε τις
πιθανές κλάσεις του παραδείγµατος 5.1 του κεφαλαίου 5 και προ-
διαγράψτε µία τουλάχιστον µέθοδο για κάθε κλάση που έχετε ορί-
σει στην SQL3.
164 K E º A § A I O 7 : ∞ ¡ ∆ π ∫ ∂ π ª ∂ ¡ √ ™ ∆ ƒ∞ º ∂ π ™ B ∞ ™ ∂ π ™ ¢ ∂ ¢ √ ª ∂ ¡ ø ¡

™‡ÓÔ„Ë
Στο κεφάλαιο αυτό περιγράψαµε πολύ συνοπτικά τις βασικές αρχές των αντικειµε-
νοστραφών Βάσεων ∆εδοµένων και µιλήσαµε λίγο για τη αντικειµενοστραφή γλώσ-
σα ερωτήσεων 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
º ∞ § ∞ π √

¶ÚÔÛ‰ÔÎÒÌÂÓ· ∞ÔÙÂϤÛÌ·Ù·

Όταν θα έχετε ολοκληρώσει τη µελέτη αυτού του κεφαλαίου θα µπο-


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

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

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

Ακολούθως, περάσαµε στα µοντέλα δεδοµένων και περιγράψαµε εν


συντοµία δύο ιστορικά µοντέλα (δικτυακό και ιεραρχικό) και δώσαµε
έµφαση στο σχεσιακό µοντέλο, επεξηγώντας τους πίνακες και τις σχέ-
166 KEºA§AIO 1: EI™A°ø°H

σεις ανάµεσα σε πίνακες σε αυτό το µοντέλο. Μιλήσαµε για αρχές


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

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

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


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

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

™˘Ó¤¯ÂÈ· ÌÂϤÙ˘

Όπως θα διαπιστώσατε ήδη, αυτό το βιβλίο είναι πολύ συνοπτικό. Εάν


το συγκρίνετε µε τα βιβλία Βάσεων ∆εδοµένων που είναι γραµµένα
στα αγγλικά και που τα αναφέρουµε ως βιβλιογραφία προαιρετικής
ανάγνωσης, θα δείτε ότι είναι ένα κλάσµα του όγκου αυτών των
βιβλίων. Αυτό σηµαίνει ότι είναι συνοπτικό και ότι σας παρέχει τις
BA™EI™ ¢E¢OMENøN 167

βασικές έννοιες που πρέπει να γνωρίζετε, χωρίς όµως να εµβαθύνει σε


κάποιο από τα θέµατα που συζητήσαµε.

Σε περίπτωση που θέλετε να εµβαθύνετε σε κάποιο θέµα τότε ο µόνος


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

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

Ολοκληρώνοντας, τώρα είναι ένα καλό χρονικά σηµείο για να κάνε-


τε µία καλή επανάληψη σε όσα διαβάσατε. Χρησιµοποιήστε αυτό το
κεφάλαιο ως υπόδειγµα για να αρχίσετε να ξαναδιαβάσετε όσα συζη-
τήσαµε.
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%. (ΣΩΣΤΟ)
Είναι µετεωρολογικά δεδοµένα και βέβαια θα µπορούσαν να χρησιµοποιηθούν στη
Βάση ∆εδοµένων.
172 A¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™ / KEº. 1

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

1.3
α) Ναι, µια Βάση ∆εδοµένων πρέπει να αποτελείται από δεδοµένα σχετικά µεταξύ τους,
όµως δεν είναι µόνο αυτό που την ορίζει ως Βάση ∆εδοµένων. Μάλλον παρασυρθήκα-
τε και επιλέξατε την πρώτη σωστή απάντηση χωρίς να διαβάσετε όλες τις απαντήσεις.
β) Ναι, µια Βάση ∆εδοµένων πρέπει να παρέχει ένα τρόπο χειρισµού των δεδοµένων έτσι
ώστε να µπορούν να εξαχθούν πληροφορίες από αυτά, όµως δεν είναι µόνο αυτό που
την ορίζει ως Βάση ∆εδοµένων. Εάν λείπουν τα α) και γ) τότε δεν είναι Βάση ∆εδοµέ-
νων. ∆εν πειράζει που δεν απαντήσατε σωστά, αλλά ξαναδιαβάστε τον ορισµό της Βάση
∆εδοµένων στην ενότητα 1.1.2.
γ) Ναι, µια Βάση ∆εδοµένων πρέπει να σχετίζεται µε κάποιο υπαρκτό πρόβληµα το οποίο
να αναπαριστά µε δεδοµένα για κάποιο συγκεκριµένο σκοπό. Όµως δεν είναι µόνο αυτό
που την ορίζει ως Βάση ∆εδοµένων. Εάν λείπουν τα α) και β), τότε δεν είναι Βάση
∆εδοµένων. ∆εν πειράζει που δεν απαντήσατε σωστά, αλλά ξαναδιαβάστε τον ορισµό
της Βάση ∆εδοµένων στην ενότητα 1.1.2.
δ) Σωστά. Βάση ∆εδοµένων είναι αυτή που συγκεντρώνει όλα τα παραπάνω. Μπράβο ήταν
άσκηση που εύκολα µπορούσατε να παρασυρθείτε και να κάνετε λάθος. Είσαστε πολύ
προσεκτικός/ή.

1.4
Για κάθε Βάση ∆εδοµένων χρειαζόµαστε διαφορετικό Σύστηµα ∆ιαχείρισης Βάσεων ∆εδο-
µένων. (ΛΑΘΟΣ)
Είπαµε πως µε ένα Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων µπορούµε να υλοποι-
ήσουµε και να χειριζόµαστε πολλές Βάσεις ∆εδοµένων. Εάν απαντήσατε «Σωστό»
µην απογοητεύεστε. Μιλήσαµε για πολλές έννοιες και µάλλον έχετε µπερδευτεί λίγο.
Κάντε µία επανάληψη στις ενότητες 1.1 και 1.2 και όλα θα αρχίσουν να ξεκαθαρίζουν
A¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™ / KEº. 1 173

Τη µεταφορά των δεδοµένων από και προς το υλικό αποθήκευσης την αναλαµβάνει το
Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων. (ΣΩΣΤΟ)
Σωστά! Ειδικότερα την µεταφορά δεδοµένων την αναλαµβάνει το τµήµα του Συστή-
µατος που ονοµάζεται «Λογισµικό Αποθήκευσης και Ανάκλησης ∆εδοµένων» όπως
φαίνεται στο σχήµα της ενότητας 1.2.2.
Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων είναι πολλές Βάσεις ∆εδοµένων µαζί. (ΛΑΘΟΣ)
Με ένα Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων µπορούν να υλοποιηθούν και να
χειρίζονται πολλές Βάσεις ∆εδοµένων, αλλά αυτό δεν σηµαίνει πως πολλές Βάσεις
∆εδοµένων είναι ένα Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων. Εάν απαντήσατε
«Σωστό» καλύτερα να ξαναµελετήσετε τις ενότητες 1.2, 1.2.1 και 1.2.2.
Το Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων αποτελείται από το Λογισµικό Χειρισµού
Ερωτήσεων, το Λογισµικό Αποθήκευσης και Ανάκλησης ∆εδοµένων και το Υλικό Απο-
θήκευσης των ∆εδοµένων. (ΛΑΘΟΣ)
Αυτή ήταν µια δύσκολη ερώτηση. Εάν επιλέξατε «Λάθος» τότε µπράβο σας. Το λάθος
είναι ότι το Υλικό Αποθήκευσης των ∆εδοµένων δεν αποτελεί τµήµα του Συστήµατος
∆ιαχείρισης Βάσεων ∆εδοµένων. Εάν απαντήσατε «Σωστό» δεν πειράζει. Θυµηθείτε
τον ορισµό του Συστήµατος ∆ιαχείρισης Βάσεων ∆εδοµένων. Είπαµε ότι είναι «…το
λογισµικό…» και όχι το υλικό.

1.5
Η χρήση της βάσης ∆εδοµένων µας εξασφαλίζει ότι δύο χρήστες δεν θα µπορέσουν να δια-
βάσουν ταυτόχρονα τα ίδια δεδοµένα. (ΛΑΘΟΣ)
Tο Σύστηµα ∆ιαχείρισης προστατεύει τα δεδοµένα από ταυτόχρονες αλλαγές από
δύο ή περισσότερους χρήστες. Όµως η ανάγνωση των δεδοµένων από περισσότε-
ρους από ένα χρήστη τη φορά είναι πλεονέκτηµα της χρήσης της Βάσης ∆εδοµένων.
Εάν απαντήσατε «Λάθος» µπράβο σας, ήταν µια ερώτηση που µπορούσε να σας
µπερδέψει. Εάν απαντήσατε «Σωστό» δεν πειράζει, απλά ξαναδιαβάστε την ενότη-
τα 1.3.1.
Η Βάση ∆εδοµένων παρέχει ένα µηχανισµό που παρέχει ταχύτατα απαντήσεις σε ερωτή-
σεις του χρήστη. (ΣΩΣΤΟ)
Όντως η Βάση ∆εδοµένων παρέχει αυτή τη δυνατότητα. Εάν απαντήσατε λάθος µην
απογοητεύεστε, αλλά καλύτερα να κάνετε µία επανάληψη στις ενότητες 1.2 και µετά
να ξαναδιαβάσετε την ενότητα 1.3.2.
174 A¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™ / KEº. 1

Η Βάση ∆εδοµένων δεν επιτρέπει αλλαγές στη µορφή των δεδοµένων. (ΛΑΘΟΣ)
Όπως διαβάσατε στην ενότητα 1.3.3 η Βάση ∆εδοµένων παρέχει ευελιξία σε τέτοι-
ου είδους αλλαγές. Εάν απαντήσατε «Σωστά» µάλλον µπερδευτήκατε. Μην απο-
γοητεύεστε.
Η ποιότητα των δεδοµένων είναι καλύτερη εάν χρησιµοποιήσουµε αρχεία αντί για Βάση
∆εδοµένων. (ΛΑΘΟΣ)
Όπως διαβάσατε στην ενότητα 1.3.4 η ποιότητα των δεδοµένων είναι καλύτερη µε
τη χρήση Βάσης ∆εδοµένων λόγω των µηχανισµών προστασίας που παρέχει αυτή.
Εάν απαντήσατε «Σωστά» µάλλον µπερδευτήκατε. Μην απογοητεύεστε. Καλύτερα
να κάνετε µια επανάληψη σε ότι έχετε µελετήσει σε αυτή την ενότητα.

1.6
Πληροφορία είναι δεδοµένα που δεν έχουν αποθηκευτεί σε ηλεκτρονικό υπολογιστή.
(ΛΑΘΟΣ)
Θυµηθείτε τους ορισµούς που µελετήσατε στην ενότητα 1.1.1. Η πληροφορία εξά-
γεται από τα δεδοµένα, ανεξαρτήτως από που βρίσκονται αυτά αποθηκευµένα. Εάν
απαντήσατε «Σωστό» µάλλον δεν δώσατε πολύ βάρος στην επανάληψη που σας προ-
τείναµε.
Στη Βάση ∆εδοµένων αποθηκεύονται δεδοµένα, από τα οποία εξάγονται πληροφορίες.
(ΣΩΣΤΟ)
Είναι σωστό. Εξάλλου αυτός είναι ακριβώς και ο σκοπός µιας Βάσης ∆εδοµένων.
Εάν απαντήσατε «Λάθος» µάλλον µπερδευτήκατε µε τον ορισµό της Βάσης ∆εδο-
µένων. ∆εν πειράζει, αλλά καλύτερα επαναλάβετε την επανάληψη του κεφαλαίου 1.
Κάθε συλλογή δεδοµένων αποτελεί µία Βάση ∆εδοµένων. (ΛΑΘΟΣ)
Είπαµε πως Βάση ∆εδοµένων δεν είναι απλά µία συλλογή δεδοµένων, αλλά ένα
µοντέλο του πραγµατικού κόσµου µαζί µε τον τρόπο χειρισµού των δεδοµένων. Εάν
απαντήσατε «Σωστό» ξαναµελετήστε τον ορισµό της ενότητας 1.1.2.
Βάση ∆εδοµένων δεν µπορεί να υπάρξει χωρίς ηλεκτρονικό υπολογιστή. (ΛΑΘΟΣ)
Υπάρχει και το παράδειγµα 1.2 που δεν χρησιµοποιεί ηλεκτρονικό υπολογιστή. Εάν
απαντήσατε «Σωστό» ίσως σας µπέρδεψε το γεγονός ότι είπαµε ότι αυτή η Βάση
∆εδοµένων δεν είναι καθόλου ρεαλιστική λύση. Όµως δεν παύει να είναι µία Βάση
∆εδοµένων.
Το Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων διευκολύνει τη δηµιουργία και συντήρηση
A¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™ / KEº. 1 175

Βάσεων ∆εδοµένων. (ΣΩΣΤΟ)


Ακριβώς αυτός είναι ο ρόλος του. Εάν απαντήσατε «Λάθος» µάλλον µπερδευτήκα-
τε µε τον ορισµό της ενότητας 1.2. ∆εν πειράζει, αλλά καλύτερα επαναλάβετε την
επανάληψη του κεφαλαίου 1.
Ο ∆ιαχειριστής ενός Συστήµατος ∆ιαχείρισης Βάσεων ∆εδοµένων µπορεί να δηµιουργή-
σει Βάσεις ∆εδοµένων και να ορίσει Ιδιοκτήτες για κάθε Βάση ∆εδοµένων. (ΣΩΣΤΟ)
Ο ορισµός Βάσεων ∆εδοµένων και αρµοδιοτήτων χρηστών είναι βασική εργασία
του ∆ιαχειριστή Συστήµατος. Εάν απαντήσατε «Λάθος», καλύτερα να δώσετε έµφα-
ση στην επανάληψη της ενότητας 1.4.
Οι Ιδιοκτήτες µίας Βάσης ∆εδοµένων µπορούν να διαγράψουν ή να ορίσουν χρήστες σε
αυτή τη Βάση ∆εδοµένων. (ΣΩΣΤΟ)
Ο ρόλος του ιδιοκτήτη είναι και ο ορισµός χρηστών, καθώς και των αρµοδιοτήτων
κάθε χρήστη (δηλαδή σε ποιο επίπεδο θα ανήκει). Εάν απαντήσατε «Λάθος», µάλ-
λον µπερδέψατε τις αρµοδιότητες του ∆ιαχειριστή Συστήµατος µε αυτές του Ιδιο-
κτήτη της Βάσης ∆εδοµένων.
Οι Ιδιοκτήτες µίας Βάσης ∆εδοµένων µπορούν να διαγράψουν ή να ορίσουν µόνο τους
Χρήστες Κατώτερης ∆ιαβάθµισης σε αυτή τη Βάση ∆εδοµένων. (ΛAΘOΣ)
Μπορούν να διαγράψουν, ή να ορίσουν χρήστες κάθε επιπέδου. Βλέπε την απάντη-
ση στην προηγούµενη ερώτηση. Tο λάθος είναι στο «µόνο».

Προσοχή: Εάν στις ερωτήσεις αυτές έχετε δώσει περισσότερες από µία λαθεµένες απα-
ντήσεις τότε προτείνουµε να µην προχωρήσετε µε τη µελέτη της εποµένης ενό-
τητας, αλλά να επαναλάβετε την επανάληψη του κεφαλαίου. Πάντως µην απο-
γοητεύεστε. Μελετήσατε αρκετές έννοιες που αντιµετωπίσατε για πρώτη φορά
και είναι λογικό να έχετε µπερδευτεί λίγο.
176 A¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™ / KEº. 2

2.1

Ακολουθούν οι σωστές απαντήσεις. Μπράβο σας, εάν απαντήσατε σωστά. Σε αντίθετη


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

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


να και απλά βλέπει το αποτέλεσµα των εντολών που εκτελεί στο εξωτερικό επίπεδο.

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

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


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

2.2

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

Στην ενότητα 2.1.2 είπαµε ότι ο χρήστης βλέπει µόνο τις εντολές στο εξωτερικό επί-
πεδο. ∆είτε επίσης και τον ορισµό της διαφάνειας στην ενότητα 2.1.3. Σύµφωνα µε
αυτόν τον ορισµό ο χρήστης δεν πρέπει να ασχολείται µε το φυσικό επίπεδο. Άρα η
σωστή απάντηση είναι (ΛΑΘΟΣ).

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

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

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

Είναι σωστό σύµφωνα µε τον ορισµό της ενότητας 2.1.2.

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

Μπράβο σας, εάν επιλέξατε (ΛΑΘΟΣ) γιατί είναι πραγµατικά δύσκολη έννοια, αφού
µπορείτε να µπερδευτείτε µε τον ετυµολογικό ορισµό της λέξης «διαφάνεια». ∆ια-
βάστε ξανά τον ορισµό της ενότητας 2.1.3, εάν απαντήσατε (ΣΩΣΤΟ).

Στο επίπεδο αντίληψης δεν επιτελούνται στην πραγµατικότητα λειτουργίες, απλά είναι ένα
επίπεδο για να συνδέει το φυσικό µε το εξωτερικό επίπεδο. (ΛΑΘΟΣ)
A¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™ / KEº. 2 177

Βέβαια είναι λάθος. ∆ιαβάστε την ενότητα 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
178 A¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™ / KEº. 2

έχει το 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 179

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.


180 A¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™ / KEº. 3

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 181

Σύµφωνα µε τον ορισµό του βαθµού µίας σχέσης, αφού έχει δύο οντότητες έχει και
βαθµό δύο.

Κάθε σχέση ISA είναι και σχέση 1 προς 1. (ΣΩΣΤΟ)

Ορίσαµε τη σχέση ISA ως µία εξειδίκευση της σχέσης 1 προς 1. Προσοχή όµως, το
αντίστροφο φυσικά και δεν ισχύει.

Μία σχέση είναι Ν προς Μ, εάν µία εγγραφή από µία οντότητα συµµετέχει δύο ή περισ-
σότερες φορές στη σχέση. (ΛΑΘΟΣ)

Θα µπορούσε να είναι 1 προς Ν. Αν λέγαµε «Μία σχέση είναι Ν προς Μ, εάν µία
εγγραφή από κάθε οντότητα συµµετέχει δύο ή περισσότερες φορές», τότε θα ισχύ-
ει η πρόταση.

Κάθε σχέση Ν προς Μ έχει βαθµό Ν. (ΛΑΘΟΣ)

Μη συγχέετε το βαθµό µίας σχέσης µε την κατηγορία στην οποία αυτή ανήκει. Η
σχέση Ν προς Ν που αναφέρουµε στην επεξήγηση της ενότητας 3.3.2 είναι σχέση
µε βαθµό 2.
182 A¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™ / KEº. 4

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

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


δηµιουργούνται µόνο στην εισαγωγή ή στη διαγραφή. (ΛΑΘΟΣ)
184 A¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™ / KEº. 4

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

Κάθε εισαγωγή δεδοµένων παραβιάζει την ακεραιότητα της Βάσης ∆εδοµένων, όταν γίνε-
ται εισαγωγή σε κλειδί. (ΛΑΘΟΣ)

Μεγάλο λάθος! Κάθε εισαγωγή δεδοµένων θα έχει ως αποτέλεσµα να γίνει εισαγω-


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

Η επιλογή δεν επηρεάζει την ακεραιότητα. (ΣΩΣΤΟ)

Μπράβο σας, εάν επιλέξατε «σωστό». Προκύπτει από τον ορισµό της επιλογής.
Ξαναδιαβάστε τους ορισµούς εάν δεν απαντήσατε σωστά.

Κλείδωµα δεδοµένων δεν χρειάζεται να γίνει κατά την επιλογή. (ΣΩΣΤΟ)

Επιλογή σηµαίνει ανάγνωση δεδοµένων. Εφόσον τα δεδοµένα δεν αλλάζουν δεν


χρειάζεται να κλειδωθούν. Το κλείδωµα γίνεται µόνο όταν υπάρχει αλλαγή στα δεδο-
µένα.

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

Μπράβο σας, εάν επιλέξατε «λάθος». ∆ιαβάστε την απάντηση στην προηγούµενη
ερώτηση. Είπαµε ότι κατά την επιλογή δεν χρειάζεται να γίνει κλείδωµα.

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. Ζητήσαµε αναδιάταξη του πίνακα παίκτης και 2. Ζητήσαµε επιλογή µόνο των επωνύ-
επιλογή µόνο των στηλών «Όνοµα», «Επώ- µων των µάνατζερ, άρα:
νυµο», «Πόλη». H απάντηση είναι η εξής:

Όνοµα Επώνυµο Πόλη Επώνυµο


Νίκος Ιωάννου Πάτρα Βασιλείου
Μιχάλης Ξανθός Αθήνα Χρήστου
Πέτρος Ηλίου Πάτρα Ιωάννου
Νίκος Μιχαήλ Ηλίου
Νίκος Ξανθός Λάρισα Βασιλείου
Πέτρος Πέτρου Αθήνα

4.5

Μπράβο σας, εάν το υλοποιήσατε, γιατί είχε µία παγίδα. Πρώτα έπρεπε να γίνει η επιλογή
και µετά η προβολή, γιατί αλλιώς δεν θα µπορούσατε να επιλέξετε την «Πόλη». Η σωστή
λύση είναι π Επώνυµο, Ύψος (σ Πόλη=Πάτρα (Παίκτης)).

4.6

Μπράβο σας, εάν το υλοποιήσατε, γιατί ήταν δύσκολη άσκηση.

1. Είναι η ένωση δύο Παίκτης Mάνατζερ Παίκτης » Mάνατζερ


πινάκων, άρα έχουµε
Όνοµα Όνοµα Όνοµα
τα ακόλουθα αποτελέ-
Νίκος Νίκος Νίκος
σµατα:
Μιχάλης Κώστας Μιχάλης
Πέτρος Πέτρος Πέτρος
Νίκος Ηλίας Νίκος
Νίκος Μιχάλης Νίκος
Πέτρος Πέτρος
Νίκος
Κώστας
Πέτρος
Ηλίας
Μιχάλης
186 A¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™ / KEº. 4

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 187

του κεφαλαίου:

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;
188 A¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™ / KEº. 5

Όποιον τρόπο και να επιλέξατε είναι απόλυτα σωστός. Καλύτερα, όταν γράφετε ερωτήσεις
σε 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
Χρήστος Χρήστου
Μιχαήλ Ξανθός
Κωνσταντίνος Μακρύς
190 A¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™ / KEº. 5

Μπράβο σας, εάν απαντήσατε σωστά. Σε αντίθετη περίπτωση, ξαναδιαβάστε τα παρα-


δείγµατα και πειραµατιστείτε πριν προχωρήσετε στο επόµενο τµήµα της άσκησης.
3. Η ερώτηση σε SQL είναι
SELECT ª∞£∏ª∞.ONOMA, ∆ª∏ª∞.√¡√ª∞
FROM ª∞£∏ª∞, ∆ª∏ª∞
WHERE (ª∞£∏ª∞.∂∆√™_¢π¢∞™∫= ‘∞’) AND
(∆ª∏ª∞.∂∆√™_π¢ƒÀ™∏™<1980)
ORDER BY ª∞£∏ª∞.√¡√ª∞ DESC, ∆ª∏ª∞.√¡√ª∞ ASC;
Ακολουθεί και ο πίνακας που θα προκύψει ως αποτέλεσµα της απάντησης

ONOMA MAΘ ONOMA TMH


Φυσική Μαθηµατικό
Φυσική Φυσικό
Μαθηµατικά Μαθηµατικό
Μαθηµατικά Φυσικό

Μπράβο σας, εάν απαντήσατε σε όλα σωστά. Σε αντίθετη περίπτωση, ξαναδιαβάστε τα


παραδείγµατα και πειραµατιστείτε πριν προχωρήσετε στις επόµενες ασκήσεις.

5.6
Η ερώτηση σε SQL είναι
SELECT ONOMA, ∂¶ø¡Àª√
FROM ∫∞£∏°∏∆∏™
WHERE √¡√ª∞ LIKE ‘Mȯ%’;
Προσοχή, στα δεδοµένα που έχουµε εισάγει έχουµε δώσει δύο καθηγητές µε όνοµα ‘Μιχά-
λης’, µόνο που τον ένα τον εισάγαµε ως ‘Μιχάλης’ και τον άλλον ως ‘Μιχαήλ’. Με την
εντολή αυτή θα βρούµε και τους δύο, ενώ αν ζητάγαµε ONOMA= ‘Μιχάλης’ θα βρίσκα-
µε µόνο τον ένα. Ακολουθεί ο πίνακας που θα προκύψει ως αποτέλεσµα της απάντησης

ONOMA EΠΩNYMO
Μιχαήλ Βαρδής
Μιχάλης Ξανθός

Μπράβο σας, εάν απαντήσατε σε όλα σωστά. Σε αντίθετη περίπτωση, ξαναδιαβάστε τα


παραδείγµατα και πειραµατιστείτε πριν προχωρήσετε στις επόµενες ασκήσεις.
A¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™ / KEº. 5 191

5.7
Η ερώτηση σε SQL είναι:
SELECT ONOMA
FROM ∆ª∏ª∞
WHERE ∂∆√™_π¢ƒÀ™∏™ IS NULL;
Επειδή έχουµε εισάγει το έτος ίδρυσης σε κάθε τµήµα, ο πίνακας που θα προκύψει ως απο-
τέλεσµα της απάντησης δεν θα έχει καθόλου στοιχεία. Μπράβο σας, εάν απαντήσατε
σωστά. Σε αντίθετη περίπτωση, ξαναδιαβάστε τα παραδείγµατα και πειραµατιστείτε πριν
προχωρήσετε στις επόµενες ασκήσεις.

5.8
Η ερώτηση σε SQL είναι
SELECT DISTINCT ∂¶ø¡Àª√
FROM º√π∆∏∆∏™
ORDER BY ∂¶ø¡Àª√ DESC;
Ακολουθεί ο πίνακας που θα προκύψει ως αποτέλεσµα της απάντησης. Προσέξτε ότι τα
διπλά επώνυµα «Βασιλείου» και «Χρήστου» εµφανίζονται µόνο µία φορά.

EΠΩNYMO
Xρήστου
Xατζή
Bασιλείου
Bαρδής

Μπράβο σας, εάν απαντήσατε σωστά. Σε αντίθετη περίπτωση, ξαναδιαβάστε τα παρα-


δείγµατα και πειραµατιστείτε πριν προχωρήσετε στις επόµενες ασκήσεις.

5.9
Θα δώσουµε πρώτα την ερώτηση σε SQL µε τη χρήση του «ΙΝ»
SELECT º√π∆∏∆∏™.√¡√ª∞, º√π∆∏∆∏™.∂¶ø¡Àª√
FROM º√π∆∏∆∏™
WHERE º√π∆∏∆∏™.∏ª_°∂¡ π¡
(SELECT ∏ª_°∂¡
FROM ∫∞£∏°∏∆∏™);
192 A¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™ / KEº. 5

Αντίστοιχα, η ερώτηση σε SQL µε τη χρήση του «ANY» είναι


SELECT º√π∆∏∆∏™.√¡√ª∞, º√π∆∏∆∏™.∂¶ø¡Àª√
FROM º√π∆∏∆∏™
WHERE º√π∆∏∆∏™.∏ª_°∂¡ = ANY
(SELECT ∏ª_°∂¡
FROM ∫∞£∏°∏∆∏™);
Ακολουθεί ο πίνακας που θα προκύψει ως αποτέλεσµα της απάντησης. Προσέξτε ότι είναι
κενός, αφού δεν έχουµε εισάγει κάποιους φοιτητές που να έχουν την ίδια ηλικία µε καθη-
γητές. Πάντως, θα µπορούσατε να αλλάξετε προσωρινά τα δεδοµένα της Βάσης ∆εδοµέ-
νων που βασίζεται στο παράδειγµα 5.1 και 5.2, ώστε να υπάρχουν και φοιτητές που να ικα-
νοποιούν αυτή τη συνθήκη και η ερώτηση να έχει νόηµα.

ONOMA EΠΩNYMO

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

5.10
Η ερώτηση σε SQL είναι
SELECT º√π∆∏∆∏™.ONOMA, º√π∆∏∆∏™.∂¶ø¡Àª√
FROM º√π∆∏∆∏™
WHERE º√π∆∏∆∏™.∏ª_°∂¡ <= 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
Χρήστου Χρήστος Βασίλειος ∆οµές ∆εδοµένων ΙΙ
Χρήστου Χρήστος Βασίλειος Λογικός Σχεδιασµός
Χρήστου Χρήστος Νικόλαος ∆οµές ∆εδοµένων Ι
Χρήστου Χρήστος Νικόλαος Λογικός Σχεδιασµός
Χρήστου Χρήστος Νικόλαος Ποιότητα Λογισµικού

Μπράβο σας, εάν απαντήσατε σωστά σε αυτή την άσκηση. γιατί ήταν µία πραγµατικά
δύσκολη άσκηση. Σε αντίθετη περίπτωση, µην απογοητεύεστε, αλλά αφιερώστε λίγο χρόνο
στο να πειραµατιστείτε µε τη σύνδεση των πινάκων.
194 A¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™ / KEº. 5

5.12
Η ερώτηση σε SQL είναι
SELECT º√π∆∏∆∏™.∂¶ø¡Àª√, º√π∆∏∆∏™.AM,
ª∞£∏ª∞.∫ø¢π∫√™, ∫∞£∏°∏∆∏™.ONOMA,
∫∞£∏°∏∆∏™.∂¶ø¡Àª√
FROM (∫∞£_ª∞£
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 º√π∆_∆ª∏ª∞.ONOMA, COUNT (*)
FROM º√π∆_∆ª∏ª∞
GROUP BY º√π∆_∆ª∏ª∞.ONOMA
HAVING COUNT (*) <=1;
Με δεδοµένο ότι σε κάθε τµήµα έχουµε εισάγει από δύο φοιτητές ο πίνακας που θα προ-
κύψει θα είναι κενός. Μπράβο σας, εάν απαντήσατε σωστά σε αυτή την άσκηση, γιατί ήταν
αρκετά δύσκολη άσκηση. Σε αντίθετη περίπτωση, µην απογοητεύεστε, αλλά αφιερώστε
λίγο χρόνο στο να πειραµατιστείτε µε τη σύνδεση των πινάκων.

5.14
Η ερώτηση σε SQL είναι:
SELECT ∫∞£_ª∞£.ONOMA, ∫∞£_ª∞£.∂¶ø¡Àª√, COUNT (*)
FROM ∫∞£_ª∞£
GROUP BY ∫∞£_ª∞£.∂¶ø¡Àª√, ∫∞£_ª∞£.ONOMA
HAVING COUNT(*)>2;
Προσέξτε ότι στο GROUP BY χρησιµοποιούµε τόσο το όνοµα και το επώνυµο αφού κλει-
δί στους καθηγητές είναι και τα δύο. Ο πίνακας που θα προκύψει ακολουθεί

ONOMA EΠΩNYMO
Κωνσταντίνος Μακρύς 3

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

5.15
Η εντολή διαγραφής στη γλώσσα SQL είναι
DELETE FROM º√π∆∏∆∏™
WHERE ∏ª_°∂¡ = 20–08–1978;
Ο πίνακας που θα προκύψει θα έχει δύο φοιτητές λιγότερους, οι οποίοι και διαγράφηκαν
ως αποτέλεσµα της εντολής και ακολουθεί
196 A¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™ / KEº. 5 & 6

Φ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Σ
ΟΝΟΜΑ ΕΠΩΝΥΜΟ ΠΑΤΡΩΝΥΜΟ BAΘMI∆A ΗΜ_ΓΕΝ
P. P.
LIKE ‘Μιχ%’

Θυµηθείτε ότι, όπως είπαµε και σε αντίστοιχη άσκηση στην SQL, στα δεδοµένα που έχου-
µε εισάγει έχουµε δώσει δύο καθηγητές µε όνοµα ‘Μιχάλης’, µόνο που τον ένα τον εισά-
γαµε ως ‘Μιχάλης’ και τον άλλον ως ‘Μιχαήλ’. Με την εντολή αυτή θα βρούµε και τους
δύο, ενώ αν βάζαµε κάτω από το όνοµα ‘Μιχάλης’ θα βρίσκαµε µόνο τον ένα. Ακολουθεί
και ο πίνακας που θα προκύψει ως αποτέλεσµα της απάντησης

ΟΝΟΜΑ ΕΠΩΝΥΜΟ
Μιχαήλ Βαρδής
Μιχάλης Ξανθός

Μπράβο σας εάν απαντήσατε σε όλα σωστά. Σε αντίθετη περίπτωση, ξαναδιαβάστε τα


παραδείγµατα και πειραµατιστείτε πριν προχωρήσετε στις επόµενες ασκήσεις.
198 A¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™ / KEº. 6

6.4
Η ερώτηση σε QBE θα αποτελείται από πολλούς πίνακες, αφού είναι ερώτηση σύνδεσης
και από έναν πίνακα για τον καθορισµό του αποτελέσµατος. Οι πίνακες είναι οι εξής:

ΦOITHTHΣ
ΟΝΟΜΑ ΕΠΩΝΥΜΟ ΠΑΤΡΩΝΥΜΟ AM ΗΜ_ΓΕΝ
_ΟΝ _ΕΠ _ΠΑ _ΑΜ

ΦOIT_MAΘ MAΘHMA
AM KΩ∆IKOΣ KΩ∆IKOΣ ΟΝΟΜΑ ETOΣ_∆I∆AΣK
_ΑΜ _KΩ∆ _KΩ∆ _ONMAΘ

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
KΩ∆IKOΣ ΟΝΟΜΑ ETOΣ_∆I∆AΣK
_KΩ∆

KAΘ_ΜΑΘ
ΟΝΟΜΑ EΠΩNYMO KΩ∆IKOΣ
_ONK _EΠK _KΩ∆

KAΘHΓHTHΣ
ΟΝΟΜΑ ΕΠΩΝΥΜΟ ΠΑΤΡΩΝΥΜΟ BAΘMI∆A ΗΜ_ΓΕΝ
_ΟΝK _EΠK

AΠANTHΣH
ΕΠΩΝΥΜΟ AM ΦOIT KΩ∆IKOΣ M ONOMA K EΠΩNYMO K
Ρ._ΟΝΦ Ρ._ΑΜ Ρ._ΚΩ∆ Ρ._ΟΝΚ Ρ._ΕΠΚ

Στους παραπάνω πίνακες χρησιµοποιήσαµε τις µεταβλητές «_ΑΜ», «_ΚΩ∆», «_ΟΝΚ»


και «_ΕΠΚ» για να κάνουµε τη σύνδεση ανάµεσα στους πίνακες. Ακολουθεί ο πίνακας που
θα προκύψει ως αποτέλεσµα της απάντησης
200 A¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™ / KEº. 6

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
ΦOIT_TMHMA MAΘHMA
EΠΩNYMO
AM KΩ∆IKOΣ
ΠATPΩNYMO
KΩ∆IKOΣ ONOMA
AM
ETOΣ_∆I∆AΣK
HM_ΓEN

Οι συνδέσεις έχουν γίνει στα κλειδιά κάθε πίνακα και συγκεκριµένα στα «ΑΜ» και
«ΚΩ∆ΙΚΟΣ».
Ο πίνακας αποτελέσµατος είναι της µορφής που φαίνεται στο επόµενο παράδειγµα.
A¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™ / KEº. 6 201

Field: ΕΠΩΝΥΜΟ ΟΝΟΜΑ ΠATPΩNYMO ΟΝΟΜΑ


Table: ΦΟΙΤΗΤΗΣ ΦΟΙΤΗΤΗΣ ΦΟΙΤΗΤΗΣ MAΘHMA
Sort: Ascending Ascending
Show: ✔ ✔ ✔ ✔
Criteria:
Or:

Σε αυτόν τον πίνακα ο χρήστης έχει σύρει τα πεδία «ΟΝΟΜΑ», «ΕΠΩΝΥΜΟ» και
«ΠΑΤΡΩΝΥΜΟ» από τον πίνακα «ΦΟΙΤΗΤΗΣ» και «ΟΝΟΜΑ» από τον πίνακα
«ΜΑΘΗΜΑ». Επίσης, έχει επιλέξει να είναι όλα εµφανίσιµα στο αποτέλεσµα και να υπάρ-
χει διάταξη πρώτα µε το επώνυµο και µετά µε το όνοµα.
Μπράβο σας, εάν τα καταφέρατε µε αυτή την άσκηση. ∆οκιµάστε να την υλοποιήσετε και
στην πράξη σε κάποιο σύστηµα.

6.7
Οι πίνακες που αποτελούν τη Βάση ∆εδοµένων σε γραφική µορφή είναι όπως περίπου φαί-
νεται παρακάτω
ΦOITHTHΣ
ONOMA
ΦOIT_TMHMA MAΘHMA
EΠΩNYMO
AM KΩ∆IKOΣ
ΠATPΩNYMO
KΩ∆IKOΣ ONOMA
AM
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

Οι συνδέσεις έχουν γίνει στα κλειδιά κάθε πίνακα και συγκεκριµένα στα «ΑΜ» που συν-
δέει τους πίνακες «ΦΟΙΤΗΤΗΣ» και «ΦΟΙΤ_ΜΑΘ», στο πεδίο «ΚΩ∆ΙΚΟΣ» που συνδέ-
202 A¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™ / KEº. 6

ει τόσο τον πίνακα «ΦΟΙΤ_ΜΑΘ» µε τον πίνακα «ΜΑΘΗΜΑ», όσο και τον πίνακα
«ΜΑΘΗΜΑ» µε τον πίνακα «ΚΑΘ_ΜΑΘ» και στο κλειδί «ΟΝΟΜΑ – ΕΠΩΝΥΜΟ», που
συνδέει τους πίνακες «ΚΑΘ_ΜΑΘ» και «ΚΑΘΗΓΗΤΗΣ».
Ο πίνακας αποτελέσµατος είναι της µορφής που φαίνεται στο παρακάτω παράδειγµα

Field: ΕΠΩΝΥΜΟ AM KΩ∆IKOΣ ΟΝΟΜΑ ΟΝΟΜΑ EΠΩNYMO


Table: ΦΟΙΤΗΤΗΣ ΦΟΙΤΗΤΗΣ MAΘHMA MAΘHMA KAΘHΓ. KAΘHΓ.
Sort:
Show: ✔ ✔ ✔ ✔ ✔ ✔
Criteria: < 19400
Or:

Σε αυτόν τον πίνακα ο χρήστης έχει σύρει τα πεδία «ΕΠΩΝΥΜΟ» και «ΑΜ» από τον πίνα-
κα «ΦΟΙΤΗΤΗΣ», τα πεδία «ΟΝΟΜΑ» και «ΚΩ∆ΙΚΟΣ» από τον πίνακα «ΜΑΘΗΜΑ»
και τα πεδία «ΟΝΟΜΑ» και «ΕΠΩΝΥΜΟ» από τον πίνακα «ΚΑΘΗΓΗΤΗΣ». Επίσης,
έχει επιλέξει να είναι όλα εµφανίσιµα στο αποτέλεσµα και έχει δώσει ως κριτήριο
«<19400» στο πεδίο «ΑΜ». Τέλος, δεν έχει καθορίσει αν θα υπάρχει διάταξη των αποτε-
λεσµάτων.
Ο πίνακας µε τα αποτελέσµατα ακολουθεί

ΕΠΩΝΥΜΟ AM KΩ∆IKOΣ ONOMA ONOMA EΠΩNYMO


ΦOITHTH ΦOITHTH MAΘHMATOΣ MAΘHMAT. KAΘHΓHTH KAΘHΓHTH
Βασιλείου 19071 1089 Μαθηµατικά Ειρήνη Νικολαΐδη
Βασιλείου 19071 1239 Γραµµική
Άλγεβρα Ειρήνη Νικολαΐδη
Βασιλείου 19072 1089 Μαθηµατικά Ειρήνη Νικολαΐδη
Βαρδής 19109 1045 Φυσική
Χρήστου 19345 1134 Λογικός
Σχεδιασµός Χρήστος Χρήστου
Χρήστου 19345 1891 ∆οµές
∆εδοµένων Ι Κωνσταντίνος Μακρύς
Χρήστου 19345 1992 Ποιότητα
Λογισµικού Χρήστος Χρήστου
Χρήστου 19344 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
Σε αυτή τη δραστηριότητα σας ζητάµε να «παίξετε το ρόλο» του αναλυτή, δηλαδή του επι-
στήµονα που συζητά µε κάποιον πελάτη, εντοπίζει τις ανάγκες του και προτείνει τεχνολο-
γικές λύσεις που να τον εξυπηρετούν (όταν αυτό είναι εφικτό). Με την εµπειρία που έχετε
206 O ¢ ∏ ° π ∂ ™ ∫ ∞ π ∫ ∞∆ ∂ À £ À ¡ ™ ∂ π ™ ° π ∞ ∆ π ™ ¢ ƒ∞ ™ ∆ ∏ ƒ π √ ∆ ∏ ∆ ∂ ™ / K E º . 1 & 2

θα πρέπει να εντοπίσετε τα δεδοµένα που χρησιµοποιούνται, τις πιθανές ερωτήσεις και το


κυριότερο να αναγνωρίσετε εάν η λύση είναι συµφέρουσα (δηλαδή θα διευκολύνει την επι-
χείρηση στο έργο της) ή όχι. Εάν αξιοποιήσατε την εµπειρία σας από τις δραστηριότητες
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 207

20 Bytes δεσµευµένα για το block


Kωδικός 101 1 7 / 3 / 1 9 9 8
23 Kωδικός 105¦ ∆ ε υ τ έ ρ α
67 Kωδικός 882¦ 1 1 / 8 / 9
7 23 Kωδικός 171¦ A
B Γ 3
Kωδικός 999 T ρ ί τ η
88 Kωδικός 192¦ 2 3 / 1 2 / 1 9 9 7
11 Kωδικός 185¦ M ά ρ τ ι ο
ς 7
20 Bytes δεσµευµένα για το block
Kωδικός 22 1 1 / 1 / 1 9 9 4
3 Kωδικός 1271¦ ∆ ε υ τ έ ρ α
7 Kωδικός 8939¦ 1 8 / 1 / 9
1 7 Kτλ…

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.
208 O ¢ ∏ ° π ∂ ™ ∫ ∞ π ∫ ∞∆ ∂ À £ À ¡ ™ ∂ π ™ ° π ∞ ∆ π ™ ¢ ƒ∞ ™ ∆ ∏ ƒ π √ ∆ ∏ ∆ ∂ ™ / K E º . 3

3.1

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

1. Εάν έχετε βάλει τα στοιχεία για όλα τα µέλη της οικογένειά σας, δεν θα πρέπει να είναι
Iεραρχικό ∆έντρο! Φυσικό είναι, αφού εσείς θα έχετε ως κόµβους γονιούς τους κόµβους
των γονέων σας, δηλαδή θα έχετε δύο κόµβους γονιούς, κάτι που έρχεται σε αντίθεση
µε τον ορισµό της ενότητας 3.1.

2. Όχι, αφού δεν είναι ιεραρχικό δέντρο.

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

3.2

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

3.3

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

3.4
Μπράβο σας, εάν δεν αντιµετωπίσατε κανένα πρόβληµα. Έχουµε δύο οντότητες (τις
«Οµάδα» και «Παίκτης») και δύο σχέσεις: α) τη σχέση «Παίζει», που αναφέρεται σε παί-
κτη που παίζει σε οµάδα και είναι σχέση 1 προς Ν (ένας παίκτης παίζει σε µία µόνο οµάδα,
αλλά µία οµάδα έχει πολλούς παίκτες), και β) τη σχέση αγώνας, που είναι σχέση Ν προς
Μ στην οντότητα «Οµάδα» (δηλαδή συµµετέχουν εγγραφές από την οντότητα οµάδα).
O ¢ ∏ ° π ∂ ™ ∫ ∞ π ∫ ∞∆ ∂ À £ À ¡ ™ ∂ π ™ ° π ∞ ∆ π ™ ¢ ƒ∞ ™ ∆ ∏ ƒ π √ ∆ ∏ ∆ ∂ ™ / K E º . 3 209

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

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

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

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

3.9

Σε αυτή τη ΠΠσας ζητήθηκαν στοιχεία που αναφέραµε στο κεφάλαιο 2. Σε περίπτωση που
αντιµετωπίσατε πρόβληµα, ίσως θα έπρεπε να αφιερώσετε κάποιο χρόνο για µία επανά-
ληψη τόσο στο κεφάλαιο 2 όσο και στο κεφάλαιο 3. Πάντως, εάν µεταφέρατε στο χαρτί
ότι ακριβώς παρουσιάζεται στο σχήµα 3.9, δεν θα έπρεπε να είχατε πρόβληµα. Θυµηθείτε
210 O ¢ ∏ ° π ∂ ™ ∫ ∞ π ∫ ∞∆ ∂ À £ À ¡ ™ ∂ π ™ ° π ∞ ∆ π ™ ¢ ƒ∞ ™ ∆ ∏ ƒ π √ ∆ ∏ ∆ ∂ ™ / K E º . 3 & 4

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


να εµφανίζονται στις σχέσεις στις οποίες συµµετέχει αυτή η οντότητα.

3.10

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

Μπράβο σας εάν εντοπίσατε προβλήµατα, όπως τα παραπάνω. Προσπαθήστε να µετατρέ-


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

4.1

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

4.2

Λογικά δεν θα έπρεπε να αντιµετωπίσετε προβλήµατα µε δεδοµένο ότι είχατε υλοποιήσει


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

4.3

Λογικά δεν θα έπρεπε να αντιµετωπίσετε προβλήµατα µε δεδοµένο ότι έχετε εµπειρία στις
προβολές από τις προηγούµενες ασκήσεις. Θα έπρεπε να πάρετε προβολές είτε µε µόνο το
«Όνοµα», είτε µε µόνο το «Επώνυµο», είτε και µε τα δύο από τους πίνακες «Παίκτης» και
«Μάνατζερ» και να επιβεβαιώσετε την ισότητα συγκρίνοντας τα αποτελέσµατα των πρά-
ξεων.
O ¢ ∏ ° π ∂ ™ ∫ ∞ π ∫ ∞∆ ∂ À £ À ¡ ™ ∂ π ™ ° π ∞ ∆ π ™ ¢ ƒ∞ ™ ∆ ∏ ƒ π √ ∆ ∏ ∆ ∂ ™ / K E º . 4 & 5 211

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
Μπράβο σας, εάν τα καταφέρατε. Γενικά, µη διστάζετε να πειραµατίζεστε µε τη Βάση
212 O ¢ ∏ ° π ∂ ™ ∫ ∞ π ∫ ∞∆ ∂ À £ À ¡ ™ ∂ π ™ ° π ∞ ∆ π ™ ¢ ƒ∞ ™ ∆ ∏ ƒ π √ ∆ ∏ ∆ ∂ ™ / K E º . 5

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

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

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

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

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

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

5.9
Η εκτέλεση αυτής της δραστηριότητας σχετίζεται άµεσα µε το σύστηµα που χρησιµοποι-
είτε. Σε περίπτωση που αντιµετωπίσατε δυσκολίες, αυτό µπορεί και να οφείλεται στο
O ¢ ∏ ° π ∂ ™ ∫ ∞ π ∫ ∞∆ ∂ À £ À ¡ ™ ∂ π ™ ° π ∞ ∆ π ™ ¢ ƒ∞ ™ ∆ ∏ ƒ π √ ∆ ∏ ∆ ∂ ™ / K E º . 5 & 6 213

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

5.10
Σε περίπτωση που τα καταφέρατε µε τη δραστηριότητα 9 δεν θα πρέπει να αντιµετωπίσα-
τε πρόβληµα ούτε µε αυτή τη δραστηριότητα. Μπράβο σας εάν χρησιµοποιήσατε και τις
εντολές UPDATE και DELETE για να διορθώσετε πιθανά λάθη που κάνατε.

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

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

6.3
Ένα βασικό πλεονέκτηµα του συστήµατος αυτού είναι ότι µπορείτε να δώσετε την ερώτη-
ση σε µία από τις γλώσσες που µάθαµε (SQL ή QBE) και να δείτε την ίδια ερώτηση αυτό-
µατα και στην άλλη γλώσσα. Μπράβο σας, εάν το ανακαλύψατε και πειραµατιστήκατε µε
αυτό.
214 O ¢ ∏ ° π ∂ ™ ∫ ∞ π ∫ ∞∆ ∂ À £ À ¡ ™ ∂ π ™ ° π ∞ ∆ π ™ ¢ ƒ∞ ™ ∆ ∏ ƒ π √ ∆ ∏ ∆ ∂ ™ / K E º . 7

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
216 A§º∞µ∏∆π∫√ ∂Àƒ∂∆∏ƒπ√ √ƒø¡ (∂§§∏¡π∫∞ – ∞°°§π∫∞)

Ιεραρχικό Μοντέλο 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 Πληροφορία
218 A§º∞µ∏∆π∫√ ∂Àƒ∂∆∏ƒπ√ √ƒø¡ (∞°°§π∫∞ – ∂§§∏¡π∫∞)

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

Χρήστες Βάσης ∆εδοµένων


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

You might also like