1


ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΣΤΑ ΑΡΧΕΙΑ

 

1.1 Οντότητες και χαρακτηριστικά

Οι ΗΥ χρησιμοποιούνται για τη επεξεργασία δεδομένων. Συνήθως τα δεδομένα εκφράζουν πληροφορία χρήσιμη για τους ανθρώπους και είναι συνήθως απλού και βαθμωτού τύπου π.χ. ο αριθμός των λίτρων ένα βυτίο ή το πλήθος των πωλήσεων σ’ ένα μήνα. Ακόμη τα δεδομένα αναφέρονται σε ένα μεγάλο αριθμό παρεμφερών αντικειμένων ή οντοτήτων (entities) π.χ. οι υπάλληλοι μιας εταιρείας ή οι κινήσεις που πραγματοποιούνται σε ένα λογιστικό σύστημα.

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

Οι οντότητες περιγράφονται μέσω ενός ή περισσοτέρων χαρακτηριστικών (attributes). Υπάρχουν χαρακτηριστικά που περιγράφουν μια οντότητα και μας επιτρέπουν να ξεχωρίσουμε μια οντότητα από μια άλλη, π.χ. η οντότητα “υπάλληλος” θα μπορούσε να χαρακτηρίζεται από τα όνομα, διεύθυνση, αριθμός υπαλλήλου, ποσοστό αμοιβής, κτλ.. Θα μπορούσαμε να πούμε ότι τα χαρακτηριστικά συσχετίζονται με τις οντότητες, όπως τα επίθετα συσχετίζονται με τα ουσιαστικά, δηλαδή περιγράφουν ένα αντικείμενο.

Φαίνεται ίσως περίεργο ότι τα δεδομένα που εκφράζουν μια οντότητα αποτελούνται μόνο από τα χαρακτηριστικά της οντότητας. Παρ’ όλα αυτά το να χρησιμοποιηθεί το όνομα μιας οντότητας ως χαρακτηριστικό θα ήταν τελείως άχρηστο π.χ. το να συμπεριλάβουμε σε κάθε υπάλληλο την τιμή “υπάλληλος” δεν θα προσθέσουμε καμία πληροφορία, γιατί ήδη γνωρίζουμε ότι όλες αυτές οι οντότητες είναι υπάλληλοι. Το να προσθέσουμε το χαρακτηριστικό “υπάλληλος” σε κάθε υπάλληλο δεν θα βοηθήσει σε τίποτα. Απ’ την άλλη είναι χρήσιμο ή και επιθυμητό να μπορούμε να διαχωρίσουμε με μοναδικό τρόπο παρεμφερείς οντότητες. Γι’ αυτό βρίσκουμε ένα τεχνητό χαρακτηριστικό π.χ. τον κωδικό αριθμό υπαλλήλου, που μας χρησιμεύει για να προσδιορίσουμε με μοναδικό τρόπο μια οντότητα από μια άλλες παρεμφερείς οντότητες.

Ένα άλλο πρόβλημα σχετικό με τις οντότητες και τα χαρακτηριστικά είναι ότι σε κάποιες περιπτώσεις είναι χαρακτηριστικά μιας οντότητας και άλλοτε είναι οντότητες. Π.χ. ας θεωρήσουμε την περίπτωση του αντιπροσώπου αυτοκινήτων που επιθυμεί να διατηρεί πληροφορίες για τα αυτοκίνητα που έχει στην αποθήκη του. Η οντότητα είναι το “αυτοκίνητο” και ως χαρακτηριστικά θα χρησιμοποιήσει : τη “μάρκα κατασκευής”, “μοντέλο”, “αριθμός πλαισίου αυτοκινήτου”, “χρώμα” …. Το χαρακτηριστικό “μηχανή” λαμβάνει τιμές όπως “4.5 liter V-8”, “2.2. liter 4”, “3.4 liter V-6”. Ταυτόχρονα το τμήμα επισκευών θέλει να διατηρεί δεδομένα για τα μέρη του αυτοκινήτου που απαιτούν επισκευή. Σ’ αυτή την περίπτωση η “μηχανή” είναι οντότητα με χαρακτηριστικά τα εξής : αντικατάσταση κινητήρα , δύναμη κινητήρα, διάστημα αλλαγής λαδιών, κτλ. Συνήθως κατά της διάρκεια ανάπτυξης του συστήματος ξεκαθαρίζεται ποια αντικείμενα είναι οντότητες και ποια χαρακτηριστικά.

 

1.2 Εγγραφές

Τα χαρακτηριστικά τα οποία περιγράφουν μια οντότητα μπορούν να παρασταθούν από μια ποικιλία τύπων δεδομένων. Π.χ. για την οντότητα “υπάλληλος” το “όνομα” και η “διεύθυνση” θα μπορούσε να είναι αλφαριθμητικού τύπου συγκεκριμένου μήκους, ενώ ο “κωδικός αριθμός υπαλλήλου” και το “ποσοστό αμοιβής” θα μπορούσε να είναι ακεραίου τύπου. Το “τμήμα” ένας μνημονικός κωδικός 3 χαρακτήρων όπου μόνο συγκεκριμένες τιμές είναι νόμιμες. Εφ’ όσον κάθε χαρακτηριστικό μπορεί να είναι διαφορετικού τύπου αλλά και μήκους, δεν μπορούμε να χρησιμοποιήσουμε πίνακα για να αποθηκεύσουμε οντότητες. Ο πίνακας απαιτεί όλα τα στοιχεία να είναι της ιδίας μορφής. Χρειαζόμαστε μια δομή που θα στεγάσει ένα σύνολο ανόμοιων τύπων δεδομένων που εκφράζουν το στιγμιότυπο μιας οντότητας. Μια τέτοια δομή είναι η εγγραφή (record). Κάθε εγγραφή περιέχει όλα τα χαρακτηριστικά που περιγράφουν μια οντότητα. Έτσι μπορεί να έχουμε μια εγγραφή υπαλλήλου που περιέχει ένα πεδίο 30 χαρακτήρων για το “όνομα”, ένα πεδίο 40 χαρακτήρων για την “διεύθυνση”, ένα πεδίο 32-bit integer για τον κωδικό υπαλλήλου κτλ. Τα παραπάνω φαίνονται στην εικόνα 1.1

Εικόνα 1.1

Εγγραφές για ένα τύπο οντότητας είναι συνήθως του ιδίου τύπου. Που σημαίνει, κάθε εγγραφή έχει τα ίδια πεδία (fields) στην ίδια ποσότητα, σειρά και μήκος. Εγγραφές αυτού του τύπου ονομάζονται εγγραφές σταθερού μήκους (fixed-length records). Παρ’ όλα αυτά υπάρχουν εξαιρέσεις σ’ αυτόν τον κανόνα. Εγγραφές που δεν είναι του ιδίου μεγέθους ονομάζονται εγγραφές μεταβλητού μήκους (variable-length records).

Υπάρχουν 3 είδη εγγραφών μεταβλητού μήκους

  • πεδία μεταβλητού μήκους (variable-length fields)

  • μεταβλητού τύπου εγγραφές (variable format records)

  • επαναλαμβανόμενες ομάδες πεδίων (repeating groups)

Πεδία μεταβλητού μήκους (ΠΜΜ) συνήθως χρησιμοποιούνται για να περιορισθεί ο χώρος αποθήκευσης, όταν ένα πεδίο μπορεί να περιλαμβάνει μεταβλητού μεγέθους δεδομένα από εγγραφή σε εγγραφή. Π.χ. το όνομα ενός υπαλλήλου μπορεί να κυμαίνεται από 6 bytes - 30 bytes. Αν χρησιμοποιηθεί σταθερού μήκους πεδίο το μέγεθός του θα προσδιορισθεί από το μεγαλύτερο όνομα που πρόκειται να αποθηκευθεί και μια και το μέσο μέγεθος είναι συνήθως μικρότερο, μεγάλο μέρος χώρου σπαταλιέται. Ένα ΠΜΜ επιτρέπει να χρησιμοποιήσουμε ακριβώς τον χώρο που χρειάζεται για κάθε όνομα.

Μεταβλητού τύπου εγγραφές (ΜΤΕ) χρησιμοποιούνται όταν δεδομένα διαφορετικού τύπου αναφέρονται σε οντότητες. Π.χ. όταν υπάλληλοι μιας εταιρίας πληρώνονται με ωρομίσθια ή μηνιαία αμοιβή. Για τους ωρομίσθιους πρέπει να γνωρίζουμε τις ώρες εργασίας, που όμως δεν χρειάζονται γι’ αυτούς που πληρώνονται με μηνιαίο μισθό. Επιπλέον για τους ωρομίσθιους χρειάζεται να αποθηκεύουμε την ωριαία αποζημίωση, ενώ για τους υπαλλήλους με μηνιαίο μισθό χρειάζεται να αποθηκεύουμε την μηνιαία αποζημίωση. Που σημαίνει ότι στο τέλος του μήνα μ’ άλλο τρόπο θα υπολογισθεί ο μισθός του ωρομισθίου και μ’ άλλο τρόπο του υπαλλήλου με μηνιαίο μισθό. Όταν χρησιμοποιούνται ΜΤΕ, θα πρέπει το πρόγραμμα που τα επεξεργάζεται να γνωρίζει το μέγεθος των εγγραφών και ποια μορφοποίηση (format) χρησιμοποιεί κάθε φορά. Σε πολλές περιπτώσεις είναι δυνατόν να δηλωθεί το format από το μέγεθος. Παρ’ όλα αυτά σε πολλές περιπτώσεις είναι δυνατόν διαφορετικού τύπου εγγραφές να έχουν το ίδιο μέγεθος. Π.χ. στην εγγραφή του υπαλλήλου είναι δυνατόν διαφορετικού τύπου εγγραφές να έχουν το ίδιο μέγεθος, π.χ. στην εγγραφή του υπαλλήλου η μόνη διαφορά είναι το ποσοστό πληρωμής, όπου για κάποιους υπαλλήλους είναι ωριαίο και για κάποιους άλλους μηνιαίο. Θα μπορούσαμε να διακρίνουμε τον έναν από τον άλλο τρόπο πληρωμής επιλέγοντας κάποια τιμή (π.χ. 250) ως ένα όριο. Θα μπορούσαμε να υποθέσουμε ότι τα ποσοστά μικρότερα αυτής της τιμής είναι ωριαία και μεγαλύτερα μηνιαία. Ομως τέτοιοι κανόνες συνήθως οδηγούν σε αποτυχίες, όπως π.χ. λόγω πληθωρισμού έχουμε αύξηση των αποζημιώσεων. Μια καλλίτερη λύση είναι ο χαρακτηρισμός της εγγραφής με κάποιο άμεσο τρόπο που θα προσδιορίζει με τρόπο απόλυτο τον τύπο της εγγραφής. Π.χ. στην εικόνα 1.2 έχουμε ένα χαρακτηριστικό που ονομάζεται “τύπος”. Αυτό το χαρακτηριστικό λαμβάνει την τιμή “Η” για ωριαία αποζημίωση και “S” για μηνιαία. Ελέγχοντας αυτό το πεδίο μπορούμε να προσδιορίσουμε τον τύπο της υπόλοιπης εγγραφής. Στην Pascal τα variant records επιτρέπουν την υλοποίηση ΜΤΕ.

Εικόνα 1.2

Μεταβλητού μήκους εγγραφές προκύπτουν και από εγγραφές που παρουσιάζουν επαναλαμβανόμενες ομάδες πεδίων. Οι επαναλαμβανόμενες ομάδες πεδίων εμφανίζονται όταν ένα χαρακτηριστικό ή ομάδες χαρακτηριστικών επαναλαμβάνονται χωρίς να είναι γνωστό εκ των προτέρων το πλήθος των επαναλήψεων π.χ. μπορεί να χρειάζεται να αποθηκευθούν πληροφορίες σχετικά με την ασφάλιση των υπαλλήλων και των προστατευομένων μελών για την ασφάλιση τους. Μια και κάθε υπάλληλος μπορεί να έχει διαφορετικό πλήθος προστατευομένων μελών (από 0-…) αυτό σημαίνει ότι έχουμε μια επαναλαμβανόμενη ομάδα των χαρακτηριστικών “όνομα προστατευόμενου μέλους”, “ημερομηνία γέννησης”. Έτσι ένας υπάλληλος που δεν έχει προστατευόμενα μέλη δεν εμφανίζει στην εγγραφή επαναλαμβανόμενη ομάδα των παραπάνω χαρακτηριστικών, ενώ ένας υπάλληλος με 4 παιδιά εμφανίζει 4 επαναλαμβανόμενες ομάδες πεδίων. Οι επαναλαμβανόμενες ομάδες χαρακτηριστικών δημιουργούν προβλήματα και ιδιαίτερα αυτά γίνονται εμφανή με τη χρήση αλγόριθμων για τον προσδιορισμό κάποιων στοιχείων. Συνήθως χρησιμοποιείται ένα πεδίο που λειτουργεί ως μετρητής και μας πληροφορεί για το πλήθος των επαναλαμβανόμενων ομάδων.

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

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

  • Όταν χρησιμοποιούνται ΜΤΕ χρειάζεται να γνωρίζουμε το μήκος του πεδίου που επίσης δίνεται αμέσως μέσω της τιμής ενός ακέραιου πεδίου ή να χρειάζεται να γίνει ανίχνευση ενός ειδικού συμβόλου που δηλώνει το τέλος του πεδίου.

  • Όταν ο τύπος της εγγραφής διαφέρει χρειάζεται να χρησιμοποιηθεί ένα χαρακτηριστικό που δηλώνει ποιος τύπος θα χρησιμοποιηθεί. Όπως είναι τα tag flags στην Pascal.

 

1.3 Αρχεία

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

Ένα αρχείο μπορούμε να το σκεφτούμε ως μια διδιάστατη δομή δεδομένων. Η οριζόντια διάσταση περιέχει τα πεδία μιας εγγραφής και μπορεί να κυμαίνεται από μερικά bytes έως χιλιάδες. Η κατακόρυφη διάσταση του αρχείου εκφράζει το πλήθος των εγγραφών. Το εύρος του πλήθους των εγγραφών κυμαίνεται από 0 έως εκατομμύρια εγγραφές. Ένα σύνηθες μέγεθος αρχείου κυμαίνεται από 100 έως 100.000 εγγραφές. Έτσι ένα αρχείο θα μπορούσαμε να πούμε ότι μοιάζει με πίνακα (table), όπου οι γραμμές αντιπροσωπεύουν οντότητες και οι στήλες χαρακτηριστικά. Στην εικόνα 1.3 παριστάνεται ένα αρχείο κειμένου (text file), όπου κάθε γραμμή του πίνακα παριστάνει μια γραμμή αρχείου. Εχουμε δυο χαρακτηριστικά που είναι ο αριθμός γραμμής και η γραμμή που αναφέρεται στο κείμενο.

 

Εικόνα 1.3 : Αρχείο κειμένου

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

 

1.4 Κλειδιά

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

Όμως κατά την επεξεργασία ενός αρχείου συνήθως δυο ζητήματα τίθενται. Είτε χρειάζεται να επεξεργαστούμε μόνο κάποιες συγκεκριμένες εγγραφές ή θέλουμε να επεξεργαστούμε τις εγγραφές με συγκεκριμένη σειρά. Π.χ. θα μπορούσαμε να θέλουμε να έχουμε σε αναφορά τα ονόματα των υπαλλήλων που υπηρετούν σε συγκεκριμένο τμήμα της εταιρείας ή τα ονόματα των υπαλλήλων κατ’ αλφαβητική σειρά.

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

Συνήθως κάποιο κλειδί ενός αρχείου χαρακτηρίζεται ως πρωτεύον κλειδί (primary key). Που σημαίνει ότι το πρωτεύον κλειδί χρησιμεύει για την επιλογή (με μοναδικό τρόπο) μιας εγγραφής καθώς και για τον διαχωρισμό αυτής της εγγραφής από όλες τις υπόλοιπες. Π.χ. ο “κωδικός αριθμός υπαλλήλου” είναι μια καλή επιλογή για πρωτεύον κλειδί μια και είναι μοναδικό για κάθε υπάλληλο. Αντίθετα η επιλογή του “ονόματος” δεν θα ήταν καλή επιλογή μια και τα ονόματα δεν είναι μοναδικά και σταθερά. Π.χ. ένας υπάλληλος μπορεί να δηλώνει το όνομά του ως “Ιωάννης Κάρολου Τσάμης” ή ως “Ιωάννης Κ. Τσάμης”. Γενικά προτιμούνται πεδία ως πρωτεύοντα κλειδιά που δεν περιλαμβάνουν δεδομένα (dataless).

Με βάση το πρωτεύον κλειδί συνήθως εντοπίζεται η φυσική θέση μιας εγγραφής μέσα στο αρχείο. Σε μερικά αρχεία το πρωτεύον κλειδί μπορεί να είναι εξωτερικό κλειδί (external key). Ένα εξωτερικό κλειδί είναι εκείνο που δεν σχηματίζεται από ένα ή περισσότερα χαρακτηριστικά της λογικής εγγραφής, αλλά προκύπτει από κάποια χαρακτηριστικά (characteristic) της φυσικής εγγραφής. Π.χ. μια συνήθης τακτική είναι η αντιστοίχηση ενός μοναδικού αριθμού σε κάθε εγγραφή. Έτσι στην 1η εγγραφή ¬ “0” στη 2η ¬ “1” και στην n-στη ¬ “n-1”. Αυτό το εξωτερικό κλειδί ονομάζεται αριθμός εγγραφής (record number). Οι αριθμοί εγγραφής είναι μοναδικοί όταν αντιστοιχούνται συστηματικά γι’ αυτό χρησιμοποιούνται ως πρωτεύοντα κλειδιά.

Εκτός από τα πρωτεύοντα κλειδιά μπορεί να υπάρχουν και άλλα κλειδιά που χρησιμοποιούνται για τον εντοπισμό εγγραφών στο αρχείο χωρίς να είναι πρωτεύοντα κλειδιά, και ονομάζονται δευτερεύοντα κλειδιά (secondary keys). Τα δευτερεύοντα κλειδιά δεν αναγνωρίζουν με μοναδικό τρόπο μια εγγραφή.

Η έννοια του κλειδιού δεν είναι μόνο χρήσιμη για τον προσδιορισμό μιας εγγραφής με μοναδικό τρόπο, αλλά και για τον προσδιορισμό ενός συνόλου εγγραφών, όπως στο προηγούμενο παράδειγμα, όπου θέλαμε να εντοπίσουμε τους υπαλλήλους με βάση την τιμή του πεδίο “τμήμα”. Προφανώς υπάρχουν πολλοί υπάλληλοι σ’ ένα τμήμα και προφανώς το “τμήμα” δεν μπορεί να είναι πρωτεύον κλειδί. Θα μπορούσαμε ακόμη να επιλέξουμε εγγραφές βασισμένοι σ’ ένα διάστημα τιμών ενός κλειδιού και όχι σε μια μόνο τιμή του κλειδιού. Π.χ. θα μπορούσαμε να εντοπίσουμε τους ωρομίσθιους υπαλλήλους με ωριαία αντιμισθία από 5000-7000 δρχ.

 


Up ] [ 1 ] 2 ] 3 ] 4 ] 5 ] 6 ] 7 ] 8 ] 9 ] 10 ]

Copyright Πανεπιστήμιο Μακεδονίας
Για σχόλια [Μ. Σατρατζέμη]
Τελευταία ενημέρωση : Δεκέμβριος 20, 2002