ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι. Ενότητα 10: Εισαγωγικά περί κανονικοποίησης Συναρτησιακές εξαρτήσεις BCNF. Ευαγγελίδης Γεώργιος Τμήμα Εφαρμοσμένης Πληροφορικής

Σχετικά έγγραφα
ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι. Ενότητα 11: Εξαρτήσεις πολλαπλών τιμών - 4NF, 1NF, 2NF, 3NF, Μελέτη Περίπτωσης

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι. Ενότητα 2: Μοντελο Συσχετίσεων Οντοτήτων, Μελέτη Περίπτωσης: Η βάση δεδομένων των CD

Βάσεις Δεδομένων Ι. Παραδείγματα. Γεώργιος Ευαγγελίδης, Καθηγητής Τμήμα Εφαρμοσμένης Πληροφορικής

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι. Ενότητα 7β: SQL (Πρακτική Εξάσκηση 1) Ευαγγελίδης Γεώργιος. Τμήμα Εφαρμοσμένης Πληροφορικής ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι

Βάσεις Δεδομένων. Ενότητα 5: ΚΑΝΟΝΙΚΟΠΟΙΗΣΗ ΒΑΣΗΣ ΔΕΔΟΜΕΝΩΝ. Πασχαλίδης Δημοσθένης Τμήμα Ιερατικών σπουδών

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι. Ενότητα 7α: SQL (NULL, Διαίρεση) Ευαγγελίδης Γεώργιος. Τμήμα Εφαρμοσμένης Πληροφορικής ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι. Ενότητα 9α: Περιορισμοί (Constraints) Εναύσματα (Triggers) Ευαγγελίδης Γεώργιος Τμήμα Εφαρμοσμένης Πληροφορικής

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι. Ενότητα 5: SQL (Απλή SELECT) Ευαγγελίδης Γεώργιος. Τμήμα Εφαρμοσμένης Πληροφορικής ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι


Μοντελοποίηση Λογικών Κυκλωμάτων

Αρχεία και Βάσεις Δεδομένων

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Συστήματα Αυτομάτου Ελέγχου. Ενότητα Α: Γραμμικά Συστήματα

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι. Ενότητα 8: SQL (Πρακτική Εξάσκηση 2) Ευαγγελίδης Γεώργιος. Τμήμα Εφαρμοσμένης Πληροφορικής ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι

ΒΟΗΘΗΤΙΚΕΣ ΣΗΜΕΙΩΣΕΙΣ

Σχεδίαση Β.Δ. (Database Design)

ΓΡΑΜΜΙΚΟΣ & ΔΙΚΤΥΑΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Αρχεία και Βάσεις Δεδομένων

Θεωρία Κανονικοποίησης

Υπολογιστικά & Διακριτά Μαθηματικά

ΣΤΑΤΙΣΤΙΚΗ ΑΝΑΛΥΣΗ ΜΕ ΧΡΗΣΗ Η/Υ

Λογισμός 3. Ενότητα 19: Θεώρημα Πεπλεγμένων (γενική μορφή) Μιχ. Γ. Μαριάς Τμήμα Μαθηματικών ΑΝΟΙΚΤΑ ΑΚΑ ΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

Λογιστικές Εφαρμογές Εργαστήριο

Λογική. Δημήτρης Πλεξουσάκης. Ασκήσεις 2ου Φροντιστηρίου: Προτασιακός Λογισμός: Κανονικές Μορφές, Απλός Αλγόριθμος Μετατροπής σε CNF/DNF, Άρνηση

Μαθηματικά. Ενότητα 6: Ασκήσεις Ορίων Συνάρτησης. Σαριαννίδης Νικόλαος Τμήμα Λογιστικής και Χρηματοοικονομικής

Κανονικές Μορφές. Τι συμβαίνει με το (πρωτεύον) κλειδί και τις συναρτησιακές εξαρτήσεις; Παράδειγμα 1. Παράδειγμα 2

Συναρτησιακές Εξαρτήσεις και Κανονικοποίηση

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ


καλών σχεσιακών σχημάτων

Σχεδίαση Ηλεκτρονικών Κυκλωμάτων RF

Θεωρία Πιθανοτήτων & Στατιστική

Κανονικές Μορφές 8ο Φροντιστήριο. Βάρσος Κωνσταντίνος

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι. Ενότητα 1: Ορισμοί βασικών εννοιών: Μια πρώτη μοντελοποίηση. Ευαγγελίδης Γεώργιος Τμήμα Εφαρμοσμένης Πληροφορικής

Εκκλησιαστικό Δίκαιο. Ενότητα 10η: Ιερά Σύνοδος της Ιεραρχίας και Διαρκής Ιερά Σύνοδος Κυριάκος Κυριαζόπουλος Τμήμα Νομικής Α.Π.Θ.

Κανονικές Μορφές. Βάσεις Δεδομένων : Κανονικές Μορφές. ηλαδή, i = 1,.., n R i R. Σύντομη επανάληψη αποσύνθεσης.

Εισαγωγή στους Αλγορίθμους

καλών σχεσιακών σχημάτων

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι. Ενότητα 6: SQL (Συζεύξεις, Εμφώλευση, Ομαδοποίηση) Ευαγγελίδης Γεώργιος. Τμήμα Εφαρμοσμένης Πληροφορικής ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι

ΣΤΑΤΙΣΤΙΚΗ ΕΠΙΧΕΙΡΗΣΕΩΝ

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων

Λογιστική Κόστους Ενότητα 12: Λογισμός Κόστους (2)

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

Κανονικές Μορφές. Συνενώσεις Άνευ Απωλειών. Προσοχή με τις τιμές null στην αποσύνθεση

Γενικά Μαθηματικά Ι. Ενότητα 12: Κριτήρια Σύγκλισης Σειρών. Λουκάς Βλάχος Τμήμα Φυσικής ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

Θερμοδυναμική - Εργαστήριο

Βάσεις δεδομένων. (9 ο μάθημα) Ηρακλής Βαρλάμης

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Τεχνικό Σχέδιο

Ιστορία της μετάφρασης

Υπολογιστικά & Διακριτά Μαθηματικά

Οικονομετρία. Εξειδίκευση του υποδείγματος. Μορφή της συνάρτησης: Πολυωνυμική, αντίστροφη και αλληλεπίδραση μεταβλητών

Εισαγωγή στους Αλγορίθμους

Πληροφοριακά Συστήματα & Περιβάλλον Ασκήσεις

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Τεχνικό Σχέδιο

ΓΡΑΜΜΙΚΟΣ & ΔΙΚΤΥΑΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Λογική Δημήτρης Πλεξουσάκης Φροντιστήριο 6: Προτασιακός Λογισμός: Μέθοδος Επίλυσης Τμήμα Επιστήμης Υπολογιστών

Lecture 23: Functional Dependencies and Normalization

Λογισμός 3. Ενότητα 18: Θεώρημα Πεπλεγμένων (Ειδική περίπτωση) Μιχ. Γ. Μαριάς Τμήμα Μαθηματικών ΑΝΟΙΚΤΑ ΑΚΑ ΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι Ενότητα 3:

Νέες Τεχνολογίες και Καλλιτεχνική Δημιουργία

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

Μαθηματικά. Ενότητα 12: Ακρότατα Συνάρτησης Σαριαννίδης Νικόλαος Τμήμα Λογιστικής και Χρηματοοικονομικής

Οργανωσιακή Συμπεριφορά Ενότητα 1: Η έννοια της οργάνωσης και διοίκησης

Λογική. Φροντιστήριο 3: Συνεπαγωγή/Ισοδυναμία, Ταυτολογίες/Αντινομίες, Πλήρης Αλγόριθμος Μετατροπής σε CNF

Διαφωτισμός και διαμόρφωση των πολιτικών ιδεολογιών στην Ελλάδα

Λογικός Σχεδιασµός Σχεσιακών Σχηµάτων

Διδάσκων: Παναγιώτης Ανδρέου

Λογιστική Κόστους Ενότητα 11: Λογισμός Κόστους (1)

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

ΓΡΑΜΜΙΚΟΣ & ΔΙΚΤΥΑΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Τίτλος Μαθήματος: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

Θερμοδυναμική - Εργαστήριο

ΣΤΑΤΙΣΤΙΚΗ ΕΠΙΧΕΙΡΗΣΕΩΝ

ΤΕΧΝΟΛΟΓΙΑ, ΚΑΙΝΟΤΟΜΙΑ ΚΑΙ ΕΠΙΧΕΙΡΗΜΑΤΙΚΟΤΗΤΑ 9 Ο εξάμηνο Χημικών Μηχανικών

Εισαγωγή στους Αλγορίθμους Φροντιστήριο 1

ΔΙΔΑΣΚΩΝ: Δρ. Στυλιανός Τσίτσος

ΤΕΧΝΗΤΗ ΝΟΗΜΟΣΥΝΗ. Ενότητα 9: Προτασιακή λογική. Ρεφανίδης Ιωάννης Τμήμα Εφαρμοσμένης Πληροφορικής

Μαθηματικά. Ενότητα 9: Όριο Συνάρτησης στο Διηνεκές. Σαριαννίδης Νικόλαος Τμήμα Λογιστικής και Χρηματοοικονομικής

Μάθηση σε νέα τεχνολογικά περιβάλλοντα

Λογιστική Κόστους Ενότητα 8: Κοστολογική διάρθρωση Κύρια / Βοηθητικά Κέντρα Κόστους.

ΘΕΩΡΙΑ ΠΑΙΓΝΙΩΝ. Ενότητα 9: Απείρως επαναλαμβανόμενα παίγνια. Ρεφανίδης Ιωάννης Τμήμα Εφαρμοσμένης Πληροφορικής

Εισαγωγή στους Αλγορίθμους Ενότητα 10η Άσκηση Αλγόριθμος Dijkstra

Κανονικοποίηση Σχεδιασμός Βάσεων Δεδομένων Μαρία Χαλκίδη

Θεσμοί Ευρωπαϊκών Λαών Ι 19 ος -20 ος αιώνας

Κανονικές Μορφές. Αποσύνθεση (decomposition)

ΣΤΑΤΙΣΤΙΚΗ ΑΝΑΛΥΣΗ ΜΕ ΧΡΗΣΗ Η/Υ

Κανονικοποίηση Σχήµατος. Βάσεις εδοµένων Ευαγγελία Πιτουρά 1

Λογικός Σχεδιασμός Σχεσιακών Σχημάτων: Αποσύνθεση

ΑΝΑΛΥΣΗ ΧΡΗΜΑΤΟΟΙΚΟΝΟΜΙΚΩΝ ΚΑΤΑΣΤΑΣΕΩΝ

Λογική Δημήτρης Πλεξουσάκης Ασκήσεις στον Κατηγορηματικό Λογισμό Τμήμα Επιστήμης Υπολογιστών

Οικονομία των ΜΜΕ. Ενότητα 9: Εταιρική διασπορά και στρατηγικές τιμολόγησης

Κανονικοποίηση. Σημασιολογία Γνωρισμάτων. Άτυπες Οδηγίες. Παράδειγμα. Αξιολόγηση Σχεσιακών Σχημάτων ΒΔ. Περιττές Τιμές και Ανωμαλίες Ενημέρωσης

Αυτοματοποιημένη χαρτογραφία

Διαχείριση Χρόνου & Δίκτυα στη Διοίκηση Έργων. Κηρυττόπουλος Κωνσταντίνος Επ. Καθηγητής ΕΜΠ

Εργαστήριο Χημείας Ενώσεων Συναρμογής

Μάρκετινγκ Αγροτικών Προϊόντων

Ανάλυση ευαισθησίας Ανάλυση ρίσκου. Μαυρωτά Γιώργου Αναπλ. Καθηγητή ΕΜΠ

Λογιστική Κόστους Ενότητα 11: Λογισμός Κόστους

Εκκλησιαστικό Δίκαιο

Υδραυλικά & Πνευματικά ΣΑΕ

Transcript:

Ενότητα 10: Εισαγωγικά περί κανονικοποίησης Συναρτησιακές εξαρτήσεις BCNF Ευαγγελίδης Γεώργιος

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. 2

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Πανεπιστήμιο Μακεδονίας» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 3

Μέρος 1 Εισαγωγικά περί κανονικοποίησης 4

Πως προκύπτει ένα σχήμα; Top-down με σχεδίαση ενός διαγράμματος Οντοτήτων-Συσχετίσεων και μετατροπή αυτού σε ένα σύνολο πινάκων (σχέσεων) [δες ενότητες 2 και 3]. Bottom-up με αυτοματοποιημένο αλγοριθμικό τρόπο (χρήση της θεωρίας κανονικοποίησης). 5

Παράδειγμα με CDBASE (1) Επίπεδος (flat) πίνακας, παρόμοιος με λογιστικό φύλλο: TRACK(cd_title, year, company_name, track_position, song_title, performer_name, composer_name, lyricist_name) Πρόβλημα: Πως ξεχωρίζω cd με τον ίδιο τίτλο, τραγούδια με τον ίδιο τίτλο, εταιρίες / ερμηνευτές / συνθέτες / στιχουργούς με το ίδιο όνομα; Λύση: χρήση κάποιου έξτρα πεδίου που παίρνει μοναδικές τιμές για κάθε ένα από αυτά τα αντικείμενα (οντότητες;) 6

Παράδειγμα με CDBASE (2) Μια βελτιωμένη εκδοχή: TRACK(cd_id, cd_title, year, company_id, company_name, track_position, song_id, song_title, performer_id, performer_name, composer_id, composer_name, lyricist_id, lyricist_name) 7

Παράδειγμα με CDBASE (3) Αλλά, όπως ήδη είδαμε έχουμε περιττή επανάληψη πληροφορίας καθώς και όλα τα αρνητικά επακόλουθα (στις ενημερώσεις και στις διαγραφές). Πόσες εγγραφές χρειαζόμαστε για ένα track που έχει 4 ερμηνευτές, 3 στιχουργούς και 2 συνθέτες; Στο παραπάνω σενάριο (δηλαδή για την καταγραφή της πληροφορίας ενός μόνο track), πόσες φορές δηλώνουμε κάποια πληροφορία για το cd και την εταιρία; - για κάθε ερμηνευτή / συνθέτη / στιχουργό; Πρόκειται για ένα κακό σχήμα. 8

Παράδειγμα με CDBASE (4) Τώρα μπαίνουν στο παιχνίδι και οι επιχειρησιακοί κανόνες που προκύπτουν κατά τη φάση της ανάλυσης απαιτήσεων: Μπορεί να υπάρχουν πολλαπλές εκδοχές (ηχογραφήσεις) ενός τραγουδιού; Μπορεί το ίδιο τραγούδι να εμφανίζεται στο ίδιο cd είτε με την ίδια είτε με διαφορετική ηχογράφηση; Μπορεί ένα τραγούδι να έχει πολλούς συνθέτες ή στιχουργούς; Μπορεί μια ηχογράφηση να έχει πολλούς ερμηνευτές; 9

Ένα καλύτερο σχήμα SONG(song_id, song_title) COMPOSER(composer_id, composer_name) LYRICIST(lyricist_id, lyricist_name) SONG_COMP(song_id, composer_id) SONG_LYR(song_id, lyricist_id) RECORDING(rec_id, song_id) PERFORMER(performer_id, performer_name) REC_PERF(rec_id, performer_id) TRACK(cd_id, track_pos, rec_id) CD(cd_id, cd_title, year, company_id) COMPANY(company_id, company_name) 10

Σχεδίαση με κανονικοποίηση (1) Πως φτάνω όμως στο προηγούμενο καλό σχήμα; Ξεκινώ από έναν universal πίνακα. Διασπώ σε μικρότερους καλύτερους πίνακες. Η όλη διαδικασία γίνεται με αυτοματοποιημένο τρόπο (αλγόριθμος). 11

Σχεδίαση με κανονικοποίηση (2) Για να δουλέψει ο αλγόριθμος χρειάζεται επιπλέον πληροφορία εκτός της universal σχέσης. Είναι πληροφορία που σχετίζεται με τους επιχειρησιακούς κανόνες, δηλαδή με τις ιδιότητες που έχουν τα δεδομένα. Ο αλγόριθμος παράγει ένα σύνολο πινάκων που ικανοποιούν μια κανονική μορφή (normal form). 12

Σχεδίαση με κανονικοποίηση (3) Συναρτησιακές εξαρτήσεις ==> Boyce-Codd NF Εξαρτήσεις πολλαπλών τιμών ==> 4NF Συναρτησιακή εξάρτηση = Functional dependency Εξάρτηση πολλαπλών τιμών = Multivalued dependency Στα επόμενα θα χρησιμοποιούμε τις συντομογραφίες FD και MVD. 13

Συναρτησιακές εξαρτήσεις TRACK(cd_id, cd_title, year, rec_id, track_pos) Κακός σχεδιασμός. Έχουμε την FD: cd_id cd_title, year BCNF: αν Α Β τότε το Α πρέπει να είναι κλειδί Άρα διασπώ τον TRACK σε: CD(cd_id, cd_title, year) TRACK(cd_id, rec_id, track_pos) 14

Εξαρτήσεις πολλαπλών τιμών SONG(song_id, composer_id, lyricist_id) Κακός σχεδιασμός παρόλο που είναι σε BCNF. Πρακτικά, δεν υπάρχει καμία FD στον Song. Όμως έχω την MVD: song_id composer_id 4NF: αν Α Β τότε το Α πρέπει να είναι κλειδί Άρα διασπώ τον SONG σε: SONG_COMP(song_id, composer_id) SONG_LYR(song_id, lyricist_id) 15

Μέρος 2 Συναρτησιακές εξαρτήσεις BCNF 16

Ορισμός FD A B Όταν σε δυο διαφορετικές εγγραφές ενός πίνακα τα A έχουν την ίδια τιμή τότε και τα B έχουν την ίδια τιμή. Αλλιώς, το Α προσδιορίζει το Β. Γενίκευση: A1, A2,... An B1, B2,... Bm ή Χ Υ Παράδειγμα: cd_id cd_title, year 17

FD και κλειδί Έχω έναν πίνακα R χωρίς διπλότυπα. Έστω ότι Α, Β όλα-τα-πεδία-του-r. Αυτός όμως είναι ορισμός του κλειδιού. Στα παρακάτω χρησιμοποιούμε τους συμβολισμούς A, B, C για πεδία και X, Y, Z για σύνολα πεδίων. 18

Είδη FD Τετριμμένες: Χ Υ και Υ Χ Μη-τετριμμένες: Χ Υ και Υ Χ Πλήρως μη-τετριμμένες Χ Υ και Χ Υ = Μας ενδιαφέρουν μόνο FD του τελευταίου είδους. 19

Κανόνες για FD (1) Κανόνας διαχωρισμού: Αν Χ B1, B2,... Bm τότε Χ B1 Χ B2... Χ Bm Το ανάποδο δεν ισχύει! 20

Κανόνες για FD (2) Κανόνας συνένωσης: Αν Χ B1 Χ B2... Χ Bm τότε Χ B1, B2,... Bm 21

Κανόνες για FD (3) Τετριμμένοι κανόνες: Χ Υ τότε Χ Χ Υ Χ Υ τότε Χ Χ Υ Μεταβατικός κανόνας: Χ Υ και Υ Ζ τότε Χ Ζ 22

Εγκλεισμός πεδίων Έχω έναν πίνακα R, ένα σύνολο από FDs, και ένα σύνολο πεδίων Χ του R. Εγκλεισμός του Χ, ή Χ +, είναι το σύνολο όλων των πεδίων Υ του R για τα οποία ισχύει Χ Υ. Αλγόριθμος; Ξεκινώ θέτοντας Χ + = Χ και μετά για κάθε FD Υ Ζ με Υ Χ προσθέτω το Ζ στο Χ +. Συνεχίζω μέχρι να μην μπορεί να προστεθεί κάτι στο Χ +. 23

Παράδειγμα εγκλεισμού RECORDING(song_id, song_title, rec_id, performer_id, performer_name) και ισχύουν song_id song_title performer_id performer_name rec_id song_id Τότε {performer_id, rec_id} + = {όλα τα πεδία} 24

Εγκλεισμός και κλειδιά Πότε ξέρουμε αν X είναι κλειδί του R; Αν Χ + ισούται με το σύνολο των πεδίων του R! Άρα αν έχουμε έναν πίνακα R και ένα σύνολο από FDs, πως βρίσκουμε τα κλειδιά του R; Αλγόριθμος: δοκιμάζουμε αν Α + είναι κλειδί για κάθε πεδίο Α του R. Αν δεν βρούμε κανένα κλειδί, δοκιμάζουμε με ζεύγη πεδίων, κοκ. 25

Καθορίζοντας FDs για πίνακα (1) Αν έχω δυο σύνολα S1 και S2 από FDs για έναν πίνακα R, τότε το S2 προκύπτει από το S1 αν κάθε εγγραφή του R που ικανοποιεί τις FDs του S1 ικανοποιεί και τις FDs του S2. Παράδειγμα: το S2 = {rec_id song_title} προκύπτει από το S1 = {rec_id song_id, song_id song_title} Πως βρίσκω αν Χ Υ προκύπτει από ένα σύνολο S από FDs; Υπολογίζω το Χ + βάσει του S και ελέγχω αν το Υ ανήκει στο Χ +. 26

Καθορίζοντας FDs για πίνακα (2) Ποιες FDs θέλουμε για έναν πίνακα R; Το ελάχιστο σύνολο από πλήρως μητετριμμένες FDs ώστε όλες οι FDs που ισχύουν για τον πίνακα R να προκύπτουν από αυτό το σύνολο. Θα το δούμε στην πράξη! 27

Διάσπαση πίνακα Έχουμε μια καλή διάσπαση όταν ο αρχικός πίνακας R(Χ) διασπάται στους πίνακες R1(Υ) και R2(Ζ) ώστε Υ Ζ = Χ και R1 x R2 = R 28

Κανονικοποίηση με διάσπαση Ξεκινάμε από έναν universal πίνακα και ιδιότητες των δεδομένων (FDs). Ο αλγόριθμος διασπά βάσει των FDs. Στο τέλος μετά από μια σειρά καλών διασπάσεων έχουμε ένα σύνολο καλών πινάκων (που είναι σε BCNF). 29

Ορισμός BCNF Ένας πίνακας R με FDs είναι σε BCNF αν Για κάθε Χ B, το Χ είναι κλειδί 30

Παράδειγμα BCNF (1) R(song_id, song_title, rec_id, performer_id, performer_name) και ισχύουν song_id song_title performer_id performer_name rec_id song_id Tο ελάχιστο κλειδί του R είναι το {performer_id, rec_id}. Βάσει των τριών FD ο R δεν είναι σε BCNF. Διασπώ... 31

Παράδειγμα BCNF (2) R1(song_id, song_title) είναι σε BCNF R2(song_id, rec_id, performer_id, performer_name) συνεχίζω τη διάσπαση R21(performer_id, performer_name) είναι σε BCNF R22(song_id, rec_id, performer_id) συνεχίζω τη διάσπαση R221(rec_id, song_id) είναι σε BCNF R222(rec_id, performer_id) είναι σε BCNF 32

Αλγόριθμος διάσπασης BCNF Input: πίνακας R και FDs του R Output: διάσπαση του R σε σύνολο πινάκων σε BCNF Υπολόγισε με τη βοήθεια των FDs τα κλειδιά του R. Επανέλαβε μέχρι να είναι όλοι οι πίνακες σε BCNF: Πάρε έναν πίνακα R' ο οποίος εξαιτίας μιας X Y να μην είναι σε BCNF. Διάσπασε τον R' σε R1(X, Y) και R2(X, υπόλοιπαπεδία). Υπολόγισε τις FDs των R1 και R2. Υπολόγισε τα κλειδιά των R1 και R2. 33

Γιατί οι BCNF πίνακες είναι καλοί Δεν έχουν προβλήματα πλεονασμού. Μπορούν να αναδημιουργήσουν τους αρχικούς πίνακες με σύζευξη. 34

Πλήρες παράδειγμα (1) T(cd_id, cd_title, year, company_id, company_name, track_position, track_duration, rec_id, rec_duration, song_id, song_title, performer_id, performer_name, composer_id, composer_name, lyricist_id, lyricist_name) 1. song_id song_title 2. composer_id composer_name 3. lyricist_id lyricist_name 4. rec_id song_id, rec_duration 5. performer_id performer_name 6. cd_id, track_position rec_id, track_duration 7. cd_id cd_title, year, company_id 8. company_id company_name Ελάχιστο κλειδί = {cd_id, track_position, performer_id, composer_id, lyricist_id) 35

Πλήρες παράδειγμα (2) O T δεν είναι σε BCNF. Διασπώ με την FD 1. song_id song_title Τ1(song_id, song_title) BCNF T2(cd_id, cd_title, year, company_id, company_name, track_position, track_duration, rec_id, rec_duration, song_id, performer_id, performer_name, composer_id, composer_name, lyricist_id, lyricist_name) Κλειδί = {cd_id, track_position, performer_id, composer_id, lyricist_id}, FDs = {2, 3, 4, 5, 6, 7, 8}. 36

Πλήρες παράδειγμα (3) O T2 δεν είναι σε BCNF. Διασπώ με τις FDs 2, 3, 5, 7, 8: T3(composer_id, composer_name) BCNF Τ4(lyricist_id, lyricist_name) BCNF T5(performer_id, performer_name) BCNF T6(cd_id, cd_title, year, company_id) BCNF T7(company_id, company_name) BCNF T8(cd_id, track_position, track_duration, rec_id, rec_duration, song_id, performer_id, composer_id, lyricist_id) Κλειδί = {cd_id, track_position, performer_id, composer_id, lyricist_id}fds = {4, 6}. 37

Πλήρες παράδειγμα (4) Ο Τ8 δεν είναι σε BCNF. Διασπώ με την 4. rec_id song_id, rec_duration T9(rec_id, song_id, rec_duration) BCNF T10(cd_id, track_position, track_duration, rec_id, performer_id, composer_id, lyricist_id) Κλειδί = {cd_id, track_position, performer_id, composer_id, lyricist_id}, FDs = {6}. 38

Πλήρες παράδειγμα (5) O T10 δεν είναι σε BCNF. Διασπώ με την 6. cd_id, track_position rec_id, track_duration T11(cd_id, track_position, rec_id, track_duration) BCNF T12(cd_id, track_position, performer_id, composer_id, lyricist_id) BCNF Κλειδί = {cd_id, track_position, performer_id, composer_id, lyricist_id}, FDs = {}. 39

Πλήρες παράδειγμα (6) Τελικό BCNF Σχήμα: SONG(song_id, song_title) COMPOSER(composer_id, composer_name) LYRICIST(lyricist_id, lyricist_name) PERFORMER(performer_id, performer_name) CD(cd_id, cd_title, year, company_id) COMPANY(company_id, company_name) RECORDING(rec_id, song_id, rec_duration) TRACK(cd_id, track_position, rec_id, track_duration) TRACK_CONTRIB(cd_id, track_position, performer_id, composer_id, lyricist_id) 40

Τέλος Ενότητας