Normalization vs Denormalization
Οι σχεσιακές βάσεις δεδομένων αποτελούνται από σχέσεις (σχετικοί πίνακες). Οι πίνακες αποτελούνται από στήλες. Εάν οι πίνακες είναι δύο μεγάλοι (δηλαδή πάρα πολλές στήλες σε έναν πίνακα), τότε μπορεί να προκύψουν ανωμαλίες της βάσης δεδομένων. Εάν οι πίνακες είναι δύο μικροί (δηλαδή η βάση δεδομένων αποτελείται από πολλούς μικρότερους πίνακες), θα ήταν αναποτελεσματικό για το ερώτημα. Η κανονικοποίηση και η αποκανονικοποίηση είναι δύο διαδικασίες που χρησιμοποιούνται για τη βελτιστοποίηση της απόδοσης της βάσης δεδομένων. Η κανονικοποίηση ελαχιστοποιεί τις απολύσεις που υπάρχουν στους πίνακες δεδομένων. Η αποκανονικοποίηση (αντίστροφη της κανονικοποίησης) προσθέτει περιττά δεδομένα ή δεδομένα ομάδας.
Τι είναι η κανονικοποίηση;
Η κανονικοποίηση είναι μια διαδικασία που εκτελείται για την ελαχιστοποίηση των απολύσεων που υπάρχουν σε δεδομένα σε σχεσιακές βάσεις δεδομένων. Αυτή η διαδικασία θα χωρίσει κυρίως τους μεγάλους πίνακες σε μικρότερους πίνακες με λιγότερες απολύσεις (που ονομάζονται "Κανονικές φόρμες"). Αυτοί οι μικρότεροι πίνακες θα σχετίζονται μεταξύ τους μέσω καλά καθορισμένων σχέσεων. Σε μια καλά κανονικοποιημένη βάση δεδομένων, οποιαδήποτε αλλαγή ή τροποποίηση δεδομένων θα απαιτεί την τροποποίηση μόνο ενός πίνακα. Η πρώτη κανονική μορφή (1NF), η δεύτερη κανονική μορφή (2NF) και η τρίτη κανονική μορφή (3NF) εισήχθησαν από τον Edgar F. Codd. Ο Boyce-Codd Normal Form (BCNF) εισήχθη το 1974 από τους Codd και Raymond F. Boyce. Οι ανώτερες κανονικές μορφές (4NF, 5NF και 6NF) έχουν οριστεί, αλλά χρησιμοποιούνται σπάνια.
Ένας πίνακας που συμμορφώνεται με το 1NF διασφαλίζει ότι αντιπροσωπεύει πραγματικά μια σχέση (δηλαδή δεν περιέχει εγγραφές που επαναλαμβάνονται) και δεν περιέχει χαρακτηριστικά που έχουν σχεσιακή αξία (δηλ.μι. όλα τα χαρακτηριστικά πρέπει να έχουν ατομικές τιμές). Για να συμμορφώνεται ένας πίνακας με το 2NF, θα πρέπει να συμμορφώνεται με το 1NF και κάθε χαρακτηριστικό που δεν αποτελεί μέρος οποιουδήποτε υποψήφιου κλειδιού (δηλαδή μη πρωταρχικά χαρακτηριστικά) θα πρέπει να εξαρτάται πλήρως από οποιοδήποτε από τα υποψήφια κλειδιά του πίνακα. Σύμφωνα με τον ορισμό του Codd, ένας πίνακας λέγεται ότι είναι σε 3NF, εάν και μόνο εάν, αυτός ο πίνακας είναι στη δεύτερη κανονική μορφή (2NF) και κάθε χαρακτηριστικό στον πίνακα που δεν ανήκει σε ένα υποψήφιο κλειδί θα πρέπει να εξαρτάται άμεσα από κάθε υποψήφιο κλειδί αυτού του πίνακα. Το BCNF (επίσης γνωστό ως 3.5NF) καταγράφει ορισμένες ανωμαλίες που δεν αντιμετωπίζονται από το 3NF.
Τι είναι η αποκανονικοποίηση;
Η αποκανονικοποίηση είναι η αντίστροφη διαδικασία της διαδικασίας κανονικοποίησης. Η αποκανονικοποίηση λειτουργεί προσθέτοντας περιττά δεδομένα ή ομαδοποιώντας δεδομένα για βελτιστοποίηση της απόδοσης. Παρόλο που η προσθήκη περιττών δεδομένων ακούγεται αντιπαραγωγική, μερικές φορές η αποκανονικοποίηση είναι μια πολύ σημαντική διαδικασία για να ξεπεραστούν ορισμένες από τις ελλείψεις στο λογισμικό σχεσιακής βάσης δεδομένων που ενδέχεται να επιφέρουν βαριές ποινές απόδοσης με κανονικοποιημένες βάσεις δεδομένων (ακόμη και συντονισμένες για υψηλότερη απόδοση). Αυτό συμβαίνει επειδή η ένωση πολλών σχέσεων (που είναι αποτελέσματα κανονικοποίησης) για την παραγωγή ενός αποτελέσματος σε ένα ερώτημα μπορεί μερικές φορές να είναι αργή ανάλογα με την πραγματική φυσική υλοποίηση των συστημάτων βάσης δεδομένων.
Ποια είναι η διαφορά μεταξύ Κανονικοποίησης και Αποκανονικοποίησης;
– Η κανονικοποίηση και η αποκανονικοποίηση είναι δύο διαδικασίες που είναι εντελώς αντίθετες.
– Η κανονικοποίηση είναι η διαδικασία διαίρεσης μεγαλύτερων πινάκων σε μικρότερους μειώνοντας τα πλεονάζοντα δεδομένα, ενώ η αποκανονικοποίηση είναι η διαδικασία προσθήκης περιττών δεδομένων για βελτιστοποίηση της απόδοσης.
– Η κανονικοποίηση πραγματοποιείται για την αποφυγή ανωμαλιών βάσεων δεδομένων.
– Η αποκανονικοποίηση πραγματοποιείται συνήθως για τη βελτίωση της απόδοσης ανάγνωσης της βάσης δεδομένων, αλλά λόγω των πρόσθετων περιορισμών που χρησιμοποιούνται για την αποκανονικοποίηση, η εγγραφή (δηλαδή οι λειτουργίες εισαγωγής, ενημέρωσης και διαγραφής) μπορεί να γίνει πιο αργή. Επομένως, μια αποκανονικοποιημένη βάση δεδομένων μπορεί να προσφέρει χειρότερη απόδοση εγγραφής από μια κανονικοποιημένη βάση δεδομένων.
– Συχνά συνιστάται να "κανονικοποιείτε έως ότου πονάει, αποκανονικοποιείτε μέχρι να λειτουργήσει".