ΕΙΣΑΓΩΓΗ ΣΤΗΝ ACCESS Μια βάση δεδομένων είναι μια οργανωμένη συλλογή πληροφοριών, οι οποίες είναι αποθηκευμένες σε κάποιο αποθηκευτικό μέσο (π.χ σκληρό δίσκο). Οι πληροφορίες τις οποίες καταχωρούμε και επεξεργαζόμαστε σε μια βάση δεδομένων, ονομάζονται δεδομένα. Η Microsoft Access είναι ένα επιτραπέζιο σύστημα διαχείρισης σχεσιακών βάσεων δεδομένων (RDBMS) και διαθέτει ένα ολοκληρωμένο σύστημα ανάπτυξης εφαρμογών με σκοπό την αυτοματοποίηση των εργασιών. Ο όρος επιτραπέζιο σύστημα αναφέρεται προκειμένου να τονιστεί η διαφορά από άλλα μεγάλα συστήματα διαχείρισης βάσεων δεδομένων τα οποία λειτουργούν σε περιβάλλον client/server (π.χ SQL Server) και απευθύνονται σε επιχειρήσεις ή οργανισμούς. Η Access δίνει τη δυνατότητα σε ένα χρήστη να δημιουργήσει εύκολα μια ολοκληρωμένη εφαρμογή δίχως να χρειαστεί τις περισσότερες φορές να γράφει ούτε μια γραμμή κώδικα προγράμματος. Έχει τη δυνατότητα να επικοινωνεί και να χειρίζεται δεδομένα από αρχεία κειμένου, λογιστικά φύλλα, αρχεία από άλλες βάσεις δεδομένων. Κάθε εφαρμογή αποθηκεύεται σε ένα μοναδικό αρχείο με προέκταση.mdb. Ανοίγοντας ένα αρχείο βάσης δεδομένων ενεργοποιούνται όλοι οι πίνακες, τα ερωτήματα, οι φόρμες, οι εκθέσεις, οι μακροεντολές και οι λειτουργικές μονάδες. Σχεσιακή βάση δεδομένων Η σχεσιακή βάση δεδομένων (Relational Database) είναι μια οργανωμένη συλλογή πληροφοριών (δεδομένων), η οποία βασίζεται στο σχεσιακό μοντέλο. Η οργάνωση των πληροφοριών πρέπει να γίνεται με τέτοιο τρόπο ώστε να εντοπίζονται εύκολα και γρήγορα από κάποιο χρήστη. Οι πληροφορίες αυτές είναι οργανωμένες σε Πίνακες (Tables). Κάθε πίνακας έχει πληροφορίες που έχουν σχέση με ένα μόνο θέμα (Μαθητές, Μαθήματα, Τάξεις, Τμήματα, Βαθμολογίες, Απουσίες κτλ) και αποτελείται από σειρές και στήλες οι οποίες είναι προσβάσιμες οριζόντια ή κατακόρυφα. Οι στήλες ή πεδία (fields) των πινάκων περιέχουν διαφορετικά είδη πληροφοριών (Όνομα, ΑΦΜ, Διεύθυνση, Τηλέφωνο κτλ) για το ίδιο όμως θέμα (π.χ Πελάτες). Οι γραμμές ή εγγραφές (records) περιγράφουν τις ιδιότητες μιας περίπτωσης του θέματος (όλα τα στοιχεία ενός πελάτη). Κάθε εγγραφή περιέχει πληροφορίες που είναι συσχετισμένες με ένα μοναδικό θέμα. Στις σχεσιακές βάσεις δεδομένων οι εγγραφές σε έναν πίνακα πρέπει να διαφέρουν τουλάχιστον ως προς ένα πεδίο. Σ αυτό συμβάλλουν πεδία που ορίζονται ως κλειδιά (keys). Η Access διαθέτει έναν ειδικό τύπο πεδίου που ονομάζεται Αυτόματη Αρίθμηση, με το οποίο μπορούμε να ορίσουμε ένα πρωτεύον κλειδί (primary key), με το οποίο επιτυγχάνεται αυτόματα η αποφυγή διπλοεγγραφών. Οι πληροφορίες συνδέονται μεταξύ τους με σχέσεις που απορρέουν από τα κοινά πεδία διαφορετικών πινάκων. Τα κοινά πεδία παίρνουν τις τιμές τους από κοινά πεδία Σελίδα 1 από 29
τιμών και η ύπαρξη μιας κοινής τιμής καθορίζει και μια σχέση μεταξύ των γραμμών διαφορετικών πινάκων. Το πρόβλημα με τις επαναλαμβανόμενες πληροφορίες Όταν ένας αρχάριος χρήστης αρχίζει να δημιουργεί βάσεις δεδομένων έχει την τάση να τοποθετεί όλες τις πληροφορίες που του χρειάζεται σε έναν πίνακα. Έστω, για παράδειγμα, ότι θέλουμε να καταχωρίσουμε τα στοιχεία των μαθητών μιας τάξης και τις βαθμολογίες τους σε μια βάση δεδομένων. Καταχωρώντας τα δεδομένα των μαθητών σε ένα συγκεντρωτικό πίνακα έχουμε την εικόνα που ακολουθεί: Παρατηρούμε ότι κάθε φορά που θέλουμε να καταχωρήσουμε για ένα μαθητή τη βαθμολογία ενός μαθήματος στον πίνακα, είμαστε υποχρεωμένοι να επαναλαμβάνουμε μια σειρά από πληροφορίες όπως Ονοματεπώνυμο, Πατρώνυμο Διεύθυνση, Τηλέφωνο καθώς και την ονομασία του μαθήματος. Η επανάληψη ορισμένων δεδομένων απαιτεί περισσότερο χρόνο και κόπο και αυξάνει τον κίνδυνο λάθους. Επίσης, σε περίπτωση που θέλουμε να αλλάξουμε π.χ τη διεύθυνση ενός μαθητή, θα πρέπει να βρούμε και να ενημερώσουμε όλες τις εγγραφές στις οποίες εμφανίζεται ο μαθητής αυτός. Αν η καταχώρηση των δεδομένων ενός μαθητή γίνει σε μία μόνο εγγραφή (οριζόντια ανάπτυξη) έχουμε άλλου είδους προβλήματα όπως αυτό της αναζήτησης σε ένα μάθημα (σε ποιο από όλα;) καθώς και αδυναμία διαφόρων υπολογισμών, όπως η εύρεση π.χ του μέσου όρου των μαθημάτων. Σε περίπτωση δε που έχουμε πάρα πολλά μαθήματα, τότε υπάρχει κίνδυνος να φτάσουμε το μέγιστο όριο των 255 πεδίων που υπάρχει στην Access για έναν πίνακα. Σελίδα 2 από 29
Για να αποφύγουμε το παραπάνω αδιέξοδο, διαχωρίζουμε τα δεδομένα σε διαφορετικούς πίνακες. Τόσους πίνακες όσα είναι και τα θέματα του προβλήματος. Δηλαδή, ένας πίνακας με τα στοιχεία των μαθητών, ένας πίνακας με τα μαθήματα και ένας πίνακας με τις βαθμολογίες. Σελίδα 3 από 29
Τα πρώτα πεδία των πινάκων είναι πρωτεύοντα κλειδιά. Στη συνέχεια, οι 3 πίνακες θα συνδεθούν μεταξύ τους με τη χρήση ξένων κλειδιών, όπως θα δούμε στη συνέχεια. Κανονικοποίηση Δεδομένων Ο τρόπος με τον οποίο αντιμετωπίσαμε το παραπάνω πρόβλημα ονομάζεται κανονικοποίηση. Η κανονικοποίηση είναι μια διαδικασία στη διάρκεια της οποίας διαχωρίζουμε τις πληροφορίες σε διάφορους πίνακες και αφαιρούμε από τη βάση δεδομένων τα δεδομένα που πλεονάζουν. Η διαδικασία της κανονικοποίησης συνοψίζεται σε μερικούς απλούς κανόνες: 1. Σε έναν πίνακα κάθε εγγραφή θα πρέπει να είναι μοναδική. Αυτό επιτυγχάνεται με τη βοήθεια κάποιου πρωτεύοντος κλειδιού. 2. Σε έναν πίνακα δεν πρέπει να υπάρχουν επαναλαμβανόμενα πεδία. Πχ Μάθημα 1, Μάθημα 2, Μάθημα 3 κτλ, δηλαδή το κάθε πεδίο πρέπει να έχει ένα μοναδικό είδος πληροφοριών. Σελίδα 4 από 29
3. Εφόσον κάθε πεδίο πρέπει να περιέχει ένα μοναδικό είδος πληροφοριών, δεν πρέπει να συγχωνεύσουμε δύο πεδία σε ένα. Για παράδειγμα, σε έναν πίνακα πελατών, δεν μπορούμε να συγχωνεύσουμε τα πεδία Διεύθυνση και Πόλη, διότι πρόκειται για δύο διαφορετικές ιδιότητες του θέματος Πελάτες. 4. Ένας πίνακας θα πρέπει να περιέχει όλα εκείνα τα πεδία τα οποία θα περιγράφουν πλήρως ένα θέμα (πχ Μαθητές). Πεδία τα οποία δεν έχουν άμεση σχέση με το συγκεκριμένο θέμα (πχ Μαθήματα ή Βαθμοί) θα πρέπει να μεταφερθούν σε άλλους πίνακες. 5. Σε οποιοδήποτε πεδίο ενός πίνακα θα πρέπει να μπορούμε να κάνουμε τροποποιήσεις, χωρίς να επηρεάζεται κάποιο άλλο πεδίο, με εξαίρεση το πεδίο του πρωτεύοντος κλειδιού. Στο περιβάλλον της Access Ανοίγοντας την Access 2007 εμφανίζεται το παράθυρο που ακολουθεί: Επιλέγουμε Κενή Βάση Δεδομένων και στο δεξί μέρος του παραθύρου που ακολουθεί πληκτρολογούμε το όνομα της βάσης και επιλέγουμε διεύθυνση αποθήκευσης. Η προέκταση του αρχείου της βάσης δεδομένων είναι αυτόματα mdb. Όλοι οι πίνακες, οι φόρμες, τα ερωτήματα, οι εκθέσεις, οι μακροεντολές κτλ αποθηκεύονται μέσα σ αυτό το αρχείο. Στο τέλος, πατάμε το κουμπί Δημιουργία. Σελίδα 5 από 29
Αφού δημιουργήσουμε την κενή Βάση Δεδομένων, αρχίζουμε να δημιουργούμε τους πίνακες. Δημιουργία πίνακα σε προβολή σχεδίασης Είναι ο καλύτερος τρόπος δημιουργίας πινάκων γιατί έχουμε τη δυνατότητα να ρυθμίζουμε όπως θέλουμε τα πεδία. Οπότε, από την επιλογή Προβολή πατάμε Προβολή Σχεδίασης και στο παράθυρο που ακολουθεί δίνουμε όνομα στον πίνακα (εμείς εδώ θα τον ονομάσουμε Υπάλληλοι ): Σελίδα 6 από 29
Και εμφανίζεται το παρακάτω παράθυρο: Ο πίνακας τον οποίο θα σχεδιάσουμε αναφέρεται στην καταχώρηση στοιχείων των υπαλλήλων μιας επιχείρησης. Στη στήλη Όνομα πεδίου συμπληρώνουμε το όνομα κάθε πεδίου, δηλαδή της κάθε στήλης του πίνακα. Από τη στήλη Τύπος Δεδομένων επιλέγουμε τον τύπο του πεδίου από την drop down λίστα που εμφανίζεται. Στη στήλη Περιγραφή μπορούμε να προσθέσουμε κάποια σύντομη περιγραφή του πεδίου. Η περιγραφή αυτή θα εμφανίζεται κάθε φορά που επιλέγεται το πεδίο σε ένα ερώτημα ή σε μια φόρμα. Με το πλήκτρο Tab μετακινούμαστε στην επόμενη στήλη. Σελίδα 7 από 29
Περιορισμοί στην ονομασία των πεδίων Το όνομα ενός πεδίου: Μπορεί να έχει μήκος μέχρι 64 χαρακτήρες και να περιέχει γράμματα, αριθμούς ή κενά διαστήματα. Για παράδειγμα μπορούμε να γράψουμε ως όνομα πεδίου Αριθμός Τηλεφώνου 1. Δεν επιτρέπεται να ορίσουμε ως πρώτο χαρακτήρα ενός ονόματος το κενό διάστημα. Δεν μπορούμε να χρησιμοποιήσουμε την τελεία (.), το θαυμαστικό (!), τις αγκύλες ([]) και το σύμβολο ( ). Καλό θα ήταν να μην περιέχει δεσμευμένες λέξεις όπως Date, Now, Time διότι αποτελούν συναρτήσεις της Access. Προσοχή! Όταν ένα πεδίο εμφανίζεται σε δύο πίνακες, για να αποφύγουμε τη σύγχυση, θα πρέπει να ορίζουμε το ίδιο όνομα πεδίου στους δύο πίνακες. Για παράδειγμα, αν έχουμε τους πίνακες Πελάτες και Παραγγελίες, τότε το πεδίο το οποίο περιέχει τον κωδικό πελάτη θα πρέπει να έχει το ίδιο ακριβώς όνομα. Ιδιότητες πεδίων Οι ιδιότητες των πεδίων διαφέρουν ανάλογα με τον τύπο δεδομένων που επιλέγουμε. Ορίζονται στο κάτω μέρος του παραθύρου σχεδίασης του πίνακα. Σελίδα 8 από 29
Δημιουργία του πίνακα Υπάλληλοι Δημιουργούμε τον πίνακα Υπάλληλοι με προβολή σχεδίασης. Στην εικόνα που ακολουθεί φαίνονται τα πεδία του πίνακα και οι αντίστοιχοι τύποι δεδομένων. Σελίδα 9 από 29
Ορισμός πρωτεύοντος κλειδιού Ο ορισμός του πρωτεύοντος κλειδιού είναι μία από τις σημαντικότερες λειτουργίες στην Access. Το πρωτεύον κλειδί είναι απαραίτητο για να συνδέει δύο πίνακες μιας βάσης δεδομένων, ώστε να γίνεται η αναζήτηση ή η εξαγωγή των δεδομένων. Το πρωτεύον κλειδί αποτρέπει την ύπαρξη δύο όμοιων εγγραφών σε έναν πίνακα. Για παράδειγμα, αν σχεδιάσουμε μια σχολική εφαρμογή θα δημιουργήσουμε έναν πίνακα με τα στοιχεία των μαθητών, ένα δεύτερο πίνακα με τα μαθήματα, έναν τρίτο με τη βαθμολογία, έναν τέταρτο με τις απουσίες κτλ. Όταν θα ζητήσουμε διάφορα στοιχεία για έναν μαθητή, τότε το πρωτεύον κλειδί θα επιτρέπει να έχουμε πρόσβαση στα δεδομένα όλων των παραπάνω πινάκων που αφορούν ένα μαθητή. Συνήθως επιλέγουμε ως πρωτεύον κλειδί το πρώτο πεδίο ενός πίνακα, στο οποίο ορίζουμε ως τύπο δεδομένων εκείνον της αυτόματης αρίθμησης. Η διαδικασία είναι η εξής: 1. Κάνουμε κλικ στο πεδίο στο οποίο θέλουμε να ορίσουμε ένα κλειδί (στην προκειμένη περίπτωση στο πεδίο Κωδικός Υπαλλήλου) και πατάμε το εικονίδιο του πρωτεύοντος κλειδιού από τη γραμμή εργαλείων. 2. Στα αριστερά του ονόματος εμφανίζεται η ένδειξη του κλειδιού 3. Για να δημιουργήσουμε πρωτεύοντα κλειδιά σε περισσότερα του ενός πεδία, πατάμε διαδοχικά τα πλήκτρα επιλογής γραμμών που βρίσκονται αριστερά των ονομάτων των πεδίων, κρατώντας πατημένο το πλήκτρο Ctrl. 4. Για να καταργήσουμε ένα πρωτεύον κλειδί, πατάμε εκ νέου το εικονίδιο Αποθήκευση πίνακα Όταν δημιουργούμε έναν πίνακα, η Access του δίνει αυτόματα ένα όνομα όπως Πίνακας1, Πίνακας2 κτλ. Για να αποθηκεύσουμε τον πίνακα, πατάμε το εικονίδιο της αποθήκευσης. Στο πλαίσιο διαλόγου που εμφανίζεται, πληκτρολογούμε το όνομα Πίνακας Υπαλλήλων, κι εδώ θα αποθηκεύονται πλέον οι αλλαγές που θα κάνουμε στον πίνακα. Τροποποίηση σχεδίασης πίνακα Για να ανοίξουμε τον πίνακα σε προβολή σχεδίασης, επιλέγουμε τον πίνακα από το παράθυρο της βάσης δεδομένων και με δεξί κλικ επιλέγουμε Προβολή σχεδίασης. Σελίδα 10 από 29
Προσθήκη νέων πεδίων Έστω ότι μετά την δημιουργία του πίνακα αντιλαμβανόμαστε ότι έχουμε ξεχάσει να συμπεριλάβουμε κάποια πεδία, κάτι το οποίο γίνεται συχνά. Η προσθήκη ενός νέου πεδίου, σε προβολή σχεδίασης, γίνεται ως εξής: Αν το νέο πεδίο που θέλουμε να προσθέσουμε θα είναι στο τέλος, δηλαδή μετά το πεδίο Παρατηρήσεις, τότε κάνουμε κλικ στην κενή γραμμή, πληκτρολογούμε ένα όνομα πεδίου και επιλέγουμε τον κατάλληλο τύπο δεδομένων. Αν θέλουμε να παρεμβάλουμε ένα πεδίο μεταξύ δύο ήδη υπαρχόντων πεδίων, κάνουμε δεξί κλικ στο πεδίο πάνω από το οποίο θέλουμε να κάνουμε την παρεμβολή και επιλέγουμε Εισαγωγή γραμμών. Έστω ότι θέλουμε να παρεμβάλουμε ένα νέο πεδίο με όνομα Πατρώνυμο, μεταξύ των πεδίων Ονοματεπώνυμο και Ειδικότητα. Κάνουμε δεξί κλικ στο πεδίο Ειδικότητα και επιλέγουμε Εισαγωγή γραμμών. Σελίδα 11 από 29
Ανοίγει μια νέα γραμμή. Στη στήλη Όνομα πεδίου πληκτρολογούμε Πατρώνυμο και ως τύπο δεδομένων επιλέγουμε κείμενο. Στη συνέχεια κάνουμε δεξί κλικ στη γραμμή με το πεδίο Ημερομηνία Πρόσληψης και εισάγουμε μια κενή γραμμή πάνω από αυτή, για να παρεμβάλουμε το νέο πεδίο ΑΦΜ, το οποίο θα έχει τύπο δεδομένων κείμενο. Στη στήλη Περιγραφή πληκτρολογούμε Αριθμός Φορολογικού Μητρώου. Διαγραφή πεδίων Για να διαγράψουμε ένα πεδίο, επιλέγουμε τη γραμμή στην οποία βρίσκεται (έστω ότι εδώ θέλουμε να διαγράψουμε το πεδίο Παντρεμένος), και με δεξί κλικ επιλέγουμε Διαγραφή γραμμών. Με τη διαγραφή, όλα τα στοιχεία του συγκεκριμένου πεδίου θα χαθούν οριστικά. Σελίδα 12 από 29
Ιδιότητες καρτέλας Εμφάνιση Ας υποθέσουμε ότι οι υπάλληλοι της επιχείρησης του πίνακα Υπάλληλοι έχουν μόνο 3 ειδικότητες. Όταν ο χρήστης θα αρχίσει την εισαγωγή των δεδομένων στον πίνακα, πρέπει να καταχωρεί σε κάθε υπάλληλο την ειδικότητά του, άρα να πληκτρολογεί για κάθε εργαζόμενο μια ειδικότητα. Εκτός από χρονοβόρα, η πληκτρολόγηση εμπεριέχει και έναν αυξημένο κίνδυνο λάθους. Οπότε κάνουμε κάποιες ρυθμίσεις στην καρτέλα Εμφάνιση για να αποφύγουμε τα παραπάνω. 1. Ανοίγουμε τον πίνακα Υπάλληλοι σε προβολή σχεδίασης και επιλέγουμε το πεδίο Ειδικότητα. 2. Επιλέγουμε την καρτέλα Εμφάνιση από την περιοχή Ιδιότητες πεδίου. 3. Από την ιδιότητα Στοιχείο Ελέγχου Ως κάνουμε κλικ στο πτυσσόμενο πλαίσιο και αλλάζουμε την προκαθορισμένη τιμή από Πλαίσιο κειμένου σε Πλαίσιο λίστας. 4. Από την επόμενη γραμμή Τύπος προέλευσης γραμμής επιλέγουμε Λίστα τιμών επειδή θέλουμε να ορίσουμε εμείς τις τιμές. 5. Στην ιδιότητα Προέλευση γραμμής πληκτρολογούμε τη φράση: Πωλητής;Λογιστής;Γραμματέας. Για το διαχωρισμό των λέξεων χρησιμοποιούμε το ελληνικό ερωτηματικό (;). 6. Έτσι, όταν ο χρήστης θα χρειαστεί να εισάγει κάποια ειδικότητα στην εγγραφή ενός υπαλλήλου, αντί να την πληκτρολογήσει, θα μπορεί να επιλέξει κάποια από τις 3 ειδικότητες με το ποντίκι από το πτυσσόμενο πλαίσιο που θα υπάρχει στο πεδίο Ειδικότητα. 7. Αν θελήσουμε να εισάγουμε μια τιμή η οποία δε βρίσκεται στο πτυσσόμενο πλαίσιο (πχ Εξωτερικός συνεργάτης), τότε η τιμή θα εισαχθεί μέσω πληκτρολογίου. Σελίδα 13 από 29
Εισαγωγή δεδομένων σε πίνακα 1. Ανοίγουμε το παράθυρο του πίνακα Υπάλληλοι σε προβολή φύλλου δεδομένων. 2. Η κενή γραμμή η οποία υπάρχει πάντα στον πίνακα, είναι αυτή στην οποία θα εισάγουμε την πρώτη εγγραφή. Το πεδίο Κωδικός Υπαλλήλου έχει καθοριστεί ως Αυτόματη αρίθμηση κι επομένως σ αυτό το πεδίο δεν μπορούμε να γράψουμε τίποτα. 3. Αρχίζουμε την πληκτρολόγηση από το πεδίο Ονοματεπώνυμο. Μόλις πληκτρολογήσουμε το πρώτο γράμμα, η Access εισάγει στο πεδίο Κωδικός Υπαλλήλου τον αριθμό 1. Ταυτόχρονα δημιουργείται από κάτω μια νέα κενή γραμμή. Αυτή η γραμμή θα υπάρχει πάντα στον πίνακα και σ αυτή θα προσθέτουμε τις νέες εγγραφές. 4. Συνεχίζουμε την εισαγωγή των δεδομένων της πρώτης εγγραφής. Η μετακίνηση στο επόμενο πεδίο γίνεται με το πλήκτρο Tab. Όταν φτάσουμε στο πεδίο Ειδικότητα, κάνουμε κλικ στο πλήκτρο του πτυσσόμενου πλαισίου καταλόγου και επιλέγουμε την ειδικότητα που θέλουμε. Σελίδα 14 από 29
Και συνεχίζουμε αντίστοιχα. Αφού τελειώσουμε με την καταχώρηση της πρώτης εγγραφής, πατάμε το πλήκτρο Tab για να αρχίσουμε την εισαγωγή της δεύτερης εγγραφής. Αμέσως τα δεδομένα της πρώτης εγγραφής αποθηκεύονται στο δίσκο. Μετακίνηση στις εγγραφές με τη βοήθεια των πλήκτρων πλοήγησης Αν έχουμε καταχωρήσει 2 εγγραφές, στο κάτω μέρος του πίνακα εμφανίζονται τα παρακάτω πλήκτρα, τα οποία μας βοηθούν να μετακινούμαστε μέσα στο φύλλο δεδομένων. Αν θέλουμε να μετακινηθούμε σε μια συγκεκριμένη εγγραφή της οποίας γνωρίσουμε τον αριθμό, τότε πληκτρολογούμε τον αριθμό της εγγραφής στη θέση της τρέχουσας και μετά πατάμε Enter. Διαγραφή εγγραφών Για να διαγράψουμε μια εγγραφή (γραμμή), επιλέγουμε τη γραμμή κάνοντας κλικ στον επιλογέα της γραμμής που βρίσκεται αριστερά της και πατάμε το πλήκτρο Delete. Αν σύρουμε το δείκτη του ποντικιού πάνω σε πολλούς επιλογείς γραμμών, επιλέγουμε περισσότερες από μία γραμμές (εγγραφές). Σχέσεις - σύνδεση πινάκων Θα δημιουργήσουμε Δανειστική Βιβλιοθήκη σαν ολοκληρωμένο παράδειγμα δημιουργίας βάσης δεδομένων στην Access. Ορίζουμε τις εξής παραδοχές: α) ο κάθε φοιτητής μπορεί να δανείζεται κάποιο βιβλίο μέχρι 7 μέρες και β) το κάθε βιβλίο υπάρχει στη βιβλιοθήκη σε ένα μόνο αντίτυπο. Δημιουργούμε τους παρακάτω πίνακες: Όνομα πεδίου Τύπος Μέγεθος Πίνακας: Τμήματα Κωδικός Τμήματος (πρωτεύον κλειδί) Αυτόματη αρίθμηση Τμήμα Κείμενο 50 Πίνακας: Φοιτητές Σελίδα 15 από 29
Κωδικός Φοιτητή (πρωτεύον κλειδί) Αυτόματη αρίθμηση Ονοματεπώνυμο Κείμενο 50 ΑΜ Κείμενο 4 Διεύθυνση Κείμενο 30 Πόλη Κείμενο 25 Τηλέφωνο Κείμενο 10 ΤΚ Κείμενο 5 E-mail Κείμενο 30 Κωδικός Τμήματος Αριθμός (Ακέραιος μεγ. μήκους) Πίνακας: Κατηγορία Βιβλίου Κωδικός Κατηγορίας (πρωτεύον κλειδί) Αυτόματη αρίθμηση Κατηγορία Κείμενο 50 Θέση Αντικείμενο OLE Πίνακας: Βιβλία Κωδικός Βιβλίου (πρωτεύον κλειδί) Αυτόματη αρίθμηση Τίτλος Βιβλίου Κείμενο 70 Συγγραφέας Κείμενο 50 Εκδοτικός Οίκος Κείμενο 50 Έτος Έκδοσης Αριθμός (Ακέραιος) ISBN Κείμενο 13 Κωδικός Κατηγορίας Αριθμός (Ακέραιος μεγ. μήκους) Πίνακας: Δανεισμός Βιβλίων Αύξων Αριθμός Αυτόματη αρίθμηση Κωδικός Φοιτητή Αριθμός (Ακέραιος μεγ. μήκους) Κωδικός Βιβλίου Αριθμός (Ακέραιος μεγ. μήκους) Ημερομηνία Δανεισμού Ημερομηνία/Ώρα (Σύντομη ημ) Ημερομηνία Επιστροφής Ημερομηνία/Ώρα (Σύντομη ημ) Είδη σχέσεων Εδώ θα ορίσουμε τις σχέσεις που υπάρχουν μεταξύ των πινάκων και μετά θα τους συνδέσουμε. Τα είδη των σχέσεων που δημιουργούνται μεταξύ των πινάκων είναι: Σχέση ένα προς ένα Αυτό το είδος της σχέσης χρησιμοποιείται πολύ σπάνια, κυρίως όταν χρειάζεται για λόγους ευκολίας να διαιρέσουμε έναν πίνακα σε δύο ξεχωριστούς. Σ αυτό το είδος της σχέσης κάθε εγγραφή του πρώτου πίνακα σχετίζεται με μία μοναδική εγγραφή του δεύτερου πίνακα και αντίστροφα. Και οι δύο πίνακες έχουν το ίδιο πρωτεύον κλειδί. Σχέση ένα προς πολλά Όλες σχεδόν οι σχέσεις μεταξύ των πινάκων είναι ένα προς πολλά. Σε μια τέτοια σχέση, μια εγγραφή του πρώτου πίνακα μπορεί να σχετίζεται με πολλές αντίστοιχες εγγραφές του δεύτερου πίνακα. Αλλά μια εγγραφή του δεύτερου πίνακα πρέπει υποχρεωτικά να σχετίζεται με μία μόνο εγγραφή του πρώτου πίνακα. Για παράδειγμα, η σχέση των πινάκων Τμήματα και Φοιτητές είναι ένα προς πολλά. Ένα τμήμα μπορεί να έχει πολλούς φοιτητές όμως ένας φοιτητής θα πρέπει να ανήκει Σελίδα 16 από 29
υποχρεωτικά σε ένα μόνο τμήμα. Η ίδια σχέση ισχύει και μεταξύ των πινάκων Κατηγορία Βιβλίου και Βιβλία. Μια κατηγορία έχει πολλά βιβλία, όμως ένα βιβλίο θα πρέπει να ανήκει σε μία μόνο κατηγορία. Σχέση πολλά προς πολλά Σ αυτό το είδος της σχέσης, μια εγγραφή από τον πρώτο πίνακα μπορεί να σχετίζεται με πολλές αντίστοιχες εγγραφές από το δεύτερο πίνακα. Όμως και μια εγγραφή από το δεύτερο πίνακα μπορεί να σχετίζεται με πολλές αντίστοιχες εγγραφές του πρώτου πίνακα. Είναι ένα είδος σχέσης το οποίο δεν εμφανίζεται τόσο συχνά όσο η σχέση ένα προς πολλά. Όταν όμως το αντιμετωπίζουμε, το λύνουμε δημιουργώντας έναν τρίτο ενδιάμεσο πίνακα, ο οποίος θα συνδέει τους δύο πίνακες. Παράδειγμα τέτοιου πίνακα είναι ο πίνακας Δανεισμός Βιβλίων. Σύνδεση πινάκων A. Κλείνουμε όλα τα παράθυρα των πινάκων και από τα Εργαλε ια βάσης δεδομένων επιλέγουμε Σχέσεις. B. Εμφανίζεται το παράθυρο Σχέσεις το οποίο επειδή ανοίγει πρώτη φορά, είναι κενό. C. Επιλέγουμε διαδοχικά τους πίνακες που θέλουμε να συμμετέχουν και πατάμε το πλήκτρο Προσθήκη. D. Τοποθετούμε τους πίνακες στην κατάλληλη σειρά, όπως στην εικόνα που ακολουθεί. Παρατηρούμε ότι τα πρωτεύοντα κλειδιά συνοδεύονται από τα αντίστοιχα εικονίδια. Σελίδα 17 από 29
Σύνδεση των πινάκων Τμήματα Φοιτητές Ένα τμήμα μπορεί να έχει πολλούς φοιτητές. Αντίθετα, ένας φοιτητής μπορεί να ανήκει μόνο σε ένα τμήμα. Άρα, η σχέση μεταξύ των δύο πινάκων είναι ένα προς πολλά. Η σύνδεση των δύο πινάκων γίνεται με βάση τον Κωδικό Τμήματος. Αυτός είναι ο λόγος που υπάρχει το ξένο κλειδί Κωδικός Τμήματος στον πίνακα Φοιτητές. Παρατηρούμε ότι ενώ στον πίνακα Τμήματα, το πεδίο Κωδικός Τμήματος είναι αυτόματης αρίθμησης και πρωτεύον κλειδί, στον πίνακα Φοιτητές το ίδιο πεδίο είναι αριθμός ακέραιος μεγάλου μήκους. Με αυτόν τον τρόπο, μπορούμε να καταχωρούμε στον πίνακα Φοιτητές τον ίδιο κωδικό τμήματος πολλές φορές. 1. Ξεκινάμε πάντα από την πλευρά του ένα κάνοντας κλικ στο πεδίο Κωδικός Τμήματος του πίνακα Τμήματα. 2. Σύρουμε το πεδίο Κωδικός Τμήματος και το αφήνουμε ακριβώς πάνω στο πεδίο Κωδικός Τμήματος του πίνακα Φοιτητές (πλευρά των πολλών). 3. Θα εμφανιστεί το πλαίσιο διαλόγου Επεξεργασία Σχέσεων, στο οποίο βλέπουμε τα δύο πεδία τα οποία θα συνδέσουμε. Στο πλαίσιο Τύπος σχέσης, υπάρχει η ένδειξη ένα προς πολλά. Σελίδα 18 από 29
4. Πατάμε το πλαίσιο ελέγχου Ενεργοποίηση ακεραιότητας αναφορών για να διασφαλίσουμε ότι η Access δε θα μας επιτρέψει να εισάγουμε στο πεδίο Κωδικός Τμήματος του πίνακα Φοιτητές μια τιμή η οποία δε θα υπάρχει στο πεδίο του πίνακα Τμήματα. 5. Επιλέγουμε τα δύο πλαίσια Διαδοχική ενημέρωση των σχετικών εγγραφών και Διαδοχική διαγραφή των σχετικών εγγραφών. 6. Πατάμε το πλήκτρο Δημιουργία για να ολοκληρωθεί η σύνδεση των πινάκων. 7. Βλέπουμε ότι στο παράθυρο Σχέσεις, η Access δημιουργεί μια γραμμή η οποία ενώνει τους δύο πίνακες στα πεδία Κωδικός Κατηγορίας. Υπάρχει το σύμβολο 1 από την πλευρά του πρωτεύοντος κλειδιού, ενώ από την πλευρά των πολλών υπάρχει το σύμβολο του άπειρου ( ). 8. Συνεχίζουμε τη σύνδεση των πινάκων Κατηγορία Βιβλίου και Βιβλία. Επιλέγουμε το πεδίο Κωδικός Κατηγορίας του πίνακα Κατηγορία Βιβλίου. 9. Σύρουμε το πεδίο Κωδικός Κατηγορίας και το αφήνουμε πάνω στο πεδίο Κωδικός Κατηγορίας του πίνακα Βιβλία. 10. Επιλέγουμε επίσης τα τρία πλαίσια ελέγχου Ενεργοποίηση ακεραιότητας αναφορών, Διαδοχική ενημέρωση των σχετικών εγγραφών και Διαδοχική διαγραφή των σχετικών εγγραφών. 11. Με τον ίδιο τρόπο συνδέουμε το πεδίο Κωδικός Βιβλίου του πίνακα Βιβλία με το πεδίο Κωδικός Βιβλίου του πίνακα Δανεισμός Βιβλίων. 12. Τέλος συνδέουμε το πεδίο Κωδικός Φοιτητή του πίνακα Φοιτητές με το πεδίο Κωδικός Φοιτητή του πίνακα Δανεισμός Βιβλίων. Σελίδα 19 από 29
Η σύνδεση όλων των πινάκων φαίνεται στην εικόνα που ακολουθεί. Για να καταργήσουμε μια σχέση, την επιλέγουμε και πατάμε Delete. Επίσης, η προσθήκη ενός νέου πίνακα στο παράθυρο Σχέσεις γίνεται με το πλήκτρο Εμφάνιση πίνακα. Καταχώρηση εγγραφών στους πίνακες Καταχωρούμε στους 5 πίνακες τις παρακάτω εγγραφές. Σελίδα 20 από 29
Σελίδα 21 από 29
Ερωτήματα επιλογής Δημιουργία ερωτήματος Για να δημιουργήσουμε ένα νέο ερώτημα, επιλέγουμε την καρτέλα Ερωτήματα της βάσης δεδομένων και στη συνέχεια επιλέγουμε Σχεδίαση ερωτήματος. Θα εμφανιστεί το παράθυρο δημιουργίας ενός ερωτήματος σε προβολή σχεδίασης με το πλέγμα σχεδίασης και το πλαίσιο διαλόγου Εμφάνιση πίνακα. Από το παράθυρο διαλόγου επιλέγουμε διαδοχικά τους πίνακες που επιθυμούμε να συμμετάσχουν στο ερώτημα και πατάμε το πλήκτρο Προσθήκη. Το παράθυρο σχεδίασης ερωτημάτων αποτελείται από δύο μέρη. Στο επάνω μέρος τοποθετούνται οι πίνακες και στο κάτω μέρος όπου υπάρχει το πλέγμα, τοποθετούνται τα πεδία, τα κριτήρια κτλ. Σε κάθε στήλη του πλέγματος τοποθετούμε ένα μόνο πεδίο. Επιλέγουμε το πεδίο από τον πίνακα που βρίσκεται στο επάνω μέρος και κρατώντας κρατημένο το ποντίκι, το σέρνουμε και το προσθέτουμε στην αντίστοιχη στήλη στο κάτω μέρος. Από τη γραμμή Εμφάνιση καθορίζουμε αν ένα πεδίο θα εμφανίζεται ή όχι. Αν το πλαίσιο ελέγχου δεν είναι επιλεγμένο, τότε αυτό δεν εμφανίζεται. Συμμετέχει όμως στο ερώτημα. Σελίδα 22 από 29
Προσθέτουμε αρχικά τον πίνακα Μαθητές και κατόπιν επιλέγουμε ένα-ένα όλα τα πεδία του πίνακα, όπως στην παρακάτω εικόνα. Στη συνέχεια αποθηκεύουμε το ερώτημα με την ονομασία Ερώτημα Μαθητών. Επιλέγουμε Προβολή φύλλου Δεδομένων για να δούμε το αποτέλεσμα του ερωτήματος. Σελίδα 23 από 29
Κριτήρια επιλογής Τα κριτήρια επιλογής εισάγονται στη γραμμή Κριτήρια. Αν το πεδίο αναζήτησης είναι κειμένου, η τιμή θα πρέπει να είναι μέσα σε διπλά εισαγωγικά (π.χ Ρόδος ). OR Αν οι τιμές είναι περισσότερες, π.χ για τον Κωδικό Μαθητή θέλουμε το 1 ή το 2, θα πρέπει να πληκτρολογήσουμε 1 ή 2. Το ίδιο αποτέλεσμα θα έχουμε αν ορίσουμε τις τιμές στην ίδια στήλη αλλά σε διαφορετικές γραμμές. AND Όταν δύο κριτήρια επιλογής εισάγονται στη ίδια γραμμή κριτηρίων αλλά σε διαφορετικά πεδία (στήλες), τότε στην πραγματικότητα εισάγεται ο λογικός τελεστής AND. Π.χ Όλα τα ονόματα που αρχίζουν από Ν (Like N* ) και έχουν Κωδικό Μαθητή=2. Σελίδα 24 από 29
Οι τιμές ημερομηνιών τοποθετούνται πάντα μέσα σε ##. Παράδειγμα: >#27/2/2012# Date(): Επιστρέφει την τρέχουσα ημερομηνία. Παράδειγμα: Date()-7 επιστρέφει ημερομηνίες που απέχουν περισσότερο από μια βδομάδα. &: Συνενώνει δύο αλφαριθμητικές παραστάσεις. Παράδειγμα: [Επώνυμο]& &[Όνομα]. Η έκφραση αυτή επιστρέφει το ονοματεπώνυμο. NOT: Τελεστής ο οποίος χρησιμοποιείται για να εξαιρέσει κάποιες εγγραφές. Π.χ αν θέλουμε να εμφανίσουμε όλους τους μαθητές, εκτός από εκείνους που έχουν Κωδικό μαθητή 1, θα πρέπει να προσθέσουμε το κριτήριο: Not 1. Παράδειγμα απλού ερωτήματος: Έστω ότι θέλουμε να πληκτρολογούμε τον κωδικό ενός μαθητή και να εμφανίζονται το ονοματεπώνυμο και το τηλέφωνο του μαθητή με αυτόν τον κωδικό. Έχοντας επιλέξει τον πίνακα Μαθητές στην αριστερή στήλη, επιλέγουμε Δημιουργία κι έπειτα Οδηγός ερωτημάτων. Στο παράθυρο που εμφανίζεται επιλέγουμε Οδηγός απλών ερωτημάτων. Στο επόμενο παράθυρο επιλέγουμε τα πεδία που θέλουμε να συμμετέχουν στο ερώτημα. Οπότε από τα διαθέσιμα πεδία του πίνακα Μαθητές επιλέγουμε τα Κωδικός Μαθητή, Ονοματεπώνυμο και Τηλέφωνο. Σελίδα 25 από 29
Αφού βάλουμε όνομα π.χ Απλό Ερώτημα Μαθητών, αποθηκεύουμε το ερώτημα και εμφανίζονται όλα τα αντίστοιχα στοιχεία. Κάνοντας δεξί κλικ στο Απλό ερώτημα Μαθητών στην αριστερή στήλη, επιλέγουμε Προβολή σχεδίασης, και στα κριτήρια του Κωδικού Μαθητή πληκτρολογούμε [Δώσε Κωδικό]. Στη συνέχεια, από πάνω αριστερά επιλέγουμε Εκτέλεση και εμφανίζεται το πλαίσιο εισαγωγής όπου πληκτρολογούμε τον κωδικό με βάση τον οποίο θα γίνει η αναζήτηση. Σελίδα 26 από 29
Ερωτήματα επιλογής με δύο ή περισσότερους πίνακες Μπορούμε να αντλήσουμε πληροφορίες από δύο ή περισσότερους πίνακες, εφόσον αυτοί είναι μεταξύ τους συσχετισμένοι. Δημιουργούμε ένα νέο ερώτημα και προσθέτουμε τους πίνακες Μαθητές και Βαθμολογία και μετά πατάμε Κλείσιμο. Στο επάνω μέρος όπου υπάρχουν οι πίνακες, θα εμφανιστεί δίπλα στον πίνακα Τμήματα, Σελίδα 27 από 29
ο πίνακας Φοιτητές καθώς και η γραμμή σύνδεσης των δύο πινάκων μέσω του κοινού πεδίου. Τοποθετούμε τα πεδία στη γραμμή Πεδίο, όπως στη εικόνα που ακολουθεί: Στη γραμμή Ταξινόμηση των στηλών Τμήμα και Ονοματεπώνυμο επιλέγουμε Αύξουσα. Συμπληρώνουμε τα κριτήρια τη στήλης Κωδικός Τμήματος και αποεπιλέγουμε το πλαίσιο ελέγχου αυτής της στήλης στη γραμμή Εμφάνιση. Έτσι τα κριτήρια θα συμμετέχουν στην αναζήτηση αλλά δε θα εμφανίζονται στο τελικό αποτέλεσμα. Αποθηκεύουμε το ερώτημα ως Ερώτημα Τμήματος-Φοιτητών. Έπειτα, πατάμε Εκτέλεση και βλέπουμε το αποτέλεσμα: Σελίδα 28 από 29
Χρήση παραμέτρων σε ένα ερώτημα Αν δε θέλουμε η τιμή του κριτηρίου να είναι σταθερή (π.χ Πόλη=Αθήνα), αλλά παραμετρική και να καθορίζουμε εμείς την τιμή της κάθε φορά που εκτελείται το ερώτημα, μπορούμε να τοποθετήσουμε στη γραμμή των κριτηρίων μια φράση μέσα σε αγκύλες []. Κατά τη διάρκεια της εκτέλεσης του ερωτήματος, η Access θα εμφανίσει ένα πλαίσιο διαλόγου με ετικέτα τη φράση που γράψαμε μέσα στις αγκύλες και θα πρέπει να εισάγουμε μια τιμή, η οποία θα λειτουργήσει ως κριτήριο. Εκτελώντας το ερώτημα εμφανίζεται το πλαίσιο διαλόγου Τιμή παραμέτρου στο οποίο πληκτρολογούμε το κριτήριο π.χ Θεσσαλονίκη και πατάμε OK. Το αποτέλεσμα του ερωτήματος εμφανίζει όλους τους φοιτητές που έχουν ως πόλη διαμονής τη Θεσσαλονίκη. Αποθηκεύουμε το ερώτημα ως Παραμετρικό Ερώτημα. * Μέρος των σημειώσεων προήλθε από αντίστοιχες σημειώσεις του Πανεπιστημίου Αιγαίου. Σελίδα 29 από 29