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

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

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

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

Πώς λειτουργεί ένα ξένο κλειδί για να δημιουργήσετε μια σχέση

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

Για παράδειγμα, εξετάστε αυτούς τους δύο πίνακες που προσδιορίζουν ποιος δάσκαλος διδάσκει ποιο μάθημα. Εδώ, το πρωτεύον κλειδί του πίνακα Μαθήματα είναι Course_ID. Το ξένο κλειδί του είναι Teacher_ID:

Course_ID Όνομα_μαθήματος Teacher_ID
Course_001 Βιολογία Teacher_001
Course_002 Μαθηματικά Teacher_002
Course_003 Αγγλικά Teacher_003

Μπορείτε να δείτε ότι το ξένο κλειδί στα μαθήματα ταιριάζει με ένα πρωτεύον κλειδί στο Teachers:

Teacher_ID Όνομα_Δασκάλου
Teacher_001 Κάρμεν
Teacher_002 Veronica
Teacher_003 Χόρχε

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

Image
Image

Τύποι σχέσεων βάσεων δεδομένων

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

Ένα προς Ένα

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

Ένα-προς-Πολλά

Μια σχέση ένα προς πολλά επιτρέπει μια μεμονωμένη εγγραφή σε έναν πίνακα να σχετίζεται με πολλές εγγραφές σε έναν άλλο πίνακα. Σκεφτείτε μια επιχείρηση με βάση δεδομένων που έχει πίνακες Πελάτες και Παραγγελίες.

Ένας πελάτης μπορεί να αγοράσει πολλές παραγγελίες, αλλά μια μεμονωμένη παραγγελία δεν μπορούσε να συνδεθεί με πολλούς πελάτες. Επομένως, ο πίνακας Παραγγελίες θα περιέχει ένα ξένο κλειδί που ταιριάζει με το πρωτεύον κλειδί του πίνακα "Πελάτες", ενώ ο πίνακας "Πελάτες" δεν θα έχει ξένο κλειδί που να δείχνει προς τον πίνακα "Παραγγελίες".

Πολλά-προς-Πολλά

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

Και πάλι, η σχέση μεταξύ του πίνακα Πελάτες και Παραγγελίες είναι ένα προς πολλά, αλλά λάβετε υπόψη τη σχέση μεταξύ του πίνακα Παραγγελίες και Προϊόντα. Μια παραγγελία μπορεί να περιέχει πολλά προϊόντα και ένα προϊόν θα μπορούσε να συνδεθεί με πολλές παραγγελίες, καθώς πολλοί πελάτες ενδέχεται να υποβάλουν μια παραγγελία που περιέχει ορισμένα από τα ίδια προϊόντα. Αυτό το είδος σχέσης απαιτεί τουλάχιστον τρεις πίνακες.

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

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

Teacher_ID Όνομα_Δασκάλου Μάθημα
Teacher_001 Κάρμεν Βιολογία, Μαθηματικά
Teacher_002 Veronica Μαθηματικά
Teacher_003 Χόρχε Αγγλικά

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

Ή ίσως αποφασίσαμε να προσθέσουμε ένα δεύτερο ρεκόρ για την Carmen, προκειμένου να επιβάλουμε 1NF:

Teacher_ID Όνομα_Δασκάλου Μάθημα
Teacher_001 Κάρμεν Βιολογία
Teacher_001 Κάρμεν Μαθηματικά
Teacher_002 Veronica Μαθηματικά
Teacher_003 Χόρχε Αγγλικά

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

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

Συνιστάται: