Αναζήτηση / Search

  
Εισαγωγή στις βάσεις δεδομένων
Εισαγωγή στις βάσεις δεδομένων
Εισαγωγή στις βάσεις δεδομένων
Εισαγωγή στις βάσεις δεδομένων
Εισαγωγή στις βάσεις δεδομένων
Εισαγωγή στις βάσεις δεδομένων
Εισαγωγή στις βάσεις δεδομένων

 

 

1. Εισαγωγή

Ένα Σύστημα Διαχείρισης Βάσης Δεδομένων (ΣΔΒΔ) (Database Management System) είναι ένα πακέτο λογισμικού (software package), που έχει σαν κύριους στόχους τη συστηματική αποθήκευση (storage), αναζήτηση (retrieval) και συντήρηση (maintenance) δεδομένων. Υπάρχουν πολλά πακέτα στην αγορά, που ταιριάζουν στον πιο πάνω ορισμό. Αξίζει να σημειώσουμε ότι πολλά από τα πακέτα αυτά, χαρακτηρίζονται από τους κατασκευαστές τους σαν Γενικευμένα ΣΔΒΔ, Συστήματα Επεξεργασίας Πληροφοριών (Information Processing Systems), κλπ.

Οι διάφορες επιχειρήσεις και Οργανισμοί χρησιμοποιούν τα ΣΔΒΔ σαν "εργαλεία" για την αποδοτικότερη λειτουργία, διοίκηση και προγραμματισμό τους. Αυτό σημαίνει ότι οι χρήστες (users) περιμένουν πολλά οφέλη από τη χρήση των ΣΔΒΔ όπως: βελτίωση της παραγωγικής διαδικασίας, ταχύτερη εξυπηρέτηση του πελάτη, ορθολογικότερες διοικητικές αποφάσεις, κλπ. Αυτό εξηγεί γιατί σήμερα λειτουργούν σε παγκόσμια κλίμακα ένας μεγάλος αριθμός ΣΔΒΔ και ξοδεύονται τεράστια ποσά για την ανάπτυξη, λειτουργία και συντήρησή τους.

Αν θελήσουμε να περιγράψουμε ένα τυπικό περιβάλλον λειτουργίας ενός ΣΔΒΔ, θα διαπιστώσουμε ότι υπάρχουν 4 βασικά συστατικά: δεδομένα (data), υλικό (hardware), λογικό (software) και χρήστες (users). Στη συνέχεια δίνουμε μια πρώτη περιγραφή αυτών των συστατικών.

Η Βάση Δεδομένων είναι ένα τμήμα του ΣΔΒΔ που αποθηκεύει τα δεδομένα του Οργανισμού. Πριν από την εμφάνιση της τεχνολογίας των ΒΔ, τα δεδομένα φυλάσσονταν σ' ένα σύνολο διακεκριμένων αρχείων. Σήμερα, σε μία ΒΔ τα δεδομένα είναι ολοκληρωμένα (integrated) και καταμερισμένα (shared). Με τον όρο ολοκληρωμένα, εννοούμε ότι η ΒΔ αποτελείται από την ένωση διακεκριμένων αρχείων αλλά τα πλεονάζοντα (redundant) δεδομένα προσπαθούμε να τα αποθηκεύουμε όσο το δυνατόν λιγότερες φορές. Με τον όρο καταμερισμένα, εννοούμε ότι τα ίδια δεδομένα μπορούν να τα χρησιμοποιούν διαφορετικοί χρήστες σε διαφορετικές ή ίδια χρονική στιγμή.

Οι ΒΔ αποθηκεύονται, συνήθως σε δευτερεύουσες μνήμες με δυνατότητα τυχαίας προσπέλασης (random access), όπως οι σκληροί δίσκοι (Hard Disks).

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

Στις επόμενες παραγράφους θα ξαναορίσουμε το ΣΔΒΔ και τη ΒΔ, αφού όμως πρώτα δώσουμε κάποιους απαραίτητους ορισμούς.

2. Μοντέλα Δεδομένων

Η επεξεργασία δεδομένων καλύπτει μια ευρεία γκάμα εφαρμογών, κάθε μία με τις δικές της ξεχωριστές απαιτήσεις για αποθήκευση και χειρισμό των διαφορετικών ειδών δεδομένων. Παρ' όλη αυτή την ποικιλία, είναι δυνατή η γενίκευση της φύσης και του ρόλου των χρησιμοποιούμενων δεδομένων. Πράγματι μια τέτοια γενίκευση είναι αναγκαία προϋπόθεση για την κατανόηση των ΣΔΒΔ και την ανάπτυξη μιας συνεπούς μεθοδολογίας για τη σχεδίασή τους.

Κατ' αρχήν, τα δεδομένα που αποθηκεύονται και χρησιμοποιούνται από ένα ΣΔΒΔ αντιπροσωπεύουν πληροφορίες για εκείνο το τμήμα του "κόσμου" με το οποίο σχετίζεται η συγκεκριμένη εφαρμογή. Για μια τράπεζα, για παράδειγμα, ο "κόσμος" αποτελείται από πελάτες, λογαριασμούς, επιτόκια, κλπ. και αυτές είναι οι οντότητες (entities) ή τα αντικείμενα (objects) τα οποία αντιπροσωπεύονται σε ένα τραπεζικό σύστημα από τα δεδομένα. Παρομοίως ο "κόσμος" μιας αεροπορικής εταιρείας αποτελείται από οντότητες όπως επιβάτες, πτήσεις, και αεροσκάφη που αποτελούν τα δεδομένα με τα οποία σχετίζεται το σύστημα κράτησης θέσεων.

Δεύτερον, κάθε οντότητα χαρακτηρίζεται από έναν αριθμό ιδιοτήτων όπως όνομα, διεύθυνση, αριθμός λογαριασμού, αριθμός πτήσης, ώρα αναχώρησης κλπ. Όλες αυτές οι ιδιότητες μπορεί να μην είναι σχετικές με μια συγκεκριμένη εφαρμογή επεξεργασίας δεδομένων (π.χ. το βάρος ενός ατόμου είναι απίθανο να σχετίζεται με τράπεζες αλλά μπορεί να σχετίζεται με μια ασφάλεια ζωής). Οι ιδιότητες οι οποίες είναι σχετικές και για τις οποίες αποθηκεύονται τα δεδομένα ονομάζονται γνωρίσματα (attributes). Οντότητες του ίδιου είδους έχουν το ίδιο σύστημα γνωρισμάτων και λέμε ότι σχηματίζουν ένα σύνολο οντοτήτων (entity set) ή μια κατηγορία οντοτήτων (entity category) ή μια κλάση οντοτήτων (entity class). Έτσι για παράδειγμα, σε μια τραπεζική εφαρμογή το σύνολο όλων των πελατών σχηματίζει ένα σύνολο οντοτήτων, αφού κάθε πελάτης έχει τα γνωρίσματα: όνομα, διεύθυνση κλπ. Παρομοίως σ' ένα σύστημα κράτησης θέσεων σε μια αεροπορική εταιρεία όλες οι σημερινές πτήσεις σχηματίζουν ένα σύνολο οντοτήτων, με γνωρίσματα όπως αριθμός πτήσης και ώρα αναχώρησης, ενώ όλα τα αεροσκάφη σχηματίζουν ένα άλλο σύνολο οντοτήτων με γνωρίσματα όπως κατασκευαστής, μοντέλο και σειριακός αριθμός. Παραδείγματα τυπικών οντοτήτων και των χαρακτηριστικών γνωρισμάτων τους, δανεισμένα από διάφορες εφαρμογές δίνονται στον Πίνακα 1.

ΠΙΝΑΚΑΣ 1

ΤΥΠΙΚΑ ΣΥΝΟΛΑ ΟΝΤΟΤΗΤΩΝ, ΧΑΡΑΚΤΗΡΙΣΤΙΚΑ ΓΝΩΡΙΣΜΑΤΑ, ΚΛΕΙΔΙΑ ΚΑΙ ΣΧΕΣΕΙΣ ΓΙΑ ΠΟΙΚΙΛΕΣ ΕΦΑΡΜΟΓΕΣ ΤΗΣ ΕΠΕΞΕΡΓΑΣΙΑΣ ΔΕΔΟΜΕΝΩΝ

ΕΦΑΡΜΟΓΗ

ΤΥΠΙΚΑ ΣΥΝΟΛΑ ΟΝΤΟΤΗΤΩΝ

ΤΥΠΙΚΑΓΝΩΡΙΣΜΑΤΑ

ΚΛΕΙΔΙ

ΤΥΠΙΚΕΣ ΣΧΕΣΕΙΣ

Τράπεζες

Πελάτες

Όνομα

Αριθμός Πελάτη

Κατοχή

Διεύθυνση

Αριθμός Πελάτη

Λογαριασμοί

Αριθμός Λογαριασμού

Αριθμός Λογαριασμού

Υπόλοιπο

Κρατήσεις αερογραμμών

Σημερινές Πτήσεις

Αριθμός Πτήσης

Αριθμός Πτήσης

Εκχώρηση

Αφετηρία

Προορισμός

Ωρα Αναχώρησης

Αεροσκάφος

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

Αριθμός Σειράς

Μοντέλο

Αριθμός Σειράς

Επιβάτες

Όνομα

Όνομα + Διεύθυνση

Διεύθυνση

Έλεγχος Αποθήκης

Εξάρτημα Αυτοκινήτου

Αριθμός Εξαρτήματος

Αριθμός Εξαρτήματος

Προμήθεια

Κόστος

Ποσότητα

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

Όνομα Εταιρείας

Όνομα Εταιρείας

Διεύθυνση

Όριο Πίστωσης

Σημειώστε ότι παρ' όλο που οι διάφορες οντότητες σε ένα σύνολο οντοτήτων μπορούν να έχουν τις ίδιες τιμές για συγκεκριμένα γνωρίσματα (π.χ. διάφορα αεροσκάφη μπορούν να έχουν φτιαχτεί από τον ίδιο κατασκευαστή), πρέπει να υπάρχει τουλάχιστον ένα γνώρισμα (ή συνδυασμός χαρακτηριστικών γνωρισμάτων) το οποίο έχει μια μοναδική τιμή για κάθε οντότητα μέσα στο σύνολο. Αν δεν έχουν έτσι τα πράγματα, θα ήταν αδύνατον να διαχωρίσουμε δύο οντότητες με τις ίδιες ακριβώς τιμές για όλα τα γνωρίσματα. Διαφορετικά σε όλες τις περιπτώσεις οι δύο οντότητες θα ταυτίζονταν. Το γνώρισμα (ή συνδυασμός γνωρισμάτων) που χρησιμοποιείται για τη διάκριση των μελών ενός συνόλου οντοτήτων ονομάζεται κλειδί (key) του συνόλου οντοτήτων: εξ ορισμού η τιμή του κλειδιού για κάθε οντότητα είναι μοναδική. Παραδείγματα τυπικών κλειδιών δίνονται στον Πίνακα 1.

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

Τέλος, οι οντότητες δεν είναι απομονωμένες, αλλά έχουν σχέσεις (relationships) μεταξύ τους. Για παράδειγμα, οι πελάτες κατέχουν τραπεζικούς λογαριασμούς, τα αεροσκάφη εκχωρούνται σε πτήσεις και οι κατασκευαστές εφοδιάζουν τα εξαρτήματα (Πίνακας 1). Αυτές οι σχέσεις - της κατοχής, εκχώρησης και εφοδιασμού αντιστοίχως - είναι σημαντικές στον κόσμο των εφαρμογών με τον οποίο σχετίζονται και πρέπει να αναπαρίστανται στα δεδομένα τα οποία περιγράφουν.

Οι έννοιες που παρουσιάστηκαν παραπάνω μας επιτρέπουν να μιλάμε για δεδομένα με τρόπους οι οποίοι είναι ανεξάρτητοι από μια συγκεκριμένη εφαρμογή. Αποτελούν τη βάση των μοντέλων δεδομένων (data models) των οποίων ο στόχος είναι να περιγράφουν τυπικά τους τρόπους με τους οποίους τα δεδομένα δομούνται και χρησιμοποιούνται. Υπάρχει ήδη ένας αριθμός από τέτοια μοντέλα δεδομένα που έχουν διατυπωθεί. Θα περιγράψουμε το επικρατέστερο από αυτά στην επόμενη παράγραφο. Πριν προχωρήσουμε σημειώστε ότι για να είναι γενικά χρήσιμο ένα μοντέλο δεδομένων πρέπει να ικανοποιεί τουλάχιστον στις ακόλουθες τρεις απαιτήσεις των δεδομένων:

  1. Δομή (structure) : Το μοντέλο πρέπει να εξασφαλίζει τα μέσα αναπαράστασης των οντοτήτων, των γνωρισμάτων και των σχέσεων.
  2. Χειρισμός (manipulation) : Πρέπει να ιάνει δυνατό να χειρίζεται τις παραπάνω αναπαραστάσεις, να αντανακλά, για παράδειγμα, την πρόσθεση νέων οντοτήτων ή κάποιες αλλαγές στα χαρακτηριστικά γνωρίσματα.
  3. Ακεραιότητα (integrity) : Σε όλες τις εφαρμογές υπάρχουν πολυάριθμοι περιορισμοί οι οποίοι ισχύουν στις οντότητες, τα γνωρίσματα και τις σχέσεις. Για παράδειγμα, ένα αεροσκάφος δεν μπορεί να εκχωρηθεί σε δύο πτήσεις ταυτόχρονα και κάθε τραπεζικός λογαριασμός πρέπει να έχει έναν ιδιοκτήτη.'Ενα μοντέλο δεδομένων πρέπει να είναι ικανό να εκφράζει αυτούς τους περιορισμούς (και η υλοποίηση πρέπει να είναι ικανή να τους επιβάλλει).

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

3. Το Σχεσιακό Μοντέλο

Ίσως, το περισσότερο σημαντικό μοντέλο δεδομένων σήμερα να είναι το σχεσιακό μοντέλο (relational model) που αναπτύχθηκε από τον Ted Codd γύρω στα 1970. Το σχεσιακό μοντέλο αποτελεί τη βάση των περισσότερων σύγχρονων συστημάτων βάσεων δεδομένων Σε αυτή την παράγραφο δίνουμε μια συνοπτική εικόνα του μοντέλου πριν αναφερθούμε στις βάσεις δεδομένων με περισσότερες λεπτομέρειες στην επόμενη παράγραφο.

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

(BOEING, 747, 82) και (British Aerospace, Concorde, 14)

αντιστοίχως. Παρομοίως δύο σημερινές πτήσεις μπορούν να εμφανιστούν μα τις πλειάδες:

(BA014, Λονδίνο, Σίδνεϋ, 21:40) και (ΒΑ837, Νέα Υόρκη, Λονδίνο, 9:30)

Αφού όλες οι οντότητες του ίδιου συνόλου οντοτήτων έχουν τα ίδια γνωρίσματα, ένα σύνολο οντοτήτων μπορεί να παρασταθεί ως ένα σύνολο από πλειάδες, μια κάθε οντότητα. Αυτές οι πλειάδες μπορούν άνετα να θεωρηθούν ότι σχηματίζουν ένα πίνακα, στον οποίο οι σειρές αντιπροσωπεύουν οντότητες και οι στήλες γνωρίσματα (βλ. Σχήμα 1). Ένας τέτοιος πίνακας ονομάζεται σχέση (relation) (Σε πολλές ΒΔ έχει επικρατήσει το όνομα "πίνακας-table" αντί του "σχέση-relation"). Σημειώστε ότι η διάταξη των γραμμών στον πίνακα είναι χωρίς σημασία, αφού κάθε οντότητα μπορεί να εντοπιστεί χρησιμοποιώντας την τιμή του μοναδικού κλειδιού της (σειριακός αριθμός, αριθμός πτήσης ή κάτι άλλο). Παρομοίως η σειρά των στηλών είναι χωρίς σημασία αφού κάθε στήλη έχει το όνομα του αντίστοιχου γνωρίσματος στην αρχή της.

ΑΕΡΟΣΚΑΦΟΣ

ΚΑΤΑΣΚΕΥΑΣΤΗΣ

ΜΟΝΤΕΛΟ

ΑΡΙΘΜΟΣ ΣΕΙΡΑΣ

Boeing

747

82

Boeing

737

46

British Aerospace

Concorde

14

...

...

...

...

...

...

ΣΗΜΕΡΙΝΕΣ ΠΤΗΣΕΙΣ

ΑΡΙΘΜΟΣ ΠΤΗΣΗΣ

ΑΦΕΤΗΡΙΑ

ΠΡΟΟΡΙΣΜΟΣ

ΩΡΑ ΑΝΑΧΩΡΗΣΗΣ

BΑ014

Λονδίνο

Σίδνεϋ

21:40

BΑ837

Νέα Υόρκη

Λονδίνο

09:30

BΑ152

Λονδίνο

Παρίσι

10:20

...

...

...

...

...

...

...

...

Σχήμα 1 Σχέσεις που αναπαραστούν δύο σύνολα οντοτήτων

"Σχέσεις" (relations) χρησιμοποιούνται επίσης για να αναπαραστήσουν σχέσεις μεταξύ συνόλων οντοτήτων. Για παράδειγμα, η σχέση που δηλώνει την εκχώρηση των αεροσκαφών στις πτήσεις μπορεί να παρασταθεί από τη "σχέση" που φαίνεται στο Σχήμα 2. Οι στήλες της "σχέσης" είναι τα κλειδιά των "σχέσεων" ΣΗΜΕΡΙΝΕΣ ΠΤΗΣΕΙΣ και ΑΕΡΟΣΚΑΦΗ, αντιστοίχως.

Η περιγραφή μας για το σχεσιακό μοντέλο έχει καλύψει μόνο τη δομική πλευρά των δεδομένων - δηλαδή την αναπαράσταση των οντοτήτων, των γνωρισμάτων και των σχέσεων, σε μορφή πινάκων ή σχέσεων. Τώρα στρέφουμε την προσοχή μας στις πλευρές που αφορούν τον χειρισμό και περιγράφουμε πώς το σχεσιακό μοντέλο αναπαριστά τον χειρισμό των δεδομένων με ορισμένες πράξεις πάνω στις σχέσεις. Υπάρχουν πολλές τέτοιες πράξεις (το αρχικό μοντέλο του Codd έχει 8). Δεν θα προσπαθήσουμε να τις περιγράψουμε όλες, αλλά θα εστιάσουμε σε τρεις οι οποίες αποδίδουν το χαρακτήρα του μοντέλου.

3.1 Επιλογή (selection)

Η επιλογή είναι μία πράξη η οποία κατασκευάζει μια νέα σχέση εξάγοντας ορισμένες γραμμές από μια υπάρχουσα. Οι γραμμές που εξάγονται επιλέγονται σύμφωνα με αυθαίρετα κριτήρια για τα γνωρίσματά τους. Για παράδειγμα, αν ονομάσουμε την πράξη επιλογής select, τότε

select ΠΤΗΣΕΙΣ where ΑΦΕΤΗΡΙΑ=Λονδίνο

κατασκευάζει μια σχέση αποτελούμενη από όλες τις γραμμές στη σχέση ΠΤΗΣΕΙΣ των οποίων το γνώρισμα ΑΦΕΤΗΡΙΑ είναι "Λονδίνο". Με άλλα λόγια μια σχέση που αναπαριστά όλες τις σημερινές πτήσεις που φεύγουν από το Λονδίνο (Σχήμα 3(α)). Παρομοίως, η πράξη

select ΑΕΡΟΣΚΑΦΟΣ where ΚΑΤΑΣΚΕΥΑΣΤΗΣ=Boeing

παράγει μια σχέση που αναπαριστά όλα τα αεροσκάφη της εταιρείας που έχουν κατασκευαστεί από την Boeing (Σχήμα 3(β)).

ΕΚΧΩΡΗΣΗ

ΑΡΙΘΜΟΣ ΠΤΗΣΗΣ

ΑΡΙΘΜΟΣ ΣΕΙΡΑΣ

ΒΑ014

82

ΒΑ837

14

ΒΑ152

46

...

...

...

...

Σχήμα.2 Σχέση που δηλώνει την εκχώρηση αεροσκαφών σε πτήσεις

(Ο αναγνώστης που γνωρίζει SQL πρέπει να σημειώσει ότι η πράξη select στην SQL δεν είναι η ίδια μ' αυτήν που περιγράφεται εδώ: η select της SQL περιλαμβάνει στοιχεία προβολής και σύνδεσης που θα περιγράψουμε σε λίγο.)

ΑΡΙΘΜΟΣ ΠΤΗΣΗΣ

ΑΦΕΤΗΡΙΑ

ΠΡΟΟΡΙΣΜΟΣ

ΩΡΑ ΑΝΑΧΩΡΗΣΗΣ

ΒΑ014

Λονδίνο

Σύδνεϋ

21:40

BA152

Λονδίνο

Παρίσι

10:20

...

...

...

...

...

...

...

...

                  

ΚΑΤΑΣΚΕΥΑΣΤΗΣ

ΜΟΝΤΕΛΟ

ΑΡΙΘΜΟΣ ΣΕΙΡΑΣ

Boeing

747

82

Boeing

737

46

...

...

...

...

...

...

Σχήμα 3 (α) Σχέση που αναπαριστά τις σημερινές πτήσεις από το Λονδίνο. (β) Σχέση που αναπαριστά τα αεροσκάφη που κατασκευάστηκαν από την Boeing

3.2 Προβολή (projection)

Η προβολή είναι μια πράξη η οποία κατασκευάζει μια νέα σχέση εξάγοντας ορισμένες στήλες από μια υπάρχουσα σχέση. Η προβολή συνεπώς είναι παρόμοια με την επιλογή, εκτός απ' το ότι δουλεύει σε στήλες παρά σε γραμμές. Οι στήλες που εξάγονται καθορίζονται από το όνομα των αντίστοιχων γνωρισμάτων. Για παράδειγμα, αν ονομάσουμε την πράξη προβολής project, τότε:

project ΠΤΗΣΕΙΣ on ΠΡΟΟΡΙΣΜΟΣ

σχηματίζει μια σχέση με μια μόνο στήλη, που αναπαριστά τους προορισμούς όλων των σημερινών πτήσεων (Σχήμα 4(α)). Παρομοίως το παράδειγμα:

project ΑΕΡΟΣΚΑΦΟΣ on ΚΑΤΑΣΚΕΥΑΣΤΗ, ΜΟΝΤΕΛΟ

παράγει μια σχέση που αναπαριστά τους κατασκευαστές και τα μοντέλα όλων των αεροσκαφών της αεροπορικής εταιρείας (Σχήμα 4(β)).

Τέλος, το παράδειγμα:

project ΑΕΡΟΣΚΑΦΟΣ on ΚΑΤΑΣΚΕΥΑΣΤΗ

δίνει μια σχέση με μια μόνο στήλη που παριστάνει τους κατασκευαστές των αεροσκαφών που ανήκουν στην αεροπορική εταιρεία (Σχήμα 4(γ)). Προσέξτε ότι η πράξη προβολής εξαλείφει τις διπλές γραμμές οι οποίες μπορεί να εμφανιστούν σε ένα αποτέλεσμα. Έτσι παρ' όλο που η σχέση ΑΕΡΟΣΚΑΦΟΣ έχει περισσότερα από ένα στοιχεία με τιμή "Boeing", τα διπλά απομακρύνονται όταν λαμβάνει χώρα η προβολή που φαίνεται στο Σχήμα 4(γ).

3.3 Σύνδεση (join)

Η σύνδεση είναι μια πράξη η οποία σχηματίζει μια σχέση συνδυάζοντας δύο υπάρχουσες. (Υπάρχουν ποικίλα σχήματα της πράξης σύνδεσης: αυτή που περιγράφουμε εδώ είναι η φυσική σύνδεση (natural join), η οποία είναι η απλούστερη και η συχνότερα χρησιμοποιούμενη). Για να συνδεθούν δύο σχέσεις Α και Β πρέπει να έχουν το λιγότερο ένα κοινό γνώρισμα. Οι στήλες της σχέσης R που παράγεται είναι τα γνωρίσματα και από την Α και από την Β (τα κοινά γνωρίσματα απαντώνται μόνο μια φορά). Οι σειρές της R σχηματίζονται με παράθεση σειρών της Α με σειρές της Β με τον περιορισμό ότι οι γραμμές μπορούν να παρατεθούν μόνο αν έχουν όμοιες ακριβώς τιμές για τα κοινά γνωρίσματα. Έτσι στο Σχήμα 5, οι Α και Β έχουν ένα κοινό γνώρισμα Υ, η R έχει όλα τα γνωρίσματα και των δύο Α και Β (με το κοινό γνώρισμα Υ να εμφανίζεται μόνο μια φορά), και μόνο εκείνες οι σειρές των Α και Β οι οποίες έχουν όμοιες τιμές για το κοινό γνώρισμα Υ παρατίθενται για να σχηματίσουν σειρές του R.

ΠΡΟΟΡΙΣΜΟΣ

       

ΚΑΤΑΣΚΕΥΑΣΤΗΣ

ΜΟΝΤΕΛΟ

       

ΚΑΤΑΣΚΕΥΑΣΤΗΣ

Σίδνεϋ

Boeing

747

Boeing

Λονδίνο

Boeing

737

British Aerospace

Παρίσι

British Aerospace

Concorde

...

...

...

...

...

...

...

...

...

Σχήμα.4 Αποτελέσματα διάφορων προβολών στις σχέσεις ΠΤΗΣΕΙΣ και ΑΕΡΟΣΚΑΦΟΣ

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

Επανερχόμενοι στα προηγούμενα παραδείγματά μας, η σύνδεση των σχέσεων ΠΤΗΣΕΙΣ και ΕΚΧΩΡΗΣΗ φαίνεται στο Σχήμα 6(α) και η σύνδεση αυτής της σχέσης με τη σχέση ΑΕΡΟΣΚΑΦΟΣ φαίνεται στο Σχήμα 6(β). Σημειώστε ότι οι σχέσεις ΠΤΗΣΕΙΣ και ΑΕΡΟΣΚΑΦΟΣ δεν μπορούν να συνδεθούν άμεσα, αφού δεν έχουν κανένα κοινό γνώρισμα. Από το Σχήμα 6(β) είναι φανερό ότι η πτήση ΒΑ014 χρησιμοποιεί ένα Boeing 747: αυτή η πληροφορία μπορεί να εξαχθεί πιο τυπικά προβάλλοντας τη σχέση του Σχήματος 6(β) στο: ΑΡΙΘΜΟΣ ΠΤΗΣΗΣ, ΚΑΤΑΣΚΕΥΑΣΤΗΣ και ΜΟΝΤΕΛΟ (Σχήμα 6(γ)) και μετά επιλέγοντας ΑΡΙΘΜΟΣ ΠΤΗΣΗΣ=ΒΑ014 από το αποτέλεσμα (Σχήμα 6(δ)).

Οι πράξεις επιλογής, προβολής και σύνδεσης κατασκευάζουν νέες σχέσεις από ήδη υπάρχουσες, με τρόπους που περιγράφηκαν παραπάνω. Αφού το αποτέλεσμα είναι πάντα μια σχέση, οι πράξεις μπορούν να συνδυαστούν για να σχηματίσουν αυθαίρετα περίπλοκες σχεσιακές εκφράσεις (relational expressions), με τον ίδιο τρόπο που οι κανονικές αριθμητικές πράξεις σε αριθμούς, μπορούν να συνδυαστούν για να σχηματίσουν αυθαίρετα περίπλοκες αριθμητικές εκφράσεις. Τέτοιες σχεσιακές εκφράσεις περιγράφουν τμήματα των δεδομένων που μοντελοποιούμε: για παράδειγμα τα δεδομένα στο Σχήμα 6(γ) περιγράφονται από τη σχεσιακή έκφραση:

project (ΠΤΗΣΕΙΣ join ΕΚΧΩΡΗΣΗ join ΑΕΡΟΣΚΑΦΟΣ)

on ΑΡΙΘΜΟΣ ΠΤΗΣΗΣ, ΚΑΤΑΣΚΕΥΑΣΤΗΣ, ΜΟΝΤΕΛΟ

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

project (select ΠΤΗΣΕΙΣ where ΑΦΕΤΗΡΙΑ=Λονδίνο)

on ΑΡΙΘΜΟΣ ΠΤΗΣΗΣ

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

1.module εκχώρηση (σειριακός αριθμός, αριθμός πτήσης)

{Εκχωρεί το αεροσκάφος με καθορισμένο σειριακό αριθμό στην πτήση

με καθορισμένο αριθμό πτήσης}

πρόσθεσε τη γραμμή (αριθμός πτήσης, σειριακός αριθμός)

στη σχέση ΕΚΧΩΡΗΣΗ

Α

Χ

Υ

join

Β

Υ

Ζ

δίνει

R

Χ

Υ

Ζ

x1

y1

y1

z1

x1

y1

z1

x2

y2

y1

z2

x1

y1

z2

x3

y3

y2

z2

x2

y2

z2

.

.

y3

z3

x3

y1

z1

.

.

.

.

x3

y1

z2

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Σχήμα 5. Η λειτουργία του φυσικού join.

2.module αριθμός πτήσεων (αεροδρόμιο)

{Υπολογίζει τον αριθμό των πτήσεων της αεροπορικής εταιρείας

που αναχωρούν από κάποιο συγκεκριμένο αεροδρόμιο σήμερα}

μέτρα τις γραμμές στη σχέση που δίνεται από την έκφραση

select ΠΤΗΣΕΙΣ where ΑΦΕΤΗΡΙΑ=αεροδρόμιο

3. module τελευταία (πόλη1, πόλη2)

{Βρίσκει την τελευταία σημερινή πτήση από την πόλη1 στην πόλη2}

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

project (select ΠΤΗΣΕΙΣ where ΑΦΕΤΗΡΙΑ = πόλη,

ΠΡΟΟΡΙΣΜΟΣ = πόλη) on ΩΡΑ ΑΝΑΧΩΡΗΣΗΣ

Στο πρώτο παράδειγμα η σχεσιακή έκφραση είναι πολύ απλή, αποτελούμενη μόνο από μια σχέση ΕΚΧΩΡΗΣΗ, ενώ στα άλλα παραδείγματα, είναι περισσότερο περίπλοκη.

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

Θυμηθείτε, από το προηγούμενο εδάφιο, ότι η πλευρά της ακεραιότητας ενός μοντέλου δεδομένων σχετίζεται με την έκφραση περιορισμών σχετικών με τα δεδομένα. Τέτοιοι περιορισμοί είναι δύο ειδών, ανάλογα με το αν αναφερόμαστε στη δομή των δεδομένων ή στις τιμές τους. Παράδειγμα δομικών περιορισμών είναι: "Κάθε αεροπλάνο πρέπει να έχει έναν σειριακό αριθμό", "Όλες οι σημερινές πτήσεις πρέπει να έχουν εκχωρημένο αεροσκάφος" και "Δύο αεροσκάφη δεν μπορούν να εκχωρηθούν στην ίδια πτήση". Οι περιορισμοί τιμών μπορούν να αναφέρονται τόσο σε μια τιμή δεδομένων - π.χ. "Κάθε σειριακός αριθμός, πρέπει να βρίσκεται μεταξύ 1 και 999" - όσο και σε διαφορετικές τιμές - για παράδειγμα, "Η ώρα αναχώρησης μιας πτήσης πρέπει να προηγείται της ώρας αφίξεως (λαμβάνοντας υπόψη τις διαφορές στις ζώνες ωρών) και "Η αφετηρία μιας πτήσης και ο προορισμός της πρέπει να είναι διαφορετικές".

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

1. Κάθε σχέση πρέπει να έχει ένα κλειδί και κάθε πλειάδα σε μια σχέση πρέπει να έχει μια τιμή κλειδιού η οποία είναι μοναδική κι όχι κενή (null).

ΑΡΙΘΜΟΣ ΠΤΗΣΗΣ

ΑΦΕΤΗΡΙΑ

ΠΡΟΟΡΙΣΜΟΣ

ΩΡΑ ΑΝΑΧΩΡΗΣΗΣ

ΑΡΙΘΜΟΣ ΣΕΙΡΑΣ

ΒΑ014

Λονδίνο

Σίδνεϋ

21:40

82

BA837

Νέα Υόρκη

Λονδίνο

09:30

14

BA152

Λονδίνο

Παρίσι

10:20

46

...

...

...

...

...

(a)

...

...

...

...

...

ΑΡΙΘΜΟΣΠΤΗΣΗΣ

ΑΦΕΤΗΡΙΑ

ΠΡΟΟΡΙΣΜΟΣ

ΩΡΑ ΑΝΑΧΩΡΗΣΗΣ

ΑΡΙΘΜΟΣ ΣΕΙΡΑΣ

ΚΑΤΑΣΚΕΥΑΣΤΗΣ

ΜΟΝΤΕΛΟ

ΒΑ014

Λονδίνο

Σίδνεϋ

21:40

82

Boeing

747

BA837

Νέα Υόρκη

Λονδίνο

09:30

14

British Aerospace

Concorde

BA152

Λονδίνο

Παρίσι

:10:20

46

Boeing

737

...

...

...

...

...

...

...

(β)

...

...

...

...

...

...

...

ΑΡΙΘΜΟΣ ΠΤΗΣΗΣ

ΚΑΤΑΣΚΕΥΑΣΤΗΣ

ΜΟΝΤΕΛΟ

ΒΑ014

Boeing

Boeing

BA837

British Aerospace

British Aerospace

BA152

Boeing

Boeing

...

...

...

(γ)

...

...

...

ΑΡΙΘΜΟΣ ΠΤΗΣΗΣ

ΚΑΤΑΣΚΕΥΑΣΤΗΣ

ΜΟΝΤΕΛΟ

(δ)

ΒΑ014

Boeing

Boeing

Σχήμα.6 Αποτελέσματα διαφόρων πράξεων στις σχέσεις της αεροπορικής εταιρείας: (α) συνδέοντας τις σχέσεις ΠΤΗΣΕΙΣ και ΕΚΧΩΡΗΣΗ, (β) συνδέοντας τις σχέσεις ΠΤΗΣΕΙΣ,ΕΚΧΩΡΗΣΗ και ΑΕΡΟΣΚΑΦΟΣ, (γ) μια προβολή της (β) ,(δ) μια επιλογή στη (γ)

Αυτός ο κανόνας εγγυάται ότι κάθε πλειάδα σε μια σχέση είναι μονοσήμαντα αναγνωρίσιμη. Η επιμονή ότι αυτή η τιμή του κλειδιού δεν μπορεί να είναι κενή σημαίνει, για παράδειγμα, ότι κάθε αεροπλάνο πρέπει να έχει έναν σειριακό αριθμό, κάθε πτήση πρέπει να έχει έναν αριθμό πτήσης και κάθε επιβάτης πρέπει να έχει ένα όνομα και μια διεύθυνση (βλ. Πίνακα 1). Η εφαρμογή του κανόνα στη σχέση ΕΚΧΩΡΗΣΗ του Σχήματος 2, της οποίας το κλειδί είναι ΑΡΙΘΜΟΣ ΠΤΗΣΗΣ, εξασφαλίζει ότι δεν μπορούν δύο αεροσκάφη να εκχωρηθούν στην ίδια πτήση. (Αν συνέβαινε κάτι τέτοιο, τότε ο ίδιος αριθμός πτήσης θα υπήρχε σε δύο γραμμές της σχέσης, παραβιάζοντας έτσι τον περιορισμό της μοναδικότητας). Σημειώστε πάντως, πως ο κανόνας δεν διασφαλίζει το αντίστροφο: ότι το ίδιο αεροπλάνο δεν μπορεί να εκχωρηθεί σε δύο πτήσεις. (Ο σειριακός αριθμός των αεροσκαφών δεν είναι κλειδί στη σχέση και συνεπώς μπορεί νόμιμα να εμφανιστεί σε περισσότερες από μια σειρές). Πάντως, τέτοιος περιορισμός είναι πιθανόν μή ρεαλιστικός, αφού το ίδιο αεροπλάνο μπορούσε λογικά να εκχωρηθεί, ας πούμε, στην πτήση προς τα έξω και την πτήση της επιστροφής σε ένα κυκλικό ταξίδι. Στην πράξη θα χρειαζόταν ένας πολύ περισσότερο περίπλοκος περιορισμός, όπως "Ένα αεροπλάνο μπορεί να εκχωρηθεί σε δύο πτήσεις μόνο αν ο προορισμός της πρώτης είναι αφετηρία της δεύτερης και η ώρα άφιξης της πρώτης προηγείται της ώρας αναχώρησης της δεύτερης, κατά τουλάχιστον μια ώρα". Ένας τέτοιος περιορισμός, ο οποίος εξαρτάται από τις τιμές των δεδομένων, δεν μπορεί να εκφραστεί με τους κανόνες που δίνονται εδώ.

2. Κάθε οντότητα που αναφέρεται σε μια σχέση πρέπει επίσης να εμφανίζεται στην σχέση η οποία παριστά το σύνολο των οντοτήτων στο οποίο ανήκει η οντότητα.

Για παράδειγμα, κάθε αεροπλάνο που αναφέρεται στη σχέση ΕΚΧΩΡΗΣΗ πρέπει να εμφανίζεται και στη σχέση ΑΕΡΟΣΚΑΦΟΣ η οποία αναπαριστά το σύνολο οντοτήτων στο οποίο ανήκει το αεροπλάνο. Μιλώντας μεταφορικά ο κανόνας λέει ότι δεν πρέπει να υπάρχουν "ελεύθερες άκρες" - οτιδήποτε αναφέρεται πρέπει να ορίζεται.

Οι κανόνες ακεραιότητας που δόθηκαν παραπάνω είναι ανεξάρτητοι από εφαρμογές, αφού αναφέρονται μόνο σε σχέσεις, κλειδιά και πλειάδες και όχι στο συγκεκριμένο κόσμο που μοντελοποιείται. Εξασφαλίζουν ελάχιστη ακεραιότητα για κάθε δεδομένο που μοντελοποιείται με σχεσιακό τρόπο. Μεγαλύτερη ακεραιότητα μπορεί να εξασφαλιστεί μόνο με συγκριμένους περιορισμούς στις εφαρμογές, όπως αυτοί των προηγούμενων παραδειγμάτων. Τέτοιοι περιορισμοί είναι έξω από το σχεσιακό μοντέλο αν και μερικοί από αυτούς είναι εκφράσιμοι σε διάφορες προτεινόμενες επεκτάσεις.

Σε αυτή την παράγραφο έχουμε παρουσιάσει το σχεσιακό μοντέλο σαν έναν τρόπο να μιλάμε για τα δεδομένα με αφηρημένο τρόπο. Πάντως το μοντέλο δεν είναι μόνο ένα εργαλείο για αφαίρεση, αλλά μπορεί να υλοποιηθεί σε έναν υπολογιστή. Υπάρχουν διάφοροι τρόποι για να γίνει αυτό, αλλά κάθε επιτυχημένη υλοποίηση πρέπει:

  1. να υλοποιεί σχέσεις σε συνάρτηση με τις δομές δεδομένων που μπορούν να κρατηθούν σε μια δευτερεύουσα μνήμη (αφού η επεξεργασία δεδομένων σχετίζεται με μεγάλο όγκο δεδομένων, η δευτερεύουσα μνήμη είναι πιο σημαντική από την κύρια μνήμη),
  2. να υλοποιεί τις σχεσιακές πράξεις (select, project, join κλπ.) ως αλγόριθμους εκτελέσιμους από υπολογιστή.
  3. να επιβάλει τους σχεσιακούς κανόνες ακεραιότητας.

Στην επόμενη παράγραφο θα δούμε πώς μπορεί να γίνει αυτό.

4. Εγγραφές, Αρχεία και Βάσεις Δεδομένων

Πολύ πριν την ανάπτυξη των τυπικών μοντέλων δεδομένων, είχε αναγνωριστεί ότι την πληροφορία, σε μεγάλες ποσότητες, μπορεί κανείς να τη διαχειριστεί μόνο αν είναι δομημένη με κάποιο τρόπο. Δομές δεδομένων επινοήθηκαν για να διευκολύνουν την αποθήκευση και την ανάκληση μεγάλων ποσοτήτων δεδομένων στην και από την δευτερεύουσα μνήμη. Αυτές οι δομές χρησιμοποιούνται ακόμα και στις εφαρμογές επεξεργασίας δεδομένων ανεξάρτητα από το αν χρησιμοποιείται ένα μοντέλο δεδομένων ή όχι. Όπου χρησιμοποιούνται τυπικά πρότυπα οι δομές δεδομένων αποτελούν τη βάση πάνω στην οποία υλοποιούνται τα μοντέλα αυτά. Έτσι υπάρχει η ιεραρχία των διαφόρων αναπαραστάσεων δεδομένων όπως φαίνεται στο Σχήμα 7: τα αφηρημένα μοντέλα

Μοντέλο δεδομένων (π.χ. οντότητες, γνωρίσματα, σχέσεις) >>

Δομές δεδομένων (π.χ. αρχεία, εγγραφές, πεδία) >>

Φυσικές συσκευές αποθήκευσης (π.χ. μαγνητικοί δίσκοι, οπτικοί δίσκοι)

Σχήμα 7 Μια ιεραρχία των αναπαραστάσεων των δεδομένων

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

Η βασική δομική μονάδα στην επεξεργασία δεδομένων είναι η εγγραφή (record) η οποία είναι συλλογή πληροφοριών για μια συγκεκριμένη οντότητα, όπως ένα συγκεκριμένο άτομο, ένα είδος αποθήκης ή ένας τραπεζικός λογαριασμός. Κάθε εγγραφή αποτελείται από ένα αριθμό πεδίων (fields), καθένα από τα οποία κρατά ένα και μόνο τμήμα της πληροφορίας για την οντότητα που περιγράφει η εγγραφή. Μερικά παραδείγματα διαφόρων ειδών εγγραφών και των πεδίων που τις απαρτίζουν φαίνονται στον Πίνακα 2. Σημειώστε εδώ ότι εγγραφές του ίδιου τύπου (που περιγράφουν οντότητες του ίδιου τύπου) έχουν τα ίδια πεδία, παρ' όλο που οι πληροφορίες στα πεδία διαφέρουν φυσικά από τη μια εγγραφή στην άλλη.

Εγγραφές του ίδιου τύπου που σχετίζονται μεταξύ τους καταχωρούνται ως αρχεία (files) στις μονάδες περιφερειακής αποθήκευσης (π.χ. σκληρός δίσκος). Σε μια τυπική εφαρμογή επεξεργασίας δεδομένων ένα αρχείο μπορεί να περιέχει χιλιάδες ή ακόμα και εκατοντάδες χιλιάδες εγγραφές. Ο Πίνακας 2 δείχνει μερικά παραδείγματα.

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

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

Το λογισμικό που χρειάζεται για τη διαχείριση μιας βάσης δεδομένων ονομάζεται Σύστημα Διαχείρισης Βάσεως Δεδομένων (Data Base Management System, DBMS). Ένα DBMS περιέχει προγράμματα τόσο για τη δημιουργία μιας βάσεως δεδομένων, όσο και για την πρόσβαση και διαχείριση των δεδομένων που περιέχει. Ένα DBMS βασίζεται συνήθως σε κάποιο μοντέλο δεδομένων και είναι υπεύθυνο για τη μετατροπή μεταξύ της αναπαράστασης των δεδομένων όπως δίνονται από το μοντέλο (και αναγνωρίζονται από το χρήστη) και της αναπαράστασης των δεδομένων που δίνονται από τις δομές αρχείων και εγγραφών. Ένα DBMS που βασίζεται στο σχεσιακό μοντέλο ονομάζεται, όπως αναμενόταν, Σχεσιακό Σύστημα Διαχείρισης Βάσεων Δεδομένων (Relational DBMS). Παραδείγματα τέτοιων ΣΣΔΒΣ είναι: IBM DB2, INGRES, ORACLE, Microsoft ACCESS κλπ.).

Οι στοιχειώδεις πράξεις ή δοσοληψίες (transactions) που γίνονται πάνω στις εγγραφές είναι:

  1. διάβασμα (reading): δηλαδή μεταφορά μιας εγγραφής από τον δευτερεύοντα χώρο αποθήκευσης στην κεντρική μνήμη, ώστε να είναι δυνατή η πρόσβαση στα πεδία της.
  2. γράψιμο (writing): δηλαδή μεταφορά μιας εγγραφής από τη μνήμη στο δευτερεύοντα χώρο αποθήκευσης.
  3. πρόσθεση (adding): μιας εγγραφής σε ένα αρχείο.
  4. διαγραφή (deleting): μιας εγγραφής από ένα αρχείο.
  5. ενημέρωση (updating) μιας εγγραφής: δηλαδή μεταβολή των πληροφοριών που περιέχονται σε ένα ή περισσότερα πεδία της.

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

Η οργάνωση των εγγραφών μέσα σε ένα αρχείο εξαρτάται σε μεγάλο βαθμό από τον τρόπο με τον οποίο γίνεται η προσπέλαση στο αρχείο: ειδικότερα από το αν η προσπέλαση γίνεται σειριακά (sequentially) ή τυχαία (at random). Ένα αρχείο τυχαίας προσπέλασης (random access) είναι ένα αρχείο που είναι οργανωμένο για εφαρμογές στις οποίες οι διαδοχικές δοσοληψίες συμβαίνουν με τυχαίο τρόπο, και όχι ακολουθώντας μια συγκεκριμένη σειρά. Παράδειγμα τέτοιου αρχείου είναι αυτό των πτήσεων σε ένα σύστημα κρατήσεων αεροπορικής εταιρείας (Πίνακας 2). Το σχήμα πρόσβασης στο αρχείο είναι απρόβλεπτο και αντανακλά το σχήμα αιτήσεων και κρατήσεων των υποψήφιων επιβατών. Αφού οι απαντήσεις στις ερωτήσεις των επιβατών πρέπει να δίνονται αμέσως δεν είναι δυνατόν να "φυλάγονται" οι δοσοληψίες και να εκτελούνται αργότερα σε μια προκαθορισμένη σειρά: κάθε δοσοληψία πρέπει να εκτελείται αμέσως μόλις γίνει η αίτησή της. Ένα άλλο παράδειγμα αρχείου τυχαίας προσπέλασης είναι αυτό ενός τραπεζικού καθολικού που ενημερώνεται αμέσως μόλις γίνει μια κατάθεση ή ανάληψη. Αφού οι δοσοληψίες στους λογαριασμούς γίνονται με απρόβλεπτη σειρά, πρέπει να παρέχεται τυχαία προσπέλαση στο αρχείο του καθολικού. Αυτά τα παραδείγματα είναι περιπτώσεις εφαρμογών πραγματικού χρόνου (real-time): δηλαδή εφαρμογών στις οποίες οι πράξεις πρέπει να εκτελεστούν σε μικρό χρονικό διάστημα, που συνήθως καθορίζεται από το όριο της ανθρώπινης υπομονής. Δοσοληψίες πραγματικού χρόνου συμβαίνουν τις περισσότερες φορές με μη προβλεπόμενη σειρά και, εξ' ορισμού, η εκτέλεσή τους δεν μπορεί να καθυστερεί. Είναι λοιπόν ανέφικτο να τις αναβάλουμε για εκτέλεση με σειρά σε μελλοντικό χρόνο. Προφανώς τα αρχεία που χρησιμοποιούνται σε εφαρμογές πραγματικού χρόνου είναι οργανωμένα έτσι ώστε να επιτρέπεται η τυχαία προσπέλασή τους.

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

Σε ένα σειριακό αρχείο (sequential file) οι εγγραφές είναι τακτοποιημένες με σειρά που καθορίζεται από το περιεχόμενο ενός ειδικού πεδίου που ονομάζεται κλειδί-διάταξης (order-key). (Χρησιμοποιούμε τον όρο κλειδί-διάταξης για να το ξεχωρίσουμε από το κλειδί που αναφέραμε νωρίτερα. Τα κλειδιά είναι πάντα μοναδικά, τα κλειδιά-διάταξης όχι απαραίτητα. Σε μερικές περιπτώσεις το κλειδί και το κλειδί-διάταξης ταυτίζονται). Για παράδειγμα, οι εγγραφές ενός αρχείου προσωπικού μπορούν να ταξινομηθούν αλφαβητικά, με πεδίο κλειδί το όνομα του εργαζόμενου, αλλιώς μπορούν να διαταχθούν αριθμητικά, με κλειδί-διάταξης τον αριθμό του εργαζομένου. Το κρίσιμο σημείο στη σειριακή προσπέλαση είναι ότι ένα αρχείο χρησιμοποιείται με τέτοιον τρόπο ώστε οι διαδοχικές δοσοληψίες γίνονται σε εγγραφές με την ίδια σειρά που οι εγγραφές συναντώνται στο αρχείο. Αυτό σημαίνει ότι οι δοσοληψίες μπορούν να εκτελεστούν αν επεξεργαστούμε τις εγγραφές σειριακά (κατά τη διάρκεια ενός μόνο περάσματος (pass) μέσα από το αρχείο).

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

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

ΠΙΝΑΚΑΣ 2

ΤΥΠΙΚΑ ΑΡΧΕΙΑ, ΕΓΓΡΑΦΕΣ ΚΑΙ ΠΕΔΙΑ ΓΙΑ ΔΙΑΦΟΡΕΣ ΕΦΑΡΜΟΓΕΣ ΕΠΕΞΕΡΓΑΣΙΑΣ ΔΕΔΟΜΕΝΩΝ

ΕΦΑΡΜΟΓΗ

ΑΡΧΕΙΟ

ΕΓΓΡΑΦΗ

ΤΥΠΙΚΑ ΠΕΔΙΑ

Μισθοδοσία

Προσωπικού

Εργαζόμενος

Όνομα, διεύθυνση, βαθμός

Έλεγχος αποθήκης

Ανταλλακτικά αυτοκινήτων

Αντικείμενο σε αποθήκη

Αριθμός αντικειμένου, κόστος, ποσότητα σε στοκ

Τράπεζες

Καθολικό

Λογαριασμός

Αρ.λογαριασμού, όνομα πελάτη, τρέχον υπόλοιπο

Τέλος, σε αυτή την παράγραφο περιγράφουμε σε γενικές σε γενικές γραμμές πώς το σχεσιακό μοντέλο δεδομένων της προηγούμενης παραγράφου μπορεί να υλοποιηθεί με βάση τις δομές των αρχείων που περιγράψαμε παραπάνω. Η προφανής (αλλά όχι και μοναδική) μέθοδος είναι να υλοποιήσουμε κάθε σχέση σαν ένα αρχείο, με κάθε πλειάδα σαν εγγραφή μέσα στο αρχείο, και κάθε γνώρισμα σαν ένα πεδίο της εγγραφής. Το πεδίο που αναπαριστά το κλειδί της σχέσης χρησιμοποιείται σαν κλειδί του αρχείου: η τιμή του είναι μοναδική για κάθε εγγραφή του αρχείου. Το Σχήμα 8 δείχνει ένα τμήμα του αρχείου που υλοποιεί τη σχέση ΠΤΗΣΕΙΣ του σχήματος 2.

Η πράξη select υλοποιείται κατασκευάζοντας ένα καινούργιο αρχείο που περιέχει εγγραφές επιλεγμένες σύμφωνα με τα κριτήρια που δόθηκαν στη φράση where. Παρόμοια, η πράξη project υλοποιείται με την κατασκευή ενός αρχείου του οποίου οι εγγραφές περιέχουν μόνο τα πεδία που αναφέρονται στη φράση on και όλες οι εγγραφές που υπάρχουν δύο φορές διαγράφονται. Η πράξη join είναι δυσκολότερο να υλοποιηθεί: περιλαμβάνει το ψάξιμο των δύο αρχείων για εγγραφές που ταιριάζουν στα κοινά τους πεδία, και στη συνέχεια κατασκευή ενός νέου αρχείου του οποίου οι εγγραφές προέρχονται από την παράθεση εγγραφών που ταιριάζουν, από τα αρχικά αρχεία.

Σημειώστε ότι για να υλοποιηθούν οι σχεσιακές πράξεις απαιτείται αναζήτηση αρχείων για εγγραφές με συγκεκριμένες τιμές σε ορισμένα πεδία. Μια τέτοια αναζήτηση μπορεί να γίνει πολύ γρήγορα αν τα αρχεία είναι ταξινομημένα σειριακά ως προς τα αναζητούμενα πεδία. Θα ήταν λοιπόν φρόνιμο να ταξινομούμε το αρχείο με βάση το πεδίο που είναι πιο συχνά αντικείμενο αναζήτησης. Φυσικά όταν γίνονται αναζητήσεις σε άλλα πεδία θα πρέπει να χρησιμοποιείται κάποια τεχνική τυχαίας προσπέλασης.

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

Πολλά πρόσφατα Συστήματα Διαχείρισης Βάσεων Δεδομένων έχουν στηριχθεί στο σχεσιακό μοντέλο, ελάχιστα όμως από αυτά το υλοποιούν απόλυτα. Για να είναι ένα DBMS πλήρως σχεσιακό πρέπει να υλοποιεί και τις τρεις πλευρές

Πεδία

Πεδίο Κλειδί

ΒΑ014

Λονδίνο

Σίδνεϋ

21:40

BA837

Νέα Υόρκη

Λονδίνο

09:30

Εγγραφές

ΒΑ152

Λονδίνο

Παρίσι

10:20

...

...

...

...

...

...

...

...

Σχήμα 8. Αρχείο που απεικονίζει τη σχέση ΠΤΗΣΕΙΣ του Σχήματος 2.

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

  1. αποτυχία να μεταχειρίζονται όλα τα δεδομένα σαν σχέσεις.
  2. αποτυχία να υλοποιήσουν όλες τις σχεσιακές πράξεις.
  3. αποτυχία να επιβάλλουν τους περιορισμούς ακεραιότητας.

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

Μιχαήλ Γκατζώνης, Πληροφορικός
Εργαστήριο Ιατρικής Φυσικής
Ιατρική Σχολή Πανεπιστημίου Αθηνών
Τελευταία αναθεώρηση : 1/1/2006

Πνευματικά δικαιώματα © 2008 - Ασκληπιακό Πάρκο Ιατρικής Σχολής Πανεπιστημίου Αθηνών - Πιλοτική εφαρμογή - Ανάληψη ευθυνών
Επιστροφή στην αρχική σελίδα  -  Επικοινωνία


Σας παρακαλούμε να απαντήσετε στο απλό ερώτημα "Θα συνιστούσατε στους φίλους σας και στους γνωστούς σας να επισκεφτούν την Πύλη και να διαβάσουν το συγκεκριμένο κείμενο;" Η απλή αυτή ερώτηση (Business Week, Lanuary 20, 2006 - quoting a Harvard Business Review article) μπορεί να καταδείξει την απήχηση της συγκεκριμένης ιστοσελίδας, σχετικά με το αν επιτελεί το έργο για το οποίο έχει σχεδιαστεί. Βαθμολογήστε στην κλίμακα από 0 εώς 10. Η βαθμολογία σας θα καταχωρηθεί αυτομάτως.