Βάσεις Δεδομένων 3η εργαστηριακή άσκηση Εισαγωγή στο περιβάλλον της oracle Συσχέτιση πινάκων (εισαγωγή ξένων κλειδιών) Δρ. Μαρία Ευθυμιοπούλου
1. Εμφάνιση πινάκων στο Workspace Στο προηγούμενο εργαστήριο με την βοήθεια του Object Browser του SQL Workshop δημιουργήσαμε του πίνακες του παραδείγματος "Εκπαιδευτικό Ίδρυμα" και ορίσαμε τα πρωτεύοντα κλειδιά τους. Όλοι οι πίνακες που έχουμε δημιουργήσει εμφανίζονται στην λίστα στο αριστερό μέρος της καρτέλας Home του Object Browser. Στην οθόνη μας θα πρέπει να εμφανίζεται η ακόλουθη εικόνα: 2. Συσχέτιση πινάκων - Ορισμός ξένων κλειδιών Για να συσχετίζουμε δύο πίνακες μεταξύ τους στο περιβάλλον της Oracle αρκεί να ορίσουμε τον αντίστοιχο περιορισμό Constraints με την βοήθεια του οποίου σε ένα πίνακα εισάγουμε ως ξένο κλειδί το πρωτεύον κλειδί ενός άλλου πίνακα. Για να το πετύχουμε αυτό επιλέγουμε τον πίνακα στον οποίο θέλουμε να εισάγουμε το ξένο κλειδί και στη συνέχεια, δεδομένου ότι έχουμε ήδη δημιουργήσει την αντίστοιχη στήλη, επιλέγουμε από τις διαθέσιμες επιλογές την Constraints 2.1 Συσχετίσεις 1-1 και 1-Ν Στις συσχετίσεις 1-1 και 1-Ν για να συσχετίσω δύο πίνακες μεταξύ τους, αρκεί να εισάγω το πρωτεύον κλειδί του ενός ως ξένο κλειδί στον άλλο. Συνεπώς, με αριστερό click επιλέγω τον πίνακα στον οποίο θέλω να εισάγω το ξένο κλειδί. Έστω για παράδειγμα ο πίνακας SPOUDASTIS στον οποίο θέλω να εισάγω σαν ξένο κλειδί την ονομασία τμήματος από τον 2
πίνακα TMHMA. Για να εισάγω το ξένο κλειδί θα δημιουργήσω μια νέα στήλη πατώντας πάνω αριστερά το κουμπί Add Column. Συμπληρώνω με το όνομα και τον τύπο της στήλης. Προσοχή! Ο τύπος της στήλης που προσθέτω πρέπει να είναι ίδιος με τον τύπο της στήλης που θα συσχετίσω. έπειτα πατάω επάνω δεξιά το κουμπί Next και έπειτα το κουμπί Finish. Στην οθόνη μου πλέον μπορώ να δω την νέα στήλη που δημιούργησα. Εν συνεχεία, προκειμένου να ορίσω την νέα στήλη σαν ξένο κλειδί επιλέγω την επιλογή Constraints 3
Στην οθόνη που εμφανίζεται επιλέγω το επάνω αριστερά κουμπί Create Στο παράθυρο που εμφανίζεται στην επιλογή Constraint Type επιλέγω Foreign Key και στην επιλογή Constraint on Column επιλέγω την στήλη που έχω ορίσει ως ξένο κλειδί 4
Στη συνέχεια μου εμφανίζεται η εικόνα που ακολουθεί Σε σχέση με το ξένο κλειδί μπορώ να επιλέξω μεταξύ Disallow Delete, Cascade Delete, Set Null on Delete. Μέσω της επιλογής Disallow Delete απαγορεύεται η διαγραφή εγγραφών από τον αντίστοιχο πίνακα συσχέτισης (Reference Table) όταν υπάρχουν εγγραφές που σχετίζονται με αυτό τον πίνακα. Μέσω της επιλογής Cascade Delete ορίζεται να διαγράφονται εγγραφές από τον υπάρχων πίνακα όταν οι αντίστοιχες εγγραφές διαγραφούν και από τον σχετιζόμενο με το ξένο κλειδί πίνακα. Τέλος, μέσω της επιλογής Set Null on Delete ορίζεται να τίθεται NULL στις τιμές της στήλης του ξένου κλειδιού, όταν οι αντίστοιχες εγγραφές στον σχετιζόμενο πίνακα με το ξένο κλειδί διαγράφονται. Στην επιλογή Foreign Key Columns επιλέγω την στήλη που δημιούργησα προηγουμένως για να αποτελέσει το ξένο κλειδί 5
Στην επιλογή Reference Table Name επιλέγω τον πίνακα με τον οποίο γίνεται η συσχέτιση στην επιλογή Reference Table Column List επιλέγω την λίστα η οποία αποτελεί το πρωτεύον κλειδί του πίνακα με το οποίο γίνεται η συσχέτιση και έπειτα πατάω επάνω δεξιά το κουμπί Next. 6
Στην οθόνη επιβεβαίωσης θα επιλέξω Finish Κατόπιν της επιβεβαίωσης μου εμφανίζεται στην οθόνη μου ο πίνακας με το πρωτεύον και το ξένο κλειδί του Αναπαράσταση Συσχέτισης Η συσχέτιση που έγινε μεταξύ των δύο πινάκων μπορεί να αναπαρασταθεί και σχηματικά επιλέγοντας από την καρτέλα μου την επιλογή Model 7
Το αποτέλεσμα θα είναι το ακόλουθο 2.2 Συσχετίσεις Μ-Ν Για να δημιουργήσουμε μια συσχέτιση Μ-Ν όπως έχει αναφερθεί και σε προηγούμενο εργαστήριο χρειάζεται να δημιουργήσουμε έναν νέο πίνακα. Στο περιβάλλον της Oracle δημιουργούμε το νέο πίνακα σύμφωνα με τις οδηγίες που μας έχουν δοθεί. Έστω για παράδειγμα η συσχέτιση Μ-Ν των οντοτήτων Σπουδαστής και Μάθημα στο παράδειγμα "Εκπαιδευτικό Ίδρυμα". Για να απεικονίσουμε αυτή τη συσχέτιση δημιουργούμε έναν νέο πίνακα PARAKOLOUTHEI. Στον πίνακα συμπεριλαμβάνουμε ως γνωρίσματα τα πρωτεύοντα κλειδιά των οντοτήτων που συμμετέχουν στη συσχέτιση. Ο συνδυασμός τους αποτελεί το πρωτεύον κλειδί του πίνακα. 8
Στη συνέχεια θα συσχετίσουμε τον πίνακα PARAKOLOUTHEI με τους πίνακες SPOUDASTIS και MATHIMA. Για το λόγο αυτό ορίζουμε διαδοχικά δύο ξένα κλειδιά, όπως φαίνεται στις παρακάτω εικόνες Προσοχή! Δεν ξεχνάω καθώς ορίζω διαδοχικά τα δύο ξένα κλειδιά στο πεδίο Constraint Name να δώσω διαφορετικό όνομα για το καθένα. Σε αντίθετη περίπτωση θα εμφανιστεί μήνυμα λάθους. 9
Το τελικό αποτέλεσμα μου θα είναι αυτό της παρακάτω εικόνας Τέλος, μπορούμε και πάλι να δούμε την σχηματική αναπαράσταση της συσχέτισης επιλέγοντας από την καρτέλα την επιλογή Model, μέσω της διαδικασίας που αναλύθηκε προηγουμένως. ΆΣΚΗΣΗ Δημιουργήστε τις συσχετίσεις (εισάγοντας ξένα κλειδιά) στους πίνακες και δημιουργώντας νέους πίνακες όπου χρειάζεται στο παράδειγμα «Εκπαιδευτικό Ίδρυμα». 10