Αξιολόγηση Σχεσιακών Σχημάτων ΒΔ Κανονικοποίηση Παύλος Εφραιμίδης Βάσεις Δεδομένων Κανονικοποίηση 1 Πως μπορούμε να κρίνουμε εάν ένα Σχεσιακό Σχήμα είναι καλό ή αποδοτικό ή αν έχει λάθη; Σε γενικές γραμμές διακρίνουμε: Λογικό Επίπεδο: Πόσο κατανοητό είναι για τους χρήστες Επίπεδο Υλοποίησης: Πως αποθηκεύονται και ενημερώνονται οι πλειάδες (γραμμές) Θα ασχοληθούμε με το επίπεδο υλοποίησης: Τη μορφή δηλαδή των σχέσεων του σχήματος Βάσεις Δεδομένων Κανονικοποίηση 2 Άτυπες Οδηγίες Ξεκινάμε με ένα σύνολο από εμπειρικές άτυπες οδηγίες Σημασιολογία των γνωρισμάτων Μείωση/Εξάλειψη περιττών τιμών Μείωση/Εξάλειψη τιμών NULL Εξάλειψη της δυνατότητας δημιουργίας πλασματικών πλειάδων (Αγγλικός Όρος: spurious tuples) Σημασιολογία Γνωρισμάτων Ταγνωρίσματαπουεντάσσουμεσεμια σχέση θα πρέπει να έχουν κάποια πραγματική σχέση μεταξύ τους και να μπορούν να ερμηνευτούν Γενικά όσο πιο κατανοητή είναι η ερμηνεία μιας Σχέσης (Πίνακας) τόσο καλύτερο είναι το τελικό Σχεσιακό Σχήμα που θα προκύψει Παράδειγμα: Η ΣχέσηΕργαζόμενος Βάσεις Δεδομένων Κανονικοποίηση 3 Βάσεις Δεδομένων Κανονικοποίηση 4 Περιττές Τιμές και Ανωμαλίες Ενημέρωσης Μια σχέση που αντιστοιχεί στη Συνένωση Εργαζόμενος με Τμήμα οδηγεί σε Επανάληψη της ίδιας πληροφορίας Ανωμαλίες κατά την ενημέρωση Ανωμαλίες κατά τη διαγραφή και την ενημέρωση ΕΡΓ_ΕΡΓΟ ΑΡ_ΤΑΥΤ ΚΩΔ_ΕΡΓΟΥ Παράδειγμα ΩΡΕΣ ΕΡ_ΟΝΟΜΑ Ε_ΟΝΟΜΑ Μια υποτιθέμενη σχέση ΕΡΓ_ΕΡΓΟγιατηβάσηδεδομένων ΕΤΑΙΡΕΙΑ Τα βέλη απεικονίζουν τις συναρτησιακές εξαρτήσεις μεταξύ των γνωρισμάτων που συμμετέχουν στη σχέση Είναι καλή επιλογή η σχέση αυτή; Θα εμφανίζονται περιττά δεδομένα στη σχέση; Υπάρχει το ενδεχόμενο ασυνέπειας δεδομένων στη σχέση για παράδειγμα κατά την ενημέρωση των στοιχείων; Βάσεις Δεδομένων Κανονικοποίηση 5 Βάσεις Δεδομένων Κανονικοποίηση 6 1
Τιμές NULL Πιθανές ερμηνείες μιας τιμής NULL για ένα γνώρισμα στη σχέση (πίνακα): Το γνώρισμα δεν έχει νόημα για τη γραμμή αυτή Η τιμή του γνωρίσματος είναι άγνωστη Η τιμή του γνωρίσματος είναι γνωστή αλλά δεν έχει εισαχθεί ακόμη στη ΒΔ Σχεδιάζουμε έτσι το σχεσιακό σχήμα μιας βάσης δεδομένων ώστε να αποφεύγονται όσο είναιδυνατόοιεμφανίσειςτηςτιμήςnull μέσα στα πεδία των σχέσεων Βάσεις Δεδομένων Κανονικοποίηση 7 Πλασματικές Πλειάδες Η συνένωση μεταξύ των σχέσεων να γίνεται έτσι ώστε να μην δημιουργούνται πλασματικές (spurious) πλειάδες Συνένωση με βάση κλειδιά ή ξένα κλειδιά Το πρόβλημα μπορεί να προκληθεί από μια κακή κατανομή των γνωρισμάτων στις σχέσεις Βάσεις Δεδομένων Κανονικοποίηση 8 Παράδειγμα Πλασματικών Πλειάδων Έστω ότι χρησιμοποιούμε τις σχέσεις ΕΡΓ_ΤΟΠΣ και ΕΡΓ_ΕΡΓΟ1 αντί της αρχικής σχέσης ΕΡΓ_ΕΡΓΟ ΕΡΓ_ΤΟΠΣ ΕΡ_ΟΝΟΜΑ ΕΡΓ_ΕΡΓΟ1 ΑΡ_ΤΑΥΤ ΚΩΔ_ΕΡΓΟΥ ΩΡΕΣ Ε_ΟΝΟΜΑ Κοινό γνώρισμα: Αν όμως πάρουμε συνένωση των πινάκων με βάση το γνώρισμα θα δημιουργηθούν πιθανότατα και πλασματικές πλειάδες! Βάσεις Δεδομένων Κανονικοποίηση 9 Συναρτησιακή Εξάρτηση (1) Έστω A 1, A 2,.., A n το σύνολο όλων των γνωρισμάτων ενός σχεσιακού σχήματος Σύνολο γνωρισμάτων X και Συναρτησιακή εξάρτηση Χ Υ Οι τιμές των γνωρισμάτων της X καθορίζουν τις τιμές των γνωρισμάτων της Y Δύο πλειάδες με τις ίδιες τιμές για τα γνωρίσματα X θα πρέπει υποχρεωτικά να έχουν και τις ίδιες τιμές για τα Y Βάσεις Δεδομένων Κανονικοποίηση 10 Συναρτησιακή Εξάρτηση (2) Παραδείγματα: Για ένα αυτοκίνητο: Αριθμός Πινακίδας ΑΤ Ιδιοκτήτη Για ένα διαμέρισμα {Διεύθυνση, Αριθμός Διαμερίσματος} ΑΤ Ιδιοκτήτη Για μια ομάδα ποδοσφαίρου Ομάδα, Σεζόν, Αριθμός Φανέλας Όνομα Παίκτη Βάσεις Δεδομένων Κανονικοποίηση 11 Συναρτησιακή Εξάρτηση (3) Σχετίζεται άμεσα με την έννοια του (υποψήφιου) κλειδιού Οι συναρτησιακές εξαρτήσεις προσδιορίζονται από τη σημασιολογία των γνωρισμάτων Παράδειγμα: ΑΡ_ΤΑΥΤ ΟΝΟΜΑ KWD_ERGOY {E_ONOMA, TOP_ERGOY} {AR_TAYT, KWD_ERGOY} WRES Βάσεις Δεδομένων Κανονικοποίηση 12 2
Ιδιότητες Συναρτησιακών Εξαρτήσεων Ανακλαστική: If X Y X Y Επαυξητική: {Χ Υ} ΧΖ ΥΖ Μεταβατική: {Χ Υ,Υ Ζ} Χ Ζ Διασπαστική: {Χ ΥΖ} Χ Υ Ενωτική: {Χ Υ,Χ Ζ} Χ ΥΖ Ψευδομεταβατική: {Χ Υ,WY Ζ} WΧ Ζ Κλειστότητα (1) Έστω ένα σύνολο γνωρισμάτων Χ Με Χ + δηλώνουμε όλες τις συναρτησιακές εξαρτήσεις που προκύπτουν για το Χ Βάσεις Δεδομένων Κανονικοποίηση 13 Βάσεις Δεδομένων Κανονικοποίηση 14 Κλειστότητα (2) F= { SSN ENAME, PNUMBER {PNAME, PLOCATION}, {SSN, PNUMBER} HOURS} {SSN} + = {SSN, ENAME} {PNUMBER} + = {PNUMBER, PNAME, PLOCATION} {SSN, PNUMBER} + = {SSN,PNUMBER,ENAME,PNAME,PLOCATION,H OURS} Σχεδιασμός Σχεσιακού Σχήματος Στην πράξη ένα σχεσιακό σχήμα συνήθως σχεδιάζεται με έναν από τους ακόλουθους τρόπους: Εννοιολογικός Σχεδιασμός πχ. με το Μοντέλο Ο-Σ και απεικόνιση του μοντέλου σε Σχεσιακό Σχήμα Απευθείας σχεδίαση των Σχέσεων του Σχήματος Πως θα αξιολογήσουμε μετά το σχεσιακό σχήμα με κάποιο αυστηρό μαθηματικό τρόπο; Βάσεις Δεδομένων Κανονικοποίηση 15 Βάσεις Δεδομένων Κανονικοποίηση 16 Κανονικές Μορφές Ένα Σχεσιακό Σχήμα που ικανοποιεί συγκεκριμένους κανόνες λέμε ότι είναι σε κάποια συγκεκριμένη κανονική μορφή Ονομασία των Κανονικών Μορφών Πρώτη, Δεύτερη, Τρίτη, BNF, κτλ. Προτάθηκαν από τον Codd το 1972 μαζί με το Σχεσιακό Μοντέλο Κανονικοποίηση (1) Η διαδικασία για τη διάσπαση των δεδομένων σχεσιακών σχημάτων έτσι ώστε να ικανοποιούνται ορισμένες επιθυμητές ιδιότητες Η κανονικοποίηση βασίζεται στις συναρτησιακές εξαρτήσεις και τα πρωτεύοντα κλειδιά Βάσεις Δεδομένων Κανονικοποίηση 17 Βάσεις Δεδομένων Κανονικοποίηση 18 3
Κανονικοποίηση (2) Η χρήση κανονικοποίησης δεν αρκεί από μόνη της για να εγγυηθεί σωστά και αποδοτικά σχεσιακά σχήματα Πρέπει να εξασφαλίζεται επιπλέον lossless join (να μη δημιουργούνται πλασματικές πλειάδες) dependency preservation (να διατηρούνται οι συναρτησιακές εξαρτήσεις) Βάσεις Δεδομένων Κανονικοποίηση 19 Αποκανονικοποίηση (Denormalization) Σε ορισμένες περιπτώσεις μπορεί να επιλέξουμε να μην κανονικοποιήσουμε πλήρως μέχρι κάποιο βαθμό, πχ 3NF αλλά να σταματήσουμε στο 2NF για ορισμένες τουλάχιστον σχέσεις Μπορεί να εξασφαλίζουμε μεγαλύτερη απόδοση για ορισμένες πράξεις Βάσεις Δεδομένων Κανονικοποίηση 20 Κλειδιά μιας Σχέσης Υπερκλειδί: Σύνολο γνωρισμάτων που είναι μοναδικό για τις πλειάδες (γραμμές) της σχέσης Υποψήφιο Κλειδί: Υπερκλειδί που δεν έχει κανένα περιττό γνώρισμα ή αλλιώς αν αφαιρεθεί οποιοδήποτε γνώρισμα παύει να είναι κλειδί Πρωτεύον Κλειδί: Ένα από τα υποψήφια κλειδιά επιλέγεται ως το πρωτεύον κλειδί Δευτερεύοντα Κλειδιά: Υποψήφια κλειδιά που δεν έχουν επιλεγεί ως πρωτεύοντα Κανονικές Μορφές (Normal Forms) Βάσεις Δεδομένων Κανονικοποίηση 21 Βάσεις Δεδομένων Κανονικοποίηση 22 Πρώτη Κανονική Μορφή (1NF) Είναι απλή: Επιτρέπονται μόνο ατομικές τιμές για τα γνωρίσματα Ουσιαστικά δεν επιτρέπονται πλειότιμα γνωρίσματα, σύνθετα γνωρίσματα και συνδυασμοί τους Κανονικοποίηση: Πως χειριζόμαστε σύνθετα ή πλειότιμα γνωρίσματα Δεύτερη Κανονική Μορφή (2NF) Περιλαμβάνει την 1NF Επιπλέον επιβάλλει πλήρη συναρτησιακή εξάρτηση Άτυπη περιγραφή: Δεν επιτρέπεται σε μια σχέση έναμηπρωτεύονγνώρισμαναεξαρτάταιαπόένα μέρος του κλειδιού μόνο Κάθε γνώρισμα που δεν ανήκει στο κλειδί πρέπει να είναι fully functional dependent στο πρωτεύον κλειδί Βάσεις Δεδομένων Κανονικοποίηση 23 Βάσεις Δεδομένων Κανονικοποίηση 24 4
Δεύτερη Κανονική Μορφή (2NF) ΕΡΓ_ΕΡΓΟ ΑΡ_ΤΑΥΤ ΚΩΔ_ΕΡΓΟΥ ΩΡΕΣ ΕΡ_ΟΝΟΜΑ Ε_ΟΝΟΜΑ Τρίτη Κανονική Μορφή (3NF) EP1 ΑΡ_ΤΑΥΤ ΚΩΔ_ΕΡΓΟΥ ΩΡΕΣ EP3 ΚΩΔ_ΕΡΓΟΥ Ε_ΟΝΟΜΑ EP2 ΑΡ_ΤΑΥΤ ΕΡ_ΟΝΟΜΑ Περιλαμβάνει τη 2NF Αφορά την έννοια της Μεταβατικής Εξάρτησης Άτυπη περιγραφή: Δεν πρέπει να υπάρχει μεταβατική εξάρτηση από το πρωτεύον κλειδί σε ένα γνώρισμα που δεν ανήκει στο κλειδί Βάσεις Δεδομένων Κανονικοποίηση 25 Βάσεις Δεδομένων Κανονικοποίηση 26 Τρίτη Κανονική Μορφή (3NF) ΕΡΓ_ΤΜΗΜΑ ΕΡ_ΟΝΟΜΑ ΑΡ_ΤΑΥΤ ΗΜ_ΓΕΝ ΔΙΕΥΘΥΝΣΗ ΚΩΔ_ΤΜΗΜ Τ_ΟΝΟΜΑ ΔΙΕΥΘΥΝΤΗΣ ΕΕ1 ΕΡ_ΟΝΟΜΑ ΑΡ_ΤΑΥΤ ΗΜ_ΓΕΝ ΔΙΕΥΘΥΝΣΗ ΚΩΔ_ΤΜΗΜ ΕΕ2 ΚΩΔ_ΤΜΗΜ Τ_ΟΝΟΜΑ ΔΙΕΥΘΥΝΤΗΣ Βάσεις Δεδομένων Κανονικοποίηση 27 Άσκηση Κανονικοποίησης Θεωρείστε τη σχέση R = {A, B, C, D, E, F, G, H, I, J} και το σύνολο των συναρτησιακών εξαρτήσεων F = {{A} {D,E}, {A,B} {H,J}, {E} {F}, {B} {C}}. 3a. Να βρείτε ένα πρωτεύον κλειδί για την R 3b. Να κανονικοποιηθεί η R σε 2NF 3c. Να κανονικοποιηθεί η R σε 3NF Λύση: 3a. Προφανές Υπερκλειδί για την R είναι το K:= {A,B,C,D,E,F,G,H,I,J} Δεν μπορούμε να αφαιρέσουμε τα A, B, G, I Τα D, E μπορούν να αφαιρεθούν διότι A D,E Τα H, J μπορούν να αφαιρεθούν διότι A,B H,J Επίσης το F διότι E F και το C διότι B C Η κλειστότητα (A, B, G, I)+ με βάση την F είναι {A, B, C, D, E, F, G, H, I, J} και επομένως το {A, B, G, I} είναι ένα υποψήφιο κλειδί για την R 3b. Κανονικοποίηση σε 2NF R1(A, D, E, F), R2(A, B, H, J) και R3(B, C) 3c. Κανονικοποίηση σε 3NF R1(A, D, E), R2(E, F), R3(A, B, H, J) και R4(B, C) Βάσεις Δεδομένων Κανονικοποίηση 28 Πηγές/Αναφορές Κεφάλαιο 10, βιβλίο του μαθήματος Βάσεις Δεδομένων Κανονικοποίηση 29 5