Σχέσεις One-to-Many σε μια βάση δεδομένων

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

Σχέσεις One-to-Many σε μια βάση δεδομένων
Σχέσεις One-to-Many σε μια βάση δεδομένων
Anonim

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

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

Οι βάσεις δεδομένων μπορούν επίσης να εφαρμόσουν μια σχέση ένας προς έναν και μια σχέση πολλά προς πολλά.

Image
Image

Παράδειγμα μιας σχέσης ένα προς πολλά

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

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

Γιατί είναι σημαντική η δημιουργία μιας σχέσης ένα προς πολλά

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

Τήρηση στο σχέδιο πρώτης κανονικής μορφής

Ίσως δημιουργήσαμε έναν πίνακα στον οποίο θέλουμε να καταγράψουμε το όνομα και τα μαθήματα που διδάσκονται. Μπορούμε να σχεδιάσουμε έναν πίνακα καθηγητών και μαθημάτων ως εξής:

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

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

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

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

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

Ο δεύτερος κανόνας κανονικής φόρμας

Μια άλλη εναλλακτική σχεδιασμού μπορεί να είναι η προσθήκη ενός δεύτερου δίσκου για την Carmen:

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

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

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

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

Πώς να σχεδιάσετε μια βάση δεδομένων με ένα προς πολλές σχέσεις

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

Εδώ, καταργήσαμε τη στήλη Μάθημα στον πίνακα Καθηγητές:

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

Και εδώ είναι ο πίνακας μαθημάτων. Σημειώστε ότι το ξένο κλειδί του, Teacher_ID, συνδέει ένα μάθημα με έναν δάσκαλο στον πίνακα Teachers:

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

Έχουμε αναπτύξει μια σχέση μεταξύ του πίνακα Καθηγητών και Μαθημάτων χρησιμοποιώντας ένα ξένο κλειδί. Αυτή η διάταξη μας λέει ότι η Κάρμεν διδάσκει Βιολογία και Μαθηματικά και ότι ο Χόρχε διδάσκει αγγλικά.

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

Συνιστάται: