Τρόπος δημιουργίας ξένων πλήκτρων στον Microsoft SQL Server

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

Πίνακες Βάσεων Δεδομένων και Σχέσεις

Μπορεί να γνωρίζετε ήδη ότι οι βάσεις δεδομένων είναι απλώς μια σειρά πινάκων , παρόμοια με αυτά που ίσως ήδη χρησιμοποιείτε σε ένα πρόγραμμα υπολογιστικών φύλλων , όπως το Microsoft Excel. Στην πραγματικότητα, μπορείτε να μετατρέψετε ένα υπολογιστικό φύλλο Excel σε μια βάση δεδομένων. Όπου οι βάσεις δεδομένων αποκλίνουν από υπολογιστικά φύλλα, ωστόσο, είναι όταν πρόκειται για την οικοδόμηση ισχυρών σχέσεων μεταξύ των πινάκων.

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

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

Η βάση δεδομένων μπορεί επίσης να περιέχει έναν πίνακα που ονομάζεται Θέσεις με τις ακόλουθες πρόσθετες πληροφορίες για κάθε θέση:

Το πεδίο Αναγνωριστικό θέσης σε αυτόν τον πίνακα είναι παρόμοιο με το πεδίο Αναγνωριστικό προσωπικού στον πίνακα "Υπάλληλοι" - είναι ένας μοναδικός δημιουργούμενος ακέραιος που δημιουργείται όταν προστίθεται μια θέση στη βάση δεδομένων.

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

Όταν εξετάζετε τη δομή των πινάκων, το πεδίο που καθορίζει τη σχέση είναι πιθανόν προφανές - το πεδίο ID Position. Κάθε υπάλληλος μπορεί να έχει μόνο μία θέση και η θέση αυτή προσδιορίζεται συμπεριλαμβάνοντας το αναγνωριστικό θέσης από την αντίστοιχη καταχώριση του πίνακα θέσεων. Πέραν του ότι είναι το πρωτεύον κλειδί για τον πίνακα Positions, σε αυτό το παράδειγμα, το πεδίο Position Position είναι επίσης ένα ξένο κλειδί από τον πίνακα Employees στον πίνακα Positions. Στη συνέχεια, η βάση δεδομένων μπορεί να χρησιμοποιήσει αυτό το πεδίο για να συσχετίσει τις πληροφορίες από πολλούς πίνακες και να διασφαλίσει ότι τυχόν αλλαγές ή προσθήκες στη βάση δεδομένων συνεχίζουν να επιβάλλουν την ακεραιότητα αναφοράς .

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

SELECT FirstName, LastName, Τίτλος ΑΠΟ ΕΡΓΑΖΟΜΕΝΕΣ Θέσεις INNER JOIN ON Employees.PositionID = Positions.PositionID

Δημιουργία ξένων πλήκτρων στον SQL Server

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

Δείτε πώς θα δημιουργήσετε το ξένο κλειδί στον SQL Server:

ALTER TABLE Υπάλληλοι ΠΡΟΣΘΗΚΗ ΕΞΩΤΕΡΙΚΟΥ ΚΛΕΙΔΙΟΥ (PositionID) ΑΝΑΦΟΡΕΣ Θέσεις (PositionID)

Μπορείτε επίσης να δημιουργήσετε ένα ξένο κλειδί όταν δημιουργείτε έναν πίνακα προσθέτοντας τη ρήτρα:

ΞΕΝΕΣ ΒΑΣΙΚΕΣ ΑΝΑΦΟΡΕΣ Θέσεις (PositionID)

έως το τέλος του ορισμού της στήλης για τη στήλη ξένου κλειδιού.