Skip to main content

Μία από πολλές σχέσεις σε μια βάση δεδομένων

Access 2010 - Σχέσεις πινάκων. Εισαγωγικά (Ενδέχεται 2024)

Access 2010 - Σχέσεις πινάκων. Εισαγωγικά (Ενδέχεται 2024)
Anonim

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

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

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

Γιατί η καθιέρωση μιας σχέσης ενός προς πολλούς είναι σημαντική

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

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

Δάσκαλοι και μαθήματα
Teacher_IDTeacher_NameΣειρά μαθημάτων
Teacher_001CarmenΒιολογία
Teacher_002ΒερενίκηΜαθηματικά
Teacher_003JorgeΑγγλικά

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

Δάσκαλοι και μαθήματα
Teacher_IDΔάσκαλος_ΟνομαΣειρά μαθημάτων
Teacher_001CarmenΒιολογία, Μαθηματικά
Teacher_002ΒερενίκηΜαθηματικά
Teacher_003JorgeΑγγλικά

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

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

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

Δάσκαλοι και μαθήματα
Δάσκαλος_ΤΑΥΤΟΤΗΤΑΔάσκαλος_ΟνομαΣειρά μαθημάτων
Teacher_001CarmenΒιολογία
Teacher_001CarmenΜαθηματικά
Teacher_002ΒερενίκηΜαθηματικά
Teacher_003JorgeΑγγλικά

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

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

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

Εδώ, αφαιρέσαμε τη στήλη "Τίτλος" στον πίνακα "Δάσκαλοι":

Καθηγητές
Δάσκαλος_ΤΑΥΤΟΤΗΤΑΔάσκαλος_Ονομα
Teacher_001Carmen
Teacher_002Βερενίκη
Teacher_003Jorge

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

ΚΥΚΛΟΣ ΜΑΘΗΜΑΤΩΝ
Αναγνωριστικό_χρήστηCourse_NameTeacher_ID
Course_001ΒιολογίαTeacher_001
Course_002ΜαθηματικάTeacher_001
Course_003ΑγγλικάTeacher_003

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

Αυτό μας λέει ότι τόσο η Βιολογία όσο και το Μαθηματίδιο διδάσκονται από την Carmen και ότι ο Jorge διδάσκει αγγλικά.

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

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