Περιεχόμενα Λίγα λόγια από το συγγραφέα...7 Κεφάλαιο 1: Σχεδιασμός βάσης δεδομένων και δημιουργία πίνακα...9 Κεφάλαιο 2: Περαιτέρω τροποποίηση δομής πίνακα...41 Κεφάλαιο 3: Σχέσεις...84 Κεφάλαιο 4: Ερωτήματα...105 Κεφάλαιο 5: Πρόσθετες δυνατότητες ερωτημάτων...136 Κεφάλαιο 6: Δημιουργία φόρμας και προσθήκη χειριστηρίων...176 Κεφάλαιο 7: Πρόσθετα στοιχεία για τις φόρμες...211 Κεφάλαιο 8: Εκθέσεις...241 Κεφάλαιο 9: Μακροεντολές...271 Κεφάλαιο 10: Εισαγωγή και εξαγωγή δεδομένων...285 Ευρετήριο...311 5
Σχέσεις Στόχος κεφαλαίου Σκοπός αυτού του κεφαλαίου είναι να γνωρίσουμε τα διάφορα είδη σχέσεων που μπορούμε να δημιουργούμε μεταξύ των πινάκων της Microsoft Access, και τις δυνατότητες που μας παρέχουν αυτές. Επίσης, θα μάθουμε να χρησιμοποιούμε τη λειτουργία ακεραιότητας αναφορών. Τέλος, θα μάθουμε να επεξεργαζόμαστε και να διαγράφουμε υπάρχουσες σχέσεις σε μια βάση δεδομένων. Εισαγωγή Μετά τη δημιουργία των πινάκων της βάσης δεδομένων μας, θα πρέπει να τους συνδέσουμε μεταξύ τους ώστε να μπορούμε να δημιουργούμε ερωτήματα, φόρμες, και εκθέσεις, που θα παίρνουν δεδομένα από περισσότερους από έναν πίνακες. Αυτού του είδους η σύνδεση μεταξύ πινάκων ονομάζεται σχέση. Ένα άλλο μεγάλο πλεονέκτημα που προκύπτει από τη δημιουργία μιας σχεσιακής βάσης δεδομένων, η οποία περιέχει περισσότερους από έναν πίνακες που συνδέονται μεταξύ τους με σχέσεις, είναι ότι έτσι μπορούμε να αποφύγουμε την καταχώριση των ίδιων δεδομένων πολλές φορές. 84
Κεφάλαιο 3: Σχέσεις Τύποι σχέσεων Η δημιουργία σχέσης μεταξύ δύο πινάκων προϋποθέτει τη σύνδεση δύο πεδίων, ενός από τον κάθε πίνακα. Για να δημιουργήσουμε μια σχέση, συνδέουμε ένα πεδίο του πρώτου πίνακα, το οποίο περιέχει μοναδικές τιμές και αποκαλείται πρωτεύον κλειδί, με ένα πεδίο του δεύτερου πίνακα το οποίο έχει συνήθως το ίδιο όνομα με το πρωτεύον κλειδί και αποκαλείται εξωτερικό ή ξένο κλειδί. Η Microsoft Access μάς επιτρέπει να δημιουργούμε τους τρεις παρακάτω διαφορετικούς τύπους σχέσεων: Σχέση ένα προς ένα (ή αμφιμονοσήμαντη one to one). Σχέση ένα προς πολλά (ή μονοσήμαντη one to many). Σχέση πολλά προς πολλά (ή πολυσήμαντη many to many). Σχέση "ένα προς ένα" Στον τύπο σχέσης ένα προς ένα (one to one), κάθε εγγραφή του πρώτου πίνακα θα πρέπει να αντιστοιχεί σε μία μόνο εγγραφή του δεύτερου πίνακα, και το αντίστροφο. Προκειμένου να είναι δυνατή η δημιουργία μιας τέτοιας σχέσης, πρέπει τα σχετιζόμενα πεδία να είναι πρωτεύοντα κλειδιά και στους δύο πίνακες ή να έχουν μοναδικές τιμές, δηλαδή η ιδιότητα Ευρετήριο των πεδίων να είναι αληθής χωρίς να επιτρέπονται διπλότυπα. Ο τύπος σχέσης "ένα προς ένα" δε χρησιμοποιείται συχνά, επειδή τα δεδομένα που συσχετίζονται με τον τρόπο αυτόν συνήθως περιέχονται σε ένα μόνο πίνακα. Θα μπορούσαμε όμως να χρησιμοποιήσουμε αυτόν τον τύπο σχέσης στις εξής περιπτώσεις: Αν έχουμε ένα μεγάλο, πολύστηλο πίνακα και θέλουμε να τον χωρίσουμε σε δύο μικρότερους, τοποθετώντας μερικές στήλες στον ένα και μερικές στον άλλο πίνακα. Αν έχουμε έναν πίνακα του οποίου κάποιες στήλες δε θέλουμε να είναι ορατές σε όλους τους χρήστες μιας βάσης δεδομένων, οπότε τις τοποθετούμε σε διαφορετικό πίνακα. Σχέση "ένα προς πολλά" Στον τύπο σχέσης ένα προς πολλά (one to many), κάθε εγγραφή του πρώτου πίνακα μπορεί να αντιστοιχεί σε πολλές εγγραφές του δεύτερου. Αντίθετα, μια εγγραφή 85
Βάσεις δεδομένων: Access 2003 του δεύτερου πίνακα μπορεί να αντιστοιχεί σε μία μόνον εγγραφή του πρώτου. Για να είναι δυνατή η δημιουργία μιας τέτοιας σχέσης, πρέπει μόνο το ένα από τα σχετιζόμενα πεδία να είναι πρωτεύον κλειδί πίνακα ή να έχει μοναδικές τιμές. Για παράδειγμα, μια αντιπροσωπεία αυτοκινήτων που χρησιμοποιεί μια σχεσιακή βάση δεδομένων μπορεί να έχει έναν πίνακα με τους πελάτες της και έναν άλλο πίνακα με τα αυτοκίνητα που έχει πουλήσει. Η σχέση μεταξύ αυτών των δύο πινάκων θα είναι "ένα προς πολλά". Δηλαδή, μία εγγραφή του πίνακα Πελάτες μπορεί να αντιστοιχεί σε πολλές εγγραφές του πίνακα Αυτοκίνητα. Αυτό συμβαίνει επειδή ένας πελάτης μπορεί να έχει αγοράσει περισσότερα από ένα αυτοκίνητα, αλλά ένα αυτοκίνητο μπορεί να έχει μόνον έναν ιδιοκτήτη. Ο τύπος σχέσης "ένα προς πολλά" είναι ο πιο συνηθισμένος. Σχέση "πολλά προς πολλά" Στον τύπο σχέσης πολλά προς πολλά (many to many), κάθε εγγραφή του πρώτου πίνακα μπορεί να αντιστοιχεί σε πολλές εγγραφές του δεύτερου. Με τον ίδιο τρόπο, μία εγγραφή του δεύτερου πίνακα μπορεί να αντιστοιχεί σε πολλές εγγραφές του πρώτου. Για να είναι δυνατή η δημιουργία μιας τέτοιας σχέσης, πρέπει να δημιουργηθεί έ- νας τρίτος πίνακας ο οποίος ονομάζεται πίνακας σύνδεσης. Το πρωτεύον κλειδί του πίνακα σύνδεσης πρέπει να αποτελείται από το συνδυασμό δύο πεδίων, τα οποία είναι τα πρωτεύοντα κλειδιά των δύο πρώτων πινάκων. Στην ουσία, μια σχέση "πολλά προς πολλά" αποτελείται από δύο σχέσεις "ένα προς πολλά": μία μεταξύ του πρώτου πίνακα και του πίνακα σύνδεσης και μία μεταξύ του δεύτερου πίνακα και του πίνακα σύνδεσης. Βασική ορολογία Πριν προχωρήσουμε στη δημιουργία σχέσεων στην πράξη, καλό είναι να συνοψίσουμε εδώ τους βασικούς όρους που έχουμε ήδη αναφέρει, τους οποίους θα συναντούμε συχνά και στη συνέχεια του κεφαλαίου: Ο κύριος πίνακας μιας σχέσης ονομάζεται πρωτεύων πίνακας. Το πεδίο του πρωτεύοντος πίνακα, το οποίο μετέχει στη σχέση και δέχεται μοναδικές τιμές, ονομάζεται πρωτεύον κλειδί. 86
Κεφάλαιο 3: Σχέσεις Πρωτεύων πίνακας Σχέση "ένα προς πολλά" Δευτερεύων πίνακας Πρωτεύον κλειδί Ξένο κλειδί Εικόνα 3.1 Παράδειγμα σχέσης ένα προς πολλά Ο συσχετισμένος πίνακας ονομάζεται δευτερεύων πίνακας. Το πεδίο του δευτερεύοντος πίνακα το οποίο μετέχει στη σχέση ονομάζεται ξένο κλειδί ή εξωτερικό κλειδί. Δημιουργία σχέσης Για να εξοικειωθούμε με τη διαδικασία δημιουργίας σχέσεων μεταξύ πινάκων, θα δημιουργήσουμε μια σχέση ανάμεσα στους πίνακες Τμήματα και Μαθητές, ώστε να μπορούμε να αναζητούμε πληροφορίες για τα χαρακτηριστικά του τμήματος (κόστος, διάρκεια, κ.λπ.) που παρακολουθεί κάθε μαθητής. Ορισμός κλειδιών σχέσης Όπως είπαμε προηγουμένως, για να δημιουργήσουμε μια σχέση "ένα προς πολλά", το ένα από τα συσχετιζόμενα πεδία πρέπει να δέχεται μοναδικές τιμές. Πιο συγκεκριμένα: Το ένα από τα συσχετιζόμενα πεδία πρέπει να έχει οριστεί ως πρωτεύον κλειδί του πίνακα, ή Η ιδιότητα Με ευρετήριο του ενός πεδίου πρέπει να έχει την τιμή Ναι χωρίς να επιτρέπονται οι διπλότυπες εγγραφές. 87
Βάσεις δεδομένων: Access 2003 Ορισμός πρωτεύοντος κλειδιού Πριν προχωρήσουμε στη δημιουργία της σχέσης πρέπει να ορίσουμε το πεδίο Κωδικός_Τμήματος του πίνακα Τμήματα ως πρωτεύον κλειδί. Για το σκοπό αυτόν, κάνουμε τα εξής: Ανοίγουμε τη βάση δεδομένων Εκπαιδευτήριο Knowledge_03.mdb. Ανοίγουμε τον πίνακα Τμήματα σε προβολή Σχεδίασης. Κάνουμε ενεργό το πεδίο Κωδικός_Τμήματος. Πατάμε στο κουμπί Πρωτεύον κλειδί της γραμμής εργαλείων Σχεδίαση Πίνακα ή επιλέγουμε την εντολή Πρωτεύον κλειδί από το μενού Επεξεργασία. Επίσης, μπορούμε να επιλέξουμε την ίδια εντολή από το μενού συντόμευσης του πεδίου. Αν θέλουμε, μπορούμε να ορίσουμε ως πρωτεύον κλειδί ένα συνδυασμό πεδίων του πίνακα, δηλαδή να ορίσουμε ένα σύνθετο κλειδί. Επιλέγουμε τα πεδία κρατώντας πατημένο το πλήκτρο Ctrl και στη συνέχεια πατάμε στο κουμπί Πρωτεύον κλειδί της γραμμής εργαλείων Σχεδίαση Πίνακα. Με τον τρόπο αυτόν θα επιτρέπονται οι διπλότυπες τιμές σε ένα πεδίο, αλλά κάθε συνδυασμός τιμών από το σύνολο των πεδίων που έχουν οριστεί ως πρωτεύον κλειδί θα πρέπει να είναι μοναδικός. Στα αριστερά του πεδίου Κωδικός_Τμήματος εμφανίζεται ένα εικονίδιο κλειδιού το οποίο μας ενημερώνει ότι το πεδίο έχει οριστεί ως πρωτεύον κλειδί. Αποθηκεύουμε και κλείνουμε τον πίνακα. Ιδιότητα Με ευρετήριο Όταν θέλουμε να δημιουργήσουμε σχέσεις ανάμεσα σε διαφορετικά πεδία του ί- διου πίνακα και άλλους πίνακες, εφόσον δεν μπορούμε να έχουμε περισσότερα πρωτεύοντα κλειδιά, πρέπει να χρησιμοποιήσουμε την ιδιότητα Με ευρετήριο. Για να τροποποιήσουμε την ιδιότητα Με ευρετήριο ενός πεδίου, ώστε να μπορούμε να το χρησιμοποιήσουμε στη δημιουργία μιας σχέσης, κάνουμε τα εξής: Ανοίγουμε τον πίνακα σε προβολή Σχεδίασης. Κάνουμε ενεργό το πεδίο. 88
Κεφάλαιο 3: Σχέσεις Κάνουμε ενεργό το πλαίσιο της ιδιότητας Με ευρετήριο, πατάμε στο κάτω βέλος στα δεξιά του πλαισίου, και από τη λίστα που εμφανίζεται επιλέγουμε την καταχώριση Ναι (Δεν επιτρέπονται διπλότυπα). Αποθηκεύουμε και κλείνουμε τον πίνακα. Εικόνα 3.2 Ορισμός ευρετηρίου Εμφάνιση σχέσεων Μετά τον ορισμό του πεδίου Κωδικός_Τμήματος ως πρωτεύοντος κλειδιού, μπορούμε να προχωρήσουμε στη δημιουργία της σχέσης "ένα προς πολλά" μεταξύ των πινάκων Τμήματα και Μαθητές. Επιλέγουμε αυτόν τον τύπο σχέσης, επειδή κάθε Κωδικός_Τμήματος μπορεί να αντιστοιχεί σε πολλούς μαθητές, ενώ κάθε μαθητής μπορεί να παρακολουθεί ένα μοναδικό Τμήμα. Βεβαιωνόμαστε ότι όλοι οι πίνακες της βάσης δεδομένων μας είναι κλειστοί. Το πρόγραμμα δε μας επιτρέπει να δημιουργούμε σχέσεις ανάμεσα σε πίνακες που είναι ανοιχτοί. Πατάμε στο κουμπί Σχέσεις της γραμμής εργαλείων Βάση δεδομένων, ή επιλέγουμε τη διαταγή Σχέσεις από το μενού Εργαλεία. Στην οθόνη μας εμφανίζεται το παράθυρο Σχέσεις. Στο παράθυρο αυτό εμφανίζονται οι λίστες πεδίων των πινάκων για τους οποίους έχει δημιουργηθεί σχέση. Στην Εικόνα 3.3, βλέπουμε τη σχέση που δημιουργήθηκε μεταξύ των πινάκων Υπάλληλοι και Ενημερώσεις, όταν στο προηγούμενο κεφάλαιο, με τον Οδηγό Αναζήτησης, ορίσαμε ότι το πεδίο Ενη- 89
Βάσεις δεδομένων: Access 2003 μερώθηκε_από: του πίνακα Ενημερώσεις θα εμφανίζει σε ένα σύνθετο πλαίσιο δεδομένα από το πεδίο Επώνυμο του πίνακα Υπάλληλοι. Εικόνα 3.3 Το παράθυρο Σχέσεις Μπορούμε να μετακινούμε τις λίστες πεδίων των πινάκων και να αλλάζουμε τα μεγέθη τους ώστε να είναι ορατά όλα τα πεδία που περιέχουν. Για να μετακινήσουμε μια λίστα πεδίων, πατάμε στη γραμμή τίτλου της και τη σύρουμε σε κάποια άλλη θέση. Για να αλλάξουμε το μέγεθος μια λίστας πεδίων, τοποθετούμε το δείκτη του ποντικιού σε μια πλευρά της και σύρουμε προς την κατάλληλη κατεύθυνση. Προσθήκη πίνακα στο παράθυρο Σχέσεις Για να εμφανίσουμε τους υπόλοιπους πίνακες της βάσης δεδομένων ώστε να προσθέσουμε αυτούς που θέλουμε στο παράθυρο Σχέσεις, επιλέγουμε Εμφάνιση πίνακα από το μενού Σχέσεις ή από το μενού συντόμευσης που ανοίγει όταν πατάμε με το δεξιό πλήκτρο του ποντικιού σε μια κενή θέση του παραθύρου Σχέσεις. 90
Κεφάλαιο 3: Σχέσεις Μπορούμε επίσης να πατήσουμε στο κουμπί Εμφάνιση πίνακα της γραμμής εργαλείων Σχέση. Στην οθόνη μας ανοίγει το πλαίσιο διαλόγου Εμφάνιση πίνακα. Εικόνα 3.4 Το πλαίσιο διαλόγου Εμφάνιση πίνακα Με τις τρεις καρτέλες αυτού του πλαισίου διαλόγου (Πίνακες, Ερωτήματα, Και τα δύο), μπορούμε να προσπελάσουμε τα αντίστοιχα αντικείμενα της βάσης δεδομένων για να προσθέσουμε κάποιο από αυτά στο παράθυρο Σχέσεις. Για το δικό μας παράδειγμα, θα χρησιμοποιήσουμε τα περιεχόμενα της καρτέλας Πίνακες. Από τη λίστα με τους υπάρχοντες πίνακες, επιλέγουμε τον πίνακα Τμήματα και πατάμε στο κουμπί Προσθήκη για να τον προσθέσουμε στο παράθυρο Σχέσεις. Μπορούμε επίσης να διπλοπατήσουμε στο όνομα του πίνακα. Αν δεν έχουν ακόμη οριστεί σχέσεις ανάμεσα στους πίνακες της βάσης δεδομένων, η Access ανοίγει αυτόματα το πλαίσιο διαλόγου Εμφάνιση πίνακα όταν ο χρήστης ανοίγει το παράθυρο Σχέσεις. 91
Βάσεις δεδομένων: Access 2003 Στη συνέχεια, επιλέγουμε τον πίνακα Μαθητές και πατάμε στο κουμπί Προσθήκη για να τον προσθέσουμε και αυτόν στο παράθυρο Σχέσεις. Πατάμε στο κουμπί Κλείσιμο του πλαισίου διαλόγου Εμφάνιση πίνακα. Δημιουργία σχέσης "ένα προς πολλά" Μετά την προσθήκη των πινάκων Τμήματα και Μαθητές στο παράθυρο Σχέσεις, μπορούμε να προχωρήσουμε στη δημιουργία της μεταξύ τους σχέσης. Για να δημιουργήσουμε τη σχέση, κάνουμε τα εξής: Επιλέγουμε το πεδίο που έχει οριστεί ως πρωτεύον κλειδί στον κύριο πίνακα Τμήματα. Το πρωτεύον κλειδί ξεχωρίζει από την έντονη γραφή του. Για το δικό μας παράδειγμα, επιλέγουμε το πεδίο Κωδικός_Τμήματος του πίνακα Τμήματα. Σύρουμε το πεδίο του πρωτεύοντος κλειδιού επάνω στο ξένο κλειδί του δεύτερου πίνακα με το οποίο θέλουμε να δημιουργήσουμε τη σχέση. Για το δικό μας παράδειγμα, σύρουμε το πεδίο Κωδικός_Τμήματος του πίνακα Τμήματα ε- πάνω στο πεδίο Τμήμα του πίνακα Μαθητές. Στην οθόνη μας εμφανίζεται το πλαίσιο διαλόγου Επεξεργασία σχέσεων. Πρωτεύων πίνακας Δευτερεύων πίνακας Πρωτεύον κλειδί Ξένο κλειδί Τύπος σχέσης Εικόνα 3.5 Το πλαίσιο διαλόγου Επεξεργασία σχέσεων Στο πτυσσόμενο πλαίσιο Πίνακας/Ερώτημα, βλέπουμε τον πρωτεύοντα πίνακα ή το ερώτημα που χρησιμοποιούμε. 92
Κεφάλαιο 3: Σχέσεις Κάτω από το όνομα του πρωτεύοντος πίνακα εμφανίζεται το πεδίο του πίνακα που θα χρησιμοποιηθεί στη σχέση. Στο πτυσσόμενο πλαίσιο καταλόγου Σχετιζόμενος πίνακας/ερώτημα βλέπουμε το δεύτερο πίνακα ή ερώτημα που χρησιμοποιούμε. Κάτω από το όνομα του δευτερεύοντος πίνακα εμφανίζεται το συσχετιζόμενο πεδίο του δεύτερου πίνακα που θα χρησιμοποιήσουμε στη σχέση. Στο πλαίσιο Τύπος σχέσης, βλέπουμε το είδος της σχέσης που πρόκειται να δημιουργήσουμε. Ο προτεινόμενος τύπος σχέσης είναι Ένα-προς-πολλά, καθώς το ένα μόνον από τα δύο συσχετιζόμενα πεδία (Κωδικός_Τμήματος του πίνακα Τμήματα) έχει μοναδικές τιμές. Πατάμε στο κουμπί Δημιουργία. Οι δύο πίνακες εμφανίζονται στο παράθυρο Σχέσεις, και η μεταξύ τους σχέση δηλώνεται με μια γραμμή που συνδέει τα συσχετισμένα πεδία. Εικόνα 3.6 Η σχέση μεταξύ των πινάκων Τμήματα και Μαθητές Τα σύμβολα της σχέσης "ένα προς πολλά" (1 και ) θα εμφανιστούν στο παράθυρο Σχέσεων αφού ενεργοποιήσουμε την ακεραιότητα αναφορών (δείτε παρακάτω). Πατάμε στο κουμπί Κλεισίματος του παραθύρου Σχέσεις. Εμφανίζεται ένα πλαίσιο μηνύματος, το οποίο μας ρωτάει αν θέλουμε να αλλάξουμε τη διάταξη του παραθύρου Σχέσεις. Η διάταξη αφορά τη θέση στην ο- ποία εμφανίζονται οι πίνακες στο παράθυρο Σχέσεις. Δηλαδή, ανεξάρτητα από 93
Βάσεις δεδομένων: Access 2003 την επιλογή που θα κάνουμε, η σχέση που δημιουργήσαμε ανάμεσα στους δύο πίνακες θα αποθηκευτεί. Δημιουργία σχέσης "ένα προς ένα" Όπως είπαμε, όταν δημιουργούμε σχέσεις η Access καθορίζει το τύπο τους ανάλογα με το αν τα συσχετισμένα πεδία έχουν μοναδικές τιμές ή όχι. Για να δημιουργηθεί μια σχέση "ένα προς ένα" πρέπει να ισχύουν τα εξής: Το συσχετισμένο πεδίο του πρωτεύοντος πίνακα να έχει μοναδικές τιμές, δηλαδή να είναι πρωτεύον κλειδί ή να έχει οριστεί γι' αυτό ευρετήριο χωρίς διπλότυπα. Το ξένο κλειδί του δευτερεύοντος πίνακα πρέπει να είναι πρωτεύον κλειδί ή να έχει οριστεί γι αυτό ευρετήριο χωρίς διπλότυπα. Δηλαδή, για να δημιουργήσουμε μια σχέση ένα προς ένα, πρέπει να ακολουθήσουμε την ίδια διαδικασία όπως κατά τη δημιουργία μιας σχέσης ένα προς πολλά, με τη διαφορά ότι και τα δύο συσχετισμένα πεδία πρέπει να έχουν μοναδικές τιμές. Δημιουργία σχέσης "πολλά προς πολλά" Όπως είπαμε και προηγουμένως, για να είναι δυνατή η δημιουργία μιας σχέσης "πολλά προς πολλά", πρέπει να υπάρχει ένας τρίτος πίνακας ο οποίος ονομάζεται πίνακας σύνδεσης. Για να δημιουργήσουμε μια σχέση "πολλά προς πολλά" ανάμεσα στους πίνακες Παραγγελίες και Αναλώσιμα, χρησιμοποιώντας ως πίνακα σύνδεσης τον πίνακα Λεπτομέρειες Παραγγελιών, κάνουμε τα εξής: Βεβαιωνόμαστε ότι στον πίνακα Παραγγελίες έχει οριστεί ως πρωτεύον κλειδί το πεδίο Κωδικός_Παραγγελίας, και στον πίνακα Αναλώσιμα το πεδίο Κωδικός_Προϊόντος. Ανοίγουμε τον πίνακα σύνδεσης Λεπτομέρειες Παραγγελιών σε προβολή Σχεδίασης, κρατώντας πατημένο το πλήκτρο Ctrl επιλέγουμε τα πεδία Κωδικός_Παραγγελίας και Κωδικός_Προϊόντος, δηλαδή το συνδυασμό πεδίων τα οποία είναι τα πρωτεύοντα κλειδιά των πρώτων πινάκων, και στη συνέχεια πατάμε στο κουμπί Πρωτεύον κλειδί της γραμμής εργαλείων Σχεδίαση Πίνακα. Αποθηκεύουμε και κλείνουμε τον πίνακα Λεπτομέρειες Παραγγελιών. 94