Αξιολόγηση Σχεσιακών Σχηµάτων Β Κανονικοποίηση Παύλος Εφραιµίδης Βάσεις εδοµένων Κανονικοποίηση 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) Παραδείγµατα: Για ένα αυτοκίνητο: Αριθµός Πινακίδας ΑΤ Ιδιοκτήτη Για ένα διαµέρισµα { ιεύθυνση, Αριθµός ιαµερίσµατος} ΑΤ Ιδιοκτήτη Για µια οµάδα ποδοσφαίρου Οµάδα, Σεζόν, Αριθµός Φανέλας Όνοµα Παίκτη Συναρτησιακή Εξάρτηση (3) Σχετίζεται άµεσα µε την έννοια του (υποψήφιου) κλειδιού Οι συναρτησιακές εξαρτήσεις προσδιορίζονται από τη σηµασιολογία των γνωρισµάτων Παράδειγµα: ΑΡ_ΤΑΥΤ ΟΝΟΜΑ KWD_ERGOY {E_ONOMA, TOP_ERGOY} {AR_TAYT, KWD_ERGOY} WRES Βάσεις εδοµένων Κανονικοποίηση 11 Βάσεις εδοµένων Κανονικοποίηση 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 (να διατηρούνται οι συναρτησιακές εξαρτήσεις) Αποκανονικοποίηση (Denormalization) Σε ορισµένες περιπτώσεις µπορεί να επιλέξουµε να µην κανονικοποιήσουµε πλήρως µέχρι κάποιο βαθµό, πχ 3NF αλλά να σταµατήσουµε στο 2NF για ορισµένες τουλάχιστον σχέσεις Μπορεί να εξασφαλίζουµε µεγαλύτερη απόδοση για ορισµένες πράξεις Βάσεις εδοµένων Κανονικοποίηση 19 Βάσεις εδοµένων Κανονικοποίηση 20 Κλειδιά µιας Σχέσης Υπερκλειδί: Σύνολο γνωρισµάτων που είναι µοναδικό για τις πλειάδες (γραµµές) της σχέσης Υποψήφιο Κλειδί: Υπερκλειδί που δεν έχει κανένα περιττό γνώρισµα ή αλλιώς αν αφαιρεθεί οποιοδήποτε γνώρισµα παύει να είναι κλειδί Πρωτεύον Κλειδί: Ένα από τα υποψήφια κλειδιά επιλέγεται ως το πρωτεύον κλειδί ευτερεύοντα Κλειδιά: Υποψήφια κλειδιά που δεν έχουν επιλεγεί ως πρωτεύοντα Πρώτη Κανονική Μορφή (1NF) Είναι απλή: Επιτρέπονται µόνο ατοµικές τιµές για τα γνωρίσµατα Ουσιαστικά δεν επιτρέπονται πλειότιµα γνωρίσµατα, σύνθετα γνωρίσµατα και συνδυασµοί τους Κανονικοποίηση: Πως χειριζόµαστε σύνθετα ή πλειότιµα γνωρίσµατα Βάσεις εδοµένων Κανονικοποίηση 21 Βάσεις εδοµένων Κανονικοποίηση 22 εύτερη Κανονική Μορφή (2NF) εύτερη Κανονική Μορφή (2NF) ΕΡΓ_ΕΡΓΟ ΑΡ_ΤΑΥΤ ΚΩ _ΕΡΓΟΥ ΩΡΕΣ ΕΡ_ΟΝΟΜΑ Ε_ΟΝΟΜΑ Περιλαµβάνει την 1NF Επιπλέον επιβάλλει πλήρη συναρτησιακή εξάρτηση Άτυπη περιγραφή: εν επιτρέπεται σε µια σχέση ένα µη πρωτεύον γνώρισµα να εξαρτάται από ένα µέρος του κλειδιού µόνο Κάθε γνώρισµα που δεν ανήκει στο κλειδί πρέπει να είναι fully functional dependent στο πρωτεύον κλειδί EP1 ΑΡ_ΤΑΥΤ ΚΩ _ΕΡΓΟΥ ΩΡΕΣ EP3 ΚΩ _ΕΡΓΟΥ Ε_ΟΝΟΜΑ EP2 ΑΡ_ΤΑΥΤ ΕΡ_ΟΝΟΜΑ Βάσεις εδοµένων Κανονικοποίηση 23 Βάσεις εδοµένων Κανονικοποίηση 24 4
Τρίτη Κανονική Μορφή (3NF) Τρίτη Κανονική Μορφή (3NF) ΕΡΓ_ΤΜΗΜΑ Περιλαµβάνει τη 2NF Αφορά την έννοια της Μεταβατικής Εξάρτησης Άτυπη περιγραφή: εν πρέπει να υπάρχει µεταβατική εξάρτηση από το πρωτεύον κλειδί σε ένα γνώρισµα που δεν ανήκει στο κλειδί ΕΡ_ΟΝΟΜΑ ΑΡ_ΤΑΥΤ ΗΜ_ΓΕΝ ΙΕΥΘΥΝΣΗ ΚΩ _ΤΜΗΜ Τ_ΟΝΟΜΑ ΕΕ1 ΕΡ_ΟΝΟΜΑ ΑΡ_ΤΑΥΤ ΗΜ_ΓΕΝ ΙΕΥΘΥΝΣΗ ΚΩ _ΤΜΗΜ ΕΕ2 ΚΩ _ΤΜΗΜ Τ_ΟΝΟΜΑ ΙΕΥΘΥΝΤΗΣ ΙΕΥΘΥΝΤΗΣ Βάσεις εδοµένων Κανονικοποίηση 25 Βάσεις εδοµένων Κανονικοποίηση 26 Άσκηση Κανονικοποίησης Θεωρείστε τη σχέση 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) Βάσεις εδοµένων Κανονικοποίηση 27 5