Μάθηµα 1 Εισαγωγή στις Βάσεις εδοµένων και την Access Τι είναι οι βάσεις δεδοµένων Μία βάση δεδοµένων (Β..) είναι µία οργανωµένη συλλογή πληροφοριών, οι οποίες είναι αποθηκευµένες σε κάποιο αποθηκευτικό µέσο (π.χ. σκληρό δίσκο). Από αυτό µπορούµε να αντλούµε από τις πληροφορίες που χρειαζόµαστε για να τις επεξεργαζόµαστε, να τις βλέπουµε ή να τις τυπώνουµε. Πριν καταχωρηθούν όµως οι πληροφορίες θα πρέπει προηγουµένως έχουν υποστεί την κατάλληλη επεξεργασία. Με τον όρο κατάλληλη επεξεργασία εννοούµε ότι για να δηµιουργήσουµε µία βάση δεδοµένων των µαθητών µας, θα καταχωρήσουµε ορισµένα στοιχεία τους, όπως το ονοµατεπώνυµο, η διεύθυνση, το τηλέφωνο, το Α.Μ. κλπ, όχι όµως πληροφορίες, όπως το ύψος τους ή το χρώµα των µαλλιών τους, διότι ως πληροφορίες αυτά τα χαρακτηριστικά δεν µας ενδιαφέρουν. Οι πληροφορίες τις οποίες καταχωρούµε και επεξεργαζόµαστε σε µία Β.. ονοµάζονται δεδοµένα. Παραδείγµατα απλών βάσεων δεδοµένων από την καθηµερινή ζωή µας είναι ο τηλεφωνικός κατάλογος του ΟΤΕ, ή ατζέντα, ένα λεξικό ή ένα κουτί µέσα στο οποίο έχουµε τοποθετήσει τις καρτέλες των µαθητών ενός σχολείου. Εάν θέλουµε να δηµιουργήσουµε µία απλή βάση δεδοµένων, όπως αυτές των προηγουµένων παραδειγµάτων φυσικά µπορούµε να το πράξουµε και σε ένα απλό λογιστικό φύλλο, διότι στην ουσία πρόκειται για µία απλή λίστα δεδοµένων. Όταν όµως χρειάζεται να καταχωρίσουµε πληροφορίες οι οποίες σχετίζονται µε µία επιχείρηση, όπως πελάτες, προµηθευτές, παραγγελίες, πωλητές, προϊόντα, αποθήκη, τιµολόγια ή να µηχανογραφήσουµε ένα σχολείο (µαθητές, µαθήµατα, τάξεις, απουσίες, βαθµολογίες κλπ), τότε οι βάσεις δεδοµένων αποτελούν µονόδροµο. Τι είναι η Access 2002 Η Access είναι µία εφαρµογή της Microsoft και αποτελεί τµήµα του εξελληνισµένου πακέτου Microsoft Office 2002. Η Access 2002 είναι ένα επιτραπέζιο (Desktop) σύστηµα διαχείρισης σχεσιακών βάσεων δεδοµένων (RDBMS), η οποία λειτουργεί στο γραφικό περιβάλλον των Windows. ιαθέτει ένα ολοκληρωµένο σύστηµα ανάπτυξης εφαρµογών µε σκοπό την αυτοµατοποίηση των εργασιών. O όρος επιτραπέζιο σύστηµα αναφέρεται προκειµένου να τονιστεί η διαφορά από άλλα µεγάλα συστήµατα διαχείρισης Β.. τα οποία λειτουργούν σε περιβάλλον πελάτη / διακοµιστή (client / server), όπως για παράδειγµα ο SQL Server, MySQL, Oracle κλπ, τα οποία απευθύνονται σε επιχειρήσεις ή οργανισµούς. Η Access δίνει τη δυνατότητα σε ένα χρήστη να δηµιουργήσει εύκολα µία ολοκληρωµένη εφαρ- µογή δίχως να χρειαστεί τις περισσότερες φορές να γράψει ούτε µία γραµµή κώδικα προγράµµατος. Πλεονεκτήµατα της είναι η ευχρηστία, η απλότητα και η λειτουργικότητα. Η βοήθεια στην Access είναι πολύ εξελιγµένη και σηµαντική. Εκτός από τη βοήθεια υπάρχουν οι λεγόµενοι Οδηγοί ή Μάγοι (Wizards) που µπορούν να µας καθοδηγήσουν εύκολα για να δηµιουργήσουµε Πίνακες, Εκθέσεις, Φόρµες ή ακόµα και µία νέα Β.. Η Access έχει τη δυνατότητα να επικοινωνεί και να χειρίζεται δεδοµένα από αρχεία κειµένου, λογιστικά φύλλα, αρχεία από τις πιο δηµοφιλείς βάσεις δεδοµένων. Κάθε εφαρµογή αποθηκεύεται σε 1
ένα µοναδικό αρχείο µε προέκταση.mdβ. Ανοίγοντας ένα αρχείο βάσης δεδοµένων ενεργοποιούνται όλοι οι πίνακες, τα ερωτήµατα, οι φόρµες, οι εκθέσεις, οι µακροεντολές και οι λειτουργικές µονάδες. Σχεσιακή Βάση εδοµένων Η Σχεσιακή Βάση εδοµένων (Relational Database) είναι µία οργανωµένη συλλογή πληροφοριών (δεδοµένων), η οποία βασίζεται στο σχεσιακό µοντέλο. Η οργάνωση των πληροφοριών πρέπει να γίνεται µε τέτοιον τρόπο ώστε να εντοπίζονται εύκολα και γρήγορα από κάποιο χρήστη. Οι πληροφορίες αυτές είναι οργανωµένες σε Πίνακες (Tables). Κάθε πίνακας έχει πληροφορίες που έχουν σχέση µε ένα µόνο θέµα (Μαθητές, Μαθήµατα, Τάξεις, Τµήµατα, Βαθµολογίες, Απουσίες κλπ) και αποτελείται από σειρές και στήλες οι οποίες είναι προσβάσιµες οριζόντια ή κατακόρυφα. Οι στήλες ή πεδία (fields) των πινάκων περιέχουν διαφορετικά είδη πληροφοριών (Όνοµα, ΑΦΜ, ιεύθυνση, Τηλέφωνο κλπ) για το ίδιο όµως θέµα (π.χ. Πελάτες). Οι γραµµές ή εγγραφές (records) περιγράφουν τις ιδιότητες µιας περίπτωσης του θέµατος (όλα τα στοιχεία ενός πελάτη). Κάθε εγγραφή περιέχει πληροφορίες οι οποίες είναι συσχετισµένες µε ένα µοναδικό θέµα. Στις σχεσιακές Β.. οι εγγραφές σε έναν πίνακα πρέπει να διαφέρουν τουλάχιστον ως προς ένα πεδίο. Αυτό επιτυγχάνεται µε τη χρήση πεδίων που ορίζονται ως κλειδιά (keys). Η Access διαθέτει έναν ειδικό τύπο πεδίου, που ονοµάζεται Αυτόµατη Αρίθµηση (Autonumber), µε το οποίο µπορούµε να ορίσουµε ένα πρωτεύον κλειδί (primary key), µε το οποίο επιτυγχάνεται αυτόµατα η αποφυγή διπλοεγγραφών. Οι πληροφορίες συνδέονται µεταξύ τους µε σχέσεις που απορρέουν από τα κοινά πεδία διαφορετικών πινάκων. Τα κοινά πεδία παίρνουν τις τιµές τους από κοινά πεδία τιµών και η ύπαρξη µιας κοινής τιµής καθορίζει και µία σχέση µεταξύ των γραµµών διαφορετικών πινάκων. Χαρακτηριστικά των σχεσιακών βάσεων δεδοµένων Σχέση: όλες οι πληροφορίες που συσχετίζονται µε ένα µοναδικό θέµα (πίνακας). Ιδιότητα: κάποια συγκεκριµένη πληροφορία που είναι σχετική µε το θέµα, (πεδίο του πίνακα). Αντιστοίχηση: µε ποιον τρόπο οι πληροφορίες µιας σχέσης συσχετίζονται µε τις πληροφορίες µιας άλλης σχέσης (µονοσήµαντη σχέση - ένα προς πολλά, αµφιµονοσήµαντη σχέση - ένα προς ένα). Ένωση: Σύνδεση πινάκων και ερωτηµάτων σε πίνακες. Το πρόβληµα µε τις επαναλαµβανόµενες πληροφορίες Όταν ένας αρχάριος χρήστης αρχίζει να δηµιουργεί Β.. συνήθως έχει την τάση να τοποθετεί ό- λες τις πληροφορίες που του χρειάζονται σε έναν πίνακα. Ας υποθέσουµε ένα παράδειγµα. Έστω ότι θέλουµε να καταχωρίσουµε τα στοιχεία των µαθητών µιας τάξης και τις βαθµολογίες τους σε µία Β.. Καταχωρώντας τα δεδοµένα των µαθητών σε ένα πίνακα έχουµε την εικόνα που ακολουθεί. 2
Παρατηρούµε ότι κάθε φορά που θέλουµε να καταχωρίσουµε για ένα µαθητή τη βαθµολογία ενός µαθήµατος στον πίνακα, είµαστε υποχρεωµένοι να επαναλαµβάνουµε µία σειρά από πληροφορίες όπως Ονοµατεπώνυµο, ΑΜ, Πατρώνυµο, Τάξη, ιεύθυνση, Τηλέφωνο καθώς και την ονοµασία του µαθήµατος. Η επανάληψη ορισµένων δεδοµένων όµως κοστίζει σε χρόνο, κόπο αλλά αυξάνει και τον κίνδυνο να κάνουµε λάθος. Επίσης σε περίπτωση που θελήσουµε να αλλάξουµε τη διεύθυνση ενός µαθητή ή τον αριθµό τηλεφώνου του, θα πρέπει να βρίσκουµε και να ενηµερώνουµε όλες τις εγγραφές, στις οποίες αυτός εµφανίζεται. Από την άλλη πλευρά η καταχώριση των δεδοµένων ενός µαθητή σε µία µόνο εγγραφή (οριζόντια ανάπτυξη) δηµιουργεί άλλου είδους προβλήµατα όπως αυτό της αναζήτησης σε ένα µάθηµα (σε ποιο απ' όλα;), καθώς και η αδυναµία διαφόρων υπολογισµών, όπως η εύρεση π.χ. του µέσου όρου των µαθηµάτων. Επιπλέον σε περίπτωση που έχουµε πάρα πολλά µαθήµατα (ή αντί για µαθήµατα και µαθητές, έχουµε προµηθευτές και ανταλλακτικά), τότε υπάρχει κίνδυνος να φτάσουµε το µέγιστο όριο των 255 πεδίων που υπάρχει στην Access για έναν πίνακα. Προσπαθώντας εποµένως να λύσουµε το πρόβληµα µε το "στρίµωγµα" όλων των δεδοµένων σε ένα πίνακα παρατηρούµε ότι οδηγούµαστε σε αδιέξοδο. Εξ άλλου αν είναι να τοποθετήσουµε όλα τα δεδοµένα σε έναν πίνακα δεν χρειάζεται να χρησιµοποιήσουµε την Access και τις Β.. αλλά είναι πολύ πιο εύκολο να τα καταχωρίσουµε σε ένα λογιστικό φύλλο του Excel. Το αδιέξοδο στο οποίο βρισκόµαστε µπορεί να λυθεί αν το προσεγγίσουµε από µία διαφορετική οπτική γωνία. Να διαχωρίσουµε τα δεδοµένα σε διαφορετικούς πίνακες. Σε πόσους πίνακες όµως; Τόσους, όσα είναι και τα θέµατα του προβλήµατος. ηλαδή ένα πίνακα ο οποίος θα περιέχει τα στοιχεία των µαθητών, ένα πίνακα µε τα µαθήµατα και ένα πίνακα µε τις βαθµολογίες. 3
Το πρώτα πεδία των πινάκων είναι πρωτεύοντα κλειδιά. Στη συνέχεια οι τρεις πίνακες θα συνδεθούν µεταξύ τους µε τη χρήση και ξένων κλειδιών (µε ποιον τρόπο θα δούµε σε επόµενο µάθηµα). Επίσης πιθανώς ο αναγνώστη να αναρωτηθεί µε ποιον τρόπο µπορούµε να θυµόµαστε όλους αυτούς τους κωδικούς αριθµούς στη διάρκεια της πληκτρολόγησης των δεδοµένων. Και αυτό όµως είναι ένα θέµα το οποίο θα αντιµετωπίσουµε σε επόµενο µάθηµα. Κανονικοποίηση δεδοµένων Ο τρόπος µε τον οποίο αντιµετωπίσαµε το παραπάνω πρόβληµα ονοµάζεται κανονικοποίηση Η κανονικοποίηση είναι µία διαδικασία στη διάρκεια της οποίας διαχωρίζουµε τις πληροφορίες σε διάφορους πίνακες και αφαιρούµε εκείνα τα δεδοµένα, τα οποία πλεονάζουν από τη Β.. Η διαδικασία της κανονικοποίησης µπορεί να συνοψιστεί σε µερικούς απλούς κανόνες. 1. Σε έναν πίνακα κάθε εγγραφή θα πρέπει να είναι µοναδική. Εποµένως δεν πρέπει ποτέ να υ- πάρχουν σε έναν πίνακα δύο όµοιες εγγραφές. Αυτό επιτυγχάνεται όπως είπαµε και προηγουµένως, µε τη βοήθεια κάποιου πρωτεύοντος κλειδιού. 2. Σε έναν πίνακα δεν πρέπει να υπάρχουν επαναλαµβανόµενα πεδία όπως Μάθηµα 1, Μάθηµα 2, Μάθηµα 3 κλπ., δηλαδή το κάθε πεδίο πρέπει να περιέχει ένα µοναδικό είδος πληροφοριών. 4
3. Εφόσον κάθε πεδίο πρέπει να περιέχει ένα µοναδικό είδος πληροφοριών, δεν πρέπει να ολισθήσουµε στο άλλο άκρο και να συγχωνεύσουµε δύο πεδία σε ένα. Για παράδειγµα σε ένα πίνακα πελατών δεν µπορούµε να συγχωνεύσουµε τα πεδία διεύθυνση και πόλη, διότι πρόκειται για δύο διαφορετικές ιδιότητες ενός θέµατος (πελάτες). 4. Ένας πίνακας θα πρέπει να περιέχει όλα εκείνα τα πεδία τα οποία θα περιγράφουν πλήρως ένα θέµα (π.χ. Μαθητές). Ταυτόχρονα όµως πεδία τα οποία δεν έχουν άµεση σχέση µε το συγκεκριµένο θέµα (π.χ. Μαθήµατα ή Βαθµοί) θα πρέπει να µεταφερθούν σε άλλους πίνακες. 5. Σε οποιοδήποτε πεδίο ενός πίνακα θα πρέπει να µπορούµε να κάνουµε τροποποιήσεις, δίχως να επηρεάζεται κάποιο άλλο πεδίο, µε εξαίρεση το πεδίο του πρωτεύοντος κλειδιού. Αυτό που χρειάζεται είναι να αφιερώνουµε στην αρχή αρκετό χρόνο για τη σωστή ανάλυση του προβλήµατος και να προσπαθούµε να εφαρµόσουµε τους παραπάνω κανόνες στη σχεδίαση των πινάκων. Τα υπόλοιπα θα έρθουν σιγά σιγά µε την απόκτηση εµπειριών. Άσκηση 1. Φορτώστε την Access. 2. Ανοίξτε τη βάση δεδοµένων NORTHWIND.MDB, η οποία βρίσκεται στον υποφάκελο Samples. 3. Ανοίξτε και περιηγηθείτε διαδοχικά σε όλους τους πίνακες, τις φόρµες, τις αναφορές και τα ερωτήµατα της βάσης δεδοµένων NORTHWIND. 4. Καλέστε τη βοήθεια στα διάφορα στάδια της περιήγησης µέσα στη βάση δεδοµένων. 5. Κλείστε τη βάση δεδοµένων. 6. ηµιουργήστε µία νέα Β.. µε τη βοήθεια του Wizard η οποία να βασίζεται στον Έλεγχο Αποθήκης.mdz 7. Κλείστε τη Β.. και βγείτε από την Access. 5