Η δύναμη των ξένων κλειδιών στις σχετικές βάσεις δεδομένων

Ένα ξένο κλειδί ανοίγει την πόρτα σε έναν ολόκληρο κόσμο δεδομένων

Οι σχεδιαστές βάσεων δεδομένων κάνουν ευρεία χρήση των κλειδιών κατά την ανάπτυξη σχεσιακών βάσεων δεδομένων. Μεταξύ των πιο κοινών από αυτά τα πλήκτρα είναι τα πρωτεύοντα κλειδιά και τα ξένα κλειδιά. Ένα ξένο κλειδί βάσης δεδομένων είναι ένα πεδίο σε ένα σχεσιακό πίνακα που ταιριάζει με τη στήλη του πρωτεύοντος κλειδιού ενός άλλου πίνακα. Για να κατανοήσουμε πώς λειτουργεί ένα ξένο κλειδί, ας ρίξουμε μια πιο προσεκτική ματιά στην ιδέα μιας σχεσιακής βάσης δεδομένων.

Μερικά βασικά στοιχεία σχεσιακών βάσεων δεδομένων

Σε μια σχεσιακή βάση δεδομένων, τα δεδομένα αποθηκεύονται σε πίνακες που περιέχουν σειρές και στήλες, καθιστώντας εύκολη την αναζήτηση και τον χειρισμό. Υπάρχουν κάποια σοβαρά μαθηματικά πίσω από την έννοια μιας σχεσιακής βάσης δεδομένων (σχεσιακή άλγεβρα,

Codd στην IBM το 1970), αλλά αυτό δεν είναι το θέμα αυτού του άρθρου.

Για πρακτικούς σκοπούς (και μη μαθηματικούς), μια σχεσιακή βάση δεδομένων αποθηκεύει "σχετικά" δεδομένα σε σειρές και στήλες. Περαιτέρω - και εδώ γίνεται ενδιαφέρον - οι περισσότερες βάσεις δεδομένων σχεδιάζονται έτσι ώστε τα δεδομένα σε έναν πίνακα να έχουν πρόσβαση στα δεδομένα σε έναν άλλο πίνακα. Αυτή η δυνατότητα δημιουργίας σχέσεων μεταξύ των πινάκων είναι η πραγματική ισχύς μιας σχεσιακής βάσης δεδομένων.

Χρησιμοποιώντας ξένα κλειδιά

Τα περισσότερα τραπέζια, ειδικά σε μεγάλες, σύνθετες βάσεις δεδομένων, έχουν πρωτεύοντα κλειδιά. Οι πίνακες που έχουν σχεδιαστεί για πρόσβαση σε άλλους πίνακες πρέπει επίσης να διαθέτουν ένα ξένο κλειδί.

Για να χρησιμοποιήσετε την κοινά αναφερόμενη βάση δεδομένων Northwinds, εδώ υπάρχει ένα απόσπασμα από έναν πίνακα προϊόντων:

Το απόσπασμα πίνακα προϊόντων της βάσης δεδομένων Northwind
Κωδικός προϊόντος Ονομα προϊόντος ΚατηγορίαID QuantityPerU Τιμή μονάδας
1 Chai 1 10 κουτιά x 20 σακούλες 18.00
2 Chang 1 24 - 12 οζ φιάλες 19.00
3 Σιρόπι γλυκάνισου 2 12 - φιάλες των 550 ml 10.00
4 Ο καπνιστής Cajun του σεφ του Αντόνιου 2 Δοχεία 48 - 6 οζ 22.00
5 Σεμινάριο γκουμπού του αρχιμάγειρα Αντόνιο 2 36 κιβώτια 21.35
6 Το Boysenberry της γιαγιάς απλώνεται 2 Δοχεία 12 - 8 οζ 25.00
7 Τα βιολογικά αποξηραμένα αχλάδια του θείου Bob 7 12 - 1 λίβρες pkgs. 30.00

Η στήλη ProductID είναι το πρωτεύον κλειδί του πίνακα. Αναθέτει ένα μοναδικό αναγνωριστικό σε κάθε προϊόν.

Αυτός ο πίνακας περιέχει επίσης μια στήλη ξένου κλειδιού, κατηγορίαID . Κάθε προϊόν στον πίνακα προϊόντων συνδέεται με μια καταχώρηση στον πίνακα κατηγοριών που ορίζει την κατηγορία του προϊόντος.

Σημειώστε αυτό το απόσπασμα από τον πίνακα κατηγοριών της βάσης δεδομένων:

Βάση δεδομένων κατηγοριών βάσης δεδομένων του Northwind
ΚατηγορίαID Ονομα κατηγορίας Περιγραφή
1 Ποτά Αναψυκτικά, καφέδες, τσάγια, μπύρες και μπίρες
2 Καρυκεύματα Γλυκές και αλμυρές σάλτσες, απολαύσεις, απλώματα και καρυκεύματα
3 Ζαχαρωτά Επιδόρπια, καραμέλες και γλυκά
5 γαλακτοκομικά προϊόντα Τυριά

Η στήλη CategoryID είναι το πρωτεύον κλειδί αυτής της στήλης. (Δεν έχει ξένο κλειδί επειδή δεν χρειάζεται να έχει πρόσβαση σε άλλο πίνακα.) Κάθε ξένο κλειδί στον πίνακα προϊόντων συνδέεται με ένα πρωτεύον κλειδί στον πίνακα Κατηγορίες. Για παράδειγμα, το προϊόν Chai έχει ανατεθεί κατηγορία "Ποτά", ενώ το σιρόπι γλυκάνισου είναι στην κατηγορία Καρυκεύματα.

Αυτός ο τύπος σύνδεσης δημιουργεί μια πληθώρα τρόπων χρήσης και επαναχρησιμοποίησης δεδομένων σε σχεσιακή βάση δεδομένων.