Αυτό το άρθρο εξηγεί ορολογία κανονικοποίηση της βάσης δεδομένων
για τους αρχάριους. Μια βασική Κατανόηση της ορολογίας αυτό είναι χρήσιμο όταν
συζήτηση τη σχεδίαση μιας σχεσιακής βάσης δεδομένων.
ΣΗΜΕΊΩΣΗ: η Microsoft παρέχει επίσης μια εκπομπή που ασχολείται με τα βασικά στοιχεία του
κανονικοποίηση της βάσης δεδομένων. Για να προβάλετε αυτήν την εκπομπή στο Web, επισκεφθείτε την ακόλουθη
Τοποθεσία Web της Microsoft:
Περιγραφή της κανονικοποίησης
Κανονικοποίηση είναι η διαδικασία οργάνωσης δεδομένων σε μια βάση δεδομένων.
Αυτό περιλαμβάνει τη δημιουργία πινάκων και τη δημιουργία σχέσεων μεταξύ των
πίνακες σύμφωνα με κανόνες που έχουν σχεδιαστεί τόσο για την προστασία των δεδομένων και για να το
η βάση δεδομένων πιο ευέλικτο, εξαλείφοντας εφεδρεία και ασυνεπής εξάρτησης.
Περιττά δεδομένα σπατάλουν χώρο στο δίσκο και δημιουργούν προβλήματα συντήρησης.
Εάν πρέπει να αλλάξει δεδομένα που υπάρχουν σε περισσότερες από μία θέση, πρέπει να είναι τα δεδομένα
αλλάξει με τον ίδιο ακριβώς τρόπο σε όλες τις θέσεις. Είναι μια αλλαγή διεύθυνσης πελάτη
πολύ πιο εύκολο να εφαρμόσετε εάν τα δεδομένα αποθηκεύονται μόνο στον πίνακα πελάτες και
προορισμό άλλο στη βάση δεδομένων.
Τι είναι μια "ασυνεπής εξάρτηση";
Ενώ είναι διαισθητικό για αναζήτηση στον πίνακα "πελάτες" για τη διεύθυνση του χρήστη
συγκεκριμένο πελάτη, δεν είναι λογικό να αναζητήσει εκεί τον μισθό του
ο υπάλληλος που καλεί σε αυτόν τον πελάτη. Σχετίζεται μισθού του υπαλλήλου
ή εξαρτώνται από τον εργαζόμενο και συνεπώς θα πρέπει να μετακινηθούν στον πίνακα Employees.
Ασυνεπής εξαρτήσεις να μετατρέψετε τα δεδομένα δύσκολη πρόσβαση επειδή η διαδρομή
βρείτε τα δεδομένα μπορεί να είναι κατεστραμμένη ή λείπει.
Υπάρχουν μερικά κανόνες για
κανονικοποίηση της βάσης δεδομένων. Κάθε κανόνας ονομάζεται "κανονική φόρμα". Εάν ο πρώτος κανόνας
παρατηρείται, λέγεται ότι η βάση δεδομένων σε "πρώτη κανονική φόρμα" Εάν η πρώτη
παρατηρούνται τρεις κανόνες, τη βάση δεδομένων θεωρείται σε "τρίτη κανονική
φόρμα". Αν και τα άλλα επίπεδα της κανονικοποίησης είναι δυνατόν, την τρίτη κανονική φόρμα
θεωρείται το υψηλότερο επίπεδο που είναι απαραίτητες για τις περισσότερες εφαρμογές.
Ως
με πολλές τυπικές κανόνες και προδιαγραφές, πραγματικό κόσμο σενάρια κάνετε όχι πάντα
επιτρέπουν την τέλεια συμμόρφωσης. Σε γενικές γραμμές, απαιτεί πρόσθετες κανονικοποίηση
πίνακες και ορισμένοι πελάτες είναι αντιπαραγωγική. Εάν αποφασίσετε να παραβιάσει ένα από
τους τρεις πρώτους κανόνες της κανονικοποίησης, βεβαιωθείτε ότι η εφαρμογή σας
προβλέπει τυχόν προβλήματα που θα μπορούσε να συμβεί, όπως εφεδρικά δεδομένα και
ασυνεπής εξαρτήσεις.
Περιλαμβάνει τις παρακάτω περιγραφές
παραδείγματα.
Πρώτη κανονική μορφή
- Εξάλειψη επαναλαμβανόμενων ομάδων σε μεμονωμένους πίνακες.
- Δημιουργήστε έναν ξεχωριστό πίνακα για κάθε σύνολο συσχετισμένων δεδομένων.
- Αναγνώριση κάθε σύνολο δεδομένων σχετικά με ένα πρωτεύον κλειδί.
Μην χρησιμοποιείτε πολλά πεδία σε έναν πίνακα για να αποθηκεύσετε παρόμοια
τα δεδομένα. Για παράδειγμα, για να παρακολουθείτε ένα είδος αποθέματος που μπορεί να προέρχονται από δύο
πηγές, εγγραφή αποθεμάτων μπορεί να περιέχει πεδία για προμηθευτές και 1 κωδικό προμηθευτή
Κωδικός 2.
Τι συμβαίνει όταν προσθέσετε έναν τρίτο προμηθευτή; Προσθήκη ενός πεδίου είναι
δεν την απάντηση; απαιτεί πρόγραμμα και πίνακα τροποποιήσεις και όχι
ομαλή περιλαμβάνει ένα δυναμικό αριθμό προμηθευτών. Αντίθετα, τοποθετήστε όλες προμηθευτή
πληροφορίες σε έναν ξεχωριστό πίνακα που ονομάζεται προμηθευτές, στη συνέχεια συνδέστε αποθεμάτων σε προμηθευτές
με ένα πλήκτρο αριθμού είδους, ή τους προμηθευτές για την απογραφή με ένα κλειδί κωδικό προμηθευτή.
Δεύτερη κανονική μορφή
- Δημιουργία ξεχωριστών πινάκων για σύνολα τιμών που ισχύουν για
πολλαπλές εγγραφές.
- Αφορούν αυτούς τους πίνακες με ένα εξωτερικό κλειδί.
Εγγραφές δεν θα πρέπει να βασίζονται σε οτιδήποτε άλλο εκτός από έναν πίνακα
πρωτεύον κλειδί (ένα σύνθετο κλειδί, εάν είναι απαραίτητο). Για παράδειγμα, σκεφτείτε έναν πελάτη
διεύθυνση στο λογιστικό σύστημα. Η διεύθυνση είναι απαραίτητες για τον πίνακα "πελάτες",
αλλά επίσης από τις παραγγελίες, αποστολής, τιμολόγια, εισπρακτέοι λογαριασμοί, και
Πίνακες συλλογές. Αντί για την αποθήκευση της διεύθυνσης του πελάτη ως χωριστή
καταχώρηση σε κάθε έναν από αυτούς τους πίνακες, αποθηκεύστε το σε μια θέση, είτε με τους πελάτες
πίνακα ή σε ένα ξεχωριστό διευθύνσεις πίνακα.
Τρίτη κανονική μορφή
- Εξαλείψτε τα πεδία που δεν εξαρτώνται από αριθμό κλειδί.
Κάντε τιμές σε μια εγγραφή που δεν αποτελούν τμήμα του κλειδιού της εγγραφής
δεν ανήκει στον πίνακα. Γενικά, κάθε φορά που τα περιεχόμενα μιας ομάδας πεδίων
ενδέχεται να ισχύουν για περισσότερες από μία εγγραφή στον πίνακα, θα μπορούσατε να τοποθετήσετε τις
πεδία σε έναν ξεχωριστό πίνακα.
Για παράδειγμα, σε μια πρόσληψη υπαλλήλων
πίνακα, ένας υποψήφιος πανεπιστήμιο επωνυμία και διεύθυνση μπορεί να συμπεριληφθούν. Αλλά θα πρέπει
μια πλήρη λίστα των πανεπιστημίων για αλληλογραφία ομάδας. Εάν πανεπιστήμιο πληροφορίες
αποθηκεύεται στον πίνακα υποψηφίων, δεν υπάρχει τρόπος να λίστα πανεπιστημίων χωρίς
τρέχουσα υποψηφίων. Δημιουργήσετε έναν ξεχωριστό πίνακα πανεπιστήμια και να τη συνδέσετε με το
Πίνακα υποψηφίων με κλειδί κώδικα πανεπιστήμιο.
ΕΞΑΊΡΕΣΗ: Προσκολλημένο
η τρίτη κανονική φόρμα, ενώ θεωρητικά επιθυμητό, δεν είναι πάντα πρακτική.
Εάν έχετε έναν πίνακα "πελάτες" και θέλετε να εξαλείψετε όλων των πιθανών interfield
εξαρτήσεις, πρέπει να δημιουργήσετε ξεχωριστούς πίνακες για τις πόλεις, ΤΑΧΥΔΡΟΜΙΚΟΎΣ κώδικες, πωλήσεις
αντιπρόσωποι, κατηγορίες πελατών και κάθε άλλο στοιχείο που μπορεί να αναπαραχθεί
σε πολλές εγγραφές. Θεωρητικά, κανονικοποίηση αξίζει να ασκεί επαγγελματική δραστηριότητα. Ωστόσο, πολλά
μικρών πινάκων μπορεί να μειώσει τις επιδόσεις ή να υπερβαίνει το άνοιγμα του αρχείου και χωρητικότητα μνήμης.
Μπορεί να είναι πιο εφικτό να εφαρμόσετε τρίτη κανονική φόρμα μόνο στα δεδομένα που
αλλάζει συχνά. Εάν παραμένουν ορισμένα εξαρτώμενα πεδία, σχεδιάστε την εφαρμογή σας σε
απαιτούν από το χρήστη να επιβεβαιώσει όλα τα σχετικά πεδία όταν αλλάξει κάποια.
Άλλες μορφές κανονικοποίηση
Τέταρτο κανονική φόρμα, που ονομάζεται επίσης Boyce Codd κανονική φόρμα (BCNF),
και υπάρχουν Πέμπτη κανονική φόρμα, αλλά θεωρούνται σπάνια στην πρακτική σχεδίασης.
Αυτοί οι κανόνες, ανεξάρτητα μπορεί να οδηγήσει σε λιγότερο από τέλεια βάση δεδομένων σχεδίασης, αλλά
δεν πρέπει να επηρεάζουν τη λειτουργικότητα.
Κανονικοποίηση ένα παράδειγμα πίνακα
Αυτά τα βήματα παρουσιάζουν τη διαδικασία κανονικοποίηση μια φανταστική
Πίνακας φοιτητών.
- Πίνακας unnormalized:
Σύμπτυξη αυτού του πίνακαΑνάπτυξη αυτού του πίνακα
| Φοιτητής # | Σύμβουλος | Δημ δωμάτιο | Class1 | Class2 | Class3 |
|---|
| 1022 | Jones | 412 | 101-07 | 143-01 | 159-02 |
| 4123 | Παπαδόπουλος | 216 | 201-01 | 211-02 | 214-01 |
- Πρώτη κανονική φόρμα: Χωρίς επαναλαμβανόμενες ομάδες
Πίνακες
θα πρέπει να έχει μόνο δύο διαστάσεις. Εφόσον μία φοιτητής έχει περισσότερες κατηγορίες, αυτά
κλάσεις πρέπει να εμφανίζεται σε χωριστό πίνακα. Τα πεδία Class1, Class2 και Class3
με τις παραπάνω εγγραφές αποτελούν ενδείξεις προβλημάτων σχεδίασης.
Υπολογιστικά φύλλα
η τρίτη διάσταση που χρησιμοποιείτε συχνά, αλλά πίνακες δεν θα πρέπει να. Ένας άλλος τρόπος για να δείτε
Αυτό το πρόβλημα είναι με μια σχέση ένα-προς-πολλά, μην τοποθετείτε στη μία πλευρά και
την πλευρά πολλά στον ίδιο πίνακα. Αντί για αυτό, δημιουργήστε έναν άλλο πίνακα στην πρώτη κανονική
φόρμα, εξαλείφοντας την επαναλαμβανόμενη ομάδα (κλάση #), όπως φαίνεται παρακάτω:
Σύμπτυξη αυτού του πίνακαΑνάπτυξη αυτού του πίνακα
| Φοιτητής # | Σύμβουλος | Δημ δωμάτιο | Κλάση # |
|---|
| 1022 | Jones | 412 | 101-07 |
| 1022 | Jones | 412 | 143-01 |
| 1022 | Jones | 412 | 159-02 |
| 4123 | Παπαδόπουλος | 216 | 201-01 |
| 4123 | Παπαδόπουλος | 216 | 211-02 |
| 4123 | Παπαδόπουλος | 216 | 214-01 |
- Δεύτερη κανονική φόρμα: Εξάλειψη των περιττών δεδομένων
Σημείωση
πολλές κλάση # τιμές για κάθε τιμή φοιτητής # στον παραπάνω πίνακα. Κλάση #
δεν είναι λειτουργικά εξαρτώνται από την έκδοση για μαθητές # (πρωτεύον κλειδί), ώστε η σχέση
δεν είναι στη δεύτερη κανονική φόρμα.
Οι δύο ακόλουθοι πίνακες παρουσιάζουν
δεύτερη κανονική φόρμα:
Οι μαθητές:
Σύμπτυξη αυτού του πίνακαΑνάπτυξη αυτού του πίνακα
| Φοιτητής # | Σύμβουλος | Δημ δωμάτιο |
|---|
| 1022 | Jones | 412 |
| 4123 | Παπαδόπουλος | 216 |
Καταχώρηση:
Σύμπτυξη αυτού του πίνακαΑνάπτυξη αυτού του πίνακα
| Φοιτητής # | Κλάση # |
|---|
| 1022 | 101-07 |
| 1022 | 143-01 |
| 1022 | 159-02 |
| 4123 | 201-01 |
| 4123 | 211-02 |
| 4123 | 214-01 |
- Τρίτη κανονική φόρμα: Εξάλειψη δεδομένων δεν εξαρτάται από το
Κλειδί
Στο τελευταίο παράδειγμα, είναι Δημ-δωματίου (αριθμός γραφείου ο Σύμβουλος)
λειτουργικά εξαρτάται από το χαρακτηριστικό Σύμβουλος. Η λύση είναι να μετακινήσετε που
το χαρακτηριστικό από τον πίνακα "μαθητές" στον πίνακα σχολής, όπως φαίνεται
κάτω από:
Οι μαθητές:
Σύμπτυξη αυτού του πίνακαΑνάπτυξη αυτού του πίνακα
| Φοιτητής # | Σύμβουλος |
|---|
| 1022 | Jones |
| 4123 | Παπαδόπουλος |
Σχολή:
Σύμπτυξη αυτού του πίνακαΑνάπτυξη αυτού του πίνακα
| Όνομα | Δωμάτιο | ΤΜΗΜΑ |
|---|
| Jones | 412 | 42 |
| Παπαδόπουλος | 216 | 42 |
Αναγν. άρθρου: 283878 - Τελευταία αναθεώρηση: Τετάρτη, 8 Μαΐου 2013 - Αναθεώρηση: 8.0
Οι πληροφορίες σε αυτό το άρθρο ισχύουν για:
- Microsoft Office Access 2007
- Microsoft Office Access 2003
- Microsoft Access 2002 Standard Edition
| kbinfo kbdesign kbdatabase kbhowto kbmt KB283878 KbMtel |
Μηχανικά μεταφρασμένοΣΗΜΑΝΤΙΚΟ: Αυτό το άρθρο είναι προϊόν λογισμικού μηχανικής μετάφρασης της Microsoft και όχι ανθρώπινης μετάφρασης. Η Microsoft σάς προσφέρει άρθρα που είναι προϊόντα ανθρώπινης αλλά και μηχανικής μετάφρασης έτσι ώστε να έχετε πρόσβαση σε όλα τα άρθρα της Γνωσιακής Βάσης μας στη δική σας γλώσσα. Ωστόσο, ένα άρθρο που έχει προκύψει από μηχανική μετάφραση δεν είναι πάντα άριστης ποιότητας. Ενδέχεται να περιέχει λεξιλογικά, συντακτικά ή γραμματικά λάθη, όπως ακριβώς τα λάθη που θα έκανε ένας μη φυσικός ομιλητής επιχειρώντας να μιλήσει τη γλώσσα σας. Η Microsoft δεν φέρει καμία ευθύνη για τυχόν ανακρίβειες, σφάλματα ή ζημίες που προκύψουν λόγω τυχόν παρερμηνειών στη μετάφραση του περιεχομένου ή χρήσης του από τους πελάτες της. Επίσης, η Microsoft πραγματοποιεί συχνά ενημερώσεις στο λογισμικό μηχανικής μετάφρασης.
Η αγγλική έκδοση αυτού του άρθρου είναι η ακόλουθη:
283878
(http://support.microsoft.com/kb/283878/en-us/
)