ΣΧΕΣΙΑΚΕΣ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΚΕΧΡΗΣ ΕΥΑΓΓΕΛΟΣ ΕΚΔΟΣΕΙΣ ΚΡΙΤΙΚΗ
Κεφάλαιο 8: Κανονικοποιηση Σχεσιακές Βάσεις Δεδομένων Ευάγγελος Κεχρής
Στόχοι του 8ου κεφαλαίου Στόχος του κεφαλαίου αυτού είναι να παρουσιάσει δύο εναλλακτικές προσεγγίσεις ανάπτυξης του σχήματος μίας βάσης δεδομένων: μία πρακτική προσέγγιση που βασίζεται σε εμπειρικές οδηγίες και μία μέθοδο που βασίζεται σε ένα θεμελιωμένο θεωρητικό υπόβαθρο και είναι γνωστή ως "κανονικοποίηση". Σχεσιακές Βάσεις Δεδομένων Ευάγγελος Κεχρής
Εκ των άνω προς τα κάτω Το σχήμα μίας ΒΔ μπορεί να προκύψει από τη μετατροπή ενός ΔΟΣ. Η προσέγγιση αυτή είναι γνωστή ως σχεδίαση «εκ των άνω προς τα κάτω»: Στην εκ των άνω προς τα κάτω σχεδίαση ξεκινάμε με τις οντότητες που αντιστοιχούν στους βασικούς πίνακες της ΒΔ Σχεσιακές Βάσεις Δεδομένων Ευάγγελος Κεχρής
Εκ των κάτω προς τα άνω Το σχήμα μίας ΒΔ μπορεί επίσης να προκύψει από μία διαδικασία «εκ των κάτω προς τα άνω». Στην προσέγγιση αυτή ξεκινάμε δημιουργώντας έναν μόνο πίνακα και με διαδοχικά βήματα ο πίνακας αυτός διασπάται σε μικρότερους πίνακες Σχεσιακές Βάσεις Δεδομένων Ευάγγελος Κεχρής
Δύο προσεγγίσεις Η πρώτη εναλλακτική: υιοθετεί πρακτικές οδηγίες που βασίζονται στην κοινή λογική προσφέρει έναν γρήγορο αλλά πιθανά ανασφαλή τρόπο για την ανάπτυξη του σχήματος μίας βάσης δεδομένων. Η δεύτερη εναλλακτική προσέγγιση, γνωστή ως «κανονικοποίηση», βασίζεται σε ένα καλά θεμελιωμένο θεωρητικό υπόβαθρο Σχεσιακές Βάσεις Δεδομένων Ευάγγελος Κεχρής
Πρακτικές οδηγίες Πρακτική Οδηγία 1: Το σχήμα μίας σχεσιακής ΒΔ πρέπει να μπορεί εύκολα να εξηγηθεί και να γίνει κατανοητό. Σύμφωνα με την 1η οδηγία θα πρέπει τα ονόματα των πινάκων της ΒΔ: να είναι απλά και να περιγράφουν με ακρίβεια το περιεχόμενο κάθε πίνακα Σχεσιακές Βάσεις Δεδομένων Ευάγγελος Κεχρής
Παράδειγμα 1ης οδηγίς Δίνεται ότι σε μία εταιρία διανομών: Ένας οδηγός οδηγάει ένα αυτοκίνητο Ένα αυτοκίνητο το οδηγούν πολλοί οδηγοί Ο παρακάτω πίνακας δείχνει τους οδηγούς και τα αυτοκίνητα που αυτοί οδηγούν στην εταιρία. Το όνομα του πίνακα αυτού (ΟΔΗΓΟΣ_ΚΑΙ_ΑΥΤΟΚΙΝΗΤΟ_ΠΟΥ_ΟΔΗΓΕΙ) είναι σε αρμονία με το νόημα των στηλών του πίνακα, αφού ο πίνακας περιέχει δεδομένα και για τους οδηγούς και για τα αυτοκίνητα που αυτοί οδηγούν. Ωστόσο, το όνομα του πίνακα δεν είναι απλό. ΟΔΗΓΟΣ_ΚΑΙ_ΑΥΤΟΚΙΝΗΤΟ_ΠΟΥ_ΟΔΗΓΕΙ ΑριθμόςΔιπλώματος ΗμερομηνίαΈκδοσης ΑριθΚυκλοφορίας ΗμερομηνίαΑγοράς Χρώμα Σχεσιακές Βάσεις Δεδομένων Ευάγγελος Κεχρής
Άρση του κακού σχεδιασμού Ένας τρόπος να λυθεί το πρόβλημα του κακού σχεδιασμού του πίνακα, είναι να δημιουργηθούν δύο πίνακες, ΟΔΗΓΟΣ, ΑΥΤΟΚΙΝΗΤΟ. Υπενθυμίζεται ότι : Ένας οδηγός οδηγάει ένα αυτοκίνητο Ένα αυτοκίνητο το οδηγούν πολλοί οδηγοί ΟΔΗΓΟΣ Ξ.Κ. ΑριθμόςΔιπλώματος ΗμερομηνίαΈκδοσης ΑριθΚυκλοφορίας ΑΥΤΟΚΙΝΗΤΟ ΑριθΚυκλοφορίας ΗμερομηνίαΑγοράς Χρώμα Σχεσιακές Βάσεις Δεδομένων Ευάγγελος Κεχρής
2η πρακτική οδηγία Πρακτική Οδηγία 2: Οι πίνακες πρέπει να σχεδιάζονται έτσι ώστε να αποφεύγεται όσο το δυνατόν περισσότερο η εισαγωγή της τιμής NULL. Σχεσιακές Βάσεις Δεδομένων Ευάγγελος Κεχρής
Παράδειγμα εφαρμογής 2ης οδηγίας ΕΡΓΑΖΟΜΕΝΟΣ ΑΦΜ Όνομα Επώνυμο Ημερ Γέννησης Αριθμός Διπλώματος ΗμερΈκδοσης Στον πίνακα ΕΡΓΑΖΟΜΕΝΟΙ καταχωρούνται τα δεδομένα των εργαζομένων μίας επιχείρησης. Μας δίνεται ότι στην επιχείρηση αυτή, οι περισσότεροι εργαζόμενοι δεν είναι κάτοχοι διπλώματος οδήγησης, ΑΡΑ: οι περισσότερες γραμμές του πίνακα στις στήλες ΑριθμόςΔιπλώματος και ΗμερομηνίαΈκδοσηςΔιπλώματος θα έχουν την τιμή NULL. Σχεσιακές Βάσεις Δεδομένων Ευάγγελος Κεχρής
Άρση κακής σχεδίασης Για να άρουμε την κακή σχεδίαση δημιουργούμε δύο πίνακες: ο ένας πίνακας θα περιέχει δεδομένα για όλους τους εργαζόμενους της επιχείρησης, ενώ ο δεύτερος πίνακας θα περιέχει δεδομένα μόνο για όσους εργαζόμενους είναι οδηγοί ΕΡΓΑΖΟΜΕΝΟΣ ΑΦΜ Όνομα Επώνυμο ΗμερΓέννησης ΟΔΗΓΟΣ ΑΦΜ ΑριθμόςΔιπλώματος ΉμερΈκδοσηςΔιπλώματος Σχεσιακές Βάσεις Δεδομένων Ευάγγελος Κεχρής
Ανωμαλίες εισαγωγής, διαγραφής και ενημέρωσης Μέχρι τώρα είδαμε ότι πίνακες που δεν έχουν σχεδιαστεί καλά, παρουσιάζουν ορισμένα προβλήματα: είναι δύσκολο να τους δοθεί ένα απλό όνομα ή επιβάλλουν τη συχνή χρήση της τιμής null. Εκτός των προβλημάτων αυτών, κακώς σχεδιασμένοι πίνακες παρουσιάζουν και άλλα προβλήματα που σχετίζονται με την εισαγωγή, τη διαγραφή και την τροποποίηση των δεδομένων τους και είναι γνωστά ως ανωμαλίες εισαγωγής, διαγραφής και τροποποίησης Σχεσιακές Βάσεις Δεδομένων Ευάγγελος Κεχρής
1ο Παράδειγμα ανωμαλίας εισαγωγής ΟΔΗΓΟΣ_ΚΑΙ_ΑΥΤΟΚΙΝΗΤΟ_ΠΟΥ_ΟΔΗΓΕΙ Αριθμός Διπλώματος Ημερ ΈκδοσηςΔιπλ Αριθ Κυκλοφορίας Αγοράς Χρώμα Μας δίνεται ο παραπάνω πίνακας. Σε περίπτωση που έχει γίνει η πρόσληψη ενός νέου οδηγού αλλά δεν έχει αποφασιστεί ακόμη ποιο αυτοκίνητο θα οδηγεί αυτός. Θα πρέπει να εισαχθεί μία γραμμή στον πίνακα η οποία θα περιέχει τον ΑριθμόςΔιπλώματος του οδηγού και την ΗμερΈκδοσηςΔιπλ, αλλά στη θέση του ΑριθΚυκλοφορίας και ΗμερΑγοράς θα πρέπει να δοθεί η τιμή NULL. Εδώ λοιπόν εισάγουμε αρκετά NULL Σχεσιακές Βάσεις Δεδομένων Ευάγγελος Κεχρής
2ο Παράδειγμα ανωμαλίας εισαγωγής ΟΔΗΓΟΣ_ΚΑΙ_ΑΥΤΟΚΙΝΗΤΟ_ΠΟΥ_ΟΔΗΓΕΙ Αριθμός Διπλώματος Ημερ ΈκδοσηςΔιπλ Αριθ Κυκλοφορίας Αγοράς Χρώμα Στον ίδιο πίνακα με προηγουμένως, ας υποθέσουμε ότι έχει αγοραστεί ένα νέο αυτοκίνητο αλλά δεν έχει αποφασιστεί ακόμη ποιοι οδηγοί θα το οδηγούν, Θα πρέπει να δοθεί η τιμή NULL στο πεδίο ΑριθμόςΔιπλώματος, όμως αυτό είναι αδύνατο να γίνει γιατί ο ΑριθμόςΔιπλώματος είναι πρωτεύον κλειδί, και αυτό θα παραβίαζε την ακεραιότητα οντότητας. Τα παραπάνω προβλήματα αυτά αναφέρονται ως ανωμαλίες εισαγωγής (insertion anomaly). Σχεσιακές Βάσεις Δεδομένων Ευάγγελος Κεχρής
Παράδειγμα ανωμαλίας διαγραφής ΟΔΗΓΟΣ_ΚΑΙ_ΑΥΤΟΚΙΝΗΤΟ_ΠΟΥ_ΟΔΗΓΕΙ Αριθμός Διπλώματος Ημερομηνία Έκδοσης ΑριθΚυκλοφορίας ΗμερΑγοράς Χρώμα 1234 10/3/98 ΕΡΗ 1234 17/3/2000 Γκρι 2345 12/6/85 ΝΕΑ 1234 20/6/2003 Λευκό 3456 23/7/00 4567 2/1/96 Διαγραφή της εγγραφής με Αριθμό Κυκλφορίας 2345, έχει ως αποτέλεσμα να χαθούν τα δεδομένα που αφορούν το αυτοκίνητο με αριθμό κυκλοφορίας ΝΕΑ 1234, δηλ. ότι το αυτοκίνητο αυτό: είναι λευκό και αγοράστηκε στις 20/5/2003 Σχεσιακές Βάσεις Δεδομένων Ευάγγελος Κεχρής
Ανωμαλία διαγραφής Το πρόβλημα της απώλειας, δεδομένων εξαιτίας της διαγραφής μίας μοναδικής εγγραφής, αναφέρεται ως ανωμαλία διαγραφής (deletion anomaly). Σχεσιακές Βάσεις Δεδομένων Ευάγγελος Κεχρής
Ανωμαλίες ενημέρωσης Σε κακώς σχεδιασμένους πίνακες απαιτείται ιδιαίτερη προσοχή κατά την τροποποίηση: η τροποποίηση θα πρέπει να γίνει σε όλες τις εγγραφές του πίνακα. Το πρόβλημα αυτό αναφέρεται ως ανωμαλία τροποποίησης (update anomaly). Σχεσιακές Βάσεις Δεδομένων Ευάγγελος Κεχρής
Παράδειγμα ανωμαλίας ενημέρωσης ΟΔΗΓΟΣ_ΚΑΙ_ΑΥΤΟΚΙΝΗΤΟ_ΠΟΥ_ΟΔΗΓΕΙ Αριθμός Διπλώματος Ημερομηνία Έκδοσης ΑριθΚυκλοφορίας ΗμερΑγοράς Χρώμα 1234 10/3/98 ΕΡΗ 1234 17/3/2000 Γκρι 2345 12/6/85 ΝΕΑ 1234 20/6/2003 Λευκό 3456 23/7/00 4567 2/1/96 Αν το αυτοκίνητο ΕΡΗ 1234 βαφεί κίτρινο, τότε και όλες οι εγγραφές στις οποίες αναφέρεται το αυτοκίνητο αυτό θα πρέπει να τροποποιηθούν από γκρι σε κίτρινο. Σχεσιακές Βάσεις Δεδομένων Ευάγγελος Κεχρής
3η Πρακτική οδηγία Πρακτική Οδηγία 3: Οι πίνακες πρέπει να σχεδιάζονται έτσι ώστε να αποφεύγονται οι ανωμαλίες εισαγωγής, διαγραφής και τροποποίησης. Όταν διαπιστώνονται ανωμαλίες εισαγωγής, διαγραφής και ενημέρωσης, αυτές αίρονται με την κατάλληλη διάσπαση του αρχικού κακώς σχεδιασμένου πίνακα. Σχεσιακές Βάσεις Δεδομένων Ευάγγελος Κεχρής
Παράδειγμα άρσης των ανωμαλιών εισαγωγής, διαγραφής, τροποποίησης ΟΔΗΓΟΣ_ΚΑΙ_ΑΥΤΟΚΙΝΗΤΟ_ΠΟΥ_ΟΔΗΓΕΙ Αριθμός Διπλώματος Ημερομηνία Έκδοσης ΑριθΚυκλοφορίας ΗμερΑγοράς Χρώμα 1234 10/3/98 ΕΡΗ 1234 17/3/2000 Γκρι 2345 12/6/85 ΝΕΑ 1234 20/6/2003 Λευκό 3456 23/7/00 4567 2/1/96 Η ανωμαλία εισαγωγής του παραπάνω πίνακα μπορεί να εξαλειφθεί διασπώντας, τον αρχικό πίνακα σε δύο πίνακες: ο ένας πίνακας θα χρησιμοποιείται για αποθήκευση των δεδομένων των οδηγών, ενώ ο άλλος για τα δεδομένα των αυτοκινήτων. Σχεσιακές Βάσεις Δεδομένων Ευάγγελος Κεχρής
Παράδειγμα άρσης των ανωμαλιών εισαγωγής, διαγραφής, τροποποίησης ΟΔΗΓΟΣ ξ.κ. Αριθμός Διπλώματος Ημερομηνία Έκδοσης Αριθ Κυκλοφορίας 1234 10/3/98 ΕΡΗ 1234 2345 12/6/85 ΝΕΑ 1234 3456 23/7/00 4567 2/1/96 ΑΥΤΟΚΙΝΗΤΟ Αριθ Κυκλοφορίας Ημερ Αγοράς Χρώμα ΕΡΗ 1234 17/3/2000 Γκρι ΝΕΑ 1234 20/6/2003 Λευκό Υπενθυμίζεται ότι: ένας οδηγός οδηγεί ένα αυτοκίνητο ΑΡΑ: θα πρέπει το πρωτεύον κλειδί του πίνακα ΑΥΤΟΚΙΝΗΤΟ να προστεθεί ως ξένο κλειδί στον πίνακα ΟΔΗΓΟΣ. Σχεσιακές Βάσεις Δεδομένων Ευάγγελος Κεχρής
Απόδειξη της άρσης των ανωμαλιών ΟΔΗΓΟΣ ξ.κ. Αριθμός Διπλώματος Ημερομηνία Έκδοσης Αριθ Κυκλοφορίας 1234 10/3/98 ΕΡΗ 1234 2345 12/6/85 ΝΕΑ 1234 3456 23/7/00 4567 2/1/96 ΑΥΤΟΚΙΝΗΤΟ Αριθ Κυκλοφορίας Ημερ Αγοράς Χρώμα ΕΡΗ 1234 17/3/2000 Γκρι ΝΕΑ 1234 20/6/2003 Λευκό Τώρα δεν υπάρχει η ανωμαλία της εισαγωγής: Μπορούμε να εισάγουμε νέο αυτοκίνητο χωρίς οδηγό στον πίνακα ΑΥΤΟΚΙΝΗΤΟ Μπορούμε να εισάγουμε νέο οδηγό που δεν οδηγάει κανένα αυτοκίνητο στον πίνακα ΟΔΗΓΟΣ (το ξ.κ. θα έχει την τιμή NULL – γεγονός που επιτρέπεται) Η διαγραφή του οδηγού με αρ. διπλ. 2345 μπορεί να γίνει χωρίς πρόβλημα απώλειας δεδομένων Αν αλλάξει το χρώμα του αυτοκινήτου ΕΡΗ 1234 απαιτείται μία μόνο αλλαγή Σχεσιακές Βάσεις Δεδομένων Ευάγγελος Κεχρής
Συμπεράσματα ως τώρα Κακώς σχεδιασμένοι πίνακες εμφανίζουν σχεδιαστικά προβλήματα. Συγκεκριμένα: παρουσιάζουν πρόβλημα στη συνεπή ονοματοδοσία τους, μπορεί να επιβάλλουν συχνή χρήση της τιμής NULL και εμφανίζουν τις ανωμαλίες της εισαγωγής, διαγραφής και ενημέρωσης. Λύση στα προβλήματα αυτά είναι η διάσπαση των πινάκων που παρουσιάζουν τέτοιου είδους προβλήματα σε απλούστερους πίνακες. Σχεσιακές Βάσεις Δεδομένων Ευάγγελος Κεχρής
Κανονικοποίηση Στα προηγούμενα παραδείγματα, η διάσπαση των πινάκων έγινε με βάση τη διαίσθηση και την κοινή λογική, χωρίς να χρησιμοποιηθεί κάποια συγκεκριμένη θεωρητική μέθοδος. Η κανονικοποίηση (normaliza tion) είναι μία τυπική διαδικασία, η οποία επιτρέπει την αναγνώριση κακώς σχεδιασμένων πινάκων που παρουσιάζουν σχεδιαστικά προβλήματα και υποδεικνύει τον τρόπο με τον οποίο θα γίνει η διάσπαση των πινάκων ώστε να εξαλειφθούν τα προβλήματα αυτά. Σχεσιακές Βάσεις Δεδομένων Ευάγγελος Κεχρής
Συναρτησιακή εξάρτηση Μία θεμελιώδης έννοια που χρησιμοποιείται στην κανονικοποίηση είναι η συναρτησιακή εξάρτηση (functional dependency) Η συναρτησιακή εξάρτηση προσδιορίζει έναν περιορισμό ανάμεσα σε στήλες ενός πίνακα. Διαισθητικά, λέμε ότι για δύο χαρακτηριστικά Α και Β που ανήκουν σε έναν πίνακα R ισχύει η συναρτησιακή εξάρτηση Α Β αν κάθε τιμή του Α συνδέεται με μία μόνο τιμή του Β. Ο συμβολισμός Α Β διαβάζεται «το Β είναι συναρτησιακά εξαρτώμενο από το Α». Είναι δυνατό τα Α και Β να είναι σύνολα χαρακτηριστικών. Σχεσιακές Βάσεις Δεδομένων Ευάγγελος Κεχρής
Συναρτησιακή εξάρτηση: ορισμός Έστω ένας πίνακας R που περιέχει δύο σύνολα χαρακτηριστικών: το Α και το Β. Λέμε ότι Α Β όταν δύο οποιεσδήποτε πλειάδες γ1 και γ2 του R που έχουν τις ίδιες τιμές στο Α, οι πλειάδες αυτές έχουν τις ίδιες τιμές και στο Β. Σχεσιακές Βάσεις Δεδομένων Ευάγγελος Κεχρής
Μας δίνεται ότι: Α = {Χ1, Χ2}, Β = {Χ4, Χ5} και Α Β Χ3 Χ4 Χ5 α β ζ 1 2 δ ψ 3 ω γ ς 4 Μας δίνεται ότι: Α = {Χ1, Χ2}, Β = {Χ4, Χ5} και Α Β Παρατηρούμε ότι κάθε τιμή του τμήματος Α κάθε πλειάδας παρουσιάζεται πάντα με την ίδια τιμή στο τμήμα Β. Για παράδειγμα, όποτε στο τμήμα Α έχουμε για το X1 την τιμή α και στο Χ2 την τιμή β, τότε στο τμήμα Β έχουμε στο Χ4 την τιμή 1 και στο Χ5 την τιμή 2. Μπορούμε να πούμε, λοιπόν, ότι τα δεδομένα δεν παραβιάζουν την εξάρτηση Α Β που δόθηκε. Σχεσιακές Βάσεις Δεδομένων Ευάγγελος Κεχρής
Η συναρτησιακή εξάρτηση εκφράζει κάποιου είδους περιορισμό που αφορά τις τιμές των δεδομένων. Ο περιορισμός αυτός υποδεικνύει ότι όταν δίνονται κάποιες συγκεκριμένες τιμές στα χαρακτηριστικά που ανήκουν στο σύνολο Α, τότε υποχρεωτικά πρέπει να υπάρχουν κάποιες άλλες συγκεκριμένες τιμές στο σύνολο Β. Σχεσιακές Βάσεις Δεδομένων Ευάγγελος Κεχρής
Παράδειγμα συναρτησιακών εξαρτήσεων ΕΡΓΟ ΥΛΙΚΟ ΠΟΣΟΤΗΤΑ ΗΜΕΡ_ ΕΝΑΡΞΗΣ ΛΗΞΗΣ ΚΟΣΤΟΣ Ε1 X7 9 ΙΑΝ 90 ΜΑΡ 91 10 X9 11 22 X10 20 5 Ε2 17 ΙΟΥΝ 90 ΙΟΥΛ 91 X6 12 6 Σε έναν πίνακα μπορεί να ισχύουν πολλές συναρτησιακές εξαρτήσεις Δίνεται ότι για τον πίνακα αυτόν ισχύουν οι συναρτησιακές εξαρτήσεις: ΕΡΓΟ ΗΜΕΡ_ΕΝΑΡΞΗΣ, ΗΜΕΡ_ΛΗΞΗΣ ΕΡΓΟ, ΥΛΙΚΟ ΠΟΣΟΤΗΤΑ ΥΛΙΚΟ ΚΟΣΤΟΣ Σχεσιακές Βάσεις Δεδομένων Ευάγγελος Κεχρής
Παραβίαση συναρτησιακών εξαρτήσεων ΕΡΓΟ ΥΛΙΚΟ ΠΟΣΟΤΗΤΑ ΗΜΕΡ_ ΕΝΑΡΞΗΣ ΛΗΞΗΣ ΚΟΣΤΟΣ Ε1 X7 9 ΙΑΝ 90 ΜΑΡ 91 10 X9 11 22 X10 20 5 Ε2 17 ΙΟΥΝ 90 ΙΟΥΛ 91 X6 12 6 Η εισαγωγή της πλειάδας (Ε2, X7, 17, ΙΟΥΝ 90, ΑΥΓ 91, 7) παραβιάζει: την συναρτησιακή εξάρτηση ΕΡΓΟ ΗΜΕΡ_ΕΝΑΡΞΗΣ, ΗΜΕΡ_ΛΗΞΗΣ γιατί η ΗΜΕΡ_ΛΗΞΗΣ για το Ε2 πρέπει να είναι ΙΟΥΛ 91 (όπως φαίνεται στην 4η και την 5η πλειάδα του πίνακα) ενώ η νέα πλειάδα έχει ως ΗΜΕΡ_ΛΗΞΗΣ την τιμή ΑΥΓ 91, την συναρτησιακή εξάρτηση (ΥΛΙΚΟ ΚΟΣΤΟΣ) γιατί το ΚΟΣΤΟΣ για το υλικό Χ7 είναι 10 (όπως φαίνεται στην πρώτη πλειάδα του πίνακα ενώ στη νέα πλειάδα το ΚΟΣΤΟΣ έχει την τιμή 7. Σχεσιακές Βάσεις Δεδομένων Ευάγγελος Κεχρής
Συμβολισμοί συναρτησιακών εξαρτήσεων Ορισμένες φορές είναι βολικό μία συναρτησιακή εξάρτηση ΑΒ που ισχύει για τα χαρακτηριστικά ενός πίνακα να αναπαριστάνεται γραφικά πάνω στον πίνακα: Α Β Γ Δ Ε Α, Β, Γ Δ, Ε Α Β Α, Β Γ Σχεσιακές Βάσεις Δεδομένων Ευάγγελος Κεχρής
Συναρτησιακή εξάρτηση και σημασία των δεδομένων ΠΡΟΣΟΧΗ: Η συναρτησιακή εξάρτηση προκύπτει από τη σημασία (το νόημα) που έχουν τα δεδομένα και έχει επίδραση στις τιμέςτων δεδομένων. Δεν ισχύει το αντίθετο. Δηλαδή οι τιμές των δεδομένων δεν καθορίζουν τις συναρτησιακές εξαρτήσεις Για το λόγο αυτό δεν είναι δυνατόν απλώς κοιτώντας τα δεδομένα ενός πίνακα να προσδιοριστούν οι συναρτησιακές εξαρτήσεις που ισχύουν σε έναν πίνακα. Σχεσιακές Βάσεις Δεδομένων Ευάγγελος Κεχρής
Κανονικοποίηση Η κανονικοποίηση: είναι μία τυπική τεχνική, η οποία επιτρέπει: την ανάλυση πινάκων, ώστε να διαπιστωθεί αν οι πίνακες είναι κακώς σχεδιασμένοι, τον επανασχεδιασμό κακώς σχεδιασμένων πινάκων διασπώντας τους σε μικρότερους πίνακες. Σχεσιακές Βάσεις Δεδομένων Ευάγγελος Κεχρής
Η κανονικοποίηση ως σειρά βημάτων Η κανονικοποίηση επιτελείται ως μία σειρά βημάτων. Σε κάθε βήμα: αναλύεται και πιθανώς επανασχεδιάζεται κάθε πίνακας της ΒΔ με βάση ένα συγκεκριμένο κριτήριο-κανόνα. Ένα κριτήριο-κανόνας λέγεται κανονική μορφή (normal form) και ελέγχεται με μία συγκεκριμένη σειρά. Έτσι: το πρώτο βήμα της κανονικοποίησης λέγεται πρώτη κανονική μορφή (first normal form) και συμβολίζεται 1ΚΜ ή 1NF, το δεύτερο βήμα δεύτερη κανονική μορφή (second normal form) και συμβολίζεται ως 2ΚΜ ή 2NF, το τρίτο βήμα τρίτη κανονική μορφή (third normal form) και συμβολίζεται ως 3ΚΜ ή 3NF. Σχεσιακές Βάσεις Δεδομένων Ευάγγελος Κεχρής
Πρώτη κανονική μορφή (1 ΚΜ) Ένας πίνακας βρίσκεται στην πρώτη κανονική μορφή (1ΚΜ) εάν κάθε τιμή του που αποθηκεύεται στον πίνακα είναι ατομική και αδιαίρετη. Σχεσιακές Βάσεις Δεδομένων Ευάγγελος Κεχρής
Παράδειγμα ελέγχου πρώτης κανονικής μορφής Πόλη Πληθυσμός Μπύρα Σημεία Πώλησης Αθήνα 4,000,000 Ζύθος Ωμέγα Δίον 2000 3980 970 Θεσσαλονίκη 1,000,000 Αξιός Ιστορία 1200 950 Ο πίνακας δείχνει τον αριθμό των σημείων πώλησης μπύρας (super-market, ταβέρνες, εστιατόρια, κ.λπ.) σε διάφορες πόλεις. Π.χ: στη Θεσσαλονίκη, η οποία έχει πληθυσμό 1.000.000, η μπύρα Αξιός πωλείται σε 1.200 σημεία, ενώ η μπύρα Ιστορία πωλείται σε 950 σημεία. Ο πίνακας αυτός δεν βρίσκεται στην πρώτη κανονική μορφή (1ΚΜ ή 1NF) γιατί περιλαμβάνει τιμές του δεν είναι ατομικές: για την πόλη της Αθήνας υπάρχουν για τις στήλες Μπύρα και ΣημείαΠώλησης τρεις τιμές ενώ για την πόλη της Θεσσαλονίκης για τις ίδιες στήλες υπάρχουν δύο τιμές. Λέμε ότι στη σχέση αυτή υπάρχει μία επαναλαμβανόμενη ομάδα χαρακτηριστικών, η ομάδα (Μπύρα, ΣημείαΠώλησης). Σχεσιακές Βάσεις Δεδομένων Ευάγγελος Κεχρής
Παράδειγμα κανονικοποίησης πίνακα στην πρώτη κανονική μορφή Πόλη Πληθυσμός Μπύρα Σημεία Πώλησης Αθήνα 4,000,000 Ζύθος Ωμέγα Δίον 2000 3980 970 Θεσσαλονίκη 1,000,000 Αξιός Ιστορία 1200 950 Ένας πίνακας που δεν βρίσκεται στην 1ΚΜ, μπορεί να κανονικοποιηθεί ώστε να ανήκει στην 1ΚΜ με δύο διαφορετικούς τρόπους Σχεσιακές Βάσεις Δεδομένων Ευάγγελος Κεχρής
Κανονικοποίηση στη 1ΚΜ: 1ος τρόπος Πόλη Πληθυσμός Μπύρα ΣημείαΠώλησης Αθήνα 4,000,000 Ζύθος Ωμέγα Δίον 2000 3980 970 Θεσσαλονίκη 1,000,000 Αξιός Ιστορία 1200 950 Σύμφωνα με τον 1ο τρόπο για την κανονικοποίηση στην 1ΚΜ: ορίζεται κατάλληλα το πρωτεύον κλειδί του πίνακα και επαναλαμβάνονται τα απαραίτητα δεδομένα: Πόλη Πληθυσμός Μπύρα ΣημείαΠώλησης Αθήνα 4,000,000 Ζύθος 1000 Ωμέγα 980 Δίον 970 Θεσσαλονίκη 1,000,000 Αξιός 1200 Ιστορία 950 Σχεσιακές Βάσεις Δεδομένων Ευάγγελος Κεχρής
Κανονικοποίηση στη 1ΚΜ: 2ος τρόπος Πόλη Πληθυσμός Μπύρα ΣημείαΠώλησης Αθήνα 4,000,000 Ζύθος Ωμέγα Δίον 2000 3980 970 Θεσσαλονίκη 1,000,000 Αξιός Ιστορία 1200 950 Σύμφωνα με τον 2ο τρόπο για την κανονικοποίηση στην 1ΚΜ: διασπάται ο πίνακας σε δύο πίνακες που συνδέονται μεταξύ τους μέσω της κοινής στήλης : Ξ.κ. Πόλη Πληθυσμός Αθήνα 4,000,000 Θεσσαλονίκη 1,000,000 Πόλη Μπύρα ΣημείαΠώλησης Αθήνα Ζύθος 1000 Ωμέγα 980 Δίον 970 Θεσσαλονίκη Αξιός 1200 Ιστορία 950 Σχεσιακές Βάσεις Δεδομένων Ευάγγελος Κεχρής
Η 1 ΚΜ είναι υποχρεωτική Η πρώτη κανονική μορφή είναι η μόνη η οποία είναι υποχρεωτική για όλους του πίνακες μίας σχεσιακής βάσης δεδομένων. Δηλαδή, ένας πίνακας, για μπορέσει να υλοποιηθεί από ένα σχεσιακό ΣΔΒΔ, πρέπει οπωσδήποτε να βρίσκεται στην 1ΚΜ. Όλες οι άλλες κανονικές μορφές είναι προαιρετικές — με την έννοια ότι ακόμη και εάν ένας πίνακας δεν βρίσκεται σε κάποια από αυτές τις κανονικές μορφές μπορεί να υλοποιηθεί σε ένα σχεσιακό ΣΛΒΔ, παρόλο που δεν θα είναι ένας καλά σχεδιασμένος πίνακας. Σχεσιακές Βάσεις Δεδομένων Ευάγγελος Κεχρής
Πλήρης συναρτησιακή εξάρτηση Μία συναρτησιακή εξάρτηση A Β είναι πλήρης εάν όλα τα χαρακτηριστικά που ανήκουν στο Α απαιτούνται για την ύπαρξη της εξάρτησης: η αφαίρεση οποιουδήποτε χαρακτηριστικού του Α έχει ως συνέπεια τη μη ισχύ της εξάρτησης Α Β. Σχεσιακές Βάσεις Δεδομένων Ευάγγελος Κεχρής
Παράδειγμα μερικής συναρτησιακής εξάρτησης Πόλη Πληθυσμός Μπύρα ΣημείαΠώλησης Μία συναρτησιακή εξάρτηση που ισχύει είναι η ακόλουθη: {Πόλη, Πληθυσμός, Μπύρα} ΣημείαΠώλησης Η συναρτησιακή αυτή εξάρτηση δεν είναι πλήρης γιατί δεν απαιτούνται όλα τα χαρακτηριστικά ώστε να ισχύει η εξάρτηση: Έτσι, ακόμη και μετά την αφαίρεση του χαρακτηριστικού Πληθυσμός από τη συναρτησιακή εξάρτηση, η εξάρτηση θα εξακολουθεί να ισχύει. Σχεσιακές Βάσεις Δεδομένων Ευάγγελος Κεχρής
Παράδειγμα πλήρους συναρτησιακής εξάρτησης Πόλη Πληθυσμός Μπύρα ΣημείαΠώλησης Ας θεωρήσουμε τώρα τη συναρτησιακή εξάρτηση: {Πόλη, Μπύρα} ΣημείαΠώλησης Η συναρτησιακή αυτή εξάρτηση είναι πλήρης γιατί αν αφαιρεθεί είτε το χαρακτηριστικό Πόλη είτε το χαρακτηριστικό Μπύρα, η εξάρτηση παύει να ισχύει. Σχεσιακές Βάσεις Δεδομένων Ευάγγελος Κεχρής
Δεύτερη κανονική μορφή Μία σχέση ανήκει στη δεύτερη κανονική (2ΚΜ) μορφή αν είναι στην πρώτη κανονική μορφή και κάθε μη πρωτεύον χαρακτηριστικό της εξαρτάται συναρτησιακά πλήρως από το πρωτεύον κλειδί. Σχεσιακές Βάσεις Δεδομένων Ευάγγελος Κεχρής
Παράδειγμα ελέγχου δεύτερης κανονικής μορφής Πόλη Πληθυσμός Μπύρα ΣημείαΠώλησης Στον παραπάνω πίνακα ισχύουν οι συναρτησιακές εξαρτήσεις και Όπως φαίνεται από την συναρτησιακή εξάρτηση : Το μη πρωτεύον χαρακτηριστικό ΣημείαΠώλησης εξαρτάται πλήρως από το πρωτεύον κλειδί του πίνακα που είναι ο συνδυασμός {Πόλη, Μπύρα}. Ωστόσο, όπως φαίνεται από τη συναρτησιακή εξάρτηση το μη πρωτεύον χαρακτηριστικό Πληθυσμός εξαρτάται μόνον από μέρος του πρωτεύοντος κλειδιού: το χαρακτηριστικό Πόλη αρκεί από μόνο του για τον προσδιορισμό του πληθυσμού. Σύμφωνα με τη συναρτησιακή εξάρτηση , λοιπόν, υπάρχει ένα χαρακτηριστικό (Πληθυσμός) που δεν είναι πλήρως εξαρτώμενο από το πρωτεύον κλειδί. Εξαιτίας της συναρτησιακής εξάρτησης , ο πίνακας δεν ανήκει στην 2ΚΜ. Σχεσιακές Βάσεις Δεδομένων Ευάγγελος Κεχρής
Κανονικοποίηση στη 2Κ Μία σχέση που δεν είναι στη 2ΚΜ, μπορεί να διασπαστεί σε έναν αριθμό σχέσεων, καθεμία από τις οποίες ανήκει στην 2ΚΜ: κάθε μη πρωτεύον χαρακτηριστικό της αρχικής σχέσης περιλαμβάνεται σε μία νέα σχέση που έχει ως πρωτεύον κλειδί το τμήμα εκείνο του πρωτεύοντος κλειδιού της αρχικής σχέσης από το οποίο εξαρτάται πλήρως. Σχεσιακές Βάσεις Δεδομένων Ευάγγελος Κεχρής
Κανονικοποίηση στη 2Κ - παράδειγμα Πόλη Πληθυσμός Μπύρα ΣημείαΠώλησης ΠΟΛΗ Πόλη Πληθυσμός ΠΩΛΗΣΗ Πόλη Μπύρα ΣημείαΠώλησης Τα μη πρωτεύοντα χαρακτηριστικά είναι ο Πληθυσμός και τα ΣημείαΠώλησης. Το χαρακτηριστικό Πληθυσμός συμπεριλαμβάνεται σε μία νέα σχέση, η οποία έχει ως πρωτεύον κλειδί την Πόλη, Το χαρακτηριστικό ΣημείαΠώλησης συμπεριλαμβάνεται σε μία νέα σχέση που έχει ως σύνθετο πρωτεύον κλειδί τα {Πόλη, Μπύρα}. Οι σχέσεις που προκύπτουν έτσι ανήκουν στην 2ΚΜ. Σχεσιακές Βάσεις Δεδομένων Ευάγγελος Κεχρής
Μεταβατική συναρτησιακή εξάρτηση Μία συναρτησιακή εξάρτηση Α Γ λέγεται μεταβατική εάν υπάρχει ένα σύνολο χαρακτηριστικών Β το οποίο δεν είναι υποσύνολο κανενός κλειδιού, τέτοιο ώστε να ισχύουν οι εξαρτήσεις: Α Β και Β Γ. Όταν υπάρχει μία μεταβατική συναρτησιακή εξάρτηση Α Γ, λέμε ότι το χαρακτηριστικό Γ είναι μεταβατικά εξαρτώμενο από το Α. Σχεσιακές Βάσεις Δεδομένων Ευάγγελος Κεχρής
Παράδειγμα μεταβατικής συναρτησιακής εξάρτησης Πόλη Πληθυσμός Περιφέρεια ΑκαθάριστοΠροϊόνΠεριφέρειας Στη σχέση αυτή, υπάρχει η μεταβατική συναρτησιακή εξάρτηση: Πόλη ΑκαθάριστοΠροϊόνΠεριφέρειας, αφού υπάρχει το χαρακτηριστικό Περιφέρεια για το οποίο ισχύει: Πόλη Περιφέρεια και Περιφέρεια ΑκαθάριστοΠροϊόνΠεριφέρειας. ΑΡΑ: το ΑκαθάριστοΠροϊόνΠεριφέρειας είναι μεταβατικά εξαρτώμενο από το χαρακτηριστικό Πόλη που είναι το πρωτεύον κλειδί της σχέσης. Σχεσιακές Βάσεις Δεδομένων Ευάγγελος Κεχρής
Τρίτη κανονική μορφή Μία σχέση ανήκει στην τρίτη κανονική μορφή (3ΚΜ) όταν ανήκει ήδη στην 1ΚΜ και στη 2ΚΜ και κανένα μη πρωτεύον χαρακτηριστικό της δεν είναι μεταβατικά εξαρτώμενο από το πρωτεύον κλειδί της σχέσης. Σχεσιακές Βάσεις Δεδομένων Ευάγγελος Κεχρής
Παράδειγμα ελέγχου 3ης κανονικής μορφής Πόλη Πληθυσμός Περιφέρεια ΑκαθάριστοΠροϊόνΠεριφέρειας Η παραπάνω σχέση ανήκει στην 1ΚΜ και στην 2ΚΜ. Ωστόσο, στη σχέση αυτή υπάρχει το χαρακτηριστικό ΑκαθάριστοΠροϊόνΠεριφέρειας, το οποίο δεν αποτελεί πρωτεύον κλειδί και το οποίο είναι μεταβατικά εξαρτώμενο από το πρωτεύον κλειδί της σχέσης. : ΑΡΑ: η παραπάνω σχέση δεν ανήκει στην 3ΚΜ Σχεσιακές Βάσεις Δεδομένων Ευάγγελος Κεχρής
Κανονικοποίηση στην 3ΚΜ Μία σχέση η οποία δεν ανήκει στην 3ΚΜ, μπορεί να διασπαστεί σε έναν αριθμό σχέσεων καθεμία από τις οποίες ανήκει στην 3ΚΜ. Το μη πρωτεύον χαρακτηριστικό το οποίο είναι μεταβατικά εξαρτώμενο, μαζί με ένα αντίγραφο του χαρακτηριστικού που το προσδιορίζει, διασπώνται από την αρχική σχέση, δημιουργώντας μία νέα. Σχεσιακές Βάσεις Δεδομένων Ευάγγελος Κεχρής
Κανονικοποίηση στην 3ΚΜ - παράδειγμα Πόλη Πληθυσμός Περιφέρεια ΑκαθάριστοΠροϊόνΠεριφέρειας Πόλη Πληθυσμός Περιφέρεια Περιφέρεια ΑκαθάριστοΠροϊόνΠεριφέρειας Το μη πρωτεύον χαρακτηριστικό ΑκαθάριστοΠροϊόνΠεριφέρειας είναι μεταβατικά εξαρτώμενο και προσδιορίζεται από το ΑκαθάριστοΠροϊόνΠεριφέρειας Άρα: το ΑκαθάριστοΠροϊόνΠεριμέρειας μαζί με ένα αντίγραφο του χαρακτηριστικού Περιφέρεια αποσπώνται σε μία νέα σχέση. Οι δύο νέες σχέσεις ανήκουν στην 3ΚΜ: Σχεσιακές Βάσεις Δεδομένων Ευάγγελος Κεχρής
Κανονική μορφή Boyce-Codd Η 3ΚΜ δεν περιλαμβάνει μία περίπτωση κακώς σχεδιασμένων πινάκων που, αν και σπάνια, είναι δυνατόν να προκύψει. Για την αντιμετώπιση της περίπτωσης αυτής προτάθηκε η κανονική μορφή Boyce-Codd, η οποία είναι ισχυρότερη της 3ΚΜ και βασίζεται στην έννοια του υποψήφιου κλειδιού. Σχεσιακές Βάσεις Δεδομένων Ευάγγελος Κεχρής
Υποψήφια κλειδιά σχέσης Σε μία σχέση είναι δυνατόν να υπάρχουν περισσότερα του ενός χαρακτηριστικά, τα οποία να παίρνουν διαφορετικές τιμές για κάθε πλειάδα της σχέσης. Τα χαρακτηριστικά αυτά λέγονται υποψήφια κλειδιά. Ένα από τα υποψήφια κλειδιά γίνεται το πρωτεύον κλειδί της σχέσης. Σχεσιακές Βάσεις Δεδομένων Ευάγγελος Κεχρής
Παράδειγμα υποψήφιων κλειδιών Μία εταιρεία διαχείρισης ευρωπαϊκών προγραμμάτων διαχειρίζεται έναν μεγάλο αριθμό έργων. Για την εταιρεία αυτή διαχείρισης ευρωπαϊκών προγραμμάτων ισχύουν τα ακόλουθα: Κάθε έργο αποτελείται από πολλές δραστηριότητες. Διαφορετικά έργα μπορεί να έχουν τις ίδιες δραστηριότητες, αλλά σε κάθε έργο μία δραστηριότητα εμφανίζεται μία μόνο φορά. Κάθε δραστηριότητα ενός έργου επιβλέπεται από έναν εργαζόμενο της εταιρείας που ορίζεται ως υπεύθυνος δραστηριότητας. Κάθε εργαζόμενος στην εταιρεία εξειδικεύεται σε μία συγκεκριμένη δραστηριότητα. Σχεσιακές Βάσεις Δεδομένων Ευάγγελος Κεχρής
Κατακύρωση Διαγωνισμού Έργο Δραστηριότητα Υπεύθυνος Δραστηριότητας Ε1 Σύνταξη Προδιαγραφών Δημόπουλος Σύνταξη Προκήρυξης Προκοπίου Κατακύρωση Διαγωνισμού Διαλεκτός Ε2 Κωνσταντίνου Το χαρακτηριστικό Έργο από μόνο του δεν μπορεί να είναι πρωτεύον κλειδί γιατί σε κάθε έργο υπάρχουν πολλές δραστηριότητες. Ωστόσο, το {Έργο, Δραστηριότητα} είναι ένα υποψήφιο κλειδί, γιατί σε ένα έργο κάθε δραστηριότητα εμφανίζεται μία μόνο φορά. Επίσης, επειδή ένας υπεύθυνος δραστηριότητας χειρίζεται ένα μόνο είδος δραστηριότητας και σε ένα έργο μία δραστηριότητα εμφανίζεται μία μόνο φορά, το {Έργο, ΥπεύθυνοςΔραστηριότητας} είναι επίσης υποψήφιο κλειδί. Σχεσιακές Βάσεις Δεδομένων Ευάγγελος Κεχρής
Η Boyce-Codd κανονική μορφή (BC KM) Σχεσιακές Βάσεις Δεδομένων Ευάγγελος Κεχρής
Παράδειγμα ελέγχου στην Boyce-Codd κανονική μορφή Έργο Δραστηριότητα ΥπεύθυνοςΔραστηριότητας Επειδή κάθε εργαζόμενος εξειδικεύεται σε κάποιο είδος δραστηριότητας, ισχύει η συναρτησιακή εξάρτηση: : ΥπεύθυνοςΔραστηριότητας Δραστηριότητα. Επιπλέον ισχύουν οι συναρτησιακές εξαρτήσεις: : {Έργο, Δραστηριότητα} ΥπεύθυνοςΔραστηριότητας : {Έργο, ΥπεύθυνοςΔραστηριότητας} Δραστηριότητα Η παραπάνω σχέση δεν ανήκει στην κανονική μορφή Boyce-Codd εξαιτίας της συναρτησιακής εξάρτησης γιατί η ορίζουσα της εξάρτησης (ΥπεύθυνοςΔραστηριότητας) δεν είναι υποψήφιο κλειδί της σχέσης. Σχεσιακές Βάσεις Δεδομένων Ευάγγελος Κεχρής
Κανονικοποίηση στη BC ΚΜ Μία σχέση που δεν ανήκει στην κανονική μορφή Boyce-Codd διασπάται σε έναν αριθμό σχέσεων, καθεμία από τις οποίες ανήκει στην κανονική μορφή Boyce-Codd. Η νέα σχέση που δημιουργείται περιλαμβάνει το χαρακτηριστικό που εξαρτάται από ορίζουσα που δεν είναι υποψήφιο κλειδί μαζί με ένα αντίγραφο της ορίζουσας αυτής. Σχεσιακές Βάσεις Δεδομένων Ευάγγελος Κεχρής
Κανονικοποίηση στη BC ΚΜ - παράδειγμα Έργο Δραστηριότητα Υπεύθυνος Δραστηριότητας Έργο Δραστηριότητα Υπεύθυνος Δραστηριότητας Ε1 Σύνταξη Προδιαγραφών Δημόπουλος Σύνταξη Προκήρυξης Προκοπίου Κατακύρωση Διαγωνισμού Διαλεκτός Ε2 Κωνσταντίνου ΕΡΓΑ Έργο ΥπεύθυνοςΔραστηριότητας Ε1 Δημόπουλος Προκοπίου Διαλεκτός Ε2 Κωνσταντίνου ΥΠΕΥΘΥΝΟΣ ΥπεύθυνοςΔραστηριότητας Δραστηριότητα Δημόπουλος Σύνταξη Προδιαγραφών Προκοπίου Σύνταξη Προκήρυξης Διαλεκτός Κατακύρωση Διαγωνισμού Κωνσταντίνου Σχεσιακές Βάσεις Δεδομένων Ευάγγελος Κεχρής