Η βασική διαφορά μεταξύ ξένου κλειδιού και πρωτεύοντος κλειδιού είναι ότι το ξένο κλειδί είναι μια στήλη ή ένα σύνολο στηλών που αναφέρονται σε ένα πρωτεύον κλειδί ή ένα υποψήφιο κλειδί ενός άλλου πίνακα, ενώ το πρωτεύον κλειδί είναι μια στήλη ή ένα σύνολο στηλών που μπορεί να χρησιμοποιηθεί για τον μοναδικό προσδιορισμό μιας σειράς σε έναν πίνακα.
Μια στήλη ή ένα σύνολο στηλών που μπορεί να χρησιμοποιηθεί για τον προσδιορισμό ή την πρόσβαση σε μια γραμμή ή ένα σύνολο γραμμών σε μια βάση δεδομένων ονομάζεται κλειδί. Ένα πρωτεύον κλειδί σε μια σχεσιακή βάση δεδομένων είναι ένας συνδυασμός στηλών σε έναν πίνακα που προσδιορίζουν μοναδικά μια γραμμή του πίνακα. Το ξένο κλειδί σε μια σχεσιακή βάση δεδομένων είναι ένα πεδίο σε έναν πίνακα που ταιριάζει με το πρωτεύον κλειδί ενός άλλου πίνακα. Το ξένο κλειδί χρησιμοποιείται για τη διασταύρωση πινάκων αναφοράς.
Τι είναι ξένο κλειδί;
Το ξένο κλειδί είναι ένας αναφορικός περιορισμός μεταξύ δύο πινάκων. Προσδιορίζει μια στήλη ή ένα σύνολο στηλών σε έναν πίνακα, που ονομάζεται πίνακας αναφοράς και αναφέρεται σε ένα σύνολο στηλών σε έναν άλλο πίνακα, που ονομάζεται πίνακας αναφοράς. Το ξένο κλειδί ή οι στήλες στον πίνακα αναφοράς πρέπει να είναι το πρωτεύον κλειδί ή ένα υποψήφιο κλειδί (κλειδί που μπορεί να χρησιμοποιηθεί ως πρωτεύον κλειδί) στον πίνακα αναφοράς. Επιπλέον, τα ξένα κλειδιά επιτρέπουν τη σύνδεση δεδομένων σε πολλούς πίνακες. Επομένως, το ξένο κλειδί δεν μπορεί να περιέχει τιμές που δεν εμφανίζονται στον πίνακα στον οποίο αναφέρεται. Στη συνέχεια, η αναφορά που παρέχεται από το ξένο κλειδί βοηθά στη σύνδεση πληροφοριών σε πολλούς πίνακες και αυτό θα ήταν απαραίτητο με κανονικοποιημένες βάσεις δεδομένων. Πολλαπλές σειρές στον πίνακα αναφοράς μπορεί να παραπέμπουν σε μία μόνο σειρά στον πίνακα αναφοράς.
Εικόνα 01: Αντιστοίχιση ξένου κλειδιού
Στο πρότυπο ANSI SQL, ο περιορισμός FOREIGN KEY ορίζει τα ξένα κλειδιά. Επιπλέον, είναι δυνατός ο ορισμός των ξένων κλειδιών κατά τη δημιουργία του ίδιου του πίνακα. Ένας πίνακας μπορεί να έχει πολλά ξένα κλειδιά και μπορούν να αναφέρονται σε διαφορετικούς πίνακες.
Τι είναι το Κύριο κλειδί;
Το πρωτεύον κλειδί είναι μια στήλη ή ένας συνδυασμός στηλών που ορίζει μοναδικά μια σειρά σε έναν πίνακα μιας σχεσιακής βάσης δεδομένων. Ένας πίνακας μπορεί να έχει το πολύ ένα πρωτεύον κλειδί. Το πρωτεύον κλειδί επιβάλλει τον σιωπηρό περιορισμό NOT NULL. Επομένως, μια στήλη με πρωτεύον κλειδί δεν μπορεί να έχει NULL τιμές. Το πρωτεύον κλειδί μπορεί να είναι ένα κανονικό χαρακτηριστικό στον πίνακα που εγγυάται ότι είναι μοναδικό, όπως ένας αριθμός κοινωνικής ασφάλισης, ή μπορεί να είναι μια μοναδική τιμή που δημιουργείται από το σύστημα διαχείρισης βάσης δεδομένων, όπως ένα Globally Unique Identifier (GUID) στον Microsoft SQL Server.
Εικόνα 02: Πρωτεύον κλειδί
Επιπλέον, ο περιορισμός PRIMARY KEY στο ANSI SQL Standard ορίζει τα πρωτεύοντα κλειδιά. Είναι επίσης δυνατό να ορίσετε ένα πρωτεύον κλειδί κατά τη δημιουργία του πίνακα. Επιπλέον, η SQL επιτρέπει το πρωτεύον κλειδί να αποτελείται από μία ή περισσότερες στήλες και κάθε στήλη που περιλαμβάνεται στο πρωτεύον κλειδί ορίζεται έμμεσα ότι δεν είναι NOT NULL. Ωστόσο, ορισμένα συστήματα διαχείρισης βάσεων δεδομένων απαιτούν τη δημιουργία των στηλών του πρωτεύοντος κλειδιού ρητά NOT NULL.
Ποια είναι η διαφορά μεταξύ του ξένου κλειδιού και του πρωτεύοντος κλειδιού;
Ξένο κλειδί έναντι Κύριου κλειδιού |
|
Το ξένο κλειδί είναι μια στήλη ή ομάδα στηλών σε έναν πίνακα σχεσιακής βάσης δεδομένων που παρέχει συσχετισμό μεταξύ δεδομένων σε δύο πίνακες. | Το πρωτεύον κλειδί είναι μια ειδική σχεσιακή στήλη πίνακα βάσης δεδομένων ή ένας συνδυασμός πολλαπλών στηλών που επιτρέπει τον μοναδικό προσδιορισμό όλων των εγγραφών πίνακα. |
NULL | |
Το ξένο κλειδί δέχεται NULL τιμή. | Η τιμή του πρωτεύοντος κλειδιού δεν μπορεί να είναι NULL. |
Αριθμός κλειδιών | |
Ο πίνακας μπορεί να έχει πολλά ξένα κλειδιά. | Ο πίνακας μπορεί να έχει μόνο ένα πρωτεύον κλειδί. |
Διπλότυπο | |
Οι πλειάδες μπορεί να έχουν διπλότυπη τιμή για ένα χαρακτηριστικό ξένου κλειδιού. | Δύο πλειάδες σε μια σχέση δεν μπορούν να έχουν διπλότυπες τιμές για ένα χαρακτηριστικό πρωτεύοντος κλειδιού. |
Σύνοψη – Ξένο κλειδί έναντι Κύριου κλειδιού
Η διαφορά μεταξύ ξένου κλειδιού και πρωτεύοντος κλειδιού είναι ότι το ξένο κλειδί είναι μια στήλη ή ένα σύνολο στηλών που αναφέρονται σε ένα πρωτεύον κλειδί ή ένα υποψήφιο κλειδί ενός άλλου πίνακα, ενώ το πρωτεύον κλειδί είναι μια στήλη ή ένα σύνολο στηλών που μπορεί να χρησιμοποιηθεί για τον μοναδικό προσδιορισμό μιας σειράς σε έναν πίνακα.