Professional Documents
Culture Documents
Πρόγραµµα Σπουδών
ΠΛ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
ISBN: 960–538–116–8
Kωδικός Έκδοσης: ΠΛH 11/3
Πρόλογος ............................................................................................................................................... 9
K∂º∞§∞π√ 1
EÈÛ·ÁˆÁ‹
K∂º∞§∞π√ 2
AÚ¯ÈÙÂÎÙÔÓÈ΋ Î·È º˘ÛÈ΋ OÚÁ¿ÓˆÛË Aگ›ˆÓ
K∂º∞§∞π√ 3
ªÔÓÙÂÏÔÔ›ËÛË Î·È £¤Ì·Ù· ™¯Â‰›·Û˘
K∂º∞§∞π√ 4
™¯ÂÛȷΤ˜ B¿ÛÂȘ ¢Â‰Ô̤ӈÓ
K∂º∞§∞π√ 5
H °ÏÒÛÛ· EÚˆÙ‹ÛÂˆÓ SQL
K∂º∞§∞π√ 6
H °ÏÒÛÛ· EÚˆÙ‹ÛÂˆÓ QBE
K∂º∞§∞π√ 7
∞ÓÙÈÎÂÈÌÂÓÔÛÙÚ·Ê›˜ B¿ÛÂȘ ¢Â‰Ô̤ӈÓ
K∂º∞§∞π√ 8
AÓ·ÎÂÊ·Ï·›ˆÛË Î·È EfiÌÂÓ· B‹Ì·Ù· MÂϤÙ˘
Στον τρίτο τόµο της Θεµατικής Ενότητας «Αρχές Τεχνολογίας Λογισµικού» που
έχετε στα χέρια σας και που έχει τίτλο «Βάσεις ∆εδοµένων» θα µιλήσουµε για τα
εργαλεία του υπολογιστή που χρησιµοποιούνται για την οργάνωση των δεδοµένων
µας καθώς και για να δίνουν απαντήσεις σε ερωτήσεις που σχετίζονται µε αυτά τα
δεδοµένα.
Στο 6ο κεφάλαιο περιγράφουµε τη γλώσσα ερωτήσεων QBE, µιλάµε για τις συνθή-
κες σε QBE και δείχνουµε πώς η QBE µπορεί να χρησιµοποιηθεί σε συνεργασία µε
ένα γραφικό περιβάλλον υποβολής ερωτήσεων.
Στο 7ο κεφάλαιο περιγράφουµε πολύ συνοπτικά τις βασικές αρχές των αντικειµε-
νοστραφών Βάσεων ∆εδοµένων και σας παρουσιάζουµε βασικές έννοιες της αντι-
κειµενοστραφούς γλώσσας ερωτήσεων OQL και της SQL3.
Τέλος, στο 8ο κεφάλαιο κάνουµε µία σύνοψη της ύλης που παρουσιάσαµε και σας
10 BA™EI™ ¢E¢OMENøN
Mερικοί από εσάς, που έχουν ήδη κάποιες γνώσεις πληροφορικής, θα παρατηρήσουν
ότι κάποιοι ορισµοί στο βιβλίο δεν είναι αυτοί που θα περίµεναν. Aυτό έχει γίνει
γιατί δεν θέλουµε να δώσουµε ορισµούς που περιέχουν έννοιες που δεν έχετε διδα-
χθεί. Έτσι, αρκετοί ορισµοί έχουν απλοποιηθεί για να είναι κατανοητοί από όλους
σας, µε βάση τις γνώσεις που έχετε αποκτήσει µέχρι τώρα.
• τις βασικές αρχές των Βάσεων ∆εδοµένων και των Συστηµάτων ∆ιαχείρισης
Βάσεων ∆εδοµένων,
Παρακαλούµε για την κατανόησή σας σχετικά µε µικρολάθη ή παραλήψεις που πιθα-
νόν µας «ξέφυγαν» κατά τη συγγραφή αυτού του βιβλίου, και που ίσως εντοπίσετε·
θα εκτιµούσαµε πολύ την ευγενική συνεισφορά σας για τον εντοπισµό και τη διόρ-
θωσή τους. Παρόλα αυτά, είµαστε σίγουροι ότι το βιβλίο αυτό θα αποτελέσει ένα
πολύτιµο «εργαλείο µάθησης» στα χέρια σας.
™ÎÔfi˜
1
º ∞ § ∞ π √
¶ÚÔÛ‰ÔÎÒÌÂÓ· ∞ÔÙÂϤÛÌ·Ù·
ŒÓÓÔȘ ÎÏÂȉȿ
• Βάση ∆εδοµένων (Database)
• Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων (Database Management
System (DBMS))
• ∆εδοµένα (Data)
• Πληροφορία (Information)
• Οργάνωση ∆εδοµένων (Data Organization)
12 KEºA§AIO 1: EI™A°ø°H
∂ÈÛ·ÁˆÁÈΤ˜ ¶·Ú·ÙËÚ‹ÛÂȘ
™ÎÔfi˜
Σκοπός της ενότητας είναι να ορίσει τις βασικές έννοιες µε τις οποίες
θα ασχοληθούµε στη συνέχεια του µαθήµατος, δηλαδή τα δεδοµένα,
την πληροφορία, τη Βάση ∆εδοµένων, το σκοπό της Βάσης ∆εδοµένων
(δηλαδή το λόγο δηµιουργίας και χρήσης της) και τους χρήστες µιας
Βάσης ∆εδοµένων.
¶ÚÔÛ‰ÔÎÒÌÂÓ· ∞ÔÙÂϤÛÌ·Ù·
∂ÈÛ·ÁˆÁÈΤ˜ ¶·Ú·ÙËÚ‹ÛÂȘ
Στην ενότητα αυτή θα δοθούν οι βασικοί όροι τόσο στα Ελληνικά όσο
και στα Αγγλικά (σε παρενθέσεις). Αυτό γίνεται ώστε να σας δώσουµε
τη δυνατότητα να γνωρίζετε και την αγγλική µετάφραση του κάθε όρου,
µια και η περισσότερη βιβλιογραφία που παρατίθεται στο τέλος του
κεφαλαίου είναι στα αγγλικά.
Έτσι όπως ορίσαµε τα δεδοµένα είναι φανερό ότι είναι κατάλληλα για
αποθήκευση σε ηλεκτρονικό υπολογιστή. Οι άνθρωποι, όµως, χρησι-
µοποιούσαν δεδοµένα –πολύ πριν από την ανακάλυψη των ηλεκτρο-
νικών υπολογιστών– στα πλαίσια ενός πεδίου αναφοράς για την εξα-
γωγή συµπερασµάτων ή την λήψη αποφάσεων. Για παράδειγµα, από
τα δεδοµένα {85, 210, 515} και τα δεδοµένα {“Κόρινθος”, “Πάτρα”,
“Θεσσαλονίκη”}, αλλά και από τη γνώση (πεδίο αναφοράς) ότι τα
πρώτα δεδοµένα περιγράφουν αποστάσεις από την Αθήνα για τις
πόλεις που ορίζονται στα δεύτερα δεδοµένα, κάποιος µπορεί να κατα-
λάβει ότι «η Πάτρα είναι πιο µακριά από την Αθήνα από ότι η Κόριν-
θος, αλλά πολύ κοντύτερα στην Aθήνα από ότι η Θεσσαλονίκη». Αυτό
■ Η πληροφορία εξάγεται το συµπέρασµα είναι πληροφορία. ■
από τα δεδοµένα και Συνοψίζοντας µπορούµε να πούµε ότι τα δεδοµένα είναι κωδικοποιη-
χρησιµοποιείται στην µένη αναπαράσταση πληροφορίας, ενώ η πληροφορία εξάγεται από
επίλυση προβληµάτων. τα δεδοµένα µε βάση το πεδίο αναφοράς των δεδοµένων ή συγκεκρι-
µένη γνώση για αυτά.
¶·Ú¿‰ÂÈÁÌ· 1.1
δ) Όλα τα παραπάνω.
¶·Ú¿‰ÂÈÁÌ· 1.2
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
™ÎÔfi˜
Σκοπός της ενότητας είναι η περιγραφή του Συστήµατος ∆ιαχείρισης
Βάσεων ∆εδοµένων και των δυνατοτήτων που παρέχει, καθώς και η
περιγραφή του υλικού και του λογισµικού που συνεργάζονται σε ένα
Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων.
¶ÚÔÛ‰ÔÎÒÌÂÓ· ∞ÔÙÂϤÛÌ·Ù·
Όταν θα έχετε ολοκληρώσει τη µελέτη αυτής της ενότητας θα µπορείτε να:
• εξηγήσετε τη δοµή και τη λειτουργικότητα ενός Συστήµατος ∆ιαχεί-
ρισης Βάσεων ∆εδοµένων
• διακρίνετε ανάµεσα σε Βάσεις ∆εδοµένων και Συστήµατα ∆ιαχείρι-
σης Βάσεων ∆εδοµένων
• εξηγήσετε τη σχέση υλικού και λογισµικού σε ένα Σύστηµα ∆ιαχείρι-
σης Βάσεων ∆εδοµένων
• περιγράψετε τι µας παρέχει ένα Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων
Bάση
δεδοµένων 1 Λογισµικό
Λογισµικό αποθήκευσης
χειρισµού και
…
Aποθηκευµένα
™¯‹Ì· 1.1 ερωτήσεων ανάκλησης δεδοµένα
Bάση δεδοµένων
Σύστηµα ∆ιαχείρισης δεδοµένων N
Βάσεων ∆εδοµένων
Ακολουθούν µερικές προτάσεις. Ποιες από αυτές είναι σωστές και ÕÛÎËÛË
·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
ποιες λάθος Επιλέξτε Σωστό ή Λάθος.
1.4
Σωστό Λάθος
Για κάθε Βάση ∆εδοµένων χρειαζόµαστε
διαφορετικό Σύστηµα ∆ιαχείρισης Βάσεων
∆εδοµένων. ❏ ❏
Τη µεταφορά των δεδοµένων από και προς
το υλικό αποθήκευσης την αναλαµβάνει
το Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων. ❏ ❏
Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων
είναι πολλές Βάσεις ∆εδοµένων µαζί. ❏ ❏
Το Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων
αποτελείται από το Λογισµικό Χειρισµού
Ερωτήσεων, το Λογισµικό Αποθήκευσης και
Ανάκλησης ∆εδοµένων και το Υλικό
Αποθήκευσης των ∆εδοµένων. ❏ ❏
24 KEºA§AIO 1: EI™A°ø°H
Όπως σας αναφέραµε στο τέλος της ενότητας 1.2.2 µία Βάση ∆εδο-
µένων µπορεί να υλοποιηθεί και αυτόνοµα χωρίς να χρησιµοποιηθεί
ένα Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων. Όµως κατά κανόνα οι
παροχές ενός Συστήµατος ∆ιαχείρισης Βάσεων ∆εδοµένων είναι αυτές
που τελικά ωθούν τους χρήστες να το χρησιµοποιήσουν. Στην ενότη-
τα αυτή θα περιγράψουµε τι παρέχει ένα Σύστηµα ∆ιαχείρισης Βάσε-
ων ∆εδοµένων.
¢Ú·ÛÙËÚÈfiÙËÙ· 1.2 Στο παράδειγµα 1.1 παρουσιάσαµε µία Μετεωρολογική Βάση ∆εδο-
µένων. Σε αυτή τη Βάση ∆εδοµένων δεν µιλήσαµε ούτε για επίπεδα
χρηστών, ούτε για περιορισµούς ορθότητας. Με βάση την εµπειρία
που αποκτήσατε από τη µελέτη της παραπάνω ενότητας προτείνετε
τουλάχιστον δύο επίπεδα χρηστών (και περιγράψτε ποιες δυνατότη-
τες θα επιτρέπει το Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων για
κάθε κατηγορία). Επίσης προτείνετε τουλάχιστον τρεις περιορισµούς
ορθότητας και τεκµηριώστε γιατί τους προτείνετε.
1.3 ∆π ¶∞ƒ∂Ã∂π ∏ µ∞™∏ ¢∂¢√ª∂¡ø¡ 27
™ÎÔfi˜
¶ÚÔÛ‰ÔÎÒÌÂÓ· ∞ÔÙÂϤÛÌ·Ù·
∂ÈÛ·ÁˆÁÈΤ˜ ¶·Ú·ÙËÚ‹ÛÂȘ
Ένα βασικό κέρδος από την χρήση Βάσης ∆εδοµένων είναι η δυνα-
τότητα που παρέχει σε πολλούς χρήστες να έχουν ταυτόχρονη προ-
σπέλαση στα δεδοµένα, αλλά και η αυτοµατοποίηση των ελέγχων που
συνεπάγεται αυτή η ταυτόχρονη προσπέλαση. Για παράδειγµα, το
Σύστηµα ∆ιαχείρισης της Bάσης ∆εδοµένων φροντίζει να αποκλείει
περιπτώσεις ταυτόχρονης αλλαγής ενός δεδοµένου από δύο ή περισ-
σότερους χρήστες.
1.3.3 E˘ÂÏÈÍ›·
ÕÛÎËÛË Ακολουθούν µερικές προτάσεις. Ποιες από αυτές είναι σωστές και
·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
ποιες λάθος;
1.5
Σωστό Λάθος
Η χρήση της Βάσης ∆εδοµένων
µας εξασφαλίζει ότι δύο χρήστες δεν θα
µπορέσουν να διαβάσουν ταυτόχρονα
τα ίδια δεδοµένα. ❏ ❏
Η Βάση ∆εδοµένων παρέχει ένα µηχανισµό
που παρέχει ταχύτατα απαντήσεις
σε ερωτήσεις του χρήστη. ❏ ❏
Η Βάση ∆εδοµένων δεν επιτρέπει αλλαγές
στη µορφή των δεδοµένων. ❏ ❏
Η ποιότητα των δεδοµένων είναι καλύτερη,
εάν χρησιµοποιήσουµε αρχεία αντί
για Βάση ∆εδοµένων. ❏ ❏
™ÎÔfi˜
Έχοντας ολοκληρώσει τις ενότητες 1.1 έως 1.3 έχετε µάθει τη χρησι-
µότητα των Βάσεων ∆εδοµένων και γνωρίζετε τις λειτουργίες που
παρέχει ένα Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων. Ο σκοπός
αυτής της ενότητας είναι να µελετήσετε τους χρήστες ενός Συστήµατος
∆ιαχείρισης Βάσεων ∆εδοµένων, καθώς και τους χρήστες των Βάσε-
ων ∆εδοµένων που δηµιουργούνται µε αυτό και να εξετάσετε τις αρµο-
διότητες και τα δικαιώµατα καθενός από αυτούς.
¶ÚÔÛ‰ÔÎÒÌÂÓ· ∞ÔÙÂϤÛÌ·Ù·
Όταν θα έχετε ολοκληρώσει τη µελέτη αυτής της ενότητας θα µπορεί-
τε να:
• περιγράψετε τους χρήστες ενός Συστήµατος ∆ιαχείρισης Βάσεων
∆εδοµένων
• επιλέξετε τις κατηγορίες χρηστών που θα έχουν πρόσβαση στη Bάση
∆εδοµένων, όταν σας δίνεται ένα πρόβληµα του πραγµατικού
κόσµου που θα υλοποιηθεί µε Βάση ∆εδοµένων
• αναφέρετε τα δικαιώµατα και τους περιορισµούς για κάθε χρήστη
∂ÈÛ·ÁˆÁÈΤ˜ ¶·Ú·ÙËÚ‹ÛÂȘ
¢Ú·ÛÙËÚÈ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ς σηµειωθεί ότι το πρόβληµα πελάτες – προϊόντα – αποθήκη είναι
ένα πολύ κοινό πρόβληµα και περιγράφεται σχεδόν σε κάθε βιβλίο
για Βάσεις ∆εδοµένων. ∆εν ζητάµε από εσάς να µας δώσετε ένα γενι-
κό µοντέλο που θα βρείτε σε κάποιο βιβλίο, αλλά ένα µοντέλο του
πραγµατικού κόσµου για µία συγκεκριµένη και υπαρκτή επιχείρηση.
™ÎÔ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˜
¶ÚÔÛ‰ÔÎÒÌÂÓ· ∞ÔÙÂϤÛÌ·Ù·
∂ÈÛ·ÁˆÁÈΤ˜ ¶·Ú·ÙËÚ‹ÛÂȘ
Eπίπεδο
αντίληψης
™¯‹Ì· 2.1
Επίπεδα Αρχιτεκτονικής
■ Ως επίπεδο αντίληψης Θα πρέπει να σηµειωθεί ότι ο δίπλα ορισµός του επιπέδου αντίληψης
(ιδεατό επίπεδο) της αρχιτε- δεν είναι ακριβής. Όµως για να δοθεί ένας πλέον απόλυτος ορισµός,
κτονικής µίας Βάσης ∆εδοµέ- χρειάζεται αναφορά σε έννοιες που δεν έχετε ακόµη διδαχθεί. Για να
νων ορίζεται το επίπεδο στο κατανοήσετε το ρόλο του επίπεδου αντίληψης θα δώσουµε ένα παρά-
οποίο περιγράφεται το σχήµα δειγµα µετάβασης από το εξωτερικό επίπεδο στο φυσικό επίπεδο,
της Βάσης ∆εδοµένων µε βασιζόµενοι στη µετεωρολογική Βάση ∆εδοµένων του παραδείγµα-
αυστηρά καθορισµένο τρόπο, τος 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
η επιθυµητή απάντηση µε τρόπο κατανοητό από το χρήστη γίνεται στο
Από το Εξωτερικό
επίπεδο αντίληψης (δηλαδή η µετάβαση από την εντολή του χρήστη
στο Εσωτερικό Επίπεδο
Ποιά είναι η
θερµοκρασία … 101, 36116
Eπίπεδο
αντίληψης 101, 36116, 17
17
17 βαθµοί
2.1 E¶π¶∂¢∞ AƒÃπ∆∂∫∆√¡π∫∏™ 45
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.2
Σωστό Λάθος
Ο χρήστης πρέπει να περιγράφει κάθε εντολή
που δίνει στο εξωτερικό επίπεδο µε την
αντίστοιχη εντολή στο φυσικό επίπεδο. ❏ ❏
Το επίπεδο αντίληψης συνδέει το φυσικό
επίπεδο µε το εξωτερικό επίπεδο. ❏ ❏
Ο χρήστης βλέπει τα δεδοµένα στο
εξωτερικό επίπεδο. ❏ ❏
∆ιαφάνεια σηµαίνει ότι ο χρήστης βλέπει
τη µορφή των δεδοµένων για κάθε επίπεδο. ❏ ❏
Στο επίπεδο αντίληψης δεν επιτελούνται
στην πραγµατικότητα λειτουργίες, απλά είναι
ένα επίπεδο για να συνδέει το φυσικό
µε το εξωτερικό επίπεδο. ❏ ❏
Βασισµένοι στο παράδειγµα 1.1 δώστε τρεις εντολές για τη Βάση ¢Ú·ÛÙËÚÈfiÙËÙ· 2.1
∆εδοµένων του παραδείγµατος. Για κάθε µία από αυτές τις εντολές
σχεδιάστε τις εντολές όπως θα τις βλέπει ο χρήστης στο εξωτερικό
επίπεδο και όπως φαντάζεστε ότι θα εµφανίζονται στο φυσικό επί-
πεδο.
48 K E º A § A I O 2 : A ƒ Ã π ∆ ∂ ∫ ∆ √ ¡ π ∫ ∏ ∫ ∞ π º À ™ π ∫ ∏ O ƒ °∞ ¡ ø ™ ∏ A ƒ Ã ∂ π ø ¡
™ÎÔfi˜
Σκοπός της ενότητας είναι να παρουσιάσουµε τις βασικές έννοιες
που σχετίζονται µε την οργάνωση των δεδοµένων στο φυσικό επίπε-
δο, καθώς και τον τρόπο µε τον οποίο οργανώνονται τα δεδοµένα
στις µονάδες αποθήκευσης του υπολογιστή.
¶ÚÔÛ‰ÔÎÒÌÂÓ· ∞ÔÙÂϤÛÌ·Ù·
Όταν θα έχετε ολοκληρώσει τη µελέτη αυτής της ενότητας θα µπο-
ρείτε να:
• περιγράψετε τις έννοιες «τύποι δεδοµένων», «πεδία», «εγγραφές»
και «αρχεία»
• εξηγήσετε τον τρόπο οργάνωσης των δεδοµένων σε αρχεία στο φυσι-
κό επίπεδο
• δώσετε παραδείγµατα εγγραφών για ένα συγκεκριµένο πρόβληµα
∂ÈÛ·ÁˆÁÈΤ˜ ¶·Ú·ÙËÚ‹ÛÂȘ
Στην ενότητα 2.2.1 παρουσιάζονται οι ορισµοί των τύπων δεδοµένων
και των πεδίων, ενώ στην ενότητα 2.2.2 οι ορισµοί των εγγραφών και
των αρχείων. Τέλος στην ενότητα 2.2.3 περιγράφονται οι µονάδες απο-
θήκευσης που χρησιµοποιεί µία Βάση ∆εδοµένων.
¢Ú·ÛÙËÚÈfiÙËÙ· 2.3 Χρησιµοποιώντας τις εγγραφές που έχετε δώσει στην απάντηση της
δραστηριότητας 2.2, σχεδιάστε τον τρόπο που θα είχαν αποθηκευτεί
αυτές οι 20 εγγραφές σε ένα αρχείο. Χρησιµοποιήστε τετραγωνι-
σµένο χαρτί και αναγράψτε τις εγγραφές χρησιµοποιώντας τα µεγέ-
θη (για εγγραφή και block) της άσκησης αυτοαξιολόγησης 4 του
κεφαλαίου 2.
™ÎÔfi˜
Σκοπός της ενότητας είναι να παρουσιάσουµε τον τρόπο µε τον
οποίο οργανώνονται τα αρχεία στο σύστηµα αποθήκευσης του υπο-
λογιστή και να περιγράψουµε βασικές τεχνικές που διευκολύνουν την
αναζήτηση των δεδοµένων από τα αρχεία, όπως η χρήση δεικτών
και καταλόγων.
¶ÚÔÛ‰ÔÎÒÌÂÓ· ∞ÔÙÂϤÛÌ·Ù·
Όταν θα έχετε ολοκληρώσει τη µελέτη αυτής της ενότητας θα µπο-
ρείτε να:
• σχεδιάσετε τη µορφή ενός αρχείου στο δίσκο µετά από µία ακολου-
θία πράξεων
• περιγράψετε τις έννοιες «κατάλογοι», «δείκτες», «αναδιάταξη αρχεί-
ου» και «διατεταγµένα αρχεία»
• εξηγήσετε τις διαφορές ανάµεσα σε αρχεία µε εγγραφές σταθερού
µήκους και αρχεία µε εγγραφές µεταβλητού µήκους
• υπολογίσετε την επιβάρυνση σε χώρο αποθήκευσης από τη χρήση
καταλόγων
• περιγράψετε τις βασικές αρχές των δέντρων τύπου Β και των
δέντρων τύπου Β+
2 . 3 O ƒ °∞ ¡ ø ™ ∏ ∞ ƒ Ã ∂ π ø ¡ ™ ∆ √ º À ™ π ∫ √ ∂ ¶ π ¶ ∂ ¢ √ 53
∂ÈÛ·ÁˆÁÈΤ˜ ¶·Ú·ÙËÚ‹ÛÂȘ
Στην ενότητα 2.3.1 παρουσιάζονται οι βασικές έννοιες της οργάνωσης
αρχείων στο φυσικό επίπεδο όπως είναι η διάταξη των αρχείων, η
χρήση καταλόγων, και η χρήση εγγραφών µεταβαλλόµενου µήκους.
Στην ενότητα 2.3.2 περιγράφουµε την τεχνική κατακερµατισµού των
αρχείων, στην ενότητα 2.3.3 συζητούµε το θέµα τις δεικτοδότησης των
αρχείων και περιγράφουµε τους καταλόγους και τέλος στην ενότητα
2.3.4 συζητούµε για τα δέντρα τύπου Β και δέντρα τύπου Β+.
γωγή µίας νέας εγγραφής δεν είναι τόσο εύκολο να γίνει στο σηµείο
που είχε διαγραφεί κάποια άλλη. Έτσι κάποιες φορές προκύπτει η ανά-
γκη αναδιάρθρωσης του αρχείου. Αναδιάρθρωση σηµαίνει ανάγνω-
ση όλων, ή τµήµατος, των εγγραφών και τοποθέτησή τους εκ νέου στη
µονάδα αποθήκευσης. Αναδιάρθρωση µπορεί να γίνει για πολλούς
λόγους, όπως θα δούµε και στις επόµενες ενότητες.
Η µορφή αποθήκευσης των δεδοµένων στο δίσκο που προέκυψε από
το αποτέλεσµα της δραστηριότητας 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.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.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 έχουµε
·˘ÙÔ·ÍÈÔÏ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
να. Μόλις αυτός ο κόµβος γεµίσει, τότε δηµιουργούνται δύο κόµβοι παι-
διά του και αυτός ο κόµβος διατηρεί µόνο τη µεσαία τιµή (και, φυσικά,
τους δείκτες για τα παιδιά). Οι υπόλοιπες τιµές µοιράζονται στα παιδιά.
Αυτό συµβαίνει κάθε φορά που ο κάθε κόµβος γεµίζει, κ.ο.κ.
Τα δέντρα τύπου Β+ είναι εξειδίκευση των δέντρων τύπου Β. Στα
δέντρα τύπου Β+ υπάρχει ο επιπλέον περιορισµός ότι τα δεδοµένα (δεί-
κτες προς τα blocks που περιέχουν δεδοµένα) αποθηκεύονται µόνο
στα φύλλα του δέντρου και, συνήθως, τα φύλλα ενός δέντρου τύπου
Β+ είναι συνδεδεµένα µεταξύ τους παρέχοντας µια ενιαία διατεταγµέ-
νη µορφή καταλόγου. Έτσι, όλοι οι κόµβοι που δεν είναι φύλλα περιέ-
χουν δείκτες του ίδιου του δέντρου, αλλά όχι δείκτες σε δεδοµένα.
Αυτό σηµαίνει ότι στους εσωτερικούς κόµβους µπορούν να αποθη-
κευτούν περισσότεροι δείκτες, άρα να µικρύνει πολύ το βάθος του
δέντρου και ο χρόνος αναζήτησης.
Υπάρχουν αλγόριθµοι που περιγράφουν την εισαγωγή και τη διαγρα-
φή δεδοµένων από τα δέντρα τύπου Β και τα δέντρα τύπου Β+, τους
οποίους µπορείτε να βρείτε στη βιβλιογραφία. Γενικά, τα δέντρα τύπου
Β και τύπου Β+ περιγράφονται εκτενώς στη βιβλιογραφία, κάτι που
δεν έγινε σε αυτό το βιβλίο, αφού θεωρήσαµε καλό να δώσουµε τις
γενικές αρχές των δέντρων αυτών και να σας αφήσουµε να τα µελε-
τήσετε σε βάθος από τη σχετική βιβλιογραφία.
BA™EI™ ¢E¢OMENøN 61
™‡ÓÔ„Ë
Στο κεφάλαιο αυτό µιλήσαµε για την οργάνωση της Βάσης ∆εδοµένων
στο φυσικό επίπεδο. Περιγράψαµε βασικά στοιχεία της αρχιτεκτονι-
κής Βάσεων ∆εδοµένων και αναλύσαµε τον τρόπο µε τον οποίο οργα-
νώνονται τα αρχεία στο φυσικό επίπεδο. Περιγράψαµε την οργάνωση
των αρχείων ως συλλογή εγγραφών, που περιέχουν τιµές για τα πεδία
και µελετήσαµε τρόπους για δεικτοδότηση αρχείων και δηµιουργία
καταλόγων.
Εάν θέλετε να επεκταθείτε σε θέµατα του φυσικού επιπέδου, όπως είναι
ο κατακερµατισµός αρχείων (τεχνικές και αλγόριθµοι) και τα δέντρα
τύπου Β που δεν καλύψαµε σε βάθος, σας συµβουλεύουµε να ανατρέ-
ξετε στη σχετική βιβλιογραφία που παραθέτουµε ακολούθως.
™ÎÔfi˜
3
º ∞ § ∞ π √
¶ÚÔÛ‰ÔÎÒÌÂÓ· ∞ÔÙÂϤÛÌ·Ù·
ŒÓÓÔȘ ÎÏÂȉȿ
∂ÈÛ·ÁˆÁÈΤ˜ ¶·Ú·ÙËÚ‹ÛÂȘ
™ÎÔfi˜
Σκοπός της ενότητας είναι να γίνει µία εισαγωγή στις έννοιες του
ιεραρχικού µοντέλου. Η ενότητα αυτή παρουσιάζει συνοπτικά το
ιεραρχικό µοντέλο και σας παραπέµπει σε βιβλιογραφία προαιρετικής
ανάγνωσης για περαιτέρω εµβάθυνση στο συγκεκριµένο µοντέλο.
¶ÚÔÛ‰ÔÎÒÌÂÓ· ∞ÔÙÂϤÛÌ·Ù·
∂ÈÛ·ÁˆÁÈΤ˜ ¶·Ú·ÙËÚ‹ÛÂȘ
∆√ ª√¡∆∂§√
Kόµβος 1
Kόµβος 2 Kόµβος 3
™¯‹Ì· 3.1
Παράδειγµα ∆έντρου Kόµβος 4 Kόµβος 5 Kόµβος 6
13 Παπαδόπουλος Φοιτητής
35 Mακρή Φοιτήτρια
™¯‹Ì· 3.2
24 Bασιλάκη Φοιτήτρια Ιεραρχικό ∆έντρων Εγγραφών
ÕÛÎËÛË Μελετήστε το δέντρο του σχήµατος 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˜
Σκοπός της ενότητας είναι να γίνει µία εισαγωγή στις έννοιες του
δικτυακού µοντέλου. Η ενότητα αυτή παρουσιάζει συνοπτικά το
δικτυακό µοντέλο και σας παραπέµπει σε βιβλιογραφία προαιρετικής
ανάγνωσης για περαιτέρω εµβάθυνση στο συγκεκριµένο µοντέλο.
¶ÚÔÛ‰ÔÎÒÌÂÓ· ∞ÔÙÂϤÛÌ·Ù·
Όταν θα έχετε ολοκληρώσει τη µελέτη αυτής της ενότητας θα µπορείτε να:
• εξηγήσετε τη λογική των δικτύων και του δικτυακού µοντέλου
• διακρίνετε διαφορές σε συνδεδεµένες εγγραφές του ιεραρχικού µε
αυτές του δικτυακού µοντέλου
• εντοπίσετε τις αλλαγές που πρέπει να γίνουν σε ένα δίκτυο εγγρα-
φών για να µετατραπεί σε δέντρο του ιεραρχικού µοντέλου
∂ÈÛ·ÁˆÁÈΤ˜ ¶·Ú·ÙËÚ‹ÛÂȘ
Στην ενότητα αυτή παρουσιάζεται εν συντοµία το δικτυακό µοντέλο.
Για πιο εκτενή µελέτη του µοντέλου αυτού µπορείτε να ανατρέξετε στις
βιβλιογραφικές πηγές που σας δίνουµε στο τέλος του κεφαλαίου.
Eγγραφή 1
Eγγραφή 5
™¯‹Ì· 3.3
Eγγραφή 6 Eγγραφή 7 Eγγραφή 8
Παράδειγµα ∆ικτύου
™ÎÔfi˜
Σκοπός της ενότητας αυτής είναι η περιγραφή των διαγραµµάτων
σχέσεων – οντοτήτων, η ανάλυση των δοµικών στοιχείων ενός δια-
γράµµατος σχέσεων – οντοτήτων και η εξήγηση των εννοιών που
χρησιµοποιούνται σε αυτό. Βασικός σκοπός είναι, µετά τη µελέτη
αυτού του κεφαλαίου, να είστε σε θέση να σχεδιάζετε διαγράµµατα
σχέσεων – οντοτήτων και να τα χρησιµοποιείτε στις Βάσεις ∆εδοµέ-
νων που θα δηµιουργήσετε.
Τα διαγραµµάτων σχέσεων – οντοτήτων είναι βασικά για τη σχεδίαση
των Βάσεων δεδοµένων και θα τα χρησιµοποιήσουµε και στα παρα-
δείγµατα του σχεσιακού µοντέλου που θα ακολουθήσουν.
¶ÚÔÛ‰ÔÎÒÌÂÓ· ∞ÔÙÂϤÛÌ·Ù·
Όταν θα έχετε ολοκληρώσει τη µελέτη αυτής της ενότητας θα µπορείτε να:
• εξηγήσετε τους ορισµούς των οντοτήτων, κατηγορηµάτων, κλειδιών
και σχέσεων
• περιγράψετε τις οντότητες και τις σχέσεις για κάθε πρόβληµα του
πραγµατικού κόσµου, να εντοπίσετε τα κατηγορήµατα και να επιλέ-
ξετε τα κατάλληλα κλειδιά για κάθε οντότητα
• εντοπίσετε τον τύπο κάθε σχέσης για κάθε πρόβληµα του πραγµατι-
κού κόσµου και τις οντότητες που συµµετέχουν σε αυτή
• περιγράψετε τους τύπων σχέσεων σε ένα διάγραµµα σχέσεων –
οντοτήτων
• σχεδιάστε τα δοµικά συστατικά ενός διαγράµµατος σχέσεων – οντο-
τήτων, να περιγράψετε τι είναι κάθε ένα από αυτά, καθώς και που
χρησιµοποιούνται
72 K E º A § A I O 3 : ª √ ¡ ∆ ∂ § √ ¶ √ π ∏ ™ ∏ ∫ ∞ π £ ∂ ª ∞∆ ∞ ™ Ã ∂ ¢ π ∞ ™ ∏ ™
∂ÈÛ·ÁˆÁÈΤ˜ ¶·Ú·ÙËÚ‹ÛÂȘ
Στην ενότητα 3.3.1 παρουσιάζουµε τις βασικές έννοιες για τις οντότη-
τες, τα κατηγορήµατα και τα κλειδιά. Στην ενότητα 3.3.2 αναλύουµε
τις σχέσεις ανάµεσα σε οντότητες και τους τύπους σχέσεων. Στην ενό-
τητα 3.3.3 περιγράφουµε τα δοµικά στοιχεία ενός διαγράµµατος σχέ-
σεων – οντοτήτων, δηλαδή πώς σχεδιάζουµε ένα διάγραµµα σχέσεων
– οντοτήτων. Τέλος στην ενότητα 3.3.4 αναφέρουµε τη µέθοδο µοντε-
λοποίησης Βάσεων ∆εδοµένων χρησιµοποιώντας διαγράµµατα σχέσε-
ων – οντοτήτων.
¶·Ú¿‰ÂÈÁÌ· 3.1
Στο παράδειγµα αυτό εξετάζουµε ένα πρωτάθληµα καλαθοσφαίρι-
σης (µπάσκετ). Το πρωτάθληµα αποτελείται από οµάδες στις οποί-
ες συµµετέχουν παίκτες. Για τις ανάγκες του πρωταθλήµατος γίνο-
νται αγώνες ανάµεσα σε οµάδες και κάθε αγώνας τελειώνει µε
κάποιο συγκεκριµένο αποτέλεσµα. Για λόγους απλότητας θεωρού-
µε ότι τα στοιχεία που χαρακτηρίζουν κάθε οµάδα είναι η ονοµασία
της, το όνοµα του ιδιοκτήτη της, το όνοµα του χορηγού της, το έτος
που ιδρύθηκε και η πόλη στην οποία εδρεύει. Επίσης κάθε παίκτης
χαρακτηρίζεται από το όνοµά του, το επώνυµό του, το πατρώνυµό
του, τον αριθµό µητρώου του στην οµοσπονδία καλαθοσφαίρισης,
το ύψος του, την ηµεροµηνία γέννησης του και την πόλη καταγωγής
του. Τέλος, πάλι για λόγους απλότητας ένας αγώνας χαρακτηρίζεται
µόνο από τις οµάδες που συµµετείχαν, το γήπεδο στο οποίο έγινε,
την ηµεροµηνία διεξαγωγής του και το τελικό σκορ.
¢Ú·ÛÙËÚÈfiÙËÙ· 3.3 Εντοπίστε τις πιθανές οντότητες στο παράδειγµα 1.1 του κεφαλαίου
1 και τα πιθανά κατηγορήµατα. Εντοπίστε τέλος και τα πιθανά κλει-
διά για κάθε οντότητα. Περιγράψτε τους περιορισµούς που θεωρεί-
τε ότι ισχύουν για να επιλέξετε αυτά τα κλειδιά.
∫∞∆∏°√ƒπ∂™ ™Ã∂™∂ø¡
Μερικά βιβλία δεν αναφέρουν καθόλου τη σχέση ISA, την οποία θεω-
ρούν ως µία εξειδικευµένη 1 προς 1 σχέση. Ας δούµε τι σηµαίνει καθέ-
νας από τους παραπάνω ορισµούς σχέσεων. Για λόγους απλότητας θα
µιλήσουµε για σχέσεις στις οποίες συµµετέχουν δύο µόνο οντότητες,
αν και ό,τι περιγράφουµε ανάγεται και για περισσότερες οντότητες.
Η σχέση 1 προς 1 σηµαίνει ότι οι οντότητες που συµµετέχουν στη
σχέση είναι σε αναλογία µία προς µία, δηλαδή ότι «κάθε εγγραφή της
πρώτης οντότητας σχετίζεται µε µία εγγραφή της δεύτερης οντότητας
και το αντίστροφο».
Η σχέση ISA είναι µία ειδική σχέση 1 προς 1 που χρησιµοποιείται για
να επεξηγήσει καλύτερα µία σχέση. Σηµαίνει ότι «κάθε εγγραφή της
πρώτης οντότητας σχετίζεται µε µία εγγραφή της δεύτερης οντότητας
και το αντίστροφο, αλλά και η εγγραφή της πρώτης οντότητας είναι
µέλος της δεύτερης οντότητας, άρα έχει τα χαρακτηριστικά των εγγρα-
φών της δεύτερης οντότητας».
Ας δούµε ένα παράδειγµα από κάθε περίπτωση για να είµαστε περισ-
σότερο κατανοητοί. Έχουµε εργαζόµενους σε µία επιχείρηση και ο
καθένας έχει τον δικό του προσωπικό υπολογιστή τον οποίο δεν το
χρησιµοποιεί κανένας άλλος. Αν λοιπόν θέλαµε να ορίσουµε τη σχέση
«Εργαζόµενος» µε «Υπολογιστή», έστω η σχέση «χρεώνεται» (που
σηµαίνει ο εργαζόµενος Ε χρεώνεται τον υπολογιστή Υ), αυτή η σχέση
θα ήταν σχέση 1 προς 1. ∆ηλαδή κάθε εργαζόµενος θα είχε µόνο έναν
υπολογιστή χρεωµένο σε αυτόν και κάθε υπολογιστής θα είχε µόνο
ένα εργαζόµενο στον οποίο θα είχε χρεωθεί. Ας υποθέσουµε τώρα ότι
υπάρχει µία ειδική κατηγορία εργαζοµένων οι «Τεχνικοί». Κάθε τεχνι-
κός είναι εργαζόµενος, άρα έχει όλα τα χαρακτηριστικά του εργαζό-
µενου, αλλά έχει και µερικά επιπλέον κατηγορήµατα, τα οποία δεν έχει
κάθε εργαζόµενος. Έτσι για τον τεχνικό θα οριζόταν µία νέα οντότη-
τα, η οποία θα ήταν σε σχέση ISA µε την οντότητα «Εργαζόµενος».
Αυτό σηµαίνει ότι ο «Τεχνικός» έχει ως οντότητα µόνο τα ειδικά κατη-
γορήµατα, αλλά µέσω της σχέσης ISA ορίζεται ως εργαζόµενος και
χρησιµοποιεί όλα τα κατηγορήµατα του εργαζόµενου.
Η σχέση 1 προς Ν σηµαίνει ότι «κάθε εγγραφή της πρώτης οντότητας
σχετίζεται µε πολλές εγγραφές της δεύτερης οντότητας, αλλά κάθε
εγγραφή της δεύτερης οντότητας σχετίζεται µόνο µε µία εγγραφή της
πρώτης οντότητας».
3 . 3 ¢ π ∞ ° ƒ∞ ª ª ∞∆∞ ™ à ∂ ™ ∂ ø ¡ – O ¡ ∆ √ ∆ ∏ ∆ ø ¡ 79
Ποιες από τις προτάσεις που ακολουθούν είναι σωστές και ποιες όχι; ÕÛÎËÛË
Επιλέξτε «Σωστό» ή «Λάθος» ανάλογα µε την περίπτωση. ·˘ÙÔ·ÍÈÔÏ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. Επεκτείνετε το παράδειγµα ορίζοντας τουλάχιστον µία
ακόµα οντότητα, αυτή της «µέτρησης», και την αντίστοιχη σχέση µε
τις πόλεις. Περιγράψτε τι σχέση είναι κάθε σχέση ανάµεσα στις
οντότητες και δώστε τουλάχιστον τρία παραδείγµατα εγγραφών για
κάθε σχέση και κάθε οντότητα.
B1
Σ1
A1
B2
A 1
Σ N B ™¯‹Ì· 3.5
A2 B3
Σχέση 1 προς Ν
Εκτός από τις οντότητες που περιγράψαµε στην ενότητα 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
Ασθενής Οντότητα
B1
A2 A1
B
Γ1
A d Γ
∆1
∆
E1
E
™¯‹Ì· 3.7
E2
Σχέση d
Σε αυτό το σηµείο της µελέτης σας έχετε αποκτήσει µία καλή εµπει-
ρία στα σχεδιαστικά στοιχεία των διαγραµµάτων σχέσεων – οντοτή-
των. Στην ενότητα αυτή θα δούµε πώς θα σχεδιάζαµε το διάγραµµα
σχέσεων – οντοτήτων για ένα πρόβληµα του πραγµατικού κόσµου.
Θυµάστε το παράδειγµα 3.1 που περιγράψαµε στην ενότητα 3.3.1. Θα
δώσουµε ένα νέο παράδειγµα βασισµένο σε αυτό και θα προσπαθή-
σουµε να δούµε βήµα προς βήµα τις ενέργειες που πρέπει να γίνουν
µέχρι να σχεδιάσουµε το διάγραµµα σχέσεων – οντοτήτων. Ας δούµε
το παρακάτω νέο παράδειγµα.
84 K E º A § A I O 3 : ª √ ¡ ∆ ∂ § √ ¶ √ π ∏ ™ ∏ ∫ ∞ π £ ∂ ª ∞∆ ∞ ™ Ã ∂ ¢ π ∞ ™ ∏ ™
¶·Ú¿‰ÂÈÁÌ· 3.2
Στο παράδειγµα αυτό εξετάζουµε το πρωτάθληµα καλαθοσφαίρισης που
περιγράψαµε στο προηγούµενο παράδειγµα µε αρκετές όµως προσθήκες.
Το πρωτάθληµα αποτελείται από κατηγορίες στις οποίες συµµετέχουν
οµάδες. Κάθε κατηγορία έχει ένα όνοµα (Α1, Α2, Β, Γ, ∆ και Τοπικά πρω-
ταθλήµατα). Σε κάθε κατηγορία συµµετέχουν οµάδες που µπορούν να
αλλάξουν από χρονιά σε χρονιά. Μία οµάδα µπορεί να συµµετέχει µόνο
σε µία κατηγορία (ανάλογα µε την επίδοσή της την προηγούµενη χρονιά).
Οι οµάδες µπορούν να «ανέβουν» σε άλλη κατηγορία ή να υποβιβαστούν
από µία κατηγορία σε άλλη µικρότερη. Η σειρά των κατηγοριών διαταγ-
µένες από την ανώτερη προς την κατώτερη είναι Α1, Α2, Β, Γ, ∆ και Τοπι-
κά Πρωταθλήµατα. Στις οµάδες συµµετέχουν παίκτες και κάθε παίκτης
συµµετέχει µόνο σε µία οµάδα κάθε χρονιά. Στη Βάση ∆εδοµένων δεν
χρειαζόµαστε να έχουµε τις οµάδες που έχει συµµετάσχει κάποιος παί-
κτης, παρά µόνο την οµάδα στην οποία συµµετέχει αυτή τη χρονιά.
Για τις ανάγκες του πρωταθλήµατος γίνονται αγώνες ανάµεσα σε οµά-
δες. Κάθε αγώνας ανήκει σε µία συγκεκριµένη κατηγορία και κάθε αγώ-
νας τελειώνει µε κάποιο συγκεκριµένο αποτέλεσµα. Για λόγους απλότη-
τας θεωρούµε ότι δεν γίνονται αγώνες ανάµεσα σε οµάδες που δεν ανή-
κουν στην ίδια κατηγορία (π.χ. δεν προβλέπονται αγώνες κυπέλλου). Επί-
σης για λόγους απλότητας υποθέτουµε ότι τα στοιχεία που χαρακτηρί-
ζουν κάθε οµάδα είναι η ονοµασία της, το όνοµα του ιδιοκτήτη της, το
όνοµα του σπόνσορά της, το έτος που ιδρύθηκε και η πόλη στην οποία
εδρεύει. Επίσης κάθε παίκτης χαρακτηρίζεται από το όνοµά του, το επώ-
νυµό του, το πατρώνυµό του, τον αριθµό µητρώου του στην οµοσπονδία
καλαθοσφαίρισης, το ύψος του, την ηµεροµηνία γέννησης του και την
πόλη καταγωγής του. Τέλος, πάλι για λόγους απλότητας, ένας αγώνας
χαρακτηρίζεται µόνο από τις οµάδες που συµµετείχαν, το γήπεδο στο
οποίο έγινε, την ηµεροµηνία διεξαγωγής του και το τελικό σκορ.
Στη Βάση ∆εδοµένων θέλουµε να διατηρούµε πληροφορίες και για τους
µάνατζερ των παικτών και των οµάδων. Μία οµάδα µπορεί να χρησιµο-
ποιεί πολλούς µάνατζερ, αλλά ένας παίκτης µόνο ένα µάνατζερ. Οι µάνα-
τζερ είναι ελεύθεροι να εκπροσωπούν όσες οµάδες ή παίκτες επιθυµούν.
Για λόγους απλότητας υποθέτουµε ότι τα στοιχεία που µας ενδιαφέρουν
για τους µάνατζερ είναι το όνοµα, το επώνυµο και το τηλέφωνό τους.
3 . 3 ¢ π ∞ ° ƒ∞ ª ª ∞∆∞ ™ à ∂ ™ ∂ ø ¡ – O ¡ ∆ √ ∆ ∏ ∆ ø ¡ 85
Είναι φανερό ότι µέσα στο κείµενο του παραδείγµατος υπάρχει πλη-
ροφορία που δεν σχετίζεται µε τη σχεδίαση της Βάσης ∆εδοµένων,
αλλά µε τα ίδια τα δεδοµένα. Τέτοιου είδους πληροφορία π.χ. είναι οι
ονοµασίες των κατηγοριών ή ο τρόπος µε τον οποίο υποβιβάζονται οι
οµάδες. Οι βασικές έννοιες που πρέπει να αποµονώσουµε είναι οι
86 K E º A § A I O 3 : ª √ ¡ ∆ ∂ § √ ¶ √ π ∏ ™ ∏ ∫ ∞ π £ ∂ ª ∞∆ ∞ ™ Ã ∂ ¢ π ∞ ™ ∏ ™
∂¶π§√°∏ √¡∆√∆∏∆ø¡
∂¶π§√°∏ ™Ã∂™∂ø¡
Aγώνας
Oµάδα Xρησιµοποιεί
Mάνατζερ
Παίζει
Συµµετέχει
Συνεργάζεται
Παίκτης
™¯‹Ì· 3.8
Kατηγορία
Αρχικό Πλάνο
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ατηγορία Παίκτης
Όνοµα Πόλη
¢Ú·ÛÙËÚÈfiÙËÙ· 3.8 Αλλάξτε το παραπάνω σχήµα και υλοποιήστε µία οντότητα «Άνθρω-
πος» και περιγράψτε µε βάση αυτή τις οντότητες «Παίκτης» και
«Μάνατζερ».
3 . 3 ¢ π ∞ ° ƒ∞ ª ª ∞∆∞ ™ à ∂ ™ ∂ ø ¡ – O ¡ ∆ √ ∆ ∏ ∆ ø ¡ 91
™‡ÓÔ„Ë
Στο κεφάλαιο αυτό περιγράψαµε δύο µοντέλα δεδοµένων: το ιεραρχι-
κό µοντέλο και το δικτυακό µοντέλο. Aναφέραµε τις βασικές αρχές για
καθένα από αυτά τα µοντέλα και παραπέµψαµε στη βιβλιογραφία
όσους θέλουν να ασχοληθούν περισσότερο µε κάποιο από αυτά.
Αναφέραµε ότι σήµερα στις περισσότερες Βάσεις ∆εδοµένων κυριαρ-
χεί το σχεσιακό µοντέλο, το οποίο παρουσιάζεται αναλυτικά στο επό-
µενο κεφάλαιο. Επίσης αναφέραµε και για το αντικειµενοστραφές
µοντέλο, το οποίο έχει αρχίσει να χρησιµοποιείται ιδιαίτερα µετά την
άνθιση των µεθόδων αντικειµενοστραφούς προγραµµατισµού και είπα-
µε ότι και σε αυτό το µοντέλο θα αναφερθούµε εκτενέστερα σε επόµε-
νο κεφάλαιο (στο κεφάλαιο 7).
Βασικό µέρος του κεφαλαίου αφιερώσαµε στην παρουσίαση του µοντέ-
λου σχεδίασης Βάσεων ∆εδοµένων, που βασίζεται στα διαγράµµατα
σχέσεων – οντοτήτων. Περιγράψαµε τις βασικές έννοιες που αναφέ-
ρονται σε αυτά τα διαγράµµατα και αναλύσαµε τα βασικά δοµικά στοι-
χεία της σχεδίασης των διαγραµµάτων σχέσεων – οντοτήτων. Τέλος
δώσαµε ένα παράδειγµα για το πώς σχεδιάζουµε ένα διάγραµµα σχέ-
σεων – οντοτήτων.
92 K E º A § A I O 3 : ª √ ¡ ∆ ∂ § √ ¶ √ π ∏ ™ ∏ ∫ ∞ π £ ∂ ª ∞∆ ∞ ™ Ã ∂ ¢ π ∞ ™ ∏ ™
™ÎÔ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.2 και 4.3 παρουσιάζονται δύο βασικά µοντέλα ερωτή-
σεων που περιγράφουν ερωτήσεις στις σχεσιακές Βάσεις ∆εδοµένων:
η σχεσιακή άλγεβρα στην ενότητα 4.2 και ο σχεσιακός υπολογισµός
στην ενότητα 4.3. Για να µπορέσετε να κατανοήσετε καλύτερα τη σχε-
σιακή άλγεβρα ίσως να χρειαστείτε κάποιες γνώσεις από θεωρία συνό-
λων, ενώ κάποιες γνώσεις µαθηµατικής συλλογιστικής θα σας χρεια-
στούν και στην ενότητα 4.3. Εάν οι έννοιες που θα καλύψουµε στις
ενότητες 4.2 και 4.3 σας φανούν δύσκολες, µπορείτε να τις µελετήσε-
τε σε αδρές γραµµές τώρα και να επαναλάβετε το κεφάλαιο µετά τη
µελέτη των κεφαλαίων 5 και 6, ίσως µελετώντας παράλληλα και
κάποιο από τα προτεινόµενα βιβλία.
4.1 ∆Ô Û¯ÂÛÈ·Îfi ÌÔÓÙ¤ÏÔ
™ÎÔfi˜
¶ÚÔÛ‰ÔÎÒÌÂÓ· ∞ÔÙÂϤÛÌ·Ù·
∂ÈÛ·ÁˆÁÈΤ˜ ¶·Ú·ÙËÚ‹ÛÂȘ
ÕÛÎËÛË
Μελετήστε το σχήµα 3.9 του προηγούµενου κεφαλαίου. Στο σχήµα
·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
αυτό περιγράφεται ένα διάγραµµα σχέσεων – οντοτήτων µε 4 οντό-
4.1
τητες και 5 σχέσεις.
1. Υπολογίστε την arity που θα πρέπει να έχει κάθε πίνακας σε µία
σχεσιακή Βάση ∆εδοµένων για κάθε οντότητα και σχέση που
περιγράφεται σε αυτό το διάγραµµα σχέσεων – οντοτήτων.
2. Ετοιµάστε τους πίνακες για µία σχεσιακή Βάση ∆εδοµένων για
τις οντότητες που περιγράφονται στο διάγραµµα σχέσεων – οντο-
τήτων.
3. Ετοιµάστε τους πίνακες για µία σχεσιακή Βάση ∆εδοµένων για
τις σχέσεις που περιγράφονται στο διάγραµµα σχέσεων – οντο-
τήτων, προσέχοντας τα κλειδιά για κάθε οντότητα που συµµετέ-
χει στη σχέση.
¢Ú·ÛÙËÚÈfiÙËÙ· 4.1
Περάστε τυχαία δεδοµένα στους πίνακες που ετοιµάσατε ως απά-
ντηση για την άσκηση αυτοαξιολόγησης 4.1. Προσέξτε να µην υπάρ-
χει πρόβληµα µε τα κλειδιά στις οντότητες και στις σχέσεις. Φρο-
ντίστε ώστε κάθε πίνακας που περιγράφει σχέση να έχει cardinality
5 και κάθε πίνακας που περιγράφει οντότητα να έχει cardinality 10.
4.1 ∆√ ™Ã∂™π∞∫√ ª√¡∆∂§√ 99
∂¶π§√°∏
∂π™∞°ø°∏
¢π∞°ƒ∞º∏
∂¡∏ª∂ƒø™∏
∫§∂π¢øª∞
Η Βάση ∆εδοµένων συνήθως δεν προορίζεται για χρήση από ένα χρή-
στη, αλλά (όπως αναφέραµε στο κεφάλαιο 1) από πολλούς χρήστες
και µάλιστα ταυτόχρονα. Η ταυτόχρονη προσπέλαση των δεδοµένων
όµως µπορεί να δηµιουργήσει προβλήµατα. Ας δούµε το παρακάτω
παράδειγµα.
Έχουµε µία Βάση ∆εδοµένων σε µία τράπεζα και ένα κοινό λογαρια-
σµό που περιγράφεται στον παρακάτω πίνακα:
Υποθέτουµε τώρα ότι την ίδια χρονική στιγµή και οι δύο πελάτες
πηγαίνουν σε κάποιο µηχάνηµα αυτόµατων συναλλαγών και ελέγχουν
τον λογαριασµό τους µε σκοπό να κάνουν ανάληψη. Ας υποθέσουµε
ότι γίνονται τα παρακάτω βήµατα:
Ο πελάτης 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
4.1 πραγµατοποιήστε πράξεις εισαγωγής, διαγραφής και ενηµέρωσης.
Υλοποιήστε τουλάχιστον 5 πράξεις για κάθε περίπτωση και ελέγξτε
εάν η πράξη σας προσκρούει σε κάποιους περιορισµούς ακεραιότη-
τας. Εντοπίστε τι αλλαγές θα έπρεπε να κάνετε στα δεδοµένα σας ώστε
να µην υπάρχει πρόβληµα µε τους περιορισµούς.
104 KEºA§AIO 4: ™Ã∂™π∞∫∂™ B∞™∂π™ ¢∂¢√ª∂¡ø¡
™ÎÔfi˜
¶ÚÔÛ‰ÔÎÒÌÂÓ· ∞ÔÙÂϤÛÌ·Ù·
∂ÈÛ·ÁˆÁÈΤ˜ ¶·Ú·ÙËÚ‹ÛÂȘ
¶·Ú¿‰ÂÈÁÌ· 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 Αθήνα
4.2.1 EÈÏÔÁ‹
4.2.2 ¶ÚÔ‚ÔÏ‹
Kάντε τις παρακάτω πράξεις στους πίνακες του παραδείγµατος 4.1: ÕÛÎËÛË
·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
π Όνοµα, Επώνυµο, Πόλη (Παίκτης)
4.4
π Επώνυµο (Μάνατζερ)
Υλοποιήστε την ερώτηση «Βρείτε µόνο το επώνυµο και το ύψος των ÕÛÎËÛË
παικτών που έχουν καταγωγή από την πόλη Πάτρα». ·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
4.5
4.2.3 ŒÓˆÛË
Η πράξη της ένωσης αντιστοιχεί στη γνωστή πράξη της ένωσης από
τη θεωρία συνόλων και δίνεται από τον τύπο:
Α»Β (4.3)
Σηµαίνει επιλογή των γραµµών από τους πίνακες Α, Β που υπάρχουν
είτε στον πίνακα Α, είτε στον πίνακα Β, είτε και στους δύο πίνακες.
4.2.4 TÔÌ‹
Η πράξη της τοµής αντιστοιχεί στη γνωστή πράξη της τοµής από τη
θεωρία συνόλων και δίνεται από τον τύπο:
Α«Β (4.4)
Σηµαίνει επιλογή των γραµµών από τους πίνακες Α, Β που υπάρχουν
και στον πίνακα Α και στον πίνακα Β.
4.2.5 ¢È·ÊÔÚ¿
4.2.7 ™‡Ó‰ÂÛË
Η πράξη της σύνδεσης δύο συνόλων Α και Β δίνεται από τον τύπο:
A >< B (4.7)
E
Η πράξη της φυσικής σύνδεσης δύο συνόλων Α και Β δίνεται από τον
τύπο:
A >< B (4.8)
Η πράξη της φυσικής σύνδεσης εφαρµόζεται σε πίνακες που έχουν
4 . 2 ™ à ∂ ™ π ∞ ∫ ∏ ∞ § ° ∂ µ ƒ∞ / 4 . 3 ™ à ∂ ™ π ∞ ∫ √ ™ À ¶ √ § √ ° π ™ ª √ ™ 109
2) Γ ∆
3) A Γ
™ÎÔfi˜
Σκοπός της ενότητας είναι να παρουσιάσει το σχεσιακό υπολογισµό και
παραδείγµατα µετατροπής από σχεσιακή άλγεβρα σε σχεσιακό υπολογισµό.
¶ÚÔÛ‰ÔÎÒÌÂÓ· ∞ÔÙÂϤÛÌ·Ù·
Όταν θα έχετε ολοκληρώσει τη µελέτη αυτής της ενότητας θα µπο-
ρείτε να:
• περιγράψετε τι είναι ο σχεσιακός υπολογισµός και πού χρησιµοποι-
είται
• υλοποιήσετε ερωτήσεις µε τη βοήθεια πράξεων του σχεσιακού υπο-
λογισµού
• µετατρέψετε ερωτήσεις και πράξεις τις σχεσιακής άλγεβρας σε ερω-
τήσεις και πράξεις του σχεσιακού υπολογισµού
110 KEºA§AIO 4: ™Ã∂™π∞∫∂™ B∞™∂π™ ¢∂¢√ª∂¡ø¡
∂ÈÛ·ÁˆÁÈΤ˜ ¶·Ú·ÙËÚ‹ÛÂȘ
Στην ενότητα αυτή περιγράφουµε συνοπτικά το σχεσιακό υπολογισµό.
Σε περίπτωση που θέλετε να εµβαθύνετε στο σχεσιακό υπολογισµό
µπορείτε να ανατρέξετε στη βιβλιογραφία προαιρετικής ανάγνωσης
που βρίσκεται στο τέλος του κεφαλαίου.
{ x E ( x )} (4.9)
( )
{ x ( 2 ) Ey )( A( x ) Ÿ A( y ) Ÿ ( x[1] π y[1] Ú x[ 2] π y[ 2]) (4.13)
¢Ú·ÛÙËÚÈfiÙËÙ· 4.5
Εκφράστε µε σχεσιακό υπολογισµό όλες τις πράξεις της σχεσιακής
άλγεβρας για τις οποίες µιλήσαµε στην ενότητα 4.2.
112 KEºA§AIO 4: ™Ã∂™π∞∫∂™ B∞™∂π™ ¢∂¢√ª∂¡ø¡
™‡ÓÔ„Ë
Στο κεφάλαιο αυτό περιγράψαµε τις σχεσιακές Βάσεις ∆εδοµένων και
µιλήσαµε για τις βασικές έννοιες και πράξεις, καθώς και για τους περιο-
ρισµούς ακεραιότητας και το κλείδωµα. Περιγράψαµε εν συντοµία δύο
βασικά σχεσιακά µοντέλα ερωτήσεων: τη σχεσιακή άλγεβρα και το σχε-
σιακό υπολογισµό. ∆εν µιλήσαµε για όλες τις πράξεις της σχεσιακής άλγε-
βρας, ούτε καλύψαµε αναλυτικά το σχεσιακό υπολογισµό και για αυτό το
λόγο σας προτείνουµε να ανατρέξετε στη βιβλιογραφία για να µελετήσε-
τε σε βάθος τα δύο αυτά µοντέλα ερωτήσεων.
™ÎÔfi˜
5
º ∞ § ∞ π √
¶ÚÔÛ‰ÔÎÒÌÂÓ· ∞ÔÙÂϤÛÌ·Ù·
ŒÓÓÔȘ ÎÏÂȉȿ
• Συµβολοσειρά (String)
• Μετονοµασίες (Aliases)
∂ÈÛ·ÁˆÁÈΤ˜ ¶·Ú·ÙËÚ‹ÛÂȘ
™ÎÔfi˜
Σκοπός της ενότητας είναι να περιγραφούν γενικά οι αρχές των γλωσ-
σών ερωτήσεων και η χρήση τους σε ένα Σύστηµα ∆ιαχείρισης Βάσε-
ων ∆εδοµένων, καθώς και να γίνει αναφορά στις δύο γλώσσες ερω-
τήσεων που θα περιγράψουµε σε αυτό το βιβλίο, την SQL και την QBE.
¶ÚÔÛ‰ÔÎÒÌÂÓ· ∞ÔÙÂϤÛÌ·Ù·
Όταν θα έχετε ολοκληρώσει τη µελέτη αυτής της ενότητας θα µπορεί-
τε να:
• εξηγήσετε τι είναι γλώσσα ερωτήσεων
• περιγράψετε τη χρήση των γλωσσών ερωτήσεων και το τι παρέχουν
στο χρήστη µίας Βάσης ∆εδοµένων
• αναφέρετε τουλάχιστον δύο γλώσσες υποβολής ερωτήσεων
Στο προηγούµενο κεφάλαιο περιγράψαµε τη σχεσιακή άλγεβρα και το
σχεσιακό λογισµό. Τόσο η σχεσιακή άλγεβρα, όσο και ο σχεσιακός
λογισµός θεωρούνται από τις πρώτες θεωρητικές γλώσσες ερωτήσε-
ων. Οι γλώσσες ερωτήσεων, όµως, πρέπει να ικανοποιούν µία πρα-
κτική ανάγκη του χρήστη µίας Βάσης ∆εδοµένων. Πρέπει να του
παρέχουν τη δυνατότητα να µπορεί να υποβάλει ερωτήσεις στη Βάση
∆εδοµένων και µε βάση αυτές τις ερωτήσεις να συλλέγει δεδοµένα
από τη Βάση ∆εδοµένων που να ικανοποιούν τους περιορισµούς που
έθεσε στην ερώτηση.
Ένα βασικό στοιχείο που πρέπει να παρέχουν τα Συστήµατα ∆ιαχεί-
ρισης Βάσεων ∆εδοµένων είναι µία γλώσσα ερωτήσεων. Αυτή η
γλώσσα ερωτήσεων θα πρέπει να δίνει τη δυνατότητα στο χρήστη να
υποβάλλει ερωτήσεις προς τη Βάση ∆εδοµένων, στις οποίες ερωτή-
σεις ο χρήστης να προσδιορίζει µόνο το προσδοκώµενο αποτέλεσµα
(δηλαδή το σύνολο των επιζητούµενων δεδοµένων) και όχι τον τρόπο
µε τον οποίο θα υλοποιηθεί η ερώτηση ή τον τρόπο µε τον οποίο θα
βελτιστοποιηθεί η εκτέλεσή της.
Αυτό το χαρακτηριστικό, δηλαδή η ανεξαρτησία του τελικού χρήστη
από θέµατα που σχετίζονται µε το φυσικό επίπεδο ή µε την απόδοση
116 KEºA§AIO 5: H °§ø™™∞ Eƒø∆∏™∂ø¡ SQL
3) QBE ………………………………………………………………………………
Μελετήστε την προτεινόµενη βιβλιογραφία, καθώς και όποια άλλη ¢Ú·ÛÙËÚÈfiÙËÙ· 5.1
βιβλιογραφία έχετε στη διάθεσή σας είτε από την προσωπική σας
βιβλιοθήκη, είτε από τη βιβλιοθήκη του Ελληνικού Ανοικτού Πανε-
πιστηµίου. Επίσης, µελετήστε τα εγχειρίδια των Συστηµάτων ∆ια-
χείρισης Βάσεων ∆εδοµένων που υπάρχουν στα εργαστήρια του
Ελληνικού Ανοικτού Πανεπιστηµίου ή όπου άλλου έχετε πρόσβαση.
Μετά από τη µελέτη σας δώστε ένα κατάλογο µε τα Συστήµατα που
βρήκατε και ποια από αυτά υποστηρίζουν τη γλώσσα ερωτήσεων
SQL και ποια τη γλώσσα QBE. Ποια συστήµατα υποστηρίζουν και
τις δύο γλώσσες; (Αναφέρατε και ποια είναι η κύρια γλώσσα ερω-
τήσεων στην περίπτωση που υποστηρίζουν και τις δύο.)
™ÎÔfi˜
Σκοπός της ενότητας είναι να παρουσιαστεί η SQL ως γλώσσα χειρισµού
δεδοµένων. Θα δείξουµε τη χρήση της SQL καθαρά για αναζήτηση δεδο-
µένων, δηλαδή θα δείξουµε πώς ερωτήσεις που θέλαµε να µπορούµε να
υποβάλλουµε στη Βάση ∆εδοµένων µπορούν να δοθούν σε SQL.
¶ÚÔÛ‰ÔÎÒÌÂÓ· ∞ÔÙÂϤÛÌ·Ù·
Όταν θα έχετε ολοκληρώσει τη µελέτη αυτής της ενότητας θα µπορεί-
τε να:
118 KEºA§AIO 5: H °§ø™™∞ Eƒø∆∏™∂ø¡ 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.1
Ας δούµε µία αρκετά απλή Βάση ∆εδοµένων: Έστω ότι οργανώνουµε σε Βάση
∆εδοµένων τα στοιχεία ενός Πανεπιστηµίου. Βέβαια για λόγους απλότητας θα
θεωρήσουµε ότι στη συγκεκριµένη Βάση ∆εδοµένων έχουµε το ελάχιστο δυνατό
σύνολο πληροφορίας. Έτσι, έχουµε τους παρακάτω πίνακες (µε έντονα γράµµα-
τα είναι τα πεδία που αποτελούν το κλειδί για κάθε πίνακα):
∆ª∏ª∞ (ΟΝΟΜΑ, ΕΤΟΣ_Ι∆ΡΥΣΗΣ)
∫∞£∏°∏∆∏™ (ΟΝΟΜΑ, ΕΠΩΝΥΜΟ, ΠΑΤΡΩΝΥΜΟ, ΒΑΘΜΙ∆Α, ΗΜ_ΓΕΝ)
º√π∆∏∆∏™ (ΟΝΟΜΑ, ΕΠΩΝΥΜΟ, ΠΑΤΡΩΝΥΜΟ, ΑΜ, ΗΜ_ΓΕΝ)
ª∞£∏ª∞ (ΚΩ∆ΙΚΟΣ, ΟΝΟΜΑ, ΕΤΟΣ_∆Ι∆ΑΣΚ)
Στους παραπάνω πίνακες θεωρήσαµε, για λόγους απλότητας ότι το όνοµα κάθε
τµήµατος είναι µοναδικό, ότι κάθε µάθηµα έχει ένα κωδικό που το χαρακτηρί-
ζει µε µοναδικό τρόπο, ότι κάθε φοιτητής έχει µοναδικό Αριθµό Μητρώου και
ότι ο Καθηγητής µπορεί να έχει ως κλειδί το ονοµατεπώνυµο.
Ορίζουµε επίσης µερικές σχέσεις:
∫∞£_∆ª∏ª∞ (ΟΝΟΜΑ__Κ, ΕΠΩΝΥΜΟ_Κ, ΟΝΟΜΑ_Τ)
º√π∆_∆ª∏ª∞ (ΑΜ, ΟΝΟΜΑ)
º√π∆_ª∞£ (ΑΜ, ΚΩ∆ΙΚΟΣ)
∫∞£_ª∞£ (ΟΝΟΜΑ, ΕΠΩΝΥΜΟ, ΚΩ∆ΙΚΟΣ)
Από τις παραπάνω σχέσεις η ΚΑΘ_ΤΜΗΜΑ είναι σχέση Ν προς Μ, η
ΦΟΙΤ_ΤΜΗΜΑ σχέση Ν προς 1, η ΦΟΙΤ_ΜΑΘ σχέση Ν προς Μ και η
ΚΑΘ_ΜΑΘ σχέση 1 προς Ν. (Κάνουµε την παραδοχή ότι κάθε µάθηµα διδά-
σκεται µόνο από έναν Καθηγητή).
¶·Ú¿‰ÂÈÁÌ· 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 είναι η εντολή αναζήτησης δεδοµένων της µορφής
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
ONOMA EΠΩNYMO
Νικόλαος Βασιλείου
Χρήστος Χρήστου
Παρατηρήστε ότι παρόλο που ζητήσαµε τους φοιτητές που έχουν γεν-
νηθεί στις 20–08–1978, η ηµεροµηνία γέννησης δεν εµφανίστηκε γιατί
στο SELECT ζητήσαµε µόνο το όνοµα και το επώνυµο.
Εάν θέλουµε µπορούµε να έχουµε περισσότερους από έναν πίνακες
στο FROM. Έτσι, αν θέλουµε το καρτεσιανό γινόµενο των πινάκων
ΤΜΗΜΑ και ΜΑΘΗΜΑ, τότε αυτό δίνεται από την ερώτηση σε SQL
SELECT *
FROM ∆ª∏ª∞, ª∞£∏ª∞
Ας δούµε άλλο ένα παράδειγµα µε δύο πίνακες. Προσέξτε ότι στο
παράδειγµα που ακολουθεί χρησιµοποιούµε το όνοµα του πίνακα και
το όνοµα του πεδίου χωρισµένα µε τελεία για να ξεχωρίσουµε για πιο
πεδίο µιλάµε. Έστω ότι θέλουµε το καρτεσιανό γινόµενο των πινάκων
ΦΟΙΤΗΤΗΣ και ΚΑΘΗΓΗΤΗΣ, αλλά να δούµε µόνο τα πεδία
ΟΝΟΜΑ και ΕΠΩΝΥΜΟ τόσο για τους φοιτητές όσο και για τους
καθηγητές. Επίσης, βάζουµε ως περιορισµό οι καθηγητές να είναι στη
βαθµίδα «Καθηγητής» και οι φοιτητές να έχουν αριθµό µητρώου
µικρότερο του 19.100. Η ερώτηση σε SQL είναι:
SELECT º√π∆∏∆∏™.√¡√ª∞, º√π∆∏∆∏™.∂¶ø¡Àª√,
∫∞£∏°∏∆∏™.√¡√ª∞, ∫∞£∏°∏∆∏™.∂¶ø¡Àª√
FROM º√π∆∏∆∏™, ∫∞£∏°∏∆∏™
WHERE (∫∞£∏°∏∆∏™.µ∞£ªπ¢∞ ="∫·ıËÁËÙ‹˜") AND
(º√π∆∏∆∏™.∞ª<19100);
Το αποτέλεσµα της εκτέλεσης της παραπάνω εντολής είναι ο πίνακας
Έστω ότι θέλουµε να βρούµε τα ονόµατα των µαθηµάτων που έχουν ÕÛÎËÛË
κωδικό µικρότερο από 1100, στη Βάση ∆εδοµένων του παραδείγ- ·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
µατος 5.1 µε τα δεδοµένα του παραδείγµατος 5.2. ∆ώστε την ερώ- 5.2
τηση σε SQL και τον πίνακα µε το αναµενόµενο αποτέλεσµα.
Έστω ότι θέλουµε να βρούµε τα ονόµατα και τα επώνυµα των καθη- ÕÛÎËÛË
γητών που έχουν γεννηθεί µετά την 1η Ιανουαρίου 1960, στη Βάση ·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
∆εδοµένων του παραδείγµατος 5.1 µε τα δεδοµένα του παραδείγµα- 5.3
τος 5.2. ∆ώστε την ερώτηση σε SQL και τον πίνακα µε το αναµενό-
µενο αποτέλεσµα.
LIKE ‘ª–ÓÔ˜’
σηµαίνει όλες τις λέξεις που έχουν «Μ» ως πρώτο γράµµα, οποιοδή-
ποτε χαρακτήρα για δεύτερο γράµµα και µετά το επίθεµα «νος». Άρα,
θα µπορούσαν να γίνουν δεκτές οι λέξεις «Μάνος», «Μίνος»,
«Μόνος», κτλ. Ας δούµε τώρα πώς θα µπορούσαµε να βρούµε µε τη
χρήση του LIKE τα ονόµατα και τα επώνυµα των φοιτητών που το
επώνυµό τους αρχίζει από το γράµµα «Β». Η ερώτηση σε SQL και ο
αντίστοιχος πίνακας ακολουθούν:
SELECT √¡√ª∞, ∂¶ø¡Àª√,
FROM º√π∆∏∆∏™
WHERE ∂¶ø¡Àª√ LIKE ‘µ%’;
ONOMA EΠΩNYMO
Νικόλαος Βασιλείου
Eλένη Χρήστου
Nικόλαος Bαρδής
Έστω ότι θέλουµε να βρούµε το όνοµα και το επώνυµο των καθη- ÕÛÎËÛË
γητών που το µικρό τους όνοµα αρχίζει από ‘Μιχ’ στη Βάση ∆εδο- ·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
µένων του παραδείγµατος 5.1 µε τα δεδοµένα του παραδείγµατος 5.6
5.2. ∆ώστε την ερώτηση σε SQL και τον πίνακα µε το αναµενόµενο
αποτέλεσµα.
Έστω ότι θέλουµε να βρούµε τα ονόµατα των τµηµάτων που έχουν ÕÛÎËÛË
κενό έτος ίδρυσης στη Βάση ∆εδοµένων του παραδείγµατος 5.1 µε ·˘ÙÔ·ÍÈÔÏfiÁËÛ˘
τα δεδοµένα του παραδείγµατος 5.2. ∆ώστε την ερώτηση σε SQL 5.7
και τον πίνακα µε το αναµενόµενο αποτέλεσµα.
Επαναλάβατε όλες τις ερωτήσεις που έχετε γράψει σε SQL, οι οποίες ¢Ú·ÛÙËÚÈfiÙËÙ· 5.5
έχουν περισσότερους από ένα πίνακα, µετονοµάζοντας τους πίνακες.
130 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» συγκρίνει δύο σύνολα και
επιστρέφει «αληθές» στη συνθήκη, εάν το πρώτο είναι υποσύνολο του
δευτέρου.
Στην ενότητα αυτή δεν δώσαµε πολλά παραδείγµατα για τις εντολές ¢Ú·ÛÙËÚÈfiÙËÙ· 5.6
που παρουσιάσαµε, για να µπορέσουµε να καλύψουµε όλες τις εντο-
λές. Πειραµατιστείτε µε τις εντολές συνόλων και ειδικότερα αυτές
που δεν καλύψαµε µε τις ασκήσεις αυτοαξιολόγησης.
Προσέξτε ότι στον παραπάνω πίνακα δεν έχει γίνει λάθος µε την διπλή
εµφάνιση του «Χρήστος Χρήστου», απλά υπήρχαν δύο φοιτητές µε
ίδιο ονοµατεπώνυµο, αλλά διαφορετικό πατρώνυµο στη Βάση ∆εδο-
µένων του παραδείγµατος.
Ας δούµε άλλο ένα παράδειγµα µε σύνδεση. Έστω ότι θέλουµε να
απαντήσουµε στην απόλυτα λογική ερώτηση «βρείτε τον κατάλογο
των µαθηµάτων και ποιος καθηγητής διδάσκει κάθε µάθηµα». Αυτό
απαιτεί τη σύνδεση µόνο δύο πινάκων: Του πίνακα ΜΑΘΗΜΑ µε τον
πίνακα ΚΑΘ_ΜΑΘ. Παρατηρήστε ότι δεν απαιτείται η χρήση και του
πίνακα ΚΑΘΗΓΗΤΗΣ, αφού η πληροφορία που χρειαζόµαστε (όνοµα
και επώνυµο καθηγητή) είναι επίσης αποθηκευµένη στον πίνακα
ΚΑΘ_ΜΑΘ. Η ερώτηση λοιπόν σε SQL θα είναι
5.2 ∞¡∞∑∏∆∏™∏ ¢∂¢√ª∂¡ø¡ ™∆∏¡ SQL 135
SELECT ª∞£∏ª∞.√¡√ª∞,
∫∞£_ª∞£.√¡√ª∞, ∫∞£_ª∞£.∂¶ø¡Àª√
FROM ∫∞£_ª∞£ INNER JOIN ª∞£∏ª∞
ON ∫∞£_ª∞£.∫ø¢π∫√™=ª∞£∏ª∞.∫ø¢π∫√™;
∆ώστε την ερώτηση σε 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
Στην ενότητα αυτή θα µιλήσουµε για τις εντολές της 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
τητα ώστε να αποκτήσετε εξοικείωση.
Μέχρι τώρα είδαµε τις διάφορες εντολές που απαρτίζουν µία ερώτη-
ση σε γλώσσα SQL. Να συνοψίσουµε, αναφέροντας ότι µία εντολή
αναζήτησης σε SQL µπορεί να είναι της µορφής
SELECT ‰›·
FROM ›Ó·Î˜
WHERE Û˘Óı‹ÎË
GROUP BY ‰›·
HAVING Û˘Óı‹ÎË Û ۯ¤ÛË Ì ÙÔ GROUP BY
ORDER BY ‰›·
138 KEºA§AIO 5: H °§ø™™∞ Eƒø∆∏™∂ø¡ SQL
™ÎÔfi˜
Σκοπός της ενότητας είναι να παρουσιαστεί η SQL ως γλώσσα ορι-
σµού δεδοµένων. Θα δείξουµε πολύ σύντοµα τη χρήση της SQL καθα-
ρά για δηµιουργία πινάκων, εισαγωγή και διαγραφή δεδοµένων και
δηµιουργία όψεων.
¶ÚÔÛ‰ÔÎÒÌÂÓ· ∞ÔÙÂϤÛÌ·Ù·
Όταν θα έχετε ολοκληρώσει τη µελέτη αυτής της ενότητας θα µπορεί-
τε να:
• χρησιµοποιήσετε τις εντολές τις SQL για να δηµιουργήσετε πίνακες
• χρησιµοποιήσετε τις εντολές τις SQL για να εισάγετε δεδοµένα σε
πίνακες, να µεταβάλλετε τις τιµές κάποιων δεδοµένων, ή για να δια-
γράψετε κάποια δεδοµένα
• χρησιµοποιήσετε τις εντολές τις SQL για να δηµιουργήσετε όψεις σε
πίνακες
∂ÈÛ·ÁˆÁÈΤ˜ ¶·Ú·ÙËÚ‹ÛÂȘ
Στην ενότητα αυτή παρουσιάζονται οι βασικές εντολές της γλώσσας
ερωτήσεων SQL, οι οποίες χρησιµοποιούνται για διαχείριση δεδοµέ-
νων σε µία Βάση ∆εδοµένων. Στην ενότητα 5.3.1 παρουσιάζεται η
δηµιουργία πινάκων σε SQL και η αλλαγή της µορφής πινάκων. Στην
ενότητα 5.3.2 παρουσιάζεται η εισαγωγή, διαγραφή και αλλαγή δεδο-
µένων σε πίνακες µε τη χρήση της SQL. Τέλος, στην ενότητα 5.3.3
παρουσιάζονται οι όψεις σε SQL.
5.3.3 Ÿ„ÂȘ
™‡ÓÔ„Ë
Στο κεφάλαιο αυτό περιγράψαµε τη γλώσσα ερωτήσεων SQL. Εν
συντοµία στην ενότητα 5.1 παρουσιάστηκαν οι βασικές αρχές των
γλωσσών ερωτήσεων και ο σκοπός που εξυπηρετούν οι γλώσσες ερω-
τήσεων. Στις ενότητες 5.2 και 5.3 παρουσιάστηκαν οι εντολές της
γλώσσας ερωτήσεων SQL και δόθηκαν παραδείγµατα για το πώς µπο-
ρούν να υλοποιηθούν ερωτήσεις που αντλούν δεδοµένα από µία Βάση
142 KEºA§AIO 5: H °§ø™™∞ Eƒø∆∏™∂ø¡ SQL
™ÎÔfi˜
6
º ∞ § ∞ π √
¶ÚÔÛ‰ÔÎÒÌÂÓ· ∞ÔÙÂϤÛÌ·Ù·
ŒÓÓÔȘ ÎÏÂȉȿ
• Γλώσσες Ερωτήσεων (Query Languages)
• Παράδειγµα (Example)
• Πίνακας Ερώτησης (Query Table)
• Πίνακας Αποτελέσµατος (Result Table)
∂ÈÛ·ÁˆÁÈΤ˜ ¶·Ú·ÙËÚ‹ÛÂȘ
™ÎÔ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
ΦOITHTHΣ
ΟΝΟΜΑ ΕΠΩΝΥΜΟ ΠΑΤΡΩΝΥΜΟ ΑΜ ΗΜ_ΓΕΝ
ΦOITHTHΣ
ΟΝΟΜΑ ΕΠΩΝΥΜΟ ΠΑΤΡΩΝΥΜΟ ΑΜ ΗΜ_ΓΕΝ
Νίκος _Νίκου _Νικόλαος
Σε αυτόν τον πίνακα χρήστης έχει δώσει ένα παράδειγµα µιας απά-
ντησης στη µορφή που θέλει. Για να το κάνει αυτό χρησιµοποίησε ένα
παράδειγµα ονόµατος για κάθε περίπτωση. Τα παραδείγµατα για να
µη συγχέονται µε τις συνθήκες έπρεπε να έχουν µπροστά το χαρα-
κτήρα «_». Η εκτέλεση της παραπάνω ερώτησης θα είχε ως αποτέλε-
σµα την εµφάνιση του πίνακα:
ΦOITHTHΣ
ΟΝΟΜΑ ΕΠΩΝΥΜΟ ΠΑΤΡΩΝΥΜΟ
Νικόλαος Βασιλείου Σωτήριος
Ελένη Βασιλείου Σωτήριος
Νικόλαος Βαρδής Μιχαήλ
Χρήστος Χρήστου Νικόλαος
Χρήστος Χρήστου Βασίλειος
Μαρίνα Χατζή Αθανάσιος
6.1 ∏ ºπ§√™√ºπ∞ ∆∏™ QBE 147
ΦOITHTHΣ
ΟΝΟΜΑ ΕΠΩΝΥΜΟ ΠΑΤΡΩΝΥΜΟ ΑΜ ΗΜ_ΓΕΝ
Ρ._Νίκος Ρ._Νίκου Ρ._Νικόλαος
6.2 ™˘Óı‹Î˜
ΦOITHTHΣ
ΟΝΟΜΑ ΕΠΩΝΥΜΟ ΠΑΤΡΩΝΥΜΟ ΑΜ ΗΜ_ΓΕΝ
P. P. 20-08-1978
ΦOITHTHΣ
ONOMA EΠΩNYMO
Νικόλαος Βασιλείου
Χρήστος Χρήστου
ΦOITHTHΣ
ΟΝΟΜΑ ΕΠΩΝΥΜΟ ΠΑΤΡΩΝΥΜΟ ΑΜ ΗΜ_ΓΕΝ
P. Ρ. LIKE ‘B%’ >1-1-1978
ΦOITHTHΣ
ONOMA EΠΩNYMO
Νικόλαος Βασιλείου
Eλένη Bασιλείου
ΦOITHTHΣ
ΟΝΟΜΑ ΕΠΩΝΥΜΟ ΠΑΤΡΩΝΥΜΟ ΑΜ ΗΜ_ΓΕΝ
P. P. >1-1-1978
Ρ. LIKE ‘B%’
Βλέπετε πώς έχουµε τοποθετήσει τις δύο συνθήκες τη µία µετά την άλλη
ώστε να ισχύει το «OR». Ο πίνακας απάντησης τώρα θα είναι ο εξής:
ΦOITHTHΣ
ONOMA EΠΩNYMO
Νικόλαος Βασιλείου
Ελένη Βασιλείου
Νικόλαος Βαρδής
Χρήστος Χρήστου
150 KEºA§AIO 6: ∏ °§ø™™∞ Eƒø∆∏™∂ø¡ QBE
ΦOITHTHΣ
ΟΝΟΜΑ ΕΠΩΝΥΜΟ ΠΑΤΡΩΝΥΜΟ ΑΜ ΗΜ_ΓΕΝ
_ΟΝΦ _ΕΠΦ _ΑΜ
TMHMA
ONOMA ΕΤΟΣ_Ι∆ΡΥΣΗΣ
_ΟΝΤ _ΕΤ
ΦOIT_TMHMA
AM ONOMA
_AM _ΟΝΤ
AΠANTHΣH
ΟΝΟΜΑ ΦΟΙΤ ΕΠΩΝΥΜΟ ΟΝΟΜΑ ΤΜΗ ΕΤΟΣ_Ι∆ΡΥΣΗΣ
Ρ._ΟΝΦ Ρ._ΕΠΦ Ρ._ΟΝΤ Ρ._ΕΤ
κοινή µεταβλητή «_ΑΜ» που συνδέει τους δύο πίνακες µε τον αριθ-
µό µητρώου. Η σύνδεση του πίνακα ΤΜΗΜΑ µε τον πίνακα
ΦΟΙΤ_ΤΜΗΜΑ γίνεται µε την κοινή µεταβλητή «_ΟΝΤ» που συν-
δέει τους δύο πίνακες µε το όνοµα. Παρατηρήστε επίσης ότι χρησι-
µοποιούµε έναν προκαθορισµένο πίνακα του συστήµατος που ονοµά-
ζεται απάντηση. Αυτός ο πίνακας είναι χρήσιµος για τη διάρθρωση
των αποτελεσµάτων ειδικά σε περιπτώσεις όπου τα αποτελέσµατα
έχουν στοιχεία από περισσότερους από έναν πίνακες.
Το αποτέλεσµα αυτής της εντολής είναι ένας πίνακας µε τα παρακά-
τω αποτελέσµατα:
Προσέξτε ότι στον παραπάνω πίνακα δεν έχει γίνει λάθος µε τη διπλή
εµφάνιση του «Χρήστος Χρήστου», απλά υπήρχαν δύο φοιτητές µε
ίδιο ονοµατεπώνυµο, αλλά διαφορετικό πατρώνυµο στη Βάση ∆εδο-
µένων του παραδείγµατος.
Έστω ότι θέλουµε να βρούµε τα ονόµατα και τα επώνυµα των καθη- ÕÛÎËÛË
γητών που έχουν γεννηθεί µετά την 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.5 κωδικό κάθε µαθήµατος που έχει πάρει και το ονοµατεπώνυµο κάθε
καθηγητή που διδάσκει το συγκεκριµένο µάθηµα από τη Βάση
∆εδοµένων του παραδείγµατος 5.1 µε τα δεδοµένα του παραδείγµα-
τος 5.2. Eπίσης δώστε τον πίνακα µε το αναµενόµενο αποτέλεσµα.
Φ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
ÕÛÎËÛË ∆ώστε σε QBE στη µορφή που παρουσιάσαµε παραπάνω την ερώ-
·˘ÙÔ·ÍÈÔÏfiÁËÛ˘ τηση της άσκησης 6.4. Μη δώσετε τον πίνακα αποτελεσµάτων, αφού
6.6 αυτός είναι ήδη διαθέσιµος από την άσκηση 6.4.
ÕÛÎËÛË ∆ώστε σε QBE στη µορφή που παρουσιάσαµε παραπάνω την ερώ-
·˘ÙÔ·ÍÈÔÏfiÁËÛ˘ τηση της άσκησης 6.5 προσθέτοντας τον περιορισµό ότι θέλουµε να
6.7 δούµε µόνο τους φοιτητές µε αριθµό µητρώου µικρότερο του 19400.
Επίσης, δώστε και τον πίνακα αποτελεσµάτων που παρουσιάζει τα
αποτελέσµατα µε την παρακάτω σειρά (επώνυµο φοιτητή, αριθµός
µητρώου φοιτητή, κωδικός µαθήµατος, όνοµα µαθήµατος, όνοµα
καθηγητή που το διδάσκει, επώνυµο καθηγητή που το διδάσκει).
6 . 3 ∏ Q B E ™ ∂ ™ À ¡ ¢ À∞ ™ ª √ ª ∂ ° ƒ ∞ º π ∫ √ ¶ ∂ ƒ π µ ∞ § § √ ¡ 155
™‡ÓÔ„Ë
Στο κεφάλαιο αυτό περιγράψαµε τη γλώσσα ερωτήσεων QBE. Στην
ενότητα 6.1 παρουσιάστηκε η φιλοσοφία της QBE και µερικά παρα-
δείγµατα ερωτήσεων, στην ενότητα 6.2 µιλήσαµε για τις συνθήκες σε
QBE και, τέλος, στην ενότητα 6.3 δείξαµε πως η QBE µπορεί να χρη-
σιµοποιηθεί σε συνεργασία µε ένα γραφικό περιβάλλον υποβολής ερω-
τήσεων. Σας προτείνουµε να ανατρέξετε στη βιβλιογραφία για να βρεί-
τε περισσότερα παραδείγµατα από εντολές σε QBE και κυρίως να πει-
ραµατιστείτε µε εντολές QBE σε κάποιο Σύστηµα ∆ιαχείρισης Βάσε-
ων ∆εδοµένων (βλ. εργασίες της Θεµατικής Ενότητας 9.2).
156 KEºA§AIO 6: ∏ °§ø™™∞ Eƒø∆∏™∂ø¡ QBE
™ÎÔfi˜
Σκοπός του κεφαλαίου είναι να σας δώσει µία πολύ σύντοµη περιγρα-
φή των αντικειµενοστραφών Βάσεων ∆εδοµένων. Θα περιγράψουµε
τη φιλοσοφία των αντικειµενοστραφών Βάσεων ∆εδοµένων και τις
ανάγκες που ήρθαν να καλύψουν. Τέλος, θα παρουσιάσουµε, εν συντο-
∫ ∂
7
º ∞ § ∞ π √
¶ÚÔÛ‰ÔÎÒÌÂÓ· ∞ÔÙÂϤÛÌ·Ù·
ŒÓÓÔȘ ÎÏÂȉȿ
• ∆οµηµένος Προγραµµατισµός (Structured Programming)
• Αντικείµενο (Object)
• Αντικειµενοστραφής (Object Oriented)
• Κλάση (Class)
• Μέθοδος (Method)
• Γλώσσα Οικοδεσπότης (Host Language)
• Γλώσσα Ορισµού ∆εδοµένων (Data Definition Language)
• Κληρονοµικότητα (Inheritance)
∂ÈÛ·ÁˆÁÈΤ˜ ¶·Ú·ÙËÚ‹ÛÂȘ
™ÎÔfi˜
Σκοπός της ενότητας είναι να περιγραφεί γενικά η φιλοσοφία των αντι-
κειµενοστραφών Βάσεων ∆εδοµένων σε αντίθεση µε τις σχεσιακές
Βάσεις ∆εδοµένων.
¶ÚÔÛ‰ÔÎÒÌÂÓ· ∞ÔÙÂϤÛÌ·Ù·
Όταν θα έχετε ολοκληρώσει τη µελέτη αυτής της ενότητας θα µπορεί-
τε να:
• εξηγήσετε σε πολύ αδρές γραµµές τη γενική φιλοσοφία των αντικει-
µενοστραφών Βάσεων ∆εδοµένων
• περιγράψετε εν συντοµία τις διαφορές των σχεσιακών µε τις αντι-
κειµενοστραφείς Βάσεις ∆εδοµένων
Σε αντίθεση µε τις προηγούµενες δεκαετίες που ο προγραµµατισµός
βασιζόταν στη δοµή, σε αυτή τη δεκαετία είχαµε µία βασική µετα-
στροφή από το λεγόµενο δοµηµένο προγραµµατισµό (structured
programming) στον προγραµµατισµό προσανατολισµένο στα αντι-
κείµενα ή αντικειµενοστραφή προγραµµατισµό (object–oriented
programming). Γλώσσες προγραµµατισµού, όπως η C++, η Object
PASCAL και πιο πρόσφατα η Java (γλώσσα που κυριαρχεί στην ανά-
πτυξη εφαρµογών για τον παγκόσµιο ιστό), είναι αντικειµενοστραφείς
γλώσσες προγραµµατισµού που κυριαρχούν σταδιακά στην ανάπτυ-
ξη εφαρµογών.
Η εκτεταµένη χρήση αντικειµενοστραφών γλωσσών προγραµµατι-
σµού και η αλλαγή φιλοσοφίας που ο αντικειµενοστραφής προγραµ-
µατισµός έχει επιφέρει ανάγκασε και τις Βάσεις ∆εδοµένων να ακο-
λουθήσουν. Να µην ξεχνάτε πως γύρω από τις Βάσεις ∆εδοµένων χτί-
ζονται εφαρµογές που χειρίζονται ή παρουσιάζουν τα αποθηκευµένα
δεδοµένα ή ότι οι Βάσεις ∆εδοµένων είναι ένα τµήµα ενός µεγαλύτε-
ρου συστήµατος που αποτελείται από πολλές εφαρµογές λογισµικού.
Για την αντικειµενοστραφή φιλοσοφία δεν θα µιλήσουµε σε αυτό το
βιβλίο, αφού θεωρούµε ότι είναι είτε ήδη γνωστή, είτε ότι θα έχετε την
ευκαιρία να τη διδαχθείτε εκτενώς σε σχετικές µε το αντικείµενο θεµα-
160 K E º A § A I O 7 : ∞ ¡ ∆ π ∫ ∂ π ª ∂ ¡ √ ™ ∆ ƒ∞ º ∂ π ™ B ∞ ™ ∂ π ™ ¢ ∂ ¢ √ ª ∂ ¡ ø ¡
™ÎÔfi˜
Σκοπός της ενότητας είναι να περιγραφεί γενικά η γλώσσα ερωτήσε-
ων OQL, που είναι µία γλώσσα ερωτήσεων βασισµένη στα αντικείµε-
να, και µία σύντοµη παρουσίαση της πρότυπης γλώσσας ερωτήσεων
SQL3, που είναι εξέλιξη της SQL που παρέχει δυνατότητες χειρισµού
αντικειµένων.
¶ÚÔÛ‰ÔÎÒÌÂÓ· ∞ÔÙÂϤÛÌ·Ù·
Όταν θα έχετε ολοκληρώσει τη µελέτη αυτής της ενότητας θα µπορεί-
τε να:
• εξηγήσετε σε πολύ αδρές γραµµές τη γενική φιλοσοφία της αντικει-
µενοστραφούς γλώσσας ερωτήσεων OQL
• περιγράψετε εν συντοµία τη χρήση της OQL
• περιγράψετε εν συντοµία κάποιες δυνατότητες χειρισµού αντικειµέ-
νων της γλώσσας ερωτήσεων SQL3
Σήµερα οι αντικειµενοστραφείς Βάσεις ∆εδοµένων δεν έχουν ακόµα
γνωρίσει την ευρεία αποδοχή και χρήση που έχουν γνωρίσει οι σχε-
σιακές Βάσεις ∆εδοµένων. Για αυτό το λόγο και δεν υπάρχουν σε
µεγάλη χρήση αντικειµενοστραφείς γλώσσες ερωτήσεων, σε αντίθε-
ση µε την SQL και την QBE που χρησιµοποιούνται πολύ και υπάρ-
χουν στα περισσότερα σχεσιακά Συστήµατα ∆ιαχείρισης Βάσεων
∆εδοµένων. Η νέα πρότυπη έκδοση της SQL, η SQL3, παρέχει ήδη
162 K E º A § A I O 7 : ∞ ¡ ∆ π ∫ ∂ π ª ∂ ¡ √ ™ ∆ ƒ∞ º ∂ π ™ B ∞ ™ ∂ π ™ ¢ ∂ ¢ √ ª ∂ ¡ ø ¡
™‡ÓÔ„Ë
Στο κεφάλαιο αυτό περιγράψαµε πολύ συνοπτικά τις βασικές αρχές των αντικειµε-
νοστραφών Βάσεων ∆εδοµένων και µιλήσαµε λίγο για τη αντικειµενοστραφή γλώσ-
σα ερωτήσεων OQL. Ειδικότερα, στην ενότητα 7.1 µιλήσαµε γενικά για αντικείµε-
να, κλάσεις και µεθόδους και τη χρήση τους στις Βάσεις ∆εδοµένων και στην ενό-
τητα 7.2 µιλήσαµε για τη χρήση της OQL και της SQL3. Η παρουσίαση των αντι-
κειµενοστραφών Βάσεων ∆εδοµένων και ακόµα περισσότερο της OQL και της
SQL3 έγινε πολύ συνοπτικά. Ο καλύτερος τρόπος για να µάθετε περισσότερα για τις
αντικειµενοστραφείς Βάσεις ∆εδοµένων είναι να µελετήσετε περισσότερα από την
προτεινόµενη βιβλιογραφία που ακολουθεί.
™ÎÔfi˜
Σκοπός του κεφαλαίου είναι να γίνει σύνοψη της ύλης που καλύψαµε
και να δοθούν οδηγίες για το πώς να οργανώσετε τα επόµενα στάδια
της µελέτη σας στις Βάσεις ∆εδοµένων.
∫ ∂
8
º ∞ § ∞ π √
¶ÚÔÛ‰ÔÎÒÌÂÓ· ∞ÔÙÂϤÛÌ·Ù·
Στο βιβλίο αυτό έγινε µία εισαγωγή στα θέµατα των Βάσεων ∆εδοµέ-
νων. Ειδικότερα, µιλήσαµε για τις βασικές έννοιες που σχετίζονται µε
τις Βάσεις ∆εδοµένων, ορίσαµε τι σηµαίνει Βάση ∆εδοµένων, πού πρέ-
πει και πού δεν πρέπει να χρησιµοποιείται µία Βάση ∆εδοµένων. Επί-
σης, µιλήσαµε για τα πλεονεκτήµατα της οργάνωσης των δεδοµένων
µας µε τη βοήθεια µίας Βάσης ∆εδοµένων έναντι της παραδοσιακής
οργάνωσης των δεδοµένων µε σύστηµα αρχείων. Συζητήσαµε το Σύστη-
µα ∆ιαχείρισης Βάσεων ∆εδοµένων και βοηθήσαµε να µη συγχέετε τη
Βάση ∆εδοµένων µε το Σύστηµα ∆ιαχείρισης Βάσεων ∆εδοµένων.
Ακόµα, σας παρουσιάσαµε τους διάφορους χρήστες ενός Συστήµατος
∆ιαχείρισης Βάσεων ∆εδοµένων και τον ρόλο του καθενός.
Στη συνέχεια του βιβλίου µιλήσαµε για τα τρία επίπεδα της αρχιτεκτο-
νικής ενός Συστήµατος ∆ιαχείρισης Βάσεων ∆εδοµένων και δώσαµε
µεγάλη έµφαση στο φυσικό επίπεδο. Μιλήσαµε για δείκτες, καταλό-
γους, ευρετήρια, τεχνικές κατακερµατισµού και για τα δέντρα τύπου Β.
Στα πλαίσια αυτού του βιβλίου µιλήσαµε για κάποια γενικά θέµατα
που αφορούν τις Βάσεις ∆εδοµένων, όπως είναι η ταυτόχρονη προ-
σπέλαση στα δεδοµένα, ο έλεγχος της ακεραιότητας των δεδοµένων
και το κλείδωµα των δεδοµένων και αναφέραµε τα προβλήµατα του
deadlock και του livelock. Στα πλαίσια της ευρύτερης παρουσίασης
των Σχεσιακών Βάσεων ∆εδοµένων έγινε µία παρουσίαση της Σχε-
σιακής Άλγεβρας και του Σχεσιακού Λογισµού. Μεγάλη έµφαση
δώσαµε στη γλώσσα ερωτήσεων SQL. Για την καλύτερη εκµάθηση
αυτής της γλώσσας δώσαµε αρκετά παραδείγµατα και ασκήσεις που
σίγουρα εκτελέσατε και αποκτήσατε εµπειρία στην SQL.
Τέλος, έγινε µία πολύ σύντοµη αναφορά (καθαρά για ενηµέρωσή σας)
στις αντικειµενοστραφείς Βάσεις ∆εδοµένων και στην εξέλιξη που επι-
φέρουν στη γενικότερη φιλοσοφία των Βάσεων ∆εδοµένων. Μιλήσα-
µε για την αντικειµενοστραφή γλώσσα ορισµού δεδοµένων ODL, την
πρότυπη γλώσσα ερωτήσεων SQL3 και τις δυνατότητες που παρέχει
για ορισµό αφηρηµένων τύπων δεδοµένων και περιγράψαµε την αντι-
κειµενοστραφή γλώσσα ερωτήσεων OQL.
™˘Ó¤¯ÂÈ· ÌÂϤÙ˘
Τέλος, όσο αφορά τις γλώσσες ερωτήσεων (SQL και QBE) που
παρουσιάσαµε, ο καλύτερος τρόπος για να τις µάθετε είναι η εξάσκη-
ση. Αρκετές ασκήσεις υπάρχουν και στο εργαστηριακό µάθηµα
«Βάσεις ∆εδοµένων» της Θεµατικής Ενότητας 9.2, που θα έχετε τη
δυνατότητα να παρακολουθήσετε στο µέλλον. Οι ασκήσεις που δίνο-
νται σε αυτό το βιβλίο είναι καλό, αφού γίνουν πρώτα σε χαρτί, µετά
να εκτελεστούν και σε κάποιο Σύστηµα ∆ιαχείρισης Βάσεων ∆εδο-
µένων, από όσους από εσάς έχετε τη δυνατότητα.
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
Προσοχή: Εάν στις ερωτήσεις αυτές έχετε δώσει περισσότερες από µία λαθεµένες απα-
ντήσεις τότε προτείνουµε να µην προχωρήσετε µε τη µελέτη της εποµένης ενό-
τητας, αλλά να επαναλάβετε την επανάληψη του κεφαλαίου. Πάντως µην απο-
γοητεύεστε. Μελετήσατε αρκετές έννοιες που αντιµετωπίσατε για πρώτη φορά
και είναι λογικό να έχετε µπερδευτεί λίγο.
176 A¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™ / KEº. 2
2.1
β) Ως φυσικό επίπεδο της αρχιτεκτονικής µίας Βάσης ∆εδοµένων ορίζεται το επίπεδο στο
οποίο τα δεδοµένα αποθηκεύονται και οργανώνονται πραγµατικά στη Βάση ∆εδοµένων.
2.2
Ο χρήστης πρέπει να περιγράφει κάθε εντολή που δίνει στο εξωτερικό επίπεδο µε την αντί-
στοιχη εντολή στο φυσικό επίπεδο. (ΛΑΘΟΣ)
Στην ενότητα 2.1.2 είπαµε ότι ο χρήστης βλέπει µόνο τις εντολές στο εξωτερικό επί-
πεδο. ∆είτε επίσης και τον ορισµό της διαφάνειας στην ενότητα 2.1.3. Σύµφωνα µε
αυτόν τον ορισµό ο χρήστης δεν πρέπει να ασχολείται µε το φυσικό επίπεδο. Άρα η
σωστή απάντηση είναι (ΛΑΘΟΣ).
Είναι σωστό σύµφωνα µε όσα περιγράφονται στην ενότητα 2.1.4. Εάν απαντήσατε
λάθος, διαβάστε ξανά τους ορισµούς σε αυτή την ενότητα.
∆ιαφάνεια σηµαίνει ότι ο χρήστης βλέπει τη µορφή των δεδοµένων για κάθε επίπεδο.
(ΛΑΘΟΣ)
Μπράβο σας, εάν επιλέξατε (ΛΑΘΟΣ) γιατί είναι πραγµατικά δύσκολη έννοια, αφού
µπορείτε να µπερδευτείτε µε τον ετυµολογικό ορισµό της λέξης «διαφάνεια». ∆ια-
βάστε ξανά τον ορισµό της ενότητας 2.1.3, εάν απαντήσατε (ΣΩΣΤΟ).
Στο επίπεδο αντίληψης δεν επιτελούνται στην πραγµατικότητα λειτουργίες, απλά είναι ένα
επίπεδο για να συνδέει το φυσικό µε το εξωτερικό επίπεδο. (ΛΑΘΟΣ)
A¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™ / KEº. 2 177
Βέβαια είναι λάθος. ∆ιαβάστε την ενότητα 2.1.4 και µελετήστε ξανά τα σχήµατα 2.2
και 2.3 ειδικά στο σχήµα 2.3 παρουσιάζονται µία σειρά από λειτουργίες που επιτε-
λούνται στο επίπεδο αντίληψης.
2.3
Είναι ένα κλασικό παράδειγµα εγγραφής, όπως την ορίσαµε στην εκφώνηση της
άσκησης. Μπράβο σας εάν απαντήσατε (ΣΩΣΤΟ).
Μπράβο σας εάν απαντήσατε (ΣΩΣΤΟ), γιατί ήταν εύκολο να κάνετε λάθος. Θυµη-
θείτε ότι ως ηµεροµηνία ορίσαµε «Κείµενο (20)», άρα η τιµή «∆εν έγινε µέτρηση»
είναι αποδεκτή τιµή.
Μπράβο σας εάν απαντήσατε (ΣΩΣΤΟ), γιατί και εδώ ήταν πολύ εύκολο να κάνετε
λάθος. Ο κωδικός δεν πρέπει να έχει µήκος 4 χαρακτήρες, αλλά να είναι 4 Bytes.
Αυτό σηµαίνει ότι αριθµοί µέχρι και τον 4.294.967.296 είναι δεκτοί, άρα και ο
8.786.117 είναι αποδεκτός. Μην απογοητεύεστε, εάν απαντήσατε λάθος.
Η σωστή απάντηση είναι (ΛΑΘΟΣ), όχι γιατί η θερµοκρασία 555 είναι πολύ υψηλή,
αλλά γιατί ο αριθµός 555 είναι 2 Bytes και όχι 1.
Η σωστή απάντηση είναι (ΛΑΘΟΣ), γιατί η τιµή «ΑΒ» δεν αντιστοιχεί σε ακέραιο
αριθµό. Μπράβο σας εάν απαντήσατε σωστά σε όλες τις εγγραφές. Σε αντίθετη περί-
πτωση αφιερώστε λίγο χρόνο για µία επανάληψη στην ενότητα 2 του κεφαλαίου 2.
2.4
Η λογική των λύσεων είναι η εξής: Κάθε 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
Έχουµε 2000 εγγραφές και κάθε block έχει 20 εγγραφές, άρα έχουµε 2000/20=100
blocks. Για κάθε block απαιτείται µία νέα εγγραφή για τον κατάλογο, άρα έχουµε
100 νέες εγγραφές που χρειάζονται 100/20=5 νέα blocks. Έτσι αντί για 100 blocks
χρησιµοποιούµε 105 blocks δηλαδή µία αύξηση 5%.
Έχουµε 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%.
Προσοχή είναι ίδια µε την προηγούµενη (2) µέχρι το δεύτερο επίπεδο, µόνο που για
να δεικτοδοτήσουµε τα δύο blocks του δευτέρου επιπέδου χρησιµοποιούµε ένα
ακόµα block στο τρίτο επίπεδο. Άρα 22+1=23 blocks αντί για 200 ή ποσοστό αύξη-
σης 11,5%.
A¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™ / KEº. 3 179
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. (ΛΑΘΟΣ)
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.5
Μπράβο σας, εάν απαντήσατε σε όλες τις προτάσεις σωστά. ∆εν ήταν εύκολη άσκηση. Σε
αντίθετη περίπτωση διαβάστε ξανά την ενότητα 3.3 και ειδικότερα τις ενότητες 3.3.1 και
3.3.2 και επαναλάβατε την άσκηση.
Οι σχέσεις δεν αναπαριστώνται στο φυσικό επίπεδο. Στο φυσικό επίπεδο, µε εγγραφές αντι-
στοιχούν µόνο οντότητες. (ΛΑΘΟΣ)
Φυσικά και στο φυσικό επίπεδο αναπαριστώνται και οι σχέσεις. ∆ιαβάστε αναλυτι-
κά την ενότητα 3.3 και ειδικά το 3.3.2 και θα βρείτε την εξήγηση µετά τον ορισµό
των σχέσεων.
Κάθε σχέση στην οποία µετέχουν δύο οντότητες θα έχει βαθµό 2. (ΣΩΣΤΟ)
A¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™ / KEº. 4 181
Σύµφωνα µε τον ορισµό του βαθµού µίας σχέσης, αφού έχει δύο οντότητες έχει και
βαθµό δύο.
Ορίσαµε τη σχέση ISA ως µία εξειδίκευση της σχέσης 1 προς 1. Προσοχή όµως, το
αντίστροφο φυσικά και δεν ισχύει.
Μία σχέση είναι Ν προς Μ, εάν µία εγγραφή από µία οντότητα συµµετέχει δύο ή περισ-
σότερες φορές στη σχέση. (ΛΑΘΟΣ)
Θα µπορούσε να είναι 1 προς Ν. Αν λέγαµε «Μία σχέση είναι Ν προς Μ, εάν µία
εγγραφή από κάθε οντότητα συµµετέχει δύο ή περισσότερες φορές», τότε θα ισχύ-
ει η πρόταση.
Μη συγχέετε το βαθµό µίας σχέσης µε την κατηγορία στην οποία αυτή ανήκει. Η
σχέση Ν προς Ν που αναφέρουµε στην επεξήγηση της ενότητας 3.3.2 είναι σχέση
µε βαθµό 2.
182 A¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™ / KEº. 4
4.1
Οµάδα: 5
Κατηγορία: 2
Παίκτης: 7
Μάνατζερ: 3
Αντίστοιχα για κάθε σχέση έχουµε ως arity το άθροισµα των κλειδιών κάθε οντότητας που
συµµετέχει στη σχέση, συν τα επιπλέον κατηγορήµατα αυτής της σχέσης. Έτσι προκύπτουν
τα εξής:
Χρησιµοποιεί: 4
Συµµετέχει: 4
Παίζει: 3
Συνεργάζεται: 3
Αγώνας: 5
2. Οι πίνακες για τις οντότητες είναι οι ακόλουθοι (µε έντονα γράµµατα είναι τα πεδία που
αποτελούν το κλειδί για κάθε πίνακα):
ΟΜΑ∆Α
Ονοµασία Έδρα Ιδιοκτήτης Χορηγός Έτος Ίδρυσης
KΑΤΗΓΟΡΙΑ
Ονοµασία Xρονιά
ΠΑΙΚΤΗΣ
Α. Μητρ. Όνοµα Επώνυµο Πατρ/µο Ύψος Ηµ. Γέν. Πόλης
MΑΝΑΤΖΕΡ
Όνοµα Επώνυµο Tηλέφωνο
A¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™ / KEº. 4 183
ΧΡΗΣΙΜΟΠΟΙΕΙ
Όνοµα Μαν. Επώνυµο Μαν. Ονοµασία Οµ. Έδρα Οµ.
ΣΥΜΜΕΤΕΧΕΙ
Oνοµασία K. Xρονιά K. Ονοµασία Οµ. Έδρα Οµ.
ΠΑΙΖΕΙ
Α.Μ. Παικ. Ονοµασία Οµ. Έδρα Οµ.
ΣΥΝΕΡΓΑΖΕΤΑΙ
Όνοµα Μαν. Επώνυµο Μαν. Α.Μ. Παικ.
AΓΩΝΑΣ
Ονοµασία Ο 1 Ονοµασία Ο 1 Γήπεδο Ηµεροµηνία Σκορ
Παρατηρήστε ότι στις σχέσεις αναφέρουµε, δίπλα στο όνοµα κάθε κλειδιού και το όνοµα
της οντότητας στην οποία είναι κλειδί (τα αρχικά της οντότητας), ώστε να γίνεται η διά-
κριση ανάµεσα σε κατηγορήµατα µε ίδια ονοµασία.
Μπράβο σας, εάν απαντήσατε σωστά σε όλα τα ερωτήµατα αυτής της άσκησης. Αυτό δεί-
χνει ότι έχετε κατανοήσει τις έννοιες που µελετήσατε. Σε αντίθετη περίπτωση, αφιερώστε
λίγο χρόνο για µία καλή επανάληψη σε όλες τις έννοιες που περιγράφονται στην ενότητα
4.1 και ίσως και στα διαγράµµατα σχέσεων – οντοτήτων που περιγράψαµε στην ενότητα
3.3 και 3.4.
4.2
Μπράβο σας, εάν απαντήσατε «λάθος». Είπαµε ότι η ενηµέρωση αντιστοιχεί σε δια-
γραφή και εισαγωγή όταν γίνονται αλλαγές σε κλειδιά, αλλά όχι ότι η ενηµέρωση
δεν δηµιουργεί προβλήµατα.
Κάθε εισαγωγή δεδοµένων παραβιάζει την ακεραιότητα της Βάσης ∆εδοµένων, όταν γίνε-
ται εισαγωγή σε κλειδί. (ΛΑΘΟΣ)
Μπράβο σας, εάν επιλέξατε «σωστό». Προκύπτει από τον ορισµό της επιλογής.
Ξαναδιαβάστε τους ορισµούς εάν δεν απαντήσατε σωστά.
Όταν δύο χρήστες κάνουν επιλογή των ίδιων δεδοµένων την ίδια χρονική στιγµή η Βάση
∆εδοµένων κλειδώνει τα δεδοµένα και επιτρέπει µόνο σε ένα χρήστη κάθε φορά να τα δια-
βάζει. (ΛΑΘΟΣ)
Μπράβο σας, εάν επιλέξατε «λάθος». ∆ιαβάστε την απάντηση στην προηγούµενη
ερώτηση. Είπαµε ότι κατά την επιλογή δεν χρειάζεται να γίνει κλείδωµα.
4.3
1. Ζητήσαµε τους παίκτες µε όνοµα «Νίκος» και ύψος µεγαλύτερο του 1,96. Άρα και ο παί-
κτης µε ύψος 1,96 δεν µετέχει στην απάντηση που είναι η εξής:
4.4 4.4
1. Ζητήσαµε αναδιάταξη του πίνακα παίκτης και 2. Ζητήσαµε επιλογή µόνο των επωνύ-
επιλογή µόνο των στηλών «Όνοµα», «Επώ- µων των µάνατζερ, άρα:
νυµο», «Πόλη». H απάντηση είναι η εξής:
4.5
Μπράβο σας, εάν το υλοποιήσατε, γιατί είχε µία παγίδα. Πρώτα έπρεπε να γίνει η επιλογή
και µετά η προβολή, γιατί αλλιώς δεν θα µπορούσατε να επιλέξετε την «Πόλη». Η σωστή
λύση είναι π Επώνυµο, Ύψος (σ Πόλη=Πάτρα (Παίκτης)).
4.6
4.7
Μπράβο σας, εάν το υλοποιήσατε γιατί ήταν δύσκολη άσκηση. Ακολουθούν οι απαντήσεις.
4.8
Μπράβο σας, εάν τα καταφέρατε σε αυτή την άσκηση. Ήταν πραγµατικά δύσκολη αφού
δεν επεκταθήκαµε στο σχεσιακό υπολογισµό και δεν σας δώσαµε αρκετά παραδείγµατα.
Εάν δεν τα καταφέρατε, µην απογοητεύεστε, αλλά αφιερώστε χρόνο για να διαβάσετε
περισσότερα για το σχεσιακό υπολογισµό από τη βιβλιογραφία που αναγράφεται στο τέλος
A¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™ / KEº. 4 & 5 187
του κεφαλαίου:
1) { x | A(x) Ÿ E}
∆ηλαδή οι εγγραφές 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
5.2
Φυσικά η ίδια ερώτηση µπορεί να γραφεί στην πιο αναλυτική µορφή της
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
Προσοχή ότι εδώ δεν θα µπορούσε να υπάρχει απλή µορφή, αφού πρέπει να ξεχωρίζει για
ποιο όνοµα µιλάµε (το όνοµα του τµήµατος ή το όνοµα του µαθήµατος). Ακολουθεί και ο
πίνακας που θα προκύψει ως αποτέλεσµα της απάντησης
A¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™ / KEº. 5 189
5.5
ONOMA MAΘ
Μαθηµατικά
Φυσική
ONOMA EΠΩNYMO
Χρήστος Χρήστου
Μιχαήλ Ξανθός
Κωνσταντίνος Μακρύς
190 A¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™ / KEº. 5
5.6
Η ερώτηση σε SQL είναι
SELECT ONOMA, ∂¶ø¡Àª√
FROM ∫∞£∏°∏∆∏™
WHERE √¡√ª∞ LIKE ‘Mȯ%’;
Προσοχή, στα δεδοµένα που έχουµε εισάγει έχουµε δώσει δύο καθηγητές µε όνοµα ‘Μιχά-
λης’, µόνο που τον ένα τον εισάγαµε ως ‘Μιχάλης’ και τον άλλον ως ‘Μιχαήλ’. Με την
εντολή αυτή θα βρούµε και τους δύο, ενώ αν ζητάγαµε ONOMA= ‘Μιχάλης’ θα βρίσκα-
µε µόνο τον ένα. Ακολουθεί ο πίνακας που θα προκύψει ως αποτέλεσµα της απάντησης
ONOMA EΠΩNYMO
Μιχαήλ Βαρδής
Μιχάλης Ξανθός
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
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 θα µπορούσε και να παραλείπεται.
Ακολουθεί και ο πίνακας που θα προκύψει ως αποτέλεσµα της απάντησης
Μπράβο σας, εάν απαντήσατε σωστά σε αυτή την άσκηση. γιατί ήταν µία πραγµατικά
δύσκολη άσκηση. Σε αντίθετη περίπτωση, µην απογοητεύεστε, αλλά αφιερώστε λίγο χρόνο
στο να πειραµατιστείτε µε τη σύνδεση των πινάκων.
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);
Ακολουθεί και ο πίνακας που θα προκύψει ως αποτέλεσµα της απάντησης
Μπράβο σας, εάν απαντήσατε σωστά σε αυτή την άσκηση, γιατί ήταν η πιο δύσκολη άσκη-
ση που έχετε καταπιαστεί σε αυτό το κεφάλαιο. Σε αντίθετη περίπτωση, µην απογοητεύε-
στε, αλλά αφιερώστε λίγο χρόνο στο να πειραµατιστείτε µε τη σύνδεση των πινάκων.
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, στα δεδοµένα που έχου-
µε εισάγει έχουµε δώσει δύο καθηγητές µε όνοµα ‘Μιχάλης’, µόνο που τον ένα τον εισά-
γαµε ως ‘Μιχάλης’ και τον άλλον ως ‘Μιχαήλ’. Με την εντολή αυτή θα βρούµε και τους
δύο, ενώ αν βάζαµε κάτω από το όνοµα ‘Μιχάλης’ θα βρίσκαµε µόνο τον ένα. Ακολουθεί
και ο πίνακας που θα προκύψει ως αποτέλεσµα της απάντησης
ΟΝΟΜΑ ΕΠΩΝΥΜΟ
Μιχαήλ Βαρδής
Μιχάλης Ξανθός
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
Ρ._ΟΝΦ Ρ._ΑΜ Ρ._ΚΩ∆ Ρ._ΟΝΚ Ρ._ΕΠΚ
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
Σε αυτόν τον πίνακα ο χρήστης έχει σύρει τα πεδία «ΟΝΟΜΑ», «ΕΠΩΝΥΜΟ» και
«ΠΑΤΡΩΝΥΜΟ» από τον πίνακα «ΦΟΙΤΗΤΗΣ» και «ΟΝΟΜΑ» από τον πίνακα
«ΜΑΘΗΜΑ». Επίσης, έχει επιλέξει να είναι όλα εµφανίσιµα στο αποτέλεσµα και να υπάρ-
χει διάταξη πρώτα µε το επώνυµο και µετά µε το όνοµα.
Μπράβο σας, εάν τα καταφέρατε µε αυτή την άσκηση. ∆οκιµάστε να την υλοποιήσετε και
στην πράξη σε κάποιο σύστηµα.
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
ει τόσο τον πίνακα «ΦΟΙΤ_ΜΑΘ» µε τον πίνακα «ΜΑΘΗΜΑ», όσο και τον πίνακα
«ΜΑΘΗΜΑ» µε τον πίνακα «ΚΑΘ_ΜΑΘ» και στο κλειδί «ΟΝΟΜΑ – ΕΠΩΝΥΜΟ», που
συνδέει τους πίνακες «ΚΑΘ_ΜΑΘ» και «ΚΑΘΗΓΗΤΗΣ».
Ο πίνακας αποτελέσµατος είναι της µορφής που φαίνεται στο παρακάτω παράδειγµα
Σε αυτόν τον πίνακα ο χρήστης έχει σύρει τα πεδία «ΕΠΩΝΥΜΟ» και «ΑΜ» από τον πίνα-
κα «ΦΟΙΤΗΤΗΣ», τα πεδία «ΟΝΟΜΑ» και «ΚΩ∆ΙΚΟΣ» από τον πίνακα «ΜΑΘΗΜΑ»
και τα πεδία «ΟΝΟΜΑ» και «ΕΠΩΝΥΜΟ» από τον πίνακα «ΚΑΘΗΓΗΤΗΣ». Επίσης,
έχει επιλέξει να είναι όλα εµφανίσιµα στο αποτέλεσµα και έχει δώσει ως κριτήριο
«<19400» στο πεδίο «ΑΜ». Τέλος, δεν έχει καθορίσει αν θα υπάρχει διάταξη των αποτε-
λεσµάτων.
Ο πίνακας µε τα αποτελέσµατα ακολουθεί
Μπράβο σας, εάν τα καταφέρατε µε αυτή την άσκηση, γιατί ήταν αρκετά δύσκολη, αφού
απαιτούσε να χρησιµοποιήσετε πέντε διαφορετικούς πίνακες. ∆οκιµάστε να την υλοποιή-
σετε και στην πράξη σε κάποιο σύστηµα.
O‰ËÁ›Â˜ Î·È Î·Ù¢ı‡ÓÛÂȘ ÁÈ· ÙȘ ‰Ú·ÛÙËÚÈfiÙËÙ˜
1.1
Περιγράψτε παραδείγµατα του πραγµατικού κόσµου τα οποία γνωρίζετε αρκετά καλά. Για
παράδειγµα εάν έχετε εργαστεί σε κάποιο κατάστηµα σκεφτείτε εάν θα είχε εφαρµογή µία
Βάση ∆εδοµένων για αυτό το κατάστηµα και το σκοπό και τη µορφή των δεδοµένων που
θα εισαχθούν σε αυτή τη Βάση ∆εδοµένων. Σκεφτείτε το Ελληνικό Ανοικτό Πανεπιστή-
µιο στο οποίο σπουδάζετε και πως µια Βάση ∆εδοµένων θα µπορούσε να µοντελοποιήσει
τα δεδοµένα του.
1.2
Θυµηθείτε ότι όλοι οι χρήστες δεν θα πρέπει να έχουν πρόσβαση σε όλα τα δεδοµένα. Για
παράδειγµα δύο επίπεδα χρηστών θα ήταν «Υπεύθυνος Λειτουργίας της Βάση ∆εδοµένων»
µε δικαίωµα να εισάγει στη Βάση ∆εδοµένων τις µετεωρολογικές πληροφορίες και «Απλός
Χρήστης» ο οποίος µόνο διαβάζει τις πληροφορίες. Απλοί χρήστες θα µπορούσαν να είναι
τηλεοπτικοί και ραδιοφωνικοί σταθµοί, εφηµερίδες κτλ. Εάν δεν τα καταφέρατε να εντο-
πίσετε τη διαφορά ανάµεσα σε απλούς χρήστες και χρήστες που έχουν την ευθύνη διαχεί-
ρισης των δεδοµένων µην απογοητεύεστε, αλλά επαναλάβατε τη µελέτη της ενότητας 1.2.
1.3
Σκεφτείτε ένα λογοτεχνικό βιβλίο. Η µεταφορά του υλικού του σε µία Βάση ∆εδοµένων
και η οργάνωσή τους δεν θα είχε νόηµα, αφού η πληροφορία είναι στατική και προορίζε-
ται για σειριακή ανάγνωση. Ισχύει όµως το ίδιο για µία εγκυκλοπαίδεια; (Προφανώς όχι
και µπράβο σας εάν τη συµπεριλάβατε στις επιλογές σας.)
1.4
Ανατρέξτε στις οδηγίες για τη δραστηριότητα 1.1 και δείτε τι προτείναµε για τους χρήστες
της Βάσης ∆εδοµένων. Τώρα µε βάσει την εµπειρία που έχετε αποκτήσει καθορίστε τα
όρια των δυνατοτήτων που πρέπει να επιτρέπει η Βάση ∆εδοµένων σε καθέναν από αυτούς.
Για παράδειγµα ο απλός χρήστης (από ένα τηλεοπτικό σταθµό) θα πρέπει να µπορεί να δια-
βάζει τα δεδοµένα, αλλά δεν θα πρέπει να έχει καµία δυνατότητα µεταβολής των.
1.5
Σε αυτή τη δραστηριότητα σας ζητάµε να «παίξετε το ρόλο» του αναλυτή, δηλαδή του επι-
στήµονα που συζητά µε κάποιον πελάτη, εντοπίζει τις ανάγκες του και προτείνει τεχνολο-
γικές λύσεις που να τον εξυπηρετούν (όταν αυτό είναι εφικτό). Με την εµπειρία που έχετε
206 O ¢ ∏ ° π ∂ ™ ∫ ∞ π ∫ ∞∆ ∂ À £ À ¡ ™ ∂ π ™ ° π ∞ ∆ π ™ ¢ ƒ∞ ™ ∆ ∏ ƒ π √ ∆ ∏ ∆ ∂ ™ / K E º . 1 & 2
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
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.
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
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§º∞µ∏∆π∫√ ∂Àƒ∂∆∏ƒπ√ √ƒø¡ (∂§§∏¡π∫∞ – ∞°°§π∫∞)
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