Μάθηµα 5 ηµιουργία Β.. ανειστική Βιβλιοθήκη - Ορισµός σχέσεων - Σύνδεση πινάκων ηµιουργία Β.. ανειστική Βιβλιοθήκη Η ανειστική Βιβλιοθήκη θα αποτελέσει ένα απλό, αλλά ολοκληρωµένο παράδειγµα δηµιουργίας βάσης δεδοµένων στην Access. Πριν ξεκινήσουµε τη δηµιουργία της Β.. θα πρέπει να ορίσουµε τις εξής παραδοχές: α) ο κάθε φοιτητής µπορεί να δανείζεται κάποιο βιβλίο µέχρι 7 µέρες και β) το κάθε βιβλίο υπάρχει στη βιβλιοθήκη σε ένα µόνο αντίτυπο, για λόγους απλοποίησης. Για να δηµιουργηθεί η Β.. ανειστική Βιβλιοθήκη, θα πρέπει να δηµιουργήσουµε τους παρακάτω πίνακες. ραστηριότητα: Πριν ξεκινήσετε τη µελέτη των πινάκων καταγράψτε σε ένα χαρτί ποιους πίνακες θεωρείτε απαραίτητους για τη λειτουργία της ανειστικής Βιβλιοθήκης. Σκεφθείτε τη διαδικασία δανεισµού και επιστροφής ενός βιβλίου. Σε κάθε πίνακα ορίστε τα πεδία τα οποία θεωρείτε απαραίτητα καθώς και τον τύπο τους. Στη συνέχεια συγκρίνατε τους πίνακες σας µε αυτούς που ακολουθούν. Πιθανώς ορισµένα πεδία να είναι διαφορετικά. Αυτό δε σηµαίνει κατ' ανάγκην ότι είναι λάθος. Οπωσδήποτε όµως οι πίνακες σας θα πρέπει να περιέχουν ορισµένα απαραίτητα πεδία για την εύρυθ- µη λειτουργία της εφαρµογής. Η σηµασία ορισµένων πεδίων, όπως ο Κωδικός Τµήµατος του πίνακα Φοιτητές, ο Κωδικός Κατηγορίας του πίνακα Βιβλία, ο Κωδικός Φοιτητή και ο Κωδικός Βιβλίου του πίνακα ανεισµός Βιβλίων, θα εξηγηθούν στη συνέχεια. Όνοµα πεδίου Τύπος Μέγεθος Πίνακας: Τµήµατα Κωδικός Τµήµατος (Πρωτεύον κλειδί) Αυτόµατη αρίθµηση Τµήµα Κείµενο 50 Πίνακας: Φοιτητές Κωδικός Φοιτητή (Πρωτεύον κλειδί) Αυτόµατη Αρίθµηση Ονοµατεπώνυµο Κείµενο 50 ΑΜ Κείµενο (Μάσκα εισαγωγής: 000/0000000) 11 ιεύθυνση Κείµενο 30 Πόλη Κείµενο 25 Τηλέφωνο Κείµενο 10 ΤΚ Κείµενο (Μάσκα εισαγωγής: 999\ 99) 5 E-mail Κείµενο 30 Κωδικός Τµήµατος 35
Πίνακας: Κατηγορία Βιβλίου Κωδικός Κατηγορίας (Πρωτεύον κλειδί) Αυτόµατη αρίθµηση Κατηγορία Κείµενο 50 Θέση Αντικείµενο OLE Πίνακας: Βιβλία Κωδικός Βιβλίου (Πρωτεύον κλειδί) Αυτόµατη αρίθµηση Τίτλος Βιβλίου Κείµενο 70 Συγγραφέας Κείµενο 50 Εκδοτικός Οίκος Κείµενο 50 Έτος Έκδοσης Αριθµός (Ακέραιος) ISBN Κείµενο 13 Κωδικός Κατηγορίας Πίνακας: ανεισµός Βιβλίων Αύξων Αριθµός Κωδικός Φοιτητή Κωδικός Βιβλίου Ηµεροµηνία ανεισµού Ηµεροµηνία Επιστροφής Αυτόµατη Αρίθµηση Ηµεροµηνία/Ώρα (Σύντοµη ηµεροµηνία) Ηµεροµηνία/Ώρα (Σύντοµη ηµεροµηνία) Είδη σχέσεων Στο δεύτερο στάδιο θα πρέπει να ορίσουµε τις σχέσεις που υπάρχουν µεταξύ των πινάκων και κατόπιν να τους συνδέσουµε. Ας δούµε όµως πρώτα τα είδη των σχέσεων τα οποία δηµιουργούνται µεταξύ των πινάκων. Σχέση "ένα προς ένα" (1 προς 1) Θα πρέπει να διευκρινίσουµε ότι αυτό το είδος της σχέσης χρησιµοποιείται πολύ σπάνια. Χρησι- µοποιείται κυρίως όταν χρειάζεται, για λόγους ευκολίας, να διαιρέσουµε ένα πίνακα σε δύο ξεχωριστούς. Για παράδειγµα όταν έχουµε πολύ µεγάλο αριθµό πεδίων ή όταν δεν πρέπει ορισµένες πληροφορίες να είναι προσβάσιµες από άλλους χρήστες. Σε αυτό το είδος της σχέσης κάθε εγγραφή του πρώτου πίνακα σχετίζεται µε µία µοναδική εγγραφή του δεύτερου πίνακα και αντιστρόφως. Και οι δύο πίνακες έχουν το ίδιο πρωτεύον κλειδί (π.χ. τύπος αυτόµατης αρίθµησης). Σχέση "ένα προς πολλά" (1 προς ) Όλες σχεδόν οι σχέσεις µεταξύ των πινάκων είναι "ένα προς πολλά". Σε µία σχέση "ένα προς πολλά" µία εγγραφή του πρώτου πίνακα µπορεί να σχετίζεται µε πολλές αντίστοιχες εγγραφές του δεύτερου πίνακα. Όµως µία εγγραφή από το δεύτερο πίνακα θα πρέπει να σχετίζεται υποχρεωτικά µε µία µόνον εγγραφή του πρώτου πίνακα. Για παράδειγµα, η σχέση των πινάκων Τµήµατα και Φοιτητές είναι "ένα προς πολλά". Ένα τµήµα µπορεί να έχει πολλούς φοιτητές, όµως ένας φοιτητής θα πρέπει υποχρεωτικά να ανήκει µόνο σε ένα τµήµα. Η ίδια σχέση ισχύει και µεταξύ των πινάκων Κατηγορία 36
Βιβλίου και Βιβλία. Μία κατηγορία έχει πολλά βιβλία, όµως ένα βιβλίο θα πρέπει να ανήκει σε µία κατηγορία. Σχέση "πολλά προς πολλά" ( προς ) Σε αυτό το είδος της σχέση µια εγγραφή από τον πρώτο πίνακα µπορεί να σχετίζεται µε πολλές αντίστοιχες εγγραφές στο δεύτερο πίνακα. Όµως και µια εγγραφή του δεύτερου πίνακα µπορεί να σχετίζεται µε πολλές αντίστοιχες εγγραφές του πρώτου πίνακα. Είναι ένα είδος σχέσης το οποίο δεν εµφανίζεται τόσο συχνά, όσο η σχέση "ένα προς πολλά". Όταν όµως το αντιµετωπίζουµε θα πρέπει να ξέρουµε πώς θα το λύσουµε. Στη σχέση "πολλά προς πολλά" θα πρέπει να δηµιουργήσουµε έναν τρίτο ενδιάµεσο πίνακα (πίνακας σύνδεσης), ο οποίος θα συνδέει τους δύο πίνακες. Παράδειγµα αποτελεί ο πίνακας ανεισµός Βιβλίων. Σύνδεση πινάκων 1. Κλείνουµε όλα τα παράθυρα των πινάκων και επιλέγουµε την εντολή Εργαλεία Σχέσεις ή να πατάµε το πλήκτρο Σχέσεις της γραµµής εργαλείων. 2. Εµφανίζεται το παράθυρο Σχέσεις. Όταν ανοίγουµε για πρώτη φορά το παράθυρο Σχέσεις, αυτό εµφανίζεται κενό. 3. Επιλέγουµε διαδοχικά τους πίνακες και πατάµε το πλήκτρο Προσθήκη. 4. Τοποθετούµε τους πίνακες στην κατάλληλη σειρά, όπως στην εικόνα που ακολουθεί. Μπορούµε να παρατηρήσουµε ότι τα πρωτεύοντα κλειδιά είναι µε έντονα γράµµατα. 37
Σύνδεση των πινάκων Τµήµατα - Φοιτητές Ξεκινάµε να συνδέσουµε αρχικά τους πίνακες Τµήµατα και Φοιτητές ορίζοντας το είδος της σχέσης που υπάρχει µεταξύ αυτών. Στην πραγµατικότητα το είδος των σχέσεων το καθορίζουµε όταν ακόµα σχεδιάζουµε τους πίνακες µας στο χαρτί. Γι' αυτό το λόγο υπάρχουν και τα ξένα κλειδιά στους πίνακες που µόλις δηµιουργήσαµε, τα οποία θα µας βοηθήσουν να τους συνδέσουµε. Ακολουθούµε την εξής συλλογιστική: Ένα τµήµα µπορεί να έχει πολλούς φοιτητές. Αντίθετα ένας φοιτητής µπορεί να ανήκει µόνο σε ένα τµήµα. Συνεπώς η σχέση µεταξύ των πινάκων είναι ένα προς πολλά (1 προς ). Η σύνδεση των δύο πινάκων γίνεται µε βάση τον Κωδικό Τµήµατος. Αυτός είναι και ο λόγος που υπάρχει το ξένο κλειδί Κωδικός Τµήµατος στον πίνακα Φοιτητές. Παρατηρούµε ότι ενώ στον πίνακα Τµήµατα το πεδίο Κωδικός Τµήµατος είναι αυτόµατης αρίθµησης και πρωτεύον κλειδί, στον πίνακα Φοιτητές το ίδιο πεδίο είναι αριθµός ακέραιος µεγάλου µήκους. Με αυτό τον τρόπο θα µπορούµε να καταχωρούµε στον πίνακα Φοιτητές τον ίδιο κωδικό τµήµατος πολλές φορές. 1. Ξεκινάµε πάντα από την πλευρά του ένα κάνοντας κλικ στο πεδίο Κωδικός Τµήµατος του πίνακα Τµήµατα. 2. Σύρουµε το πεδίο Κωδικός Τµήµατος και το αφήνουµε ακριβώς πάνω στο πεδίο Κωδικός Τµήµατος του πίνακα Φοιτητές (πλευρά των πολλών). 3. Θα εµφανιστεί το πλαίσιο διαλόγου Επεξεργασία σχέσεων, στο οποίο βλέπουµε τα δύο πεδία τα οποία θα συνδέσουµε. Στο κάτω µέρος, στο πλαίσιο Τύπος σχέσης, υπάρχει η ένδειξη Ένα-προς-πολλά. Η Access αντιλαµβάνεται αµέσως αυτού του είδους τη σχέση επειδή το ένα πεδίο είναι αυτόµατης αρίθµησης και το άλλο αριθµός ακέραιος µεγάλου µήκους. 4. Πατάµε το πλαίσιο ελέγχου Ενεργοποίηση ακεραιότητας αναφορών για να διασφαλίσουµε ότι η Access δεν θα µας επιτρέψει να εισαγάγουµε στο πεδίο Κωδικός Τµήµατος του πίνακα Φοιτητές µία τιµή η οποία δεν θα υπάρχει στο ίδιο πεδίο του πίνακα Τµήµατα. Έτσι αν θελήσουµε να καταχωρίσουµε στον πίνακα Φοιτητές κάποιον κωδικό τµήµατος, ο οποίος δεν υ- πάρχει στον πίνακα Τµήµατα, η Access θα εµφανίσει ένα προειδοποιητικό µήνυµα. Η ακεραιότητα αναφορών είναι ένα σύστηµα κανόνων µε το οποίο διασφαλίζεται η εγκυρότητα των σχέσεων µεταξύ των εγγραφών δύο συνδεδεµένων πινάκων. 5. Επιλέγουµε τα δύο πλαίσια ιαδοχική ενηµέρωση των σχετικών εγγραφών και ιαδοχική διαγραφή των σχετικών εγγραφών. 6. Πατάµε το πλήκτρο ηµιουργία για να ολοκληρωθεί η σύνδεση των πινάκων. 38
7. Βλέπουµε ότι στο παράθυρο Σχέσεις, η Access δηµιουργεί µία γραµµή, η οποία ενώνει τους δύο πίνακες στα πεδία Κωδικός Κατηγορίας. Επίσης υπάρχει το σύµβολο 1 από την πλευρά του πρωτεύοντος κλειδιού (δηλαδή του ενός), ενώ από την πλευρά των πολλών υπάρχει το σύµβολο του άπειρου ( ). Τα σύµβολα αυτά εµφανίζονται µόνο µετά την ενεργοποίηση της ακεραιότητας αναφορών. Είναι η γραµµή ένωσης µεταξύ των δύο πινάκων, των οποίων τη σχέση έχουµε καθορίσει προηγουµένως (σχέση µεταξύ κοινών πεδίων). 8. Συνεχίζουµε τη σύνδεση των πινάκων Κατηγορία Βιβλίου και Βιβλία. Επιλέγουµε το πεδίο Κωδικός Κατηγορίας του πίνακα Κατηγορία Βιβλίου. 9. Σύρουµε το πεδίο Κωδικός Κατηγορίας και το αφήνουµε πάνω στο πεδίο Κωδικός Κατηγορίας του πίνακα Βιβλία. 10. Επιλέγουµε επίσης τα τρία πλαίσια ελέγχου: Ενεργοποίηση ακεραιότητας αναφορών, ιαδοχική ενηµέρωση των σχετικών εγγραφών και ιαδοχική διαγραφή των σχετικών εγγραφών. 11. Με τον ίδιο τρόπο συνδέουµε το πεδίο Κωδικός Βιβλίου του πίνακα Βιβλία µε το πεδίο Κωδικός Βιβλίου του πίνακα ανεισµός Βιβλίων. 12. Τέλος συνδέουµε το πεδίο Κωδικός Φοιτητή του πίνακα Φοιτητές µε το πεδίο Κωδικός Φοιτητή του πίνακα ανεισµός Βιβλίων. Η σύνδεση όλων των πινάκων φαίνεται στην εικόνα που ακολουθεί. Παρατηρώντας το παράθυρο Σχέσεις είµαστε σε θέση να κατανοήσουµε τη δοµή µιας Β.. Για να καταργήσουµε µία σύνδεση θα πρέπει να την επιλέξουµε και να πατήσουµε το πλήκτρο Delete. Επίσης η προσθήκη ενός νέου πίνακα στο παράθυρο Σχέσεις γίνεται πατώντας το πλήκτρο Εµφάνιση πίνακα. Καταχώριση εγγραφών στους πίνακες Καταχωρούµε στους 5 πίνακες τις παρακάτω εγγραφές. Όπως έχει ήδη ειπωθεί η καταχώριση θα πρέπει να γίνεται οριζοντίως (ανά εγγραφή). 39
* Για την εισαγωγή των εικόνων στο πεδίο Θέση διαβάστε τις οδηγίες που υπάρχουν στην επόµενη σελίδα 40
Σύνδεση των αρχείων εικόνας µε τις εγγραφές του πίνακα Κατηγορία Βιβλίου Ο τύπος του πεδίου Θέση του πίνακα Κατηγορία Βιβλίου είναι Αντικείµενο OLE. Όπως είδαµε στο µάθηµα 4, η καταχώριση των αντικειµένων OLE γίνεται µέσω σύνδεσης των ανεξάρτητων αρχείων εικόνων (εισαγωγή αντικειµένου). Για το πεδίο Θέση του πίνακα Κατηγορία Βιβλίου δηµιουργούµε προηγουµένως 10 αρχεία εικόνων τύπου GIF µε τη βοήθεια ενός σχεδιαστικού προγράµµατος ή µε το Word από το οποίο στη συνέχεια τα µεταφέρουµε στο πρόγραµµα σχεδίασης. Τα αρχεία εικόνων µπορούν να έχουν ονοµασίες π.χ. Θέση1.gif, Θεση2.gif, κλπ. Το κάθε χρωµατισµένο πλαίσιο αντιστοιχεί σε µία ντουλάπα η οποία περιέχει τα βιβλία µιας κατηγορίας βιβλίου. 41