Κύριο κλειδί έναντι ξένου κλειδιού: Ποια είναι η διαφορά;

Πίνακας περιεχομένων:

Anonim

Πριν μάθετε τη διαφορά μεταξύ του πρωτεύοντος κλειδιού και του ξένου κλειδιού, ας μάθουμε:

Τι είναι τα κλειδιά;

Τα κλειδιά είναι ένα χαρακτηριστικό που σας βοηθά να αναγνωρίσετε μια σειρά (tuple) σε μια σχέση (πίνακας). Σας επιτρέπουν να βρείτε τη σχέση μεταξύ δύο πινάκων. Τα πλήκτρα σάς βοηθούν να προσδιορίσετε μοναδικά μια σειρά σε έναν πίνακα με έναν συνδυασμό μίας ή περισσότερων στηλών σε αυτόν τον πίνακα. Το κλειδί βάσης δεδομένων είναι επίσης χρήσιμο για την εύρεση μιας μοναδικής εγγραφής ή σειρά από τον πίνακα.

Τι είναι η σχέση βάσης δεδομένων;

Η σχέση βάσης δεδομένων είναι συσχετισμοί μεταξύ ενός ή περισσοτέρων πινάκων που δημιουργούνται χρησιμοποιώντας δηλώσεις συμμετοχής. Χρησιμοποιείται για την αποτελεσματική ανάκτηση δεδομένων από τη βάση δεδομένων. Υπάρχουν κυρίως τρεις τύποι σχέσεων 1) One-to-One, 2) One-to-Many, 3) Many-to-many.

Τι είναι το πρωτεύον κλειδί;

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

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

Τι είναι το Ξένο Κλειδί;

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

ΒΑΣΙΚΕΣ ΔΙΑΦΟΡΕΣ:

  • Ένας περιορισμός πρωτεύοντος κλειδιού είναι μια στήλη που προσδιορίζει μοναδικά κάθε σειρά στον πίνακα του σχεσιακού συστήματος διαχείρισης βάσεων δεδομένων, ενώ το ξένο κλειδί είναι μια στήλη που δημιουργεί μια σχέση μεταξύ δύο πινάκων.
  • Το Πρωτεύον Κλειδί δεν δέχεται ποτέ τιμές μηδέν, ενώ το ξένο κλειδί μπορεί να δέχεται πολλαπλές τιμές μηδενικής.
  • Μπορείτε να έχετε μόνο ένα πρωτεύον κλειδί σε έναν πίνακα ενώ μπορείτε να έχετε πολλά ξένα κλειδιά σε έναν πίνακα.
  • Η τιμή του πρωτεύοντος κλειδιού δεν μπορεί να αφαιρεθεί από τον γονικό πίνακα ενώ η τιμή του ξένου κλειδιού μπορεί να αφαιρεθεί από τον θυγατρικό πίνακα.
  • Καμία δύο σειρές δεν μπορεί να έχει πανομοιότυπες τιμές για ένα πρωτεύον κλειδί από την άλλη πλευρά, ένα ξένο κλειδί μπορεί να περιέχει διπλές τιμές.
  • Δεν υπάρχει περιορισμός στην εισαγωγή των τιμών στη στήλη πίνακα ενώ εισάγετε οποιαδήποτε τιμή στον πίνακα ξένων κλειδιών, βεβαιωθείτε ότι η τιμή υπάρχει σε μια στήλη ενός πρωτεύοντος κλειδιού.

Γιατί να χρησιμοποιήσετε το Κύριο κλειδί;

Ακολουθούν τα μειονεκτήματα / οφέλη από τη χρήση του πρωτεύοντος κλειδιού:

  • Ο κύριος στόχος του πρωτεύοντος κλειδιού είναι η αναγνώριση κάθε εγγραφής στον πίνακα βάσης δεδομένων.
  • Μπορείτε να χρησιμοποιήσετε ένα πρωτεύον κλειδί όταν δεν επιτρέπετε σε κάποιον να εισάγει μηδενικές τιμές.
  • Εάν διαγράψετε ή ενημερώσετε εγγραφές, η ενέργεια που καθορίσατε θα πραγματοποιηθεί για να διασφαλιστεί η ακεραιότητα των δεδομένων.
  • Εκτελέστε λειτουργία περιορισμού για να απορρίψετε τη λειτουργία διαγραφής ή ενημέρωσης για τον γονικό πίνακα.
  • Τα δεδομένα οργανώνονται με μια σειρά ευρετηρίου συμπλέγματος όποτε οργανώνετε φυσικά τον πίνακα DBMS.

Γιατί να χρησιμοποιήσετε το Ξένο Κλειδί;

Εδώ είναι οι σημαντικοί λόγοι για τη χρήση ξένου κλειδιού:

  • Τα ξένα κλειδιά σας βοηθούν να μετεγκαταστήσετε οντότητες χρησιμοποιώντας ένα πρωτεύον κλειδί από τον γονικό πίνακα.
  • Ένα ξένο κλειδί σάς επιτρέπει να συνδέσετε δύο ή περισσότερους πίνακες μαζί.
  • Κάνει τα δεδομένα της βάσης δεδομένων σας συνεπή.
  • Ένα ξένο κλειδί μπορεί να χρησιμοποιηθεί για να ταιριάζει με μια στήλη ή συνδυασμό στηλών με πρωτεύον κλειδί σε έναν γονικό πίνακα.
  • Ο περιορισμός ξένου κλειδιού SQL χρησιμοποιείται για να βεβαιωθείτε ότι η ακεραιότητα αναφοράς του γονέα δεδομένων να ταιριάζει με τις τιμές στον θυγατρικό πίνακα.

Παράδειγμα πρωτεύοντος κλειδιού

Σύνταξη:

Ακολουθεί η σύνταξη του Πρωτεύοντος κλειδιού:

CREATE TABLE (Column1 datatype,Column2 datatype, PRIMARY KEY (Column-Name).);

Εδώ,

  • Table_Name είναι το όνομα του πίνακα που πρέπει να δημιουργήσετε.
  • Column_Name είναι το όνομα της στήλης που έχει το κύριο κλειδί.

Παράδειγμα:

StudID Ρολό αρ Ονομα Επίθετο ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ
1 11 Κάποιος Τιμή Αυτή η διεύθυνση ηλεκτρονικού ταχυδρομείου προστατεύεται από κακόβουλη χρήση. Χρειάζεται να ενεργοποιήσετε τη JavaScript για να τη δείτε.
2 12 Νίκος Κατασκευαστής Αυτή η διεύθυνση ηλεκτρονικού ταχυδρομείου προστατεύεται από κακόβουλη χρήση. Χρειάζεται να ενεργοποιήσετε τη JavaScript για να τη δείτε.
3 13 Ντάνα Νατάν Αυτή η διεύθυνση ηλεκτρονικού ταχυδρομείου προστατεύεται από κακόβουλη χρήση. Χρειάζεται να ενεργοποιήσετε τη JavaScript για να τη δείτε.

Στο παραπάνω παράδειγμα, έχουμε δημιουργήσει έναν πίνακα μαθητών με στήλες όπως StudID, Roll No, Όνομα, Επώνυμο και Email. Το StudID επιλέγεται ως πρωτεύον κλειδί επειδή μπορεί να προσδιορίσει μοναδικά άλλες σειρές στον πίνακα.

Παράδειγμα ξένου κλειδιού

Σύνταξη:

Ακολουθεί η σύνταξη του ξένου κλειδιού:

CREATE TABLE 
(column1 datatype,column2 datatype,constraint (name of constraint)FOREIGN KEY [column1, column2… ]REFERENCES [primary key table name] (List of primary key table column)… );

Εδώ,

  • Η παράμετρος Όνομα πίνακα δείχνει το όνομα του πίνακα που πρόκειται να δημιουργήσετε.
  • Οι παράμετροι στήλη1, στήλη2… απεικονίζουν τις στήλες που πρέπει να προστεθούν στον πίνακα.
  • Περιορισμός δηλώνει το όνομα του περιορισμού που δημιουργείτε.
  • Οι αναφορές δείχνουν έναν πίνακα με το πρωτεύον κλειδί.

Παράδειγμα:

DeptCode Όνομα Dept
001 Επιστήμη
002 Αγγλικά
005 Υπολογιστή
Αναγνωριστικό δασκάλου Όνομα Όνομα
Β002 Δαβίδ Προειδοποιών
B017 Σάρα Ιωσήφ
Β009 Μικρόφωνο Μπράντον

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

Σε αυτόν τον πίνακα, προσθέτοντας το ξένο κλειδί στο Deptcode στο όνομα Δάσκαλου, μπορούμε να δημιουργήσουμε μια σχέση μεταξύ των δύο πινάκων.

Αναγνωριστικό δασκάλου DeptCode Όνομα Όνομα
Β002 002 Δαβίδ Προειδοποιών
B017 002 Σάρα Ιωσήφ
Β009 001 Μικρόφωνο Μπράντον

Αυτή η ιδέα είναι επίσης γνωστή ως Ακεραιότητα Αναφοράς.

Διαφορά μεταξύ του πρωτεύοντος κλειδιού και του ξένου κλειδιού

Εδώ είναι η σημαντική διαφορά μεταξύ του πρωτεύοντος κλειδιού και του ξένου κλειδιού:

Πρωτεύων κλειδί Ξένο κλειδί
Ένας κύριος περιορισμός κλειδιού είναι μια στήλη ή μια ομάδα στηλών που προσδιορίζει μοναδικά κάθε σειρά στον πίνακα του σχεσιακού συστήματος διαχείρισης βάσεων δεδομένων. Το ξένο κλειδί είναι μια στήλη που δημιουργεί μια σχέση μεταξύ δύο πινάκων.
Σας βοηθά να προσδιορίσετε μοναδικά μια εγγραφή στον πίνακα. Είναι ένα πεδίο στον πίνακα που είναι το πρωτεύον κλειδί ενός άλλου πίνακα.
Το Κύριο κλειδί δεν δέχεται ποτέ μηδενικές τιμές. Ένα ξένο κλειδί μπορεί να δέχεται πολλές μηδενικές τιμές.
Το κύριο κλειδί είναι ένα ευρετήριο συμπλέγματος και τα δεδομένα στον πίνακα DBMS οργανώνονται φυσικά με την ακολουθία του ευρετηρίου συμπλέγματος. Ένα ξένο κλειδί δεν μπορεί να δημιουργήσει αυτόματα ένα ευρετήριο, σε σύμπλεγμα ή σε μη συμπλέγματα.
Μπορείτε να έχετε το μόνο πρωτεύον κλειδί σε έναν πίνακα. Μπορείτε να έχετε πολλά ξένα κλειδιά σε έναν πίνακα.
Δεν είναι δυνατή η κατάργηση της τιμής του πρωτεύοντος κλειδιού από τον γονικό πίνακα. Η τιμή ξένου κλειδιού μπορεί να αφαιρεθεί από τον θυγατρικό πίνακα.
Μπορείτε να ορίσετε το πρωτεύον κλειδί έμμεσα στους προσωρινούς πίνακες. Δεν μπορείτε να ορίσετε ξένα κλειδιά στους τοπικούς ή παγκόσμιους προσωρινούς πίνακες.
Το πρωτεύον κλειδί είναι ένα ευρετήριο συμπλέγματος. Από προεπιλογή, δεν είναι ευρετήριο συμπλέγματος.
Καμία δύο σειρές δεν μπορεί να έχει πανομοιότυπες τιμές για ένα πρωτεύον κλειδί. Ένα ξένο κλειδί μπορεί να περιέχει διπλές τιμές.
Δεν υπάρχει περιορισμός στην εισαγωγή των τιμών στη στήλη πίνακα. Ενώ εισάγετε οποιαδήποτε τιμή στον πίνακα ξένου κλειδιού, βεβαιωθείτε ότι η τιμή υπάρχει σε μια στήλη ενός πρωτεύοντος κλειδιού.