Κατά τη διάρκεια της συνέντευξης, ορισμένοι συνεντευξιαζόμενοι θα ρωτήσουν για το παράδειγμα της βάσης δεδομένων, έχω μελετήσει βάσεις δεδομένων στο κολέγιο στο παρελθόν, αλλά δεν έχω ακούσει για το παράδειγμα ή ο δάσκαλος το έχει αναφέρει και δεν έχω δώσει προσοχή;
Υπάρχουν επί του παρόντος έξι παραδείγματα στις σχεσιακές βάσεις δεδομένων: το πρώτο παράδειγμα (1NF), το δεύτερο παράδειγμα (2NF), το τρίτο παράδειγμα (3NF), το παράδειγμα Bass-Cod (BCNF), το τέταρτο παράδειγμα (4NF) και το πέμπτο παράδειγμα (5NF, γνωστό και ως το τέλειο παράδειγμα).
Συνήθως χρησιμοποιούμε το πρώτο παράδειγμα (1NF), το δεύτερο παράδειγμα (2NF) και το τρίτο παράδειγμα (3NF), το οποίο είναι τα "τρία παραδείγματα" που θα συζητηθούν σε αυτό το άρθρο.
Πρώτο παράδειγμα (1NF): Απαιτεί κάθε στήλη του πίνακα της βάσης δεδομένων να είναι ένα αδιαίρετο στοιχείο ατομικών δεδομένων.
Διευκρινίζω:
Στον παραπάνω πίνακα, ούτε οι στήλες "Οικογενειακές πληροφορίες" ούτε "Σχολικές πληροφορίες" πληρούν τις απαιτήσεις ατομικότητας, επομένως δεν πληρούν το πρώτο παράδειγμα και προσαρμόζονται ως εξής:
Μπορεί να φανεί ότι κάθε προσαρμοσμένη στήλη είναι αδιαίρετη, επομένως ικανοποιεί το πρώτο παράδειγμα (1NF).
Παράδειγμα 2 (2NF): Με βάση το 1NF, τα χαρακτηριστικά χωρίς κώδικα πρέπει να εξαρτώνται πλήρως από τους υποψήφιους κωδικούς (εξάλειψη της μερικής εξάρτησης από τη συνάρτηση των μη κύριων χαρακτηριστικών στον κύριο κώδικα σε βάση 1NF)
Το δεύτερο παράδειγμα πρέπει να διασφαλίζει ότι κάθε στήλη στον πίνακα της βάσης δεδομένων σχετίζεται με το πρωτεύον κλειδί, όχι μόνο με ένα μέρος του πρωτεύοντος κλειδιού (κυρίως για ομόσπονδα πρωτεύοντα κλειδιά).
Διευκρινίζω:
Στην περίπτωση που φαίνεται στο παραπάνω διάγραμμα, η ίδια παραγγελία μπορεί να περιέχει διαφορετικά προϊόντα, επομένως το πρωτεύον κλειδί πρέπει να είναι ένας συνδυασμός "αριθμός παραγγελίας" και "αριθμός προϊόντος".
Ωστόσο, μπορεί να διαπιστωθεί ότι η ποσότητα του προϊόντος, η έκπτωση του προϊόντος και η τιμή του προϊόντος σχετίζονται με τον "αριθμό παραγγελίας" και τον "αριθμό προϊόντος", αλλά το ποσό της παραγγελίας και ο χρόνος παραγγελίας σχετίζονται μόνο με τον "αριθμό παραγγελίας" και δεν έχουν καμία σχέση με τον "αριθμό προϊόντος".
Αυτό δεν πληροί τις απαιτήσεις του δεύτερου παραδείγματος και προσαρμόζεται ως εξής, το οποίο πρέπει να χωριστεί σε δύο πίνακες:
Τρίτο παράδειγμα (3NF): Με βάση το 2NF, οποιοδήποτε μη κύριο χαρακτηριστικό δεν εξαρτάται από άλλα μη κύρια χαρακτηριστικά (εξαλείφοντας τις εξαρτήσεις μετάδοσης με βάση το 2NF)
Το τρίτο παράδειγμα πρέπει να διασφαλίζει ότι κάθε στήλη δεδομένων στον πίνακα δεδομένων σχετίζεται άμεσα με το πρωτεύον κλειδί και όχι έμμεσα.
Διευκρινίζω:
Στον παραπάνω πίνακα, όλα τα χαρακτηριστικά εξαρτώνται πλήρως από τον αριθμό του μαθητή, επομένως πληρούται το δεύτερο παράδειγμα, αλλά το "φύλο δασκάλου τάξης" και η "ηλικία δασκάλου τάξης" εξαρτώνται άμεσα από το "όνομα δασκάλου τάξης".
Αντί για το κύριο κλειδί "αριθμός μαθητή", πρέπει να γίνουν οι ακόλουθες προσαρμογές:
Με αυτόν τον τρόπο, πληρούνται οι απαιτήσεις του τρίτου παραδείγματος.
ps:如果把上表中的班主任姓名改成班主任教工号可能更确切,更符合实际情况,不过只要能理解就行。
BCNF (Bovce Codd Κανονική Μορφή Bacchus Paradigm)
Το τρίτο παράδειγμα διόρθωσης είναι να αποτραπεί η εξάρτηση μιας στήλης του πρωτεύοντος κλειδιού από άλλες στήλες του πρωτεύοντος κλειδιού. Όταν το 3NF εξαλείφει ορισμένες εξαρτήσεις συναρτήσεων και εξαρτήσεις συναρτήσεων μεταφοράς στον κύριο κωδικό χαρακτηριστικού, ονομάζεται BCNF.
Χαρακτηριστικός:
1. Όλα τα κύρια χαρακτηριστικά είναι πλήρως λειτουργικές εξαρτήσεις από κάθε κωδικό
2. Όλα τα κύρια χαρακτηριστικά εξαρτώνται πλήρως από τη λειτουργία κάθε κώδικα που δεν τον περιέχει
3. Δεν υπάρχουν χαρακτηριστικά που να είναι πλήρως λειτουργικά και να εξαρτώνται από οποιοδήποτε σύνολο ιδιοτήτων εκτός κώδικα
Για παράδειγμα, ο πίνακας αποθέματος (όνομα αποθήκης, όνομα διαχειριστή, όνομα προϊόντος, ποσότητα), το πρωτεύον κλειδί είναι (όνομα αποθήκης, όνομα διαχειριστή, όνομα προϊόντος), το οποίο ικανοποιεί τα τρία προηγούμενα παραδείγματα, αλλά υπάρχει εξάρτηση μεταξύ του ονόματος αποθήκης και του ονόματος διαχειριστή, επομένως η διαγραφή μιας αποθήκης θα προκαλέσει τη διαγραφή του διαχειριστή, επομένως το BCNF δεν είναι ικανοποιημένο.
4NF Τέταρτο Παράδειγμα
Τα μη κύρια χαρακτηριστικά δεν πρέπει να έχουν πολλαπλές τιμές. Εάν υπάρχει πολλαπλή τιμή, παραβιάζει το τέταρτο παράδειγμα. Το 4NF είναι ένα περιοριστικό σχεσιακό μοτίβο που δεν επιτρέπει μη τετριμμένες και μη εξαρτώμενες από τη συνάρτηση εξαρτήσεις πολλαπλών τιμών μεταξύ ιδιοτήτων.
Για παράδειγμα, ο πίνακας στοιχείων επικοινωνίας χρήστη (αναγνωριστικό χρήστη, σταθερό, κινητό τηλέφωνο), όπου το αναγνωριστικό χρήστη είναι το πρωτεύον κλειδί, το οποίο ικανοποιεί το BCNF, αλλά ένας χρήστης μπορεί να έχει πολλά σταθερά τηλέφωνα ή πολλά κινητά τηλέφωνα, τότε αυτός ο σχεδιασμός είναι παράλογος και πρέπει να αλλάξει σε (αναγνωριστικό χρήστη, τύπος επαφής, αριθμός τηλεφώνου).
Σημείωση: Εάν ληφθούν υπόψη μόνο οι εξαρτήσεις συναρτήσεων, το παράδειγμα με τον υψηλότερο βαθμό κανονικοποίησης των σχεσιακών μοτίβων είναι το BCNF. Εάν λάβετε υπόψη τις εξαρτήσεις πολλαπλών τιμών, είναι 4NF.
5NF Πέμπτο Παράδειγμα
Το πέμπτο παράδειγμα είναι το τελικό παράδειγμα, εξαλείφοντας την εξάρτηση σύνδεσης στο 4NF και το πέμπτο παράδειγμα πρέπει να πληροί τις ακόλουθες απαιτήσεις:
1. Το τέταρτο παράδειγμα πρέπει να πληρούται
2. Οι πίνακες πρέπει να μπορούν να αποσυντεθούν σε μικρότερους πίνακες, εκτός εάν αυτοί οι πίνακες έχουν λογικά το ίδιο πρωτεύον κλειδί με τον αρχικό πίνακα.
Σε γενικές πρακτικές εφαρμογές, το πέμπτο παράδειγμα δεν χρειάζεται να ληφθεί υπόψη.
Μεταφέρθηκε από:Η σύνδεση με υπερσύνδεσμο είναι ορατή. Αναφορά:Η σύνδεση με υπερσύνδεσμο είναι ορατή.
|