Τι είναι τα ξένα κλειδιά στις βάσεις δεδομένων SQL;

Τι είναι τα ξένα κλειδιά στις βάσεις δεδομένων SQL;

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





Η SQL εκτελεί μαθηματικές πράξεις σε δεδομένα μέσα σε ένα σύστημα διαχείρισης βάσεων δεδομένων. Αυτές οι βάσεις δεδομένων περιέχουν διαφορετικούς πίνακες στους οποίους η κάθε μια αποθηκεύει δεδομένα σε μια συγκεκριμένη οντότητα. Εάν έχετε βάση δεδομένων ενοικίασης αυτοκινήτων, μια οντότητα (ή πίνακας) σε αυτήν τη βάση δεδομένων θα είναι πελάτες (οι οποίοι θα αποθηκεύουν όλα τα προσωπικά δεδομένα σε κάθε πελάτη).





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





Σε ένα σύστημα διαχείρισης βάσεων δεδομένων, κάθε εγγραφή (ή σειρά) πρέπει να είναι μοναδική.

Πρωτεύοντα κλειδιά

Αν και ο όρος είναι ότι κάθε εγγραφή σε έναν πίνακα πρέπει να είναι ξεχωριστή, αυτό δεν συμβαίνει πάντα. Συνεχίζοντας με το παράδειγμα της βάσης δεδομένων ενοικίασης αυτοκινήτων, εάν η βάση δεδομένων περιέχει δύο πελάτες που ο καθένας έχει το όνομα John Brown, θα μπορούσε να αναμένεται από έναν John Brown να επιστρέψει μια Mercedes-Benz που δεν νοίκιασε.



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

πώς να μειώσετε τη χρήση ram στα παράθυρα 10

Επομένως, κάθε εγγραφή σε ένα σύστημα διαχείρισης βάσεων δεδομένων SQL θα πρέπει να έχει ένα πρωτεύον κλειδί.





Χρήση κύριων κλειδιών σε μια βάση δεδομένων

Για να συμπεριλάβετε κύρια κλειδιά σε ένα σύστημα διαχείρισης βάσεων δεδομένων χρησιμοποιώντας SQL, μπορείτε απλά να το προσθέσετε ως κανονικό χαρακτηριστικό κατά τη δημιουργία ενός νέου πίνακα. Έτσι, ο πίνακας των πελατών θα περιέχει τέσσερα χαρακτηριστικά (ή στήλες):

  • CarOwnerID (το οποίο θα αποθηκεύσει το κύριο κλειδί)
  • Ονομα
  • Επίθετο
  • Τηλεφωνικό νούμερο

Σχετίζεται με: Πώς να δημιουργήσετε έναν πίνακα σε SQL





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

Μια εγγραφή με ένα κύριο παράδειγμα κλειδιού

/* creates a new record in the customers table */
INSERT INTO Customers VALUES
('0004',
'John',
'Brown',
'111-999-5555');

Ο παραπάνω κωδικός SQL θα προσθέσει μια νέα εγγραφή στην προϋπάρχουσα Οι πελάτες τραπέζι. Ο παρακάτω πίνακας δείχνει τον νέο πίνακα πελατών με τους δύο δίσκους John Brown.

Το ξένο κλειδί

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

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

Τι είναι το ξένο κλειδί;

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

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

Επιστρέφοντας στη βάση δεδομένων ενοικίασης αυτοκινήτων, για να συνδέσετε κάθε πελάτη στο σωστό αυτοκίνητο, θα πρέπει να καταλάβετε ότι ένας πελάτης (το άτομο) νοικιάζει ένα αυτοκίνητο (το αντικείμενο). Επομένως, το εξωτερικό κλειδί πρέπει να βρίσκεται στον πίνακα αυτοκινήτων.

Ο κώδικας SQL που δημιουργεί έναν πίνακα με ένα ξένο κλειδί είναι ελαφρώς διαφορετικός από τον κανόνα.

Δημιουργία πίνακα με παράδειγμα ξένου κλειδιού

/* creates a new cars table in the car rental database */
CREATE TABLE Cars
(
LicenseNumber varchar(30) NOT NULL PRIMARY KEY,
CarType varchar(30) NOT NULL,
CustomerID varchar(30) FOREIGN KEY REFERENCES Customers(CustomerID)
);

Όπως μπορείτε να δείτε στον παραπάνω κώδικα, ένα ξένο κλειδί πρέπει να προσδιορίζεται ρητά ως τέτοιο, μαζί με μια αναφορά στο κύριο κλειδί που συνδέεται με τον νέο πίνακα.

Πώς να κατεβάσετε το adobe flash σε mac

Σχετίζεται με: Το Essential SQL Commands Cheat Sheet για αρχάριους

Για να προσθέσετε μια εγγραφή στον νέο πίνακα, θα πρέπει να διασφαλίσετε ότι η τιμή στο πεδίο ξένο κλειδί ταιριάζει με την τιμή στο πεδίο κύριου κλειδιού του αρχικού πίνακα.

Προσθήκη εγγραφής με παράδειγμα ξένου κλειδιού

/* creates a new record in the cars table */
INSERT INTO Cars VALUES
('100012',
'Mercedes-Benz',
'0004');

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

Τραπέζι αυτοκινήτων

Από τον παραπάνω πίνακα, μπορείτε να προσδιορίσετε τον σωστό John Brown που νοικιάζει μια Mercedes-Benz με το ξένο κλειδί στο αρχείο.

Προώθηση ξένων κλειδιών

Υπάρχουν δύο άλλοι τρόποι χρήσης ενός ξένου κλειδιού σε μια βάση δεδομένων.

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

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

Σύνθετα κλειδιά

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

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

Δημιουργία πίνακα με σύνθετα ξένα κλειδιά

/* creates a CarRental table in the car rental database */
CREATE TABLE CarRental
(
DateRented DATE NOT NULL,
LicenseNumber varchar(30) NOT NULL FOREIGN KEY REFERENCES Cars(LicenseNumber),
CustomerID varchar(30) NOT NULL FOREIGN KEY REFERENCES Customers(CustomerID),
PRIMARY KEY (DateRented, LicenseNumber, CustomerID)
);

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

Είναι απαραίτητο να συνδυάσετε και τα τρία χαρακτηριστικά στον πίνακα για να έχετε ένα μοναδικό κλειδί. Ένας πελάτης μπορεί να νοικιάσει περισσότερα από ένα αυτοκίνητα την ίδια ημέρα (έτσι Κωδικός πελάτη και Ημερομηνία ενοικίασης δεν είναι καλός συνδυασμός) περισσότεροι από ένας πελάτες μπορούν επίσης να νοικιάσουν το ίδιο αυτοκίνητο την ίδια μέρα (έτσι ΑΡΙΘΜΟΣ ΑΔΕΙΑΣ και Ημερομηνία ενοικίασης δεν είναι καλός συνδυασμός).

Ωστόσο, η δημιουργία ενός σύνθετου κλειδιού που λέει ποιος πελάτης, τι αυτοκίνητο και ποια μέρα κάνει ένα εξαιρετικό μοναδικό κλειδί. Αυτό το μοναδικό κλειδί αντιπροσωπεύει τόσο ένα σύνθετο ξένο κλειδί όσο και ένα σύνθετο πρωτεύον κλειδί.

το τηλεχειριστήριο roku μου δεν λειτουργεί

Ξένα πρωτεύοντα κλειδιά

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

Ο Say Fred (που εργάζεται στην εταιρεία ενοικίασης αυτοκινήτων) βρίσκεται στη βάση δεδομένων της εταιρείας κάτω από τον πίνακα εργαζομένων. Μετά από μερικά χρόνια, γίνεται επόπτης και προστίθεται στον πίνακα εποπτών.

Ο Fred εξακολουθεί να είναι υπάλληλος και θα εξακολουθεί να έχει τον ίδιο αριθμό ταυτότητας. Έτσι, το αναγνωριστικό υπαλλήλου του Fred βρίσκεται τώρα στον πίνακα εποπτών ως ξένο κλειδί, το οποίο θα γίνει επίσης ένα βασικό κλειδί σε αυτόν τον πίνακα (καθώς δεν έχει νόημα να δημιουργηθεί ένας νέος αριθμός ταυτότητας για τον Fred τώρα που είναι επόπτης).

Τώρα μπορείτε να προσδιορίσετε ξένα κλειδιά σε βάσεις δεδομένων SQL

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

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

Μερίδιο Μερίδιο Τιτίβισμα ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ Μάθετε πώς να χρησιμοποιείτε τις εργασίες έργου και επιλογής στην SQL

Κατανοήστε τις σχεσιακές βάσεις δεδομένων SQL κατανοώντας τις λειτουργίες Έργου και Επιλογής με αυτά τα παραδείγματα.

Διαβάστε Επόμενο
Σχετικά θέματα
  • Προγραμματισμός
  • Προγραμματισμός
  • SQL
  • βάση δεδομένων
Σχετικά με τον Συγγραφέα Kadeisha Kean(Δημοσιεύθηκαν 21 άρθρα)

Ο Kadeisha Kean είναι προγραμματιστής λογισμικού πλήρους στοίβας και τεχνικός/συγγραφέας τεχνολογίας. Έχει την ξεχωριστή ικανότητα να απλοποιήσει μερικές από τις πιο πολύπλοκες τεχνολογικές έννοιες. παραγωγή υλικού που μπορεί να γίνει εύκολα κατανοητό από κάθε αρχάριο τεχνολογίας. Είναι παθιασμένη με τη συγγραφή, την ανάπτυξη ενδιαφέροντος λογισμικού και τα ταξίδια στον κόσμο (μέσω ντοκιμαντέρ).

Περισσότερα από τον Kadeisha Kean

Εγγραφείτε στο newsletter μας

Εγγραφείτε στο ενημερωτικό μας δελτίο για τεχνικές συμβουλές, κριτικές, δωρεάν ebooks και αποκλειστικές προσφορές!

Κάντε κλικ εδώ για εγγραφή