Βάσεις Δεδομένων Ι Θεωρία Σχεδίασης ΣΒΔ. (Σχεσιακών Βάσεων Δεδομένων) Α' Μέρος. Φώτης Κόκκορας (MSc/PhD) Τμήμα Μηχανικών Πληροφορικής ΤΕ

Σχετικά έγγραφα
καλών σχεσιακών σχημάτων


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

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

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

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

Λογικός Σχεδιασμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

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

Λογικός Σχεδιασμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Λογικός Σχεδιασμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Λογικός Σχεδιασμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι

Κανονικές Μορφές Σχεδιασµός Σχεσιακών Σχηµάτων

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

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

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

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

Βάσεις Δεδομένων : Λογικός Σχεδιασμός 1. καλών σχεσιακών σχημάτων. Λογικός Σχεδιασμός Σχεσιακών Σχημάτων. Γενικές Κατευθύνσεις.

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

Θέματα ανακεφαλαίωσης

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

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

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

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

Κανονικοποίηση. Παύλος Εφραιμίδης. Βάσεις Δεδομένων Κανονικοποίηση 1

Ένας απλός τρόπος αναπαράστασης δεδομένων: ένας διδιάστατος πίνακας που λέγεται σχέση Γνωρίσματα

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

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

Ένας απλός τρόπος αναπαράστασης δεδομένων: ένας διδιάστατος πίνακας που λέγεται σχέση Γνωρίσματα

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

Lecture 23: Functional Dependencies and Normalization

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

Copyright 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley, ΕλληνικήΈκδοση, ίαυλος

Το Σχεσιακό Μοντέλο. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

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

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

Κανονικοποίηση Σχήµατος

Εκπαιδευτικό Εργαλείο Κανονικοποίησης

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

Λογικός Σχεδιασμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Βάσεις Δεδομένων : Σχεσιακό Μοντέλο 1. Ένας απλός τρόπος αναπαράστασης δεδομένων: ένας διδιάστατος πίνακας που λέγεται σχέση.

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

Το Σχεσιακό Μοντέλο. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1


Λογικός Σχεδιασµός Σχεσιακών Σχηµάτων: Αποσύνθεση. Βάσεις εδοµένων Ευαγγελία Πιτουρά 1

Κλείσιμο Συνόλου Γνωρισμάτων

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

Συναρτησιακές Εξαρτήσεις Σχεδιασμός Βάσεων Δεδομένων

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

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

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

BΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΕΞΕΤΑΣΗ ΦΕΒΡΟΥΑΡΙΟΥ 2005

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

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

2η ΔΙΑΛΕΞΗ Συναρτησιακές εξαρτήσεις

Lecture 21: Functional Dependencies and Normalization

Σχεδιασμός μιας Β : Βήματα

Σχεδιασμός μιας εφαρμογής ΒΔ: Βήματα. 1. Συλλογή και Ανάλυση Απαιτήσεων(requirement analysis)


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

Σχεδιασµός µιας Β. Ένας απλός τρόπος αναπαράστασης δεδοµένων: ένας διδιάστατος πίνακας που λέγεται σχέση Γνωρίσµατα

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

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

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

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

Σχεσιακό Μοντέλο. Εισαγωγή. Βάσεις εδοµένων : Σχεσιακό Μοντέλο 1

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

Kεφ.2: Σχεσιακό Μοντέλο (επανάληψη) Κεφ.6.1: Σχεσιακή Άλγεβρα

Συναρτησιακές και Πλειότιµες Εξαρτήσεις

Βάσεις Δεδομένων Ευαγγελία Πιτουρά 2. Εννοιολογικός Σχεδιασμός Βάσεων εδομένων (με χρήση του Μοντέλου Οντοτήτων/Συσχετίσεων)

ΗΥ360 Αρχεία και Βάσεις εδοµένων ιδάσκων:. Πλεξουσάκης

Βάσεις Δεδομένων Συναρτησιακές Εξαρτήσεις (Functional Dependencies) Σχεδιασμός Βάσεων Δεδομένων και Κανονικοποίηση

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι

Κεφάλαιο 4 Σχεδίαση Βάσεων Δεδομένων

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ - ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΣΒΔ - ΕΙΣΑΓΩΓΗ ΣΤΟ ΜΟΝΤΕΛΟ ΟΝΤΟΤΗΤΩΝ ΣΥΣΧΕΤΙΣΕΩΝ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ

Σχεσιακή Άλγεβρα. Βάσεις Δεδομένων : Σχεσιακή Άλγεβρα 1

Σχεσιακό Μοντέλο Δεδομένων

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

Συναρτησιακές Εξαρτήσεις 7ο Φροντιστήριο. Βάρσος Κωνσταντίνος

Σχεδίαση Βάσεων Δεδομένων

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

Εισαγωγή στις Βάσεις Δεδομζνων II

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ασκήσεις και ερωτήσεις

Περιεχόμενα. Κεφάλαιο 1 Εισαγωγή στην Access Κεφάλαιο 2 Χειρισμός πινάκων... 27

Μοντέλο Οντοτήτων-Συσχετίσεων

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

Μοντέλο Οντοτήτων-Συσχετίσεων

2 ο Σύνολο Ασκήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Βάσεις Δεδομένων Ευαγγελία Πιτουρά 2. Εννοιολογικός Σχεδιασμός Βάσεων εδομένων (με χρήση του Μοντέλου Οντοτήτων/Συσχετίσεων)

Δομές Δεδομένων (Εργ.) Ακ. Έτος Διδάσκων: Ευάγγελος Σπύρου. Εργαστήριο 10 Δυαδικά Δένδρα Αναζήτησης

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

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

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

Πανεπιστήμιο Κρήτης Τμήμα Επιστήμης Υπολογιστών Κανονικές Μορφές (Normal Forms)

ΣΧΕΔΙΑΣΜΟΣ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΚΑΝΟΝΙΚΟΠΟΙΗΣΗ. Σχεδιασμός Σχεσιακών ΒΔ και Κανονικοποίηση 1

Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά


Σχεδιασµός µιας Β. Εισαγωγή. Μετατροπή σε σχεσιακό -> είσοδο σε ένα Σ Β. Εισαγωγή. Ιδέες Ο/Σ Σχέσεις Σχεσιακό Σ Β

Το Σχεσιακό Μοντέλο. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Transcript:

Βάσεις Δεδομένων Ι - 09 Θεωρία Σχεδίασης ΣΒΔ (Σχεσιακών Βάσεων Δεδομένων) Α' Μέρος Φώτης Κόκκορας (MSc/PhD) Τμήμα Μηχανικών Πληροφορικής ΤΕ ΤΕΙ Θεσσαλίας

Γιατί χρειάζεται μια "θεωρία" για τη σχεδίαση; Είναι εύκολο να εντοπίσουμε τα δεδομένα που απαιτεί μια εφαρμογή και να τα οργανώσουμε σε σχέσεις (πίνακες). Συνήθως όμως το αρχικό σχήμα (schema) έχει περιθώρια βελτίωσης, κυρίως σε ότι αφορά την εξάλειψη της πλεονασματικότητας δηλ. να μην επαναλαμβάνονται πληροφορίες Κύρια αιτία μιας "κακής" σχεδίασης είναι ότι προσπαθούμε να συνδυάσουμε πολλές πληροφορίες σε μια σχέση! Η Θεωρία Σχεδίασης ΣΒΔ: παρέχει ένα συστηματικό τρόπο για την ορθή σχεδίαση σχημάτων (schemata) ΣΒΔ υποδεικνύει πώς πρέπει να ενεργήσουμε αν ένα schema έχει ελαττώματα Θεωρητικά, η σωστή σχεδίαση μιας ΒΔ δεν είναι εύκολη δουλειά! Με εξάσκηση όμως, συνήθως καταλήγει να την κάνει κανείς περισσότερο διαισθητικά και λιγότερο αισθανόμενος ότι ακολουθεί θεωρητικούς κανόνες! Φ. Κόκκορας / Τμ. Μηχανικών Πληροφορικής ΤΕ / ΤΕΙ Θεσσαλίας - 2 - Βάσεις Δεδομένων Ι

Τι θα δούμε (συνοπτικά) Θα ορίσουμε τις συναρτησιακές εξαρτήσεις (functional dependencies) πρόκειται για γενίκευση της έννοιας του "κλειδιού" Με τη βοήθειά των συναρτησιακών εξαρτήσεων θα δούμε αναλυτικά μια πολύ βασική κανονική μορφή (normal form) για τα σχεσιακά σχήματα, την BCNF. Οι κανονικές μορφές συνιστούν τη λεγόμενη θεωρία κανονικοποίησης (normalization theory) που ορίζει πώς πρέπει να γίνει η διάσπαση (decomposition) μια σχέσης σε δύο ή περισσότερες άλλες σχέσεις, ώστε να εξαλειφθούν οι ανωμαλίες. Με εξαίρεση την κανονικοποίηση BCNF, που θα την δούμε σε επίπεδο αλγορίθμου, θα δούμε επιπλέον κανονικές μορφές (1NF, 2NF, 3NF) στο τέλος της ενότητας, με πρακτικό τρόπο (όχι επίσημο αλγόριθμο). Αν υπάρξει χρόνος, επιπλέον: Θα παρουσιάσουμε τις πλειότιμες εξαρτήσεις (multivalued dependencies) Είναι μια κατάσταση όπου οι τιμές ενός ή περισσοτέρων γνωρισμάτων μιας σχέσης είναι ανεξάρτητες από τις τιμές ενός ή περισσοτέρων άλλων γνωρισμάτων Με βάση τις πλειότιμες εξαρτήσεις θα δούμε επιπλέον κανονικές μορφές (4NF) και συνέπειες αυτών. ΔΕΝ ΕΙΠΩΘΗΚΑΝ Φ. Κόκκορας / Τμ. Μηχανικών Πληροφορικής ΤΕ / ΤΕΙ Θεσσαλίας - 3 - Βάσεις Δεδομένων Ι

Συναρτησιακές Εξαρτήσεις Η Συναρτησιακή Εξάρτηση (ΣΕ) είναι ένας περιορισμός που αποτελεί γενίκευση της ιδέας του κλειδιού: Αν δύο πλειάδες της σχέσης R έχουν ίδιες τιμές στα γνωρίσματα A 1, A 2,..., A n, τότε πρέπει να έχουν ίδιες τιμές και στα γνωρίσματα B 1, B 2,..., B m. Συμβολικός τρόπος γραφής: A 1 A 2... A n B 1 B 2... B m (χωρίς κόμμα) Τρόπος ανάγνωσης: "τα γνωρίσματα A 1, A 2,..., A n καθορίζουν συναρτησιακά τα B 1, B 2,..., B m Η σχέση R μπορεί να έχει επιπλέον γνωρίσματα! Σχηματικά: t Γνωρίσματα Α Γνωρίσματα Β u Αν οι πλειάδες t και u συμπίπτουν εδώ, τότε θα πρέπει να συμπίπτουν και εδώ. Φ. Κόκκορας / Τμ. Μηχανικών Πληροφορικής ΤΕ / ΤΕΙ Θεσσαλίας - 4 - Βάσεις Δεδομένων Ι

Παράδειγμα Έστω η "τεχνητά" προβληματική σχέση (προσπαθεί να συνδυάσει πολλά στοιχεία): movies1(title, year, length, studioname, starname) Το schema της δεν είναι καλά σχεδιασμένο! title year length genre studioname starname Star Wars 1977 124 SciFi Fox Carrie Fisher Star Wars 1977 124 SciFi Fox Mark Hamill Star Wars 1977 124 SciFi Fox Harrison Ford Gone With the Wind 1939 231 drama MGM Vivien Leigh Wayne's World 1992 95 comedy Paramount Dana Carvey Wayne's World 1992 95 comedy Paramount Mike Meyers Θα δούμε τι ακριβώς φταίει αργότερα. Θα χρειαστεί όμως πρώτα να εξοικειωθούμε με τις συναρτησιακές εξαρτήσεις και πότε αυτές ισχύουν. Πχ. ισχύει η σχέση: title, year length genre studioname???? Θεωρώντας ότι τα γνωρίσματα title και year αποτελούν κλειδί (ότι δηλ. δεν υπάρχουν στην ίδια χρονιά ταινίες με ίδιο τίτλο) τότε όντως σε αυτή την ταινία θα αντιστοιχούν μία διάρκεια (length), ένα είδος (genre) και μια κινηματογραφική εταιρία (studioname). Η σχέση title, year starname όμως δεν μπορεί να αποτελέσει ΣΕ, ακόμη κι αν από αμέλεια είχαμε καταχωρίσει έναν μόνο ηθοποιό σε κάθε ταινία! Δηλ. δεν το σκεφτόμαστε ως προς τα δεδομένα που έχουμε κάποια στιγμή αλλά για κάθε πιθανό στιγμιότυπο της σχέσης! Φ. Κόκκορας / Τμ. Μηχανικών Πληροφορικής ΤΕ / ΤΕΙ Θεσσαλίας - 5 - Βάσεις Δεδομένων Ι

Κλειδιά... Ένα σύνολο από γνωρίσματα {A 1, A 2,..., A n } είναι κλειδί μιας σχέσης R αν: καθορίζουν συναρτησιακά τα υπόλοιπα γνωρίσματα της σχέσης, δηλ. δεν μπορεί δύο πλειάδες να συμπίπτουν σε αυτά τα γνωρίσματα το κλειδί είναι ελαχιστιαίο, δηλ. κανένα γνήσιο υποσύνολο του {A 1, A 2,..., A n } δεν πρέπει να καθορίζει συναρτησιακά τα υπόλοιπα γνωρίσματα της R Πίσω στο παράδειγμα... Τα {title, year, starname} συνιστούν κλειδί για τη σχέση Movies1, διότι: 1) Καθορίζουν συναρτησιακά τα υπόλοιπα γνωρίσματα, δηλαδή: Αν τα title, year και starname είναι ίδια, τότε είναι ίδια και τα length, genre και studioname (είπαμε το λόγο στο προηγούμενο slide) άρα οι δύο πλειάδες είναι ίδιες! 2) Κανένα γνήσιο υποσύνολο του κλειδιού δεν καθορίζει συναρτησιακά τα υπόλοιπα γνωρίσματα: Τα title, year δεν καθορίζουν το starname καθώς μια ταινία έχει περισσότερους από έναν ηθοποιούς άρα το title year starname ΔΕΝ είναι ΣΕ. Τα year και starname επίσης δεν είναι κλειδί δεν αποκλείεται ο ίδιος ηθοποιός να έχει συμμετάσχει σε δύο ταινίες που κυκλοφόρησαν στο ίδιο έτος, άρα το year starname title ΔΕΝ είναι ΣΕ. τα title, starname επίσης δεν είναι κλειδί υπάρχουν (αν και σπάνιες) περιπτώσεις που ο ίδιος ηθοποιός έπαιξε σε δύο ταινίες με τον ίδιο τίτλο που όμως έχουν κυκλοφορήσει σε διαφορετικές χρονιές. Άρα ούτε το title starname year είναι ΣΕ Φ. Κόκκορας / Τμ. Μηχανικών Πληροφορικής ΤΕ / ΤΕΙ Θεσσαλίας - 6 - Βάσεις Δεδομένων Ι

...και Υπερκλειδιά δηλ. υπερσύνολα κλειδιών (με περισσότερα γνωρίσματα) Ένα σύνολο γνωρισμάτων που περιέχει ένα κλειδί, ονομάζεται υπερκλειδί. (άρα κάθε κλειδί είναι και υπερκλειδί) Πίσω στο παράδειγμα... το {title, year, starname} εκτός από κλειδί είναι και υπερκλειδί το {title, year, starname, lenght, studioname } είναι υπερκλειδί καθώς περιέχει μέσα του το κλειδί {title, year, starname} κτλ Θα δούμε στη συνέχεια κάποιους κανόνες για συναρτησιακές εξαρτήσεις (ΣΕ). επιτρέπουν να αντικαταστήσουμε ΣΕ με άλλες ισοδύναμες, επιτρέπουν να προσθέσουμε σε ένα σύνολο ΣΕ νέες που έπονται του αρχικού συνόλου, κτλ. Οι κανόνες δίνονται χωρίς μαθηματική απόδειξη. Για εμβάθυνση δείτε το κεφ. 3 στο βιβλίο των Molina-Ullman-Widom. Οι κανόνες αυτοί θα μας επιτρέψουν να σχεδιάσουμε σωστές σχέσεις και κατ'επέκταση βάσεις δεδομένων. Take a deep breath... Φ. Κόκκορας / Τμ. Μηχανικών Πληροφορικής ΤΕ / ΤΕΙ Θεσσαλίας - 7 - Βάσεις Δεδομένων Ι

Κανόνες για ΣΕ (χωρίς αποδείξεις!) Κανόνας Μεταβατικότητας (Transitive Rule) Αν στη σχέση R ισχύουν οι ΣΕ Α 1 Α 2...Α n B 1 B 2...B m, και Β 1 Β 2...Β m C 1 C 2...C k τότε ισχύει και η Α 1 Α 2...Α n C 1 C 2...C k Παράδειγμα: Αν η σχέση R(A,B,C) ικανοποιεί τις ΣΕ Α Β και Β C τότε ικανοποιεί και την A C. Κανόνας Κατάτμησης/Συσσωμάτωσης (Splitting/Combining Rule) Μια ΣΕ Α 1 Α 2...Α n B 1 B 2...B m μπορεί να γραφεί ως σύνολο ΣΕ (να σπάσει) ως εξής: Α 1 Α 2...Α n B 1, Α 1 Α 2...Α n B 2,..., Α 1 Α 2...Α n B m Μπορούμε να κάνουμε και το αντίθετο, δηλ. να συνενώσουμε ΣΕ που έχουν κοινό αριστερό μέρος σε μια ΣΕ που έχει αριστερά το κοινό μέρος και δεξιά το σύνολο των επιμέρους μερών Παράδειγμα: Η ΣΕ ΑΒ CΔ μπορεί να σπάσει στις ΣΕ ΑΒ C και AB D. Φ. Κόκκορας / Τμ. Μηχανικών Πληροφορικής ΤΕ / ΤΕΙ Θεσσαλίας - 8 - Βάσεις Δεδομένων Ι

Κανόνες για ΣΕ (συνέχεια) Τετριμμένες (trivial) λέγονται οι ΣΕ που το σύνολο γνωρισμάτων δεξιά είναι υποσύνολο του συνόλου γνωρισμάτων αριστερά. Παράδειγμα: η ΣΕ Α 1 Α 2 A 1 είναι τετριμμένη (για τον παραπάνω λόγο)! Οι τετριμμένες ΣΕ είναι προφανές ότι ισχύουν και δε χρειάζεται να τις διερευνούμε! Γενικεύοντας: Κανόνας των Τετριμμένων ΣΕ (Trivial-Dependency Rule): Αν ισχύει Α 1 Α 2...Α n B 1 B 2...B m και τα C 1, C 2,..., C k είναι όσα εκ των B 1, B 2,..., B m δεν υπάρχουν στα αριστερά της ΣΕ, τότε ισχύει και Α 1 Α 2...Α n C 1 C 2...C k. Πρακτική Συνέπεια: Μπορούμε να διώξουμε από δεξιά, τα γνωρίσματα που υπάρχουν και αριστερά! Φ. Κόκκορας / Τμ. Μηχανικών Πληροφορικής ΤΕ / ΤΕΙ Θεσσαλίας - 9 - Βάσεις Δεδομένων Ι

Πλήρωμα (closure) Γνωρισμάτων Έστω {Α 1, Α 2,..., Α n } ένα σύνολο γνωρισμάτων και S ένα σύνολο ΣΕ. Πλήρωμα (closure) του συνόλου {Α 1, Α 2,..., Α n } ως προς τις ΣΕ του S είναι το σύνολο γνωρισμάτων Β για τα οποία ισχύει το εξής: κάθε σχέση που ικανοποιεί όλες τις ΣΕ του S, ικανοποιεί επίσης και τη ΣΕ Α 1 Α 2...Α n B. Το πλήρωμα ενός συνόλου γνωρισμάτων {Α 1,Α 2,...,Α n } συμβολίζεται: {Α 1, Α 2,..., Α n } + ΑΡΑ: αν υπολογίσουμε το πλήρωμα ενός συνόλου γνωρισμάτων, τότε μπορούμε να διαπιστώσουμε αν δεδομένη ΣΕ Α 1 Α 2...Α n B, έπεται από δεδομένο σύνολο ΣΕ S οπότε δεν θα χρειάζεται να την διερευνήσουμε αν ισχύει ή όχι θα ισχύει! Πώς το κάνουμε: Υπολογίζουμε αρχικά το πλήρωμα {Α 1, Α 2,..., Α n } + χρησιμοποιώντας το σύνολο ΣΕ S. Αν το γνώρισμα Β ανήκει στο {Α 1, Α 2,..., Α n } + τότε η Α 1 Α 2...Α n B έπεται από το S διαφορετικά δεν έπεται από το S. Γενίκευση: Η ΣΕ Α 1 Α 2...Α n Β 1 Β 2...Β m, έπεται από το σύνολο ΣΕ S αν και μόνο αν όλα τα γνωρίσματα Β 1, Β 2,..., Β m συμπεριλαμβάνονται στο πλήρωμα {Α 1,Α 2,...,Α n } +. Πώς υπολογίζεται όμως το closure/πλήρωμα? Φ. Κόκκορας / Τμ. Μηχανικών Πληροφορικής ΤΕ / ΤΕΙ Θεσσαλίας - 10 - Βάσεις Δεδομένων Ι

Αλγόριθμος Υπολογισμού Πληρώματος ΕΙΣΟΔΟΣ: ένα σύνολο γνωρισμάτων {Α 1, Α 2,..., Α n } και ένα σύνολο ΣΕ S ΕΞΟΔΟΣ: το πλήρωμα {Α 1, Α 2,..., Α n } + 1. Αν είναι απαραίτητο, σπάμε τις ΣΕ του S έτσι ώστε δεξιά να υπάρχει ένα μόνο γνώρισμα. 2. Έστω Χ το σύνολο που τελικά θα αποτελέσει το πλήρωμα το αρχικοποιούμε με τα γνωρίσματα του συνόλου {Α 1, Α 2,..., Α n }. 3. Αναζητούμε κατ'επανάληψη στις ΣΕ, μια ΣΕ την μορφής Β 1 Β 2...Β m C όπου όλα τα γνωρίσματα Β 1, Β 2,..., Β m ανήκουν στο Χ ενώ το C δεν ανήκει. Αν βρεθεί τέτοια ΣΕ το γνώρισμα C προστίθεται στο σύνολο X και συνεχίζει η αναζήτηση. Επειδή το Χ αυξάνεται διαρκώς και το πλήθος γνωρισμάτων είναι πεπερασμένο, η προσθήκη γνωρισμάτων κάποια στιγμή θα σταματήσει και το βήμα αυτό θα ολοκληρωθεί. 4. Το πλήρωμα {Α 1, Α 2,..., Α n } + είναι το σύνολο Χ που έχει προκύψει, όταν δεν μπορεί να προστεθούν άλλα γνωρίσματα (όταν ολοκληρώνεται το βήμα 3). Φ. Κόκκορας / Τμ. Μηχανικών Πληροφορικής ΤΕ / ΤΕΙ Θεσσαλίας - 11 - Βάσεις Δεδομένων Ι

Σχηματική Απεικόνιση Υπολογισμού Πληρώματος Υ + Χ Α νεό Υ + Υ: σύνολο γνωρισμάτων Υ + : τρέχων πλήρωμα του Υ X A: συναρτησιακή εξάρτηση Χ: σύνολο γνωρισμάτων που υπάρχουν και στο Y + Α: ένα γνώρισμα που δεν ανήκει στο Υ + Αποτέλεσμα: το Α εντάσσεται στο Υ + Υ ένα σύνολο γνωρισμάτων και Y + το τρέχον πλήρωμα (closure) αυτού ως προς ένα σύνολο ισχυουσών συναρτησιακών εξαρτήσεων, S Χ Α μια συναρτησιακή εξάρτηση που θέλουμε να δούμε αν ισχύει αν τα γνωρίσματα του αριστερού μέλους αυτής (το πράσινο σύνολο στο σχήμα) υπάρχουν και στο Y+ (το μωβ σύνολο στο σχήμα) τότε η υπό εξέταση συναρτησιακή εξάρτηση έπεται του S (δηλαδή ισχύει), και το νέο πλήρωμα προκύπτει με την προσθήκη του γνωρίσματος A στο παλιό πλήρωμα προκύπτει έτσι το γαλάζιο σύνολο Φ. Κόκκορας / Τμ. Μηχανικών Πληροφορικής ΤΕ / ΤΕΙ Θεσσαλίας - 12 - Βάσεις Δεδομένων Ι

Παράδειγμα #1 Υπολογισμού/Χρήσης Closure Παράδειγμα Έστω μια σχέση με τα γνωρίσματα A, B, C, D, E και F που ικανοποιεί τις ΣΕ AB C, BC AD, D E, CF B. Ποιο είναι το πλήρωμα του {A, B} + του συνόλου {A,B}; Με βάση το βήμα 1, σπάμε την BC AD σε BC A και BC D. Με βάση το βήμα 2 θέτουμε X={A, B} Επαναλήψεις βάσει βήματος 3: στην AB C, τα αριστερά μέλη ανήκουν στο Χ, άρα προσθέτουμε και το C: X={A, B, C} στην BC A, τα αριστερά μέλη ανήκουν στο Χ αλλά το Α υπάρχει ήδη στο Χ στην BC D, τα B, C ανήκουν στο Χ, άρα προσθέτουμε και το D: X={A, B, C, D} στην D E το D ανήκει στο Χ, άρα προσθέτουμε και το Ε στο Χ: X={A, B, C, D, Ε} δεν γίνονται άλλες επαναλήψεις το CF B δεν μπορεί να χρησιμοποιηθεί γιατί το F δεν ανήκει στο X σε καμιά φάση των υπολογισμών Άρα {A, B} + = {A, B, C, D, Ε} Συνέχεια Άσκησης: Εξετάστε τώρα αν η ΣΕ AB D έπεται από τις παραπάνω ΣΕ. Υπολογίζουμε το πλήρωμα {A, B} + που όπως είδαμε είναι {A, B, C, D, Ε} Καθώς το D ανήκει στο πλήρωμα συμπεραίνουμε ότι η AB D έπεται από τις δεδομένες ΣΕ. Φ. Κόκκορας / Τμ. Μηχανικών Πληροφορικής ΤΕ / ΤΕΙ Θεσσαλίας - 13 - Βάσεις Δεδομένων Ι

Παράδειγμα #2 Υπολογισμού/Χρήσης Closure Ελέγξτε αν η ΣΕ D A έπεται από τις δεδομένες ΣΕ: AB C, BC A, BC D, D E, CF B υπολογίζουμε το {D} + αρχικά θέτουμε X={D} επαναλήψεις (βήμα 3 αλγορίθμου) χρησιμοποιώντας την ΣΕ D E προσθέτουμε το A στο Χ: άρα X={D, E} δεν υπάρχει άλλη ΣΕ που να επιτρέπει να προσθέσουμε άλλα στοιχεία στο Χ άρα {D} + = {D, E} Επειδή το Α της D A δεν ανήκει στο {D} + συμπεραίνουμε ότι η ΣΕ D A δεν έπεται από τις δεδομένες ΣΕ. Φ. Κόκκορας / Τμ. Μηχανικών Πληροφορικής ΤΕ / ΤΕΙ Θεσσαλίας - 14 - Βάσεις Δεδομένων Ι

Προβολή Συναρτησιακών Εξαρτήσεων Μια ανάγκη που προκύπτει συχνά στη μελέτη της δομής σχεσιακών σχημάτων, είναι: Αν έχουμε μια σχέση R που ικανοποιεί το σύνολο ΣΕ S και υπολογίσουμε την προβολή της R 1 =π L (R), όπου L υποσύνολο των γνωρισμάτων της R, τότε ποιες από τις ΣΕ του S εξακολουθούν να ισχύουν και στην προβολή R 1 ; Υπενθύμιση: η προβολή π L (R) πρακτικά επιλέγει κάποιες στήλες από το σύνολο στηλών της R Ζητούμενο είναι ένας γρήγορος τρόπος, καθώς θεωρητικά, το πλήθος των ΣΕ που θα ισχύουν στην R 1 εξαρτάται εκθετικά από το πλήθος γνωρισμάτων της R 1. Ορισμός που θα χρειαστεί: Ελαχιστιαίο Σύνολο Συναρτησιακών Εξαρτήσεων όλες οι ΣΕ έχουν ένα γνώρισμα στο δεξιό μέλος αν αφαιρεθεί μια ΣΕ, αυτό που απομένει δεν είναι βάση (δεν είναι ισοδύναμα) αν αφαιρέσουμε ένα ή περισσότερα γνωρίσματα από το αριστερό μέρος οποιασδήποτε από τις ΣΕ, αυτό που απομένει δεν είναι βάση. Ακολουθεί ο αλγόριθμος και σχετικό παράδειγμα χρήσης του. Φ. Κόκκορας / Τμ. Μηχανικών Πληροφορικής ΤΕ / ΤΕΙ Θεσσαλίας - 15 - Βάσεις Δεδομένων Ι

Αλγόριθμος Προβολής Συνόλου ΣΕ Είσοδος: μια σχέση R, μια προβολή R 1 =π L (R) και ένα σύνολο ΣΕ S που ισχύουν στην R Έξοδος: Το σύνολο ΣΕ που ισχύουν στην R 1 1. έστω T το ζητούμενο σύνολο αρχικά το Τ είναι κενό 2. Για κάθε σύνολο γνωρισμάτων X που είναι υποσύνολο της R 1, υπολογίζουμε το X +. Ο υπολογισμός αυτός πραγματοποιείται ως προς τις ΣΕ του S και μπορεί να αφορά γνωρίσματα που ανήκουν στο σχήμα της R αλλά όχι σε αυτό της R 1. Προσθέτουμε στο Τ όλες τις μη τετριμμένες ΣΕ Χ Α για τις οποίες το γνώρισμα Α ανήκει στο πλήρωμα Χ + και στην προβολή R 1. 3. Το Τ είναι βάση για τις ΣΕ που ισχύουν στην R 1 αλλά όχι απαραίτητα ελαχιστιαία. Μπορούμε να τροποποιήσουμε το Τ και να πάρουμε ελαχιστιαία βάση, ως εξής: α) Αν στο Τ υπάρχει μια ΣΕ F που έπεται από άλλες ΣΕ του Τ τότε αφαιρούμε την F από το Τ. β) Έστω Y B μια ΣΕ του Τ, με το Υ να περιλαμβάνει τουλάχιστον δύο γνωρίσματα, και έστω Z ένα σύνολο γνωρισμάτων που προκύπτει από το Υ αν αφαιρεθεί ένα από τα γνωρίσματά του. Αν η Ζ έπεται από τις ΣΕ του Τ (συμπεριλαμβανομένης και της Y B) τότε αντικαθιστούμε την Y B με τη Ζ B. γ) Επαναλαμβάνουμε τα (α) και (β) με όλους του πιθανούς τρόπους, μέχρι να μην μπορεί να γίνουν άλλες αλλαγές στο Τ. That was hard! Φ. Κόκκορας / Τμ. Μηχανικών Πληροφορικής ΤΕ / ΤΕΙ Θεσσαλίας - 16 - Βάσεις Δεδομένων Ι

Παράδειγμα Έστω η R(A,B,C,D) που ικανοποιεί τις ΣΕ A B, B C και C D. Αν διαγράψουμε (προβολή) το γνώρισμα B και πάρουμε την R 1 (A,C,D), ποιες ΣΕ ισχύουν στην R 1 ; Θεωρητικά, πρέπει να υπολογίσουμε το πλήρωμα για κάθε ένα από τα 8 υποσύνολα του {A,C,D} ως προς όλες τις ΣΕ, ακόμη και αυτές που περιέχουν το Β. Όμως μπορούμε να απλοποιήσουμε λίγο την κατάσταση καθώς: Η πλήρωση του κενού συνόλου και του {A,C,D} (2 από τα 8 υποσύνολα του {A,C,D}) είναι αδύνατο να δώσει μη τετριμμένες ΣΕ. Αν το πλήρωμα κάποιου συνόλου Χ περιλαμβάνει όλα τα γνωρίσματα τότε δεν χρειάζεται να εξετάσουμε υπερσύνολα του X καθώς η πλήρωσή τους δεν πρόκειται να δημιουργήσει νέες ΣΕ. Άρα συμφέρει να υπολογίσουμε το πλήρωμα συνόλων που έχουν μόνο ένα γνώρισμα και αν είναι απαραίτητο θα πάμε και σε σύνολα με δύο γνωρίσματα. Για κάθε πλήρωμα ενός συνόλου γνωρισμάτων Χ, προσθέτουμε την ΣΕ Χ Ε, όπου το Ε περιλαμβάνεται στο πλήρωμα X + και στο schema της R 1, αλλά όχι και στο Χ (γιατί τότε η ΣΕ θα είναι τετριμμένη και δεν έχει νόημα να την κρατήσουμε!). {Α} + ={Α,Β,C,D}. Άρα η R 1 ικανοποιεί τις σχέσεις: Α C, Α D. Βοήθεια: Η Α Β απορρίπτεται γιατί το Β δεν υπάρχει και στο schema της R 1 {C} + ={C,D}. Άρα η R 1 ικανοποιεί και τη σχέση: C D {D} + ={D}. Δεν προκύπτουν κάποιες ΣΕ εδώ. Φ. Κόκκορας / Τμ. Μηχανικών Πληροφορικής ΤΕ / ΤΕΙ Θεσσαλίας - 17 - Βάσεις Δεδομένων Ι

Παράδειγμα (συνέχεια) Άρα ολοκληρώσαμε την εξέταση των συνόλων με ένα γνώρισμα ({Α}, {Β}, {C}). Αφού το πλήρωμα {Α} + περιλαμβάνει όλα τα γνωρίσματα της R 1, δεν έχουμε λόγο να εξετάσουμε υπερσύνολα του {A}. H μόνη περίπτωση συνόλου δύο γνωρισμάτων που θέλει εξέταση είναι το {C,D} +. {C,D} + ={C,D} άρα κι εδώ, δεν προκύπτουν κάποιες ΣΕ Σύνοψη: Στην R 1 ισχύουν οι ΣΕ: Α C, Α D, C D Η Α D μπορεί να παραληφθεί καθώς προκύπτει από την ιδιότητα της μεταβατικότητας και τις άλλες δύο σχέσεις. Τελικό Σύνολο ΣΕ που ισχύουν στην R 1 : Α C, Α D το σύνολο αυτό είναι και το ελαχιστιαίο για τις ΣΕ της R 1. That was really hard! Φ. Κόκκορας / Τμ. Μηχανικών Πληροφορικής ΤΕ / ΤΕΙ Θεσσαλίας - 18 - Βάσεις Δεδομένων Ι

Σχεδίαση Σχεσιακών Σχημάτων ΒΔ Το σχεσιακό σχήμα (schema) είναι εξαιρετικά σημαντικό γιατί αν δεν γίνει σωστά μπορεί να δημιουργηθούν προβλήματα πλεονασματικότητας και άλλων ανωμαλιών. Τι θα κάνουμε στη συνέχεια: θα διερευνήσουμε τα προβλήματα μιας κακής σχεδίασης θα δούμε την έννοια της διάσπασης μιας σχέσης σε απλούστερες θα δούμε την "κανονική μορφή Boyce-Codd", μια συνθήκη που εξαλείφει τα προβλήματα συνδυάζοντας τα παραπάνω 3, θα μάθουμε να διασφαλίζουμε την ικανοποίηση της συνθήκης της "κανονικής μορφής Boyce-Codd" Πάμε πάλι στην "τεχνητά" προβληματική σχέση που αναφέραμε αρχικά: movies1(title, year, length, studioname, starname) title year length genre studioname starname Star Wars 1977 124 SciFi Fox Carrie Fisher Star Wars 1977 124 SciFi Fox Mark Hamill Star Wars 1977 124 SciFi Fox Harrison Ford Gone With the Wind 1939 231 drama MGM Vivien Leigh Wayne's World 1992 95 comedy Paramount Dana Carvey Wayne's World 1992 95 comedy Paramount Mike Meyers Φ. Κόκκορας / Τμ. Μηχανικών Πληροφορικής ΤΕ / ΤΕΙ Θεσσαλίας - 19 - Βάσεις Δεδομένων Ι

Ανωμαλίες! Πλεονασματικότητα: Η ίδια πληροφορία επαναλαμβάνεται, χωρίς να είναι αναγκαίο, σε πολλές πλειάδες. π.χ. η διάρκεια (length) και το είδος (genre) των ταινιών Star Wars και Wayne's World επαναλαμβάνονται για κάθε ηθοποιό που πρωταγωνιστεί σε αυτές! Ανωμαλίες Ενημέρωσης: Όταν κάποια πληροφορία επαναλαμβάνεται, τυχόν μεταβολή της δημιουργεί τον κίνδυνο να μην γίνει πλήρως (σε κάθε σημείο επανάληψης) ή τον φόρτο να πρέπει να γίνει πολλές φορές. π.χ. αν θέλουμε να αλλάξουμε τη διάρκεια της ταινίας Star Wars πρέπει να το κάνουμε σε 3 σημεία. Υπάρχει τρόπος επανασχεδίασης που να εξαλείφει το πρόβλημα; Ανωμαλίες Διαγραφής: σε διαγραφή κάποιας πληροφορίας μπορεί ως παρενέργεια να χάσουμε άλλες πληροφορίες π.χ. αν διαγράψουμε την Vivien Leigh από το σύνολο των ηθοποιών της ταινίας Gone with the Wind διαγράφοντας τη σχετική πλειάδα, τότε εκτός του ότι δεν θα είχαμε ηθοποιούς για αυτή την ταινία, θα χάναμε και επιπλέον πληροφορίες, όπως την διάρκεια και το είδος! Φ. Κόκκορας / Τμ. Μηχανικών Πληροφορικής ΤΕ / ΤΕΙ Θεσσαλίας - 20 - Βάσεις Δεδομένων Ι

Διάσπαση Σχέσεων Η διάσπαση των σχέσεων είναι η μέθοδος που χρησιμοποιείται για την εξάλειψη των ανωμαλιών που αναφέρθηκαν. Αφού περιγράψουμε τη μέθοδο της διάσπασης θα εξηγήσουμε πώς επιλέγουμε μια διάσπαση (από τις πιθανώς πολλές που μπορεί να υπάρχουν) που εξαλείφει τις ανωμαλίες. Μπορούμε να διασπάσουμε μια σχέση R(A 1, A 2,..., A n ) σε δύο σχέσεις S(B 1, B 2,..., B m ) και T(C 1, C 2,..., C k ) έτσι ώστε: {A 1, A 2,..., A n } = {B 1, B 2,..., B m } {C 1, C 2,..., C k } S = π Β1,Β2,...,Βm (R) π: τελεστής προβολής (επιλογή στηλών) T = π C1,C2,...,Ck (R) Παράδειγμα: Θα διασπάσουμε την "προβληματική" σχέση movies1 movies1(title, year, length, studioname, starname) σε μια σχέση movies2(title, year, length, studioname) και μια σχέση movies3(title, year, starname) Το γιατί το κάνουμε έτσι θα εξηγηθεί παρακάτω. Πάμε να δούμε πιο εποπτικά τη διάσπαση και της συνέπειές της! Φ. Κόκκορας / Τμ. Μηχανικών Πληροφορικής ΤΕ / ΤΕΙ Θεσσαλίας - 21 - Βάσεις Δεδομένων Ι

Σχέση movies1(title, year, length, studioname, starname) title year length genre studioname starname Star Wars 1977 124 SciFi Fox Carrie Fisher Star Wars 1977 124 SciFi Fox Mark Hamill Star Wars 1977 124 SciFi Fox Harrison Ford Gone With the Wind 1939 231 drama MGM Vivien Leigh Wayne's World 1992 95 comedy Paramount Dana Carvey Wayne's World 1992 95 comedy Paramount Mike Meyers Σχέση movies2(title, year, length, studioname) title year length genre studioname Star Wars 1977 124 SciFi Fox Gone With the Wind 1939 231 drama MGM Wayne's World 1992 95 comedy Paramount Σχέση movies3(title, year, starname) title year starname Star Wars 1977 Carrie Fisher Star Wars 1977 Mark Hamill Star Wars 1977 Harrison Ford Gone With the Wind 1939 Vivien Leigh Wayne's World 1992 Dana Carvey Wayne's World 1992 Mike Meyers Φ. Κόκκορας / Τμ. Μηχανικών Πληροφορικής ΤΕ / ΤΕΙ Θεσσαλίας - 22 - Βάσεις Δεδομένων Ι

Συνέπειες Διάσπασης Παραδείγματος Εξαλείφθηκε η πλεονασματικότητα: π.χ. η διάρκεια κάθε ταινίας εμφανίζεται μία μόνο φορά. Εξαλείφθηκε ο κίνδυνος ανωμαλιών ενημέρωσης: π.χ. αν θέλουμε να αλλάξουμε τη διάρκεια μιας ταινίας πρέπει να κάνουμε μία μόνο αλλαγή Εξαλείφθηκε ο κίνδυνος ανωμαλιών διαγραφής: π.χ. αν θελήσουμε να διαγράψουμε τους ηθοποιούς της ταινίας "Gone With the Wind", ναι μεν η ταινία δεν θα εμφανίζεται στη σχέση movies3, πλην όμως οι λοιπές πληροφορίες για αυτή θα εξακολουθούν να υπάρχουν στη σχέση movies2. Θα έλεγε κανείς ότι στη σχέση movies3 εξακολουθεί να υπάρχει πλεονάζουσα πληροφορία καθώς τίτλος και έτος επαναλαμβάνονται πολλές φορές. Αυτά τα δύο γνωρίσματα όμως αποτελούν το κλειδί για τις ταινίες και δεν υπάρχει συνοπτικότερος τρόπος για να αναπαρασταθεί μια ταινία (μόνο με τεχνητό κωδικό/κλειδί)! Θα έλεγε κανείς ότι η αλλαγή του έτους (π.χ. σε 2008) στην πρώτη πλειάδα της σχέσης movies3 πιθανώς να δημιουργεί πρόβλημα ενημέρωσης. Δεν υπάρχει κάτι κακό σε τέτοια αλλαγή καθώς δεχτήκαμε ότι κάτι τέτοιο θα σήμαινε την ύπαρξη μια άλλης ταινίας (Star Wars, 2008) στην οποία πρωταγωνίστησε η Carrie Fisher. Δηλ. δεν θέλουμε να το αποτρέψουμε ούτε είναι απαραίτητα λάθος επιλογή. Φ. Κόκκορας / Τμ. Μηχανικών Πληροφορικής ΤΕ / ΤΕΙ Θεσσαλίας - 23 - Βάσεις Δεδομένων Ι

Κανονική Μορφή Boyce-Codd (Boyce-Codd Normal Form - BCNF) Είδαμε ότι σκοπός της διάσπασης μιας σχέσης R σε άλλες είναι η αντικατάστασή της με άλλες που δεν παρουσιάζουν ανωμαλίες. Πώς κρίνουμε αν μια σχέση R θα παρουσιάζει ανωμαλίες (άρα πρέπει να "σπάσει"); Απάντηση: Ελέγχοντας αν ισχύει η συνθήκη BCNF. Τι ακριβώς ελέγχει η συνθήκη BCNF; Σε μια σχέση R, αν υπάρχει μη τετριμμένη ΣΕ Α 1 Α 2...Α n B 1 B 2...B m της R που στο αριστερό της μέλος δεν περιέχει κλειδί, τότε η R πρέπει να σπάσει. Φ. Κόκκορας / Τμ. Μηχανικών Πληροφορικής ΤΕ / ΤΕΙ Θεσσαλίας - 24 - Βάσεις Δεδομένων Ι

Παραδείγματα Παράδειγμα #1: Έστω η σχέση: Drinkers(name, addr, beersliked, manf, favbeer)...με κλειδί το: {name, beersliked}...και έστω ότι ισχύουν οι ΣΕ: name addr favbeer, beersliked manf Σε κάθε ΣΕ, το αριστερό μέρος ΔΕΝ περιέχει το κλειδί! ΑΡΑ η σχέση Drinkers δεν είναι σε BCNF Παράδειγμα #2 Έστω η σχέση: Beers(name, manf, manfaddr)...με κλειδί το: {name}...και έστω ότι ισχύουν οι ΣΕ: name manf, manf manfaddr Η name manf δεν παραβιάζει τη BCNF (στο αριστερό μέρος περιέχει το κλειδί!) Η manf manfaddr παραβιάζει τη BCNF (στο αριστερό μέρος ΔΕΝ περιέχει το κλειδί) Φ. Κόκκορας / Τμ. Μηχανικών Πληροφορικής ΤΕ / ΤΕΙ Θεσσαλίας - 25 - Βάσεις Δεδομένων Ι

Διάσπαση σε BCNF Αλγόριθμος Δίνεται μια σχέση R και σύνολο F από ΣΕ που ισχύουν. Ψάχνουμε στις δοθείσες ΣΕ για μια ΣΕ Χ Υ που παραβιάζει την BCNF. Υπόψη ότι αν οποιαδήποτε ΣΕ που έπεται των ΣΕ του F παραβιάζει τη BCNF, τότε θα υπάρχει σίγουρα κάποια ΣΕ στο F που θα παραβιάζει τη BCNF. Υπενθύμιση: τα Χ και Υ στην Χ Υ είναι σύνολα από γνωρίσματα της R. Υπολογίζουμε το πλήρωμα X + υπόψη ότι το Χ δεν περιέχει όλα τα γνωρίσματα της R (αλλιώς θα περιείχε το κλειδί!!) Η R αντικαθίσταται από τις ακόλουθες δύο σχέσεις: R 1 που περιέχει τα γνωρίσματα του X + R 2 που περιέχει τα γνωρίσματα R - X + + X Επαναλαμβάνουμε τον έλεγχο (στις R 1, R 2 ) αναδρομικά μέχρι να έχουμε μόνο σχέσεις σε BCNF. Φ. Κόκκορας / Τμ. Μηχανικών Πληροφορικής ΤΕ / ΤΕΙ Θεσσαλίας - 26 - Βάσεις Δεδομένων Ι

Παράδειγμα Κανονικοποίησης BCNF (1/3) Έστω η σχέση Drinkers(name, addr, beersliked, manf, favbeer)...και το σύνολο ΣΕ F = name addr, name favbeer, beersliked manf το ζευγάρι γνωρισμάτων name και BeersLiked είναι κλειδί της σχέσης δίνονται ενδεικτικά δεδομένα με χρωματική επισήμανση των προβληματικών σημείων επανάληψη πληροφορίας τριών γνωρισμάτων (κόκκινο) για να καταχωρηθούν οι δύο μπύρες που αρέσουν στην Janeway επανάληψη του κατασκευαστή της μπύρας (μπλέ) κάθε φορά που η ίδια μπύρα αρέσει σε κάποιον Η ΣΕ name addr παραβιάζει τη BCNF (στο αριστερό μέρος δεν περιέχει το κλειδί) Υπολογισμός πληρώματος (slide 11): {name} + = {name, addr, favbeer} Οπότε η Drinkers αντικαθίσταται από τις ακόλουθες 2 σχέσεις (βλ. προηγ. slide): Drinkers1(name, addr, favbeer) - περιέχει τα γνωρίσματα του {name} + Drinkers2(name, beersliked, manf) - περιέχει τα γνωρίσματα Drinkers-{name} + +name Φ. Κόκκορας / Τμ. Μηχανικών Πληροφορικής ΤΕ / ΤΕΙ Θεσσαλίας - 27 - Βάσεις Δεδομένων Ι

Παράδειγμα Κανονικοποίησης BCNF (2/3) Δεν τελειώσαμε! Πρέπει να δούμε αν οι Drinkers1 και Drinkers2 είναι σε BCNF. Θα χρειαστεί να υπολογίσουμε ποιες από τις ΣΕ της αρχικής σχέσης Drinkers, εξακολουθούν να ισχύουν σε κάθε μια από τις Drinkers1 και Drinkers2. αυτό ακριβώς κάνει ο αλγόριθμός της προβολής (slides #15-18) Ακολουθεί το βήμα προβολής για την Drinkers1 (κάντε το μόνοι σας σαν άσκηση!) Για την Drinkers1(name, addr, favbeer), οι σχετικές ΣΕ είναι οι name addr, Κλειδί: το σύνολο {name} name favbeer άρα στην Drinkers1 δεν παραβιάζεται ο κανόνας της BCNF, ΑΡΑ η Drinkers1 είναι σε BCNF. Ακολουθεί το βήμα προβολής για την Drinkers2 (κάντε το μόνοι σας σαν άσκηση!) Για την Drinkers2(name, beersliked, manf), οι σχετικές ΣΕ είναι μόνο η beersliked manf Κλειδί: το σύνολο {name, beersliked} Παραβίαση BCNF: στη μοναδική ΣΕ που ισχύει, το αριστερό μέρος ΔΕΝ περιέχει κλειδί! ΑΡΑ η Drinkers2 θα σπάσει σε δύο Φ. Κόκκορας / Τμ. Μηχανικών Πληροφορικής ΤΕ / ΤΕΙ Θεσσαλίας - 28 - Βάσεις Δεδομένων Ι

Παράδειγμα Κανονικοποίησης BCNF (3/3) Διάσπαση της Drinkers2 Πλήρωμα {beersliked} + = {beersliked, manf} Οπότε η Drinkers2 σπάει στις: Drinkers3(beersLiked, manf) περιέχει (βλ. slide #26)τα γνωρίσματα του {beersliked} + Drinkers4(name, beersliked) περιέχει (βλ. slide #26) τα γνωρίσματα του Drinkers2 - {beersliked} + + beersliked Σύνοψη Τελική Κατάσταση Drinkers1(name, addr, favbeer) (μας μιλάει για drinkers) Drinkers3(beersLiked, manf) (μας μιλάει για μπύρες) Drinkers4(name, beersliked) (μας μιλάει για τη σχέση μεταξύ ενός drinker και των μπυρών που του αρέσουν) Σημαντική Παρατήρηση: καταλήξαμε σε σχέσεις που περιγράφουν διακριτές οντότητες (μπύρες, drinkers) ή σχέσεις μεταξύ διακριτών οντοτήτων! Αυτό είναι κάτι που πρέπει να έχουμε κατά νου στη σχεδίαση ΒΔ καθώς σε μεγάλο βαθμό η δημιουργία σχέσεων/πινάκων που αφορούν σε διακριτές οντότητες οδηγεί εξαρχής σε σωστές σχεδιάσεις (schemata). Θα το δούμε στη E/R σχεδίαση (#10). Φ. Κόκκορας / Τμ. Μηχανικών Πληροφορικής ΤΕ / ΤΕΙ Θεσσαλίας - 29 - Βάσεις Δεδομένων Ι

Βάσεις Δεδομένων Ι - 09 Θεωρία Σχεδίασης ΣΒΔ (Σχεσιακών Βάσεων Δεδομένων) Β' Μέρος Φώτης Κόκκορας (MSc/PhD) Τμήμα Τεχνολογίας Πληροφορικής & Τηλεπ/νιών ΤΕΙ Λάρισας Φ. Κόκκορας / Τμ. Μηχανικών Πληροφορικής ΤΕ / ΤΕΙ Θεσσαλίας - 30 - Βάσεις Δεδομένων Ι

Κανονικοποίηση / Normalization (ξανά!) (παραδοσιακή παρουσίαση) Κανονικοποίηση ΒΔ είναι η διαδικασία της οργάνωσης των γνωρισμάτων και των σχέσεων μιας σχεσιακής ΒΔ έτσι ώστε να ελαχιστοποιηθούν τα πλεονασματικά δεδομένα και οι εξαρτήσεις τους. Περιλαμβάνει συνήθως την διαίρεση σχέσεων σε μικρότερες και τον ορισμό συσχετίσεων μεταξύ τους. Στην πολύ πρόσφατη βιβλιογραφία, πέραν της BCNF (Κανονικής Μορφής Boyce Codd) που είδαμε αναλυτικά, θα διαπιστώσει κανείς και την ύπαρξη της λεγόμενης 3NF (3 ης Κανονικής Μορφής), μιας χαλαρότερης εκδοχής της BCNF, καθώς και της 4NF, κτλ. Η απορία που δημιουργείται είναι προφανώς η ακόλουθη: αν υπάρχει 3NF, BCNF, 4NF τότε δεν θα πρέπει να υπάρχει και Πρώτη και Δεύτερη Κανονικές Μορφές; Η απάντηση είναι ΝΑΙ, υπάρχουν, πλην όμως: επειδή η 3NF είναι πρακτικά το ελάχιστο που επιδιώκει κανείς να ισχύει σε μια σχεδίαση ΒΔ, και επειδή η 3NF καλύπτει και τις απαιτήσεις της 2NF, και επειδή η 2NF καλύπτει τις απαιτήσεις της 1NF γίνεται αντιληπτό ότι η αναφορά σε αυτές έχει περισσότερο ακαδημαϊκό ενδιαφέρον. Για την πληρότητα του θέματος, θα δούμε τις πρώτες κανονικές μορφές με τη σειρά, μέσα και από παραδείγματα. Ειδικότερα θα δούμε τις: 1NF, 2NF, 3NF, BCNF, 4NF Φ. Κόκκορας / Τμ. Μηχανικών Πληροφορικής ΤΕ / ΤΕΙ Θεσσαλίας - 31 - Βάσεις Δεδομένων Ι

Πρώτη Κανονική Μορφή - 1NF 1NF Μια σχέση είναι σε 1NF αν τα πεδία ορισμού όλων των γνωρισμάτων περιέχουν μόνο ατομικές τιμές, δηλαδή όχι σύνθετες δομές όπως πίνακες, σύνολα, κτλ κάθε γνωρίσματα περιέχει μία μόνο τιμή από το πεδίο ορισμού του Σημείωση: η πρώτη απαίτηση, στις μέρες μας, αμφισβητείται τόσο θεωρητικά όσο και πρακτικά. Η χρήση σύνθετων δομών ως τιμών σε γνωρίσματα είναι γεγονός ακόμη και σε καλοσχεδιασμένα συστήματα 1, πλην όμως δεν είναι συχνό φαινόμενο και καλό είναι να αποφεύγεται! Παράδειγμα σχεδίασης που παραβιάζει την 1NF: έστω η ακόλουθη σχέση Πελάτες Κάποιες πλειάδες (εγγραφές) έχουν περισσότερες από μια τιμές σε κάποια γνωρίσματα! ο πελάτης με κωδικό 456 έχει δύο τηλέφωνα στο γνώρισμα "telephone number" 1 Για παράδειγμα, στη βάση δεδομένων δημοφιλών συστημάτων κατασκευής web site. Φ. Κόκκορας / Τμ. Μηχανικών Πληροφορικής ΤΕ / ΤΕΙ Θεσσαλίας - 32 - Βάσεις Δεδομένων Ι

Πρώτη Κανονική Μορφή - 1NF (συνέχεια) Συνέχεια Παραδείγματος Αντιμετώπιση Προβλήματος Σπάμε τη σχέση στις σχέσεις Πελάτης και Τηλέφωνα_Πελάτη ως ακολούθως Πελάτης Τηλέφωνα_Πελάτη Μια εγγραφή πελάτη στη σχέση Πελάτες (πατρική σχέση/πίνακας), μπορεί να σχετίζεται με πολλά τηλέφωνα στη σχέση Τηλέφωνα_Πελάτη (θυγατρική σχέση/πίνακας). Σε πιο σύγχρονη θεώρηση, μια σχέση είναι σε 1NF αν τηρεί τις ακόλουθες συνθήκες: οι πλειάδες και τα γνωρίσματα δεν απαιτείται να βρίσκονται σε κάποια συγκεκριμένη σειρά δεν υπάρχουν ίδιες πλειάδες (πρακτικά σημαίνει ότι η σχέση έχει κλειδί) κάθε γνώρισμα σε κάθε πλειάδα έχει μια μόνο τιμή τίποτα περισσότερο, τίποτα λιγότερο αμφιλεγόμενη απαίτηση! η παραδοσιακή θεώρηση της 1NF επιτρέπει NULL τιμές! οι πλειάδες δεν έχουν άλλα κρυφά στοιχεία μόνο τα γνωρίσματα της σχέσης Φ. Κόκκορας / Τμ. Μηχανικών Πληροφορικής ΤΕ / ΤΕΙ Θεσσαλίας - 33 - Βάσεις Δεδομένων Ι

Δεύτερη Κανονική Μορφή - 2NF 2NF Μια σχέση είναι σε 2NF αν και μόνο αν: είναι ήδη σε 1NF κάθε γνώρισμα που δεν ανήκει σε κλειδί της σχέσης εξαρτάται είτε από το κλειδί ή από κάποιο άλλο γνώρισμα που επίσης δεν ανήκει στο κλειδί. Παρατήρηση: μια σχέση σε 1NF που δεν έχει σύνθετο κλειδί (δηλ. αποτελούμενο από περισσότερα του ενός γνωρίσματα) είναι αυτομάτως και σε 2NF. Παράδειγμα Προβληματικής Σχέσης Στη σχέση Ικανότητες_Υπαλλήλων δεξιά, κλειδί είναι ο συνδυασμός των γνωρισμάτων Employee (υπάλληλος) και Skill (ικανότητα). Δεν μπορεί να είναι κλειδί κανένα από τα δύο μόνο του! Το γνώρισμα όμως Current Work Location (τοποθεσία εργασίας) εξαρτάται προφανώς από το γνώρισμα Employee! Άρα η σχέση δεν είναι σε 2NF. Συνέπειες: η τοποθεσία κάθε υπαλλήλου επαναλαμβάνετε (πλεονασμός/redundancy) και αυτό έχουμε πει ότι δεν είναι καλό - δημιουργεί πχ προϋποθέσεις για ανωμαλίες ενημέρωσης. Φ. Κόκκορας / Τμ. Μηχανικών Πληροφορικής ΤΕ / ΤΕΙ Θεσσαλίας - 34 - Βάσεις Δεδομένων Ι

Δεύτερη Κανονική Μορφή - 2NF (συνέχεια) Συνέχεια Παραδείγματος Αντιμετώπιση Προβλήματος Σπάμε τη σχέση στις σχέσεις Υπάλληλοι και Ινακότητες_Υπαλλήλων ως ακολούθως Υπάλληλοι Ινακότητες_Υπαλλήλων Δηλαδή το γνώρισμα Current Work Location που εξαρτιόταν από τμήμα του κλειδιού, όρισε μαζί με τη συναρτησιακή του εξάρτηση (το Employee) μια νέα σχέση (Υπάλληλοι), και τα υπόλοιπα γνωρίσματα μαζί με Employee (ως ξένο κλειδί!) σχημάτισαν μια σχέση μόνα τους (την Ινακότητες_Υπαλλήλων). Δεν είναι όμως η 2NF εγγύηση για εξάλειψη πλεονασμού και ανωμαλιών!!! Φ. Κόκκορας / Τμ. Μηχανικών Πληροφορικής ΤΕ / ΤΕΙ Θεσσαλίας - 35 - Βάσεις Δεδομένων Ι

Δεύτερη Κανονική Μορφή - 2NF (συνέχεια) Έστω η ακόλουθη σχέση Νικητές_Τουρνουά Τα γνωρίσματα Winner (νικητής) και Winner Date of Birth (ημ/νία γέννησης νικητή) εξαρτώνται προφανώς από το κλειδί (δηλ. αν ξέρουμε τα Tournament και Year, βρίσκουμε επακριβώς την τιμή στα άλλα δύο γνωρίσματα. Η σχέση είναι σε 2NF. Παρόλα αυτά βλέπουμε ότι δεν αποτρέπεται η επανάληψη ίδιων ζευγαριών τιμών Winner και Winner Date of Birth! Άρα υπάρχουν προϋποθέσεις πλεονασμού και ό,τι αυτό συνεπάγεται. Η βαθύτερη αιτία του προβλήματος είναι η μεταβατική συσχέτιση που υπάρχει μεταξύ του Winner Date of Birth και του κλειδιού (Tournament/Year), μέσω του Winner! Αυτό το πρόβλημα το αντιμετωπίζει η 3NF (βλ. παρακάτω). Φ. Κόκκορας / Τμ. Μηχανικών Πληροφορικής ΤΕ / ΤΕΙ Θεσσαλίας - 36 - Βάσεις Δεδομένων Ι

Δεύτερη Κανονική Μορφή - 2NF (συνέχεια) Η απουσία συναρτησιακής εξάρτησης μεταξύ γνωρισμάτων εκτός κλειδιού (π.χ. το Manufacturer Country (χώρα κατασκευαστή) και τμήματος κλειδιού, δεν εγγυάται ότι η σχέση είναι σε 2NF. Πρέπει αυτό να ισχύει για όλα τα δυνητικά κλειδιά! Στο παράδειγμα, το Manufacturer Country εξαρτάται από το Manufacturer που είναι τμήμα ενός δεύτερου κλειδιού που υπάρχει, του ζευγαριού Manufacturer/Model. Άρα η σχέση δεν είναι σε 2NF και μπορεί να σπάσει ως εξής: Φ. Κόκκορας / Τμ. Μηχανικών Πληροφορικής ΤΕ / ΤΕΙ Θεσσαλίας - 37 - Βάσεις Δεδομένων Ι

Τρίτη Κανονική Μορφή - 3NF Μια σχέση είναι σε 3NF αν και μόνο αν: είναι ήδη σε 2NF κάθε γνώρισμα που δεν ανήκει σε κλειδί της σχέσης εξαρτάται άμεσα (όχι μεταβατικά) από κάθε κλειδί της σχέσης Παράδειγμα: Το winner date of birth δεν ανήκει στο κλειδί της σχέσης αλλά η εξάρτησή του από αυτό ΔΕΝ είναι άμεση όπως απαιτεί η συνθήκη 3NF αλλά έμμεση (μέσω του Winner, που δεν ανήκει σε κάποιο κλειδί) (βλ. #35) Για συμφωνία με την 3NF, η σχέση πρέπει να σπάσει ως εξής: 3NF Δηλαδή το "προβληματικό" γνώρισμα κάνει πίνακα (δεξιά) με τη συναρτησιακή του εξάρτηση (το winner), το οποίο γίνεται ξένο κλειδί στη σχέση με τα υπόλοιπα γνωρίσματα (αριστερά). Φ. Κόκκορας / Τμ. Μηχανικών Πληροφορικής ΤΕ / ΤΕΙ Θεσσαλίας - 38 - Βάσεις Δεδομένων Ι

Κανονική Μορφή Boyce Codd BCNF (ή αλλιώς 3.5NF) BCNF Αν και παρουσιάσαμε ήδη την BCNF, θα επαναλάβουμε τον ορισμό της για την πληρότητα του Β' μέρους των βασικών αρχών σχεδίασης. Η BCNF είναι μια αυστηρότερη εκδοχή της 3NF. Στην BCNF, πλεονασμοί εξαιτίας συναρτησιακών εξαρτήσεων έχουν πλήρως εξαλειφτεί αν και μπορεί ακόμη να υπάρχουν πλεονασμοί, όμως άλλου είδους. Μια σχέση είναι σε BCNF αν και μόνο αν για κάθε μη τετριμμένη συναρτησιακή εξάρτηση X Y, το αριστερό τμήμα περιέχει το κλειδί της σχέσης. τα Χ και Υ είναι σύνολα γνωρισμάτων της σχέσης μη τετριμμένη: το Υ δεν είναι υποσύνολο του Χ Σπάνια μια σχέση σε 3NF δεν πληροί και τις προϋποθέσεις της BCNF. Αν μια σχέση σε 3NF δεν έχει επικαλυπτόμενα κλειδιά τότε είναι και σε BCNF. Αν μια σχέση σε 3NF έχει επικαλυπτόμενα κλειδιά τότε μπορεί να είναι σε BCNF αλλά μπορεί και να μην είναι! Οπότε πρέπει να εφαρμοστεί η (πολύπλοκη, κατά γενική παραδοχή) διαδικασία διάσπασης που περιγράφηκε στο Α' μέρος. Θα επαναλάβουμε το παράδειγμα του Α' μέρους στο επόμενο slide με μια λίγο ανεπίσημη μεθοδολογία. Φ. Κόκκορας / Τμ. Μηχανικών Πληροφορικής ΤΕ / ΤΕΙ Θεσσαλίας - 39 - Βάσεις Δεδομένων Ι

Κανονική Μορφή Boyce Codd BCNF Παράδειγμα 1/2 Έστω πάλι η σχέση Drinkers(name, addr, beersliked, manf, favbeer) το ζευγάρι γνωρισμάτων name και BeersLiked είναι κλειδί της σχέσης υπάρχουν οι συναρτησιακές εξαρτήσεις name addr (αν ξέρουμε τον drinker βρίσκουμε τη διεύθυνσή του) name favbeer (αν ξέρουμε τον drinker βρίσκουμε την (μία) αγαπημένη του μπύρα) οι δύο παραπάνω ΣΕ μπορεί να γραφούν και ως μία: name addr, favbeer (Κανόνας Κατάτμησης/Συσσωμάτωσης beersliked manf (αν ξέρουμε τη μπύρα βρίσκουμε τον κατασκευαστή της) Σπάμε την αρχική σχέση ως εξής: μια σχέση προκύπτει από τα γνωρίσματα της ΣΕ name addr, favbeer drinkers1(name, addr, favbeer) μια δεύτερη σχέση προκύπτει από τα υπόλοιπα γνωρίσματα μαζί με το αριστερό μέρος της παραπάνω ΣΕ (που θα αποτελέσει το σημείο συσχέτισης των δύο σχέσεων). drinkers2(name, beersliked, manf) Φ. Κόκκορας / Τμ. Μηχανικών Πληροφορικής ΤΕ / ΤΕΙ Θεσσαλίας - 40 - Βάσεις Δεδομένων Ι

Κανονική Μορφή Boyce Codd BCNF Παράδειγμα 2/2 Η drinkers1 είναι σε BCNF καθώς addr και favbeer εξαρτώνται από το κλειδί. Γιατί name addr και name favbeer που όμως έχουν το κλειδί στο αριστερό μέρος Στη drinkers2 κλειδί είναι τα {name,beersliked} και ο manf (κατασκευαστής) εξαρτάται από τη μπύρα (beersliked), δηλ. ισχύει η ΣΕ beersliked manf. Το αριστερό μέρος όμως αυτής της ΣΕ δεν περιέχει το κλειδί της σχέσης, άρα η drinkers2 δεν είναι σε BCNF και θα πρέπει να σπάσει: μια σχέση προκύπτει από τα γνωρίσματα της επίμαχης ΣΕ: drinkers3(beersliked,manf) μια δεύτερη σχέση προκύπτει από τα υπόλοιπα γνωρίσματα της drinkers2, συν το αριστερό μέρος της επίμαχης ΣΕ, δηλαδή: drinkers4(name,beersliked). Οι drinkers3 και drinkers4 είναι σε BCNF και δεν σπάνε περαιτέρω. Άρα καταλήξαμε στις: drinkers1(name,addr,favbeer), drinkers3(beersliked,manf), drinkers4(name,beersliked) Αν παρατηρήσετε όμως τι είδους πληροφορία έχουν, καλύτερα ονόματα είναι: drinkers(name,addr,favbeer), beers(beersliked,manf), likes(name,beersliked) Παρατήρηση: η οργάνωση των πληροφοριών αυτού του παραδείγματος με οντοσυσχετιστική προσέγγιση (E/R - slides #10) οδηγεί κατευθείαν σε αυτό το αποτέλεσμα!! Φ. Κόκκορας / Τμ. Μηχανικών Πληροφορικής ΤΕ / ΤΕΙ Θεσσαλίας - 41 - Βάσεις Δεδομένων Ι

Τέταρτη Κανονική Μορφή 4NF Αντιμετωπίζει πλεονασμούς προερχόμενους από μια πιο γενικευμένη εξάρτηση που ονομάζεται πλειότιμη εξάρτηση (multivalued dependency). 4NF Θα την δείτε στο "Βάσεις Δεδομένων ΙΙ" Άλλες Κανονικές Μορφές Υπάρχουν κι άλλες κανονικές (όπως π.χ. η 5NF, ή 6NF) που όμως είναι αρκετά εξειδικευμένες και αντιμετωπίζουν μάλλον σπάνια προβληματικά σημεία στη σχεδίαση σχεσιακών ΒΔ. Ζητούμενο συνήθως είναι να εξασφαλιστεί η 3NF ή ακόμη καλύτερα η BCNF, εφόσον συντρέχει λόγος. Εκεί σταματάνε συνήθως οι βελτιστοποιήσεις στην πράξη. Δώστε μεγάλη σημασία στην οντοσυσχετιστική σχεδίαση ΒΔ που παρουσιάζεται στην επόμενη ενότητα (#10). Αν μάθετε να τη χειρίζεστε σωστά, θα έχετε σχεδόν απευθείας σωστές σχεδιάσεις, χωρίς να μπλέκετε στα ψιλά γράμματα των κανονικών μορφών. Ακόμη όμως και οι κανονικές μορφές, δεν είναι τόσο πολύπλοκες όσο πιθανώς δείχνουν. Για δείτε ξανά στα παραδείγματα πώς σπάμε την εκάστοτε προβληματική σχέση σε δύο σχέσεις. Μήπως τελικά το κάνουμε με τον ίδιο τρόπο κάθε φορά; Δείτε το! Φ. Κόκκορας / Τμ. Μηχανικών Πληροφορικής ΤΕ / ΤΕΙ Θεσσαλίας - 42 - Βάσεις Δεδομένων Ι