4. Σχεδίαση Σχεσιακών ΒΔ ! 4.1. Εννοιολογικός σχεδιασμός ! το Μοντέλο Οντοτήτων-Συσχετίσεων (ER) ! Από τα διαγράμματα ER στο Σχεσιακό Μοντέλο ! 4.2. Θεωρία Κανονικοποίησης ! Αποσύνθεση – Συναρτησιακές εξαρτήσεις – Boyce-Codd Κανονική Μορφή ! Καθολική διαδικασία σχεδίασης ΒΔ InfoLab | Τμήμα Πληροφορικής | Πανεπιστήμιο Πειραιώς (http://infolab.cs.unipi.gr/) έκδοση: 2015.02 Βασική πηγή διαφανειών: Silberschatz et al., “Database System Concepts”, 6/e ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ 1 ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης 4.1. Εννοιολογικός Σχεδιασμός ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ 2 ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης Διαδικασία σχεδίασης ΒΔ ! Σχεδιασμός ΒΔ είναι η διαδικασία δημιουργίας του σχεσιακού σχήματος (relational schema) της ΒΔ ! Υπάρχουν 2 «σχολές» σχεδίασης σχεσιακών ΒΔ 1. Μέσω του Εννοιολογικού Σχεδιασμού. Βήματα: ! Διατύπωση ενός εννοιολογικού μοντέλου δεδομένων (Conceptual Data Model) σε μορφή Διαγράμματος Οντοτήτων – Συσχετίσεων (Entity-Relationship diagram) ! Μετατροπή του διαγράμματος ER σε Σχεσιακό Σχήμα 2. Με χρήση Κανονικών Μορφών (Normal Forms) και εφαρμογή της Θεωρίας Κανονικοποίησης (Normalization theory) ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ 3 ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης Εννοιολογικός Σχεδιασμός (conceptual design) ! Προσπάθεια για ξεκαθάρισμα των εννοιών ! Εύρεση και καταγραφή των Οντοτήτων της ΒΔ, των μεταξύ τους Συσχετίσεων καθώς και της σημασιολογίας που τα συνοδεύει ! ΣΤΟΧΟΣ: ! Μια αφαιρετική, αλλά πλήρης περιγραφή του τμήματος του μικρόκοσμού που θα αναπαρασταθεί στην βάση δεδομένων. ! Αυτή η περιγραφή γίνεται με τη χρήση μιας ημι-τυπικής σημειογραφίας / συμβολισμού. ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ 4 ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης Παράδειγμα εννοιολογικού σχεδιασμού instructor ID name salary department member dept_name building budget ! Μοντέλο οντοτήτων-συσχετίσεων (Entity-Relationship model – ER), π.χ. ! Ένας Διδάσκων χαρακτηρίζεται από έναν κωδικό και άλλες πληροφορίες που καταγράφονται είναι το όνομα και ο μισθός του ! Ένα Τμήμα χαρακτηρίζεται από το όνομά του και άλλες πληροφορίες που καταγράφονται είναι το κτήριο στο οποίο βρίσκεται και ο προϋπολογισμός του ! Ένας Διδάσκων είναι μέλος ενός Τμήματος ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ 5 ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης Συστατικά του E-R Μοντέλου (1) ! Υπάρχουν δυο βασικές εννοιολογικές έννοιες: ! Οντότητες (entities) ! Συγκεκριμένα αντικείμενα που υπάρχουν (ή πιστεύεται ότι υπάρχουν) και μπορούν να αναπαρασταθούν στην ΒΔ ! π.χ., ο τάδε ΔΙΔΑΣΚΩΝ, ο τάδε ΦΟΙΤΗΤΗΣ, το τάδε ΜΑΘΗΜΑ ! Για κάθε οντότητα καταγράφουμε ορισμένα χαρακτηριστικά (attributes) ! Συσχετίσεις (relationships) ! Είναι επίσης (ειδικά) αντικείμενα που αντιστοιχούν δύο ή περισσότερες ξεχωριστές οντότητες με ένα συγκεκριμένο νόημα (τυπικά, μια Συσχέτιση είναι ένα διατεταγμένο σύνολο οντοτήτων) ! π.χ. ο φοιτητής Χ έχει πάρει το μάθημα Υ, ο καθηγητής Χ διδάσκει το μάθημα Υ, ο καθηγητής Χ είναι επιβλέπων του φοιτητή Υ, κοκ. ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ 6 ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης Οντότητες ! Κάθε οντότητα έχει χαρακτηριστικά που την προσδιορίζουν instructor_ID instructor_name student-ID student_name 76766 Crick 98988 Tanaka 45565 Katz 12345 Shankar 10101 Srinivasan 00128 Zhang 98345 Kim 76543 Brown 76543 Singh 76653 Aoi 22222 Einstein 23121 Chavez 44553 Peltier instructor student ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ 7 ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης Συσχετίσεις (1) 76766 Crick 98988 Tanaka 45565 Katz 12345 Shankar 10101 Srinivasan 00128 Zhang 98345 Kim 76543 Brown 76543 Singh 76653 Aoi 22222 Einstein 23121 Chavez 44553 Peltier instructor student ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ 8 ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης Συσχετίσεις (2) ! Μια συσχέτιση μπορεί να έχει δικά της χαρακτηριστικά 98988 Tanaka 76766 Crick 45565 Katz 10101 Srinivasan 3 May 2008 10 June 2007 12 June 2006 12345 Shankar 00128 Zhang 98345 Kim 6 June 2009 76543 Brown 76543 Singh 30 June 2007 76653 Aoi 22222 Einstein 31 May 2007 4 May 2006 instructor 23121 Chavez 44553 Peltier student ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ 9 ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης Συστατικά του E-R Μοντέλου (3) ! Είδη χαρακτηριστικών ! Απλά (simple): μια οντότητα έχει ατομική τιμή για αυτό ! π.χ., μισθός καθηγητή ! Σύνθετα (composite): το χαρακτηριστικό αποτελείται από 2 ή περισσότερα τμήματα ! π.χ., διεύθυνση = {Δρόμος, Αριθμός, ΤΚ, Πόλη, Χώρα} ! Πλειότιμα (multi-valued): το χαρακτηριστικό έχει πολλαπλές τιμές ! π.χ., τηλέφωνο(-α) ενός καθηγητή ! Εξαρτημένα (derived): η τιμή του χαρακτηριστικού προκύπτει από τις τιμές άλλων χαρακτηριστικών ! π.χ., ηλικία φοιτητή, μ.ο. βαθμολογίας του ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ 10 ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης Διάγραμμα Οντοτήτων-Συσχετίσεων (E-R) student instructor ID name salary ID name tot_cred advisor ! Ορθογώνια: οντότητες ! Τα χαρακτηριστικά παρουσιάζονται ως λίστα ! Τα υπογραμμισμένα χαρακτηριστικά είναι τα πρωτεύοντα κλειδιά ! Ρόμβοι: συσχετίσεις ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης 11 Ιδιότητες τύπων συσχετίσεων: βαθμός student instructor ID name salary ID name tot_cred advisor ! Συσχέτιση μεταξύ 2 συνόλων οντοτήτων " διμερής ! Συσχέτιση μεταξύ 3 συνόλων οντοτήτων " τριμερής ! κοκ. project ... student instructor proj_ guide ID name salary ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ 12 ID name tot_cred ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης Ιδιότητες τύπων συσχετίσεων: πληθικότητα student instructor ID name salary advisor ID name tot_cred ! Η πληθικότητα (cardinality) ενός τύπου συσχέτισης ορίζει το πόσες οντότητες από το πρώτο σύνολο οντοτήτων στην συσχέτιση μπορούν να συνδεθούν με πόσες οντότητες από το δεύτερο σύνολο οντοτήτων ! π.χ. ο τύπος συσχέτισης instructor-student είναι 1:N (έναπρος-πολλά) ! ένας καθηγητής μπορεί να επιβλέπει πολλούς φοιτητές ! ένας φοιτητής μπορεί να επιβλέπεται από έναν μόνο καθηγητή ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης 13 Πληθικότητα συσχέτισης (4 περιπτώσεις) 1:1 instructor ID name salary ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ 1:Ν instructor student advisor ID name salary ID name tot_cred 14 student advisor ID name tot_cred ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης Πληθικότητα συσχέτισης (4 περιπτώσεις) Μ:Ν Ν:1 instructor instructor student ID name salary advisor ID name tot_cred ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ student ID name salary advisor ID name tot_cred ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης 15 Ιδιότητες τύπων συσχετίσεων: συμμετοχή ! Η συμμετοχή μιας οντότητας σε μια συσχέτιση μπορεί να είναι ολική (total) ή μερική (partial) ! Παράδειγμα: όλοι οι φοιτητές πρέπει να έχουν επιβλέποντα καθηγητή, αυτό όμως δεν είναι απαραίτητο για τους καθηγητές instructor ID name salary ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ student 0.. * advisor 16 1..1 ID name tot_cred ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης Αδύναμα σύνολα οντοτήτων ! Σύνολα οντοτήτων των οποίων η ύπαρξη εξαρτάται από την ύπαρξη μιας άλλης (ισχυρής) οντότητας ! Η (αδύναμη) συσχέτιση που προκύπτει έχει πληθικότητα 1:Ν πάντα (γιατί;) course course_id title credits sec_course ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ 17 section sec_id semester year ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης Η έννοια του κλειδιού ! Ένα χαρακτηριστικό (ή σύνολο χαρακτηριστικών) ενός τύπου οντοτήτων / συσχετίσεων για τον οποίο κάθε οντότητα / συσχέτιση στο σύνολο πρέπει να έχει μοναδική τιμή ονομάζεται κλειδί (key). ! π.χ. ΑΦΜ του ΥΠΑΛΛΗΛΟΥ, {ΑΦΜ, ΟΝΟΜΑ} του ΥΠΑΛΛΗΛΟΥ, κλπ. ! υποψήφιο κλειδί (candidate key) ονομάζεται ένα ελάχιστο (minimal) κλειδί (δηλαδή, κανένα υποσύνολο των χαρακτηριστικών του δεν είναι κλειδί) ! π.χ. ΑΦΜ είναι Υποψήφιο Κλειδί για τον ΥΠΑΛΛΗΛΟ, αλλά ο συνδυασμός {ΑΦΜ, ΟΝΟΜΑ} δεν είναι. ! Το πρωτεύον κλειδί (primary key) είναι ένα από τα υποψήφια κλειδιά που ορίζεται σαν αναγνωριστής (identifier) για τον τύπο οντοτήτων / συσχετίσεων ! π.χ. ΑΦΜ είναι μια καλή επιλογή Κυρίου Κλειδιού στον τύπο οντοτήτων ΥΠΑΛΛΗΛΟΣ ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ 18 ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης Η έννοια του ρόλου ! Οι οντότητες που συσχετίζονται μέσω μιας συσχέτισης δε χρειάζεται να είναι διακριτές ! Οι ρόλοι εμφανίζονται στα διαγράμματα E-R με ετικέτες πάνω στις γραμμές που συνδέουν ρόμβους με ορθογώνια. ! Οι ετικέτες ρόλων είναι προαιρετικές (ξεκαθαρίζουν τη σημασιολογία της συσχέτισης) course course_id course_id title credits prereq_id prereq ! Παράδειγμα: Οι ετικέτες “course_id” and “prereq_id” δείχνουν πώς τα μαθήματα αλληλεπιδρούν μέσω της συσχέτισης prereq (προαπαιτούμενα) ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης 19 Εξειδίκευση (Specialization) person ! Μια οντότητα (π.χ. person) εξειδικεύεται περαιτέρω σε άλλες οντότητες (π.χ. employee ή student) ID name address ! Περιπτώσεις εξειδίκευσης: ! Πλήρης (total) ή μερική (partial) ! Διακριτή (disjoint) ή επικαλυπτόμενη (overlapping) salary instructor tot_credits secretary hours_per_week rank ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ student employee 20 ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης Συσσώρευση (Aggregation) ! Αποτελεί ειδική περίπτωση συσχέτισης και επιτρέπει συσχέτιση μεταξύ συνόλου οντοτήτων και συνόλου συσχετίσεων project instructor student proj_ guide eval_ for ! Στην περίπτωση αυτή, το εμπλεκόμενο σύνολο συσχετίσεων θεωρείται (καταχρηστικά) ως σύνολο οντοτήτων ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ evaluation ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης 21 Συμβολισμοί στο μοντέλο E-R (1) E E entity set A1 A2 A2.1 R A2.2 relationship set {A3} R ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ A4() identifying relationship set for weak entity set R E a!ributes: simple (A1), composite (A2) and multivalued (A3) derived (A4) E A1 total participation of entity set in relationship E A1 22 primary key discriminating a!ribute of weak entity set ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης Συμβολισμοί στο μοντέλο E-R (2) R R many-to-many relationship R one-to-one relationship rolename R l..h E E1 total ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ E cardinality limits E1 role indicator E2 E2 many-to-one relationship R E3 E1 total (disjoint) generalization E3 E2 ISA: generalization or specialization disjoint generalization E3 23 ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης Μετατροπή σχήματος E-R σε σχεσιακό σχήμα ! Τα πρωτεύοντα κλειδιά επιτρέπουν να εκφραστούν τα σύνολα οντοτήτων και τα σύνολα συσχετίσεων ως πίνακες που αναπαριστούν τα περιεχόμενα μιας βάσης δεδομένων ! Μια βάση δεδομένων συμβατή με ένα διάγραμμα E-R μπορεί να αναπαρασταθεί με μια συλλογή πινάκων ! Η μετατροπή ενός διαγράμματος E-R σε συλλογή πινάκων αποτελεί την αφετηρία για να προκύψει μια σχεσιακή βάση δεδομένων από μια εννοιολογική σχεδίαση στο μοντέλο E-R ! Βασικοί κανόνες μετατροπής E-R σε σχεσιακό ... ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ 24 ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης Αναπαράσταση οντοτήτων & συσχετίσεων 1. Ένα (ισχυρό) σύνολο οντοτήτων μετατρέπεται σε πίνακα (με τα ίδια χαρακτηριστικά) 2. Ένα σύνολο συσχετίσεων Μ:Ν αναπαρίσταται ως πίνακας με στήλες για τα πρωτεύοντα κλειδιά των οντοτήτων που συμμετέχουν, και επιπλέον όλα τα χαρακτηριστικά του συνόλου συσχετίσεων 3. Οι συσχετίσεις Ν:1 και 1:Ν μπορούν να αναπαρασταθούν απλά με προσθήκη ενός επιπλέον χαρακτηριστικού στην πλευρά ‘Ν’, με το πρωτεύον κλειδί της πλευράς ‘1’ ! Εάν η συμμετοχή στην πλευρά ‘Ν’ είναι μερική, μπορεί να προκύψει η περίπτωση μια στήλη του πίνακα να έχει πολλές κενές τιμές. Οπότε ίσως θα συνέφερε η δημιουργία νέου πίνακα (όπως κάνουμε στην περίπτωση Μ:Ν) ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ 25 ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης Αναπαράσταση οντοτήτων & συσχετίσεων 4. Για τις συσχετίσεις 1:1 έχουμε 3 εναλλακτικές προσεγγίσεις: ! είτε να προσθέσουμε το πρωτεύον κλειδί της μιας πλευράς ως επιπλέον χαρακτηριστικό στον πίνακα της άλλης πλευράς ! και αυτό να γίνει για τον ένα ή και τους δύο πίνακες (στη δεύτερη περίπτωση, υπάρχει πλεονασμός πληροφορίας) ! είτε να δημιουργηθεί νέος πίνακας (όπως στην περίπτωση Μ:Ν) ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ 26 ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης Αναπαράσταση σύνθετων / πλειότιμων χαρακτηριστικών 5. Τα σύνθετα χαρακτηριστικά μετατρέπονται σε ένα σύνολο απλών ! Παράδειγμα: έστω το σύνθετο χαρακτηριστικό name με συστατικά first-name και last-name. Ο πίνακας που προκύπτει θα έχει, μεταξύ άλλων, δύο χαρακτηριστικά name.first-name και name.last-name 6. Από ένα πλειότιμο χαρακτηριστικό ενός συνόλου οντοτήτων προκύπτει νέος πίνακας ! ! Ο πίνακας έχει ως στήλες το πρωτεύον κλειδί του συνόλου οντοτήτων και μια ακόμη που αντιστοιχεί στο πλειότιμο χαρακτηριστικό ! Παράδειγμα: έστω το πλειότιμο χαρακτηριστικό phone του συνόλου οντοτήτων instructor (με πρωτεύον κλειδί ID). Προκύπτει ένας νέος πίνακας instructor-phones (ID, phone) ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ 27 ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης Αναπαράσταση εξειδίκευσης & συσσώρευσης 7. Αναπαράσταση εξειδίκευσης, 2 εναλλακτικές: ! 1η μέθοδος: Προκύπτει ένας πίνακας για κάθε εμπλεκόμενο σύνολο οντοτήτων, όπου καθένας από τους πίνακες εξειδίκευσης συμπεριλαμβάνει ως στήλη το πρωτεύον κλειδί του πίνακα γενίκευσης ! 2η μέθοδος: Προκύπτει ένας πίνακας για κάθε εμπλεκόμενο σύνολο οντοτήτων, όπου καθένας από τους πίνακες εξειδίκευσης συμπεριλαμβάνει ως στήλες όλα τα χαρακτηριστικά του συνόλου οντοτήτων ανώτερου επιπέδου (γενίκευσης) ! Εάν η εξειδίκευση είναι πλήρης, δεν απαιτείται ο πίνακας γενίκευσης 8. Αναπαράσταση συσσώρευσης: προκύπτει πίνακας με στήλες το πρωτεύον κλειδί της εμπλεκόμενης συσχέτισης, το πρωτεύον κλειδί του εμπλεκόμενου συνόλου οντοτήτων και τυχόν επιπλέον χαρακτηριστικά της συσσώρευσης ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ 28 ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης Παράδειγμα διαγράμματος E-R (Παν/μιο) department course_dept dept_name building budget ! 7 οντότητες stud_dept inst_dept ! 10 συσχετίσεις (3 τύπου Μ:Ν και 7 τύπου Ν:1) instructor student takes teaches section course course_id title credits course_id prereq ID name tot_cred advisor ID name salary sec_course prereq_id sec_id semester year grade time_slot sec_time_slot time_slot_id { day start_time end_time } sec_class classroom ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ 29 building room_number capacity ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης Παράδειγμα σχεσιακού σχήματος (Παν/μιο) ! 11 πίνακες ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ 30 ! Αιτιολογήστε γιατί είναι 11 ... ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης 4.2. Θεωρία Κανονικοποίησης ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ 31 ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης Θεωρία κανονικοποίησης - το πρόβλημα ... # Γιατί αυτοί οι 11 πίνακες και όχι κάποιοι άλλοι (περισσότεροι ή λιγότεροι, με διαφορετικό μοίρασμα χαρακτηριστικών); ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ 32 ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης Παράδειγμα «προβληματικού» σχήματος ! Έστω ο πίνακας Inst_Dept (αντί των Instructor, Department): ! Τι προβλήματα βλέπετε; ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ 33 ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης Παράδειγμα «προβληματικού» σχήματος ! Προβλήματα: ! Πλεονασμός – επανάληψη δεδομένων ! Πιθανή ανάγκη για τιμές null ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ 34 ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης Στόχοι στη σχεδίαση σχεσιακών ΒΔ ! Στόχος της σχεδίασης σχεσιακών ΒΔ είναι να βρούμε μια συλλογή »σωστά" σχεδιασμένων τύπων σχέσεων. ! Σχεδιαστικοί στόχοι: ! Αποφυγή πλεονασμού στα δεδομένα ! Εξασφάλιση ότι αναπαριστώνται όλες οι συσχετίσεις μεταξύ των οντοτήτων ! Αποσύνθεση χωρίς απώλεια πληροφορίας ! Το «εργαλείο»: κανονικοποίηση ΒΔ ! Υπακοή σε κάποια κανονική μορφή. Έχουν οριστεί 5 κανονικές μορφές (normal forms - NF) που η επόμενη είναι πιο αυστηρή από την προηγούμενη. ! Μεταξύ 3NF και 4NF έχει οριστεί η κανονική μορφή Boyce-Codd (BCNF) που πρακτικά αποτελεί το ‘στόχο’ της διαδικασίας σχεδίασης ΒΔ ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ 35 ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης Αποσύνθεση (decomposition) ! Για παράδειγμα, αποσύνθεση του «προβληματικού» πίνακα Inst_Dept στους «σωστούς» Instructor, Department ! Αποσύνθεση χωρίς απώλεια πληροφορίας (lossless decomposition) 1. Όλα τα χαρακτηριστικά του αρχικού τύπου σχέσης R πρέπει να διατηρούνται στην αποσύνθεση R 1, R 2 R = R1 ∪ R2 2. Όλες οι πλειάδες της αρχικής σχέσης r πρέπει να προκύπτουν με κατάλληλη σύνδεση των σχέσεων στις οποίες αυτή έχει αποσυντεθεί: r = ∏R1 (r) ! ∏R2 (r) ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ 36 ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης Παράδειγμα αποσύνθεσης με απώλεια πληροφορίας ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης 37 Παράδειγμα αποσύνθεσης χωρίς απώλεια πληροφορίας ! Αποσύνθεση του τύπου σχέσης R = (A, B, C) σε R1 = (A, B), R2 = (B, C) A B C α β ∏A (r) ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ A B B C 1 2 1 2 A B 1 A 2 B α β r ∏A,B(r) ∏B (r) A B C α β 1 A 2 B 38 ∏B,C(r) ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης Συναρτησιακές Εξαρτήσεις ! Περιορισμοί πάνω στο σύνολο των έγκυρων σχέσεων ! Απαιτούν η τιμή ορισμένων χαρακτηριστικών να προσδιορίζει μοναδικά την τιμή άλλων χαρακτηριστικών ! Παραδείγματα: ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ ID → name, dept_name, salary dept_name → building, budget 39 ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης Συναρτησιακές Εξαρτήσεις (συν.) ! Ορισμός: Έστω R ένας τύπος σχέσης, με α ⊆ R and β ⊆ R. Η συναρτησιακή εξάρτηση (functional dependence - FD) α → β ισχύει πάνω στον R εάν και μόνο εάν t1[α] = t2 [α] ⇒ t1[β ] = t2 [β ] ! Γενίκευση της έννοιας του κλειδιού ! Επιπλέον ορισμοί, σχετικοί με τα κλεδιά: ! Ορισμός: Το σύνολο χαρακτηριστικών K αποτελεί υπερκλειδί (superkey) για τον τύπο σχέσης R εάν και μόνο εάν K → R ! Ορισμός: Το K αποτελεί υποψήφιο κλειδί (candidate key) για τον R εάν και μόνο εάν: K → R και δεν υπάρχει α ⊂ K, α → R ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ 40 ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης Συναρτησιακές Εξαρτήσεις (συν.) ! Χρησιμοποιούμε συναρτησιακές εξαρτήσεις για να: ! Ελέγξουμε την εγκυρότητα μιας σχέσης r σύμφωνα με ένα δοθέν σύνολο συναρτησιακών εξαρτήσεων FD (οπότε λέμε ότι η r ικανοποιεί την FDi). ! Προδιαγράψουμε περιορισμούς FD πάνω σε έναν τύπο σχέσης R (οπότε λέμε ότι η FDi ισχύει για τον R) ! Μια συναρτησιακή εξάρτηση καλείται τετριμμένη εάν ικανοποιείται οπωσδήποτε σε κάθε στιγμιότυπο ενός τύπου σχέσης. π.χ. ! ID, name → ID ! name → name ! Γενικά, α → β αποτελεί τετριμμένη FD εάν β ⊆ α ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ 41 ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης Κανονικοποίηση με χρήση συναρτησιακών εξαρτήσεων Όταν αποσυνθέτουμε ένα τύπο σχέσης R με ένα σύνολο συναρτησιακών εξαρτήσεων FD στους τύπους σχέσεων R1, R2,.., Rn έχουμε τριπλό στόχο: ! Στόχος 1: όχι απώλεια πληροφορίας ! η αποσύνθεση πρέπει να είναι χωρίς απώλεια πληροφορίας (lossless decomposition) ! Στόχος 2: όχι πλεονασμός πληροφορίας ! Οι τύποι σχέσεων Ri που προκύπτουν από την αποσύνθεση να είναι σε Boyce-Codd ΚΜ ή τουλάχιστον 3η ΚΜ (θα τις ορίσουμε σε λίγο ...) ! Στόχος 3: διατήρηση εξαρτήσεων ! Έστω FDi μια εξάρτηση που περιέχει μόνο χαρακτηριστικά του Ri. Η αποσύνθεση επιθυμούμε να διατηρεί (άμεσα ή έμμεσα) την εξάρτηση. ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ 42 ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης Boyce-Codd Κανονική Μορφή ! Ένας τύπος σχέσης R είναι σε Boyce-Codd Κανονική Μορφή (Boyce-Codd Normal Form - BCNF) εάν για όλες τις συναρτησιακές εξαρτήσεις α → β που ισχύουν στον R, το α αποτελεί υποψήφιο κλειδί της R ! Φορμαλιστικά: ∃ (a " b) in FD: a ≠ K ! Παράδειγμα: ! Έστω R = (A, B, C), ισχύουν οι συναρτησιακές εξαρτήσεις F = {A→B, B→C} και {A} είναι το κλειδί ⇒ ο R δεν είναι σε BCNF ! Έστω ότι γίνεται η αποσύνθεση του R σε R1 = (A,B), R2 = (B,C) ⇒ οι R1 και R2 είναι σε BCNF ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ 43 ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης Boyce-Codd Κανονική Μορφή (συν.) ! Πώς γίνεται αποσύνθεση σε BCNF: ! Κάθε συναρτησιακή εξάρτηση σχηματίζει ένα νέο τύπο σχέσης. ! Για παράδειγμα: ! Inst_Dept = (ID, name, salary, dept_name, building, budget) ! FD1: ID → name, dept_name, salary ! FD2: dept_name → building, budget ! υποψήφιο κλειδί: {ID} ! Αποσύνθεση σε: ! Instructor = (ID, name, salary, dept_name) ! Department = (dept_name, building, budget) ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ 44 ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης BCNF και Διατήρηση Εξαρτήσεων ! «πρόβλημα»: δεν είναι πάντοτε δυνατό να πάρουμε μια αποσύνθεση BCNF που να διατηρεί τις εξαρτήσεις !! ! Για παράδειγμα: ! R = (J, K, L) ! FD1: JK → L; FD2: L → K ! 2 υποψήφια κλειδιά: {J, K}, {J, L} ! Όποια αποσύνθεση του R επιχειρήσουμε δεν θα μπορέσουμε να να διατηρήσουμε την εξάρτηση JK → L ! Tότε καταφεύγουμε στη λύση της 3NF(*) που είναι πιο «χαλαρή» από την BCNF («χαλαρή» με την έννοια ότι αν ένας τύπος σχέσης R είναι σε BCNF τότε σίγουρα είναι και σε 3NF) ! Εισάγει πλεονασμό πληροφορίας (*) Δεν θα ασχοληθούμε περαιτέρω με την 3NF ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ 45 ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης Καθολική διαδικασία σχεδίασης ΒΔ ! Οι στόχοι στη σχεδίαση σχεσιακών ΒΔ είναι: ! Όλοι οι τύποι σχέσεων να είναι σε BCNF ! Να γίνεται σύνδεση χωρίς απώλεια πληροφορίας ! Να διατηρούνται όλες οι εξαρτήσεις ! Αν δεν μπορούμε να πετύχουμε όλα τα παραπάνω, κάνουμε υποχωρήσεις: ! π.χ. καταργούμε κάποιες εξαρτήσεις ! υποχωρούμε σε 3NF αντί BCNF ! Ας σημειωθεί ότι η SQL δεν παρέχει κάποιον άμεσο τρόπο υποστήριξης των συναρτησιακών εξαρτήσεων, πέρα από τους περιορισμούς του κλειδιού. ! Μπορούν να προδιαγραφούν με assertions, αλλά ο έλεγχός τους κοστίζει ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ 46 ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης Η προσέγγιση της καθολικής σχέσης (1) ! Σε ένα σχήμα ΒΔ το οποίο αποτελείται από n τύπους σχέσεων, R1, R2, ..., Rn, η σχέση r(U) = r1(R1) r2(R2) … rn(Rn) ονομάζεται καθολική σχέση (universal relation) καθώς εμπλέκει όλα τα χαρακτηριστικά της ΒΔ όπως ορίζονται από τον τύπο σχέσης U = R1 ∪ R2 ∪ … ∪ Rn ! Παράδειγμα: Έστω σε εννοιολογικό επίπεδο (π.χ. μοντέλο E-R) έχουν καταγραφεί τα εξής: ! Οντότητες: Instructor (ID, name, salary, dept_name), Department (dept_name, building, budget) ! Συσχέτιση: Instructor $" Department (τύπου N:1) ! Το σχήμα καθολικής σχέσης που προκύπτει είναι: ! U = (ID, name, salary, dept_name, building, budget) ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ 47 ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης Η προσέγγιση της καθολικής σχέσης (2) ! Μεθοδολογία αποσύνθεσης της καθολικής σχέσης: ! Αρχικά, καταγράφουμε τις συναρτησιακές εξαρτήσεις ! Κατόπιν, αποσυνθέτουμε με στόχο την BCNF ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ 48 ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης Τέλος Ενότητας 4 ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ 49 ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης
© Copyright 2024 Paperzz