Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 8. Κανονικοποίηση Σχεδιασμός Βάσεων Δεδομένων Χρήστος Δουλκερίδης 2017-18
Θεµατολογία Διάλεξης Σχεδιασμός ιδεατής βάσης δεδομένων παράγει ένα σύνολο από σχεσιακά σχήματα, και ένα σύνολο περιορισμών ακεραιότητας Μετάβαση από ένα σχεσιακό σχήμα σε ένα βελτιωμένο σχεσιακό σχήμα Κανονικοποίηση (ormalizatio) με χρήση διάσπασης (decompositio) Σχεδίαση σχέσεων Πώς να σχεδιάζουμε «καλές» σχέσεις Το «καλές» αναφέρεται σε στην ορθότητα (correctess) και στην έλλειψη πλεονασμού (redudacy) Δουλκερίδης 2
Διάρθρωση Διάλεξης Εισαγωγή στην τελειοποίηση του σχεσιακού σχήματος Προβλήματα πλεονασμού στα δεδομένα Συναρτησιακές εξαρτήσεις Κανονικές μορφές Κανονικοποίηση Διασπάσεις Δουλκερίδης 3
Προβλήµατα που Προκαλεί ο Πλεονασµός Πλεονασμός στην αποθήκευση Η ίδια πληροφορία καταχωρείται πολλές φορές Προβληματική ενημέρωση Όταν ενημερώνεται ένα μόνο αντίγραφο (πολλαπλά καταχωρημένων) δεδομένων προκύπτει ασυνέπεια στο πληροφοριακό περιεχόμενο της ΒΔ Προβληματική εισαγωγή Το σχήμα δεν μπορεί να καταχωρήσει μια νέα πληροφορία σε σχέση με άλλη αντίστοιχη πληροφορία της οποίας η καταχώρηση έχει προηγηθεί Προβληματική διαγραφή Το σχήμα δεν μπορεί να διαγράψει κάποια πληροφορία, χωρίς να προκαλείται διαγραφή άλλης σχετικής πληροφορίας Δουλκερίδης 4
Παράδειγµα (1/2) Hourly_Emps(ss, ame, lot, ratig, hourly_wages, hours_worked) SNLRWH Έστω ότι ισχύει: R à W Δηλαδή για κάθε τιμή του ratig υπάρχει μία μόνο επιτρεπτή τιμή για το hourly_wages ss ame lot ratig hourly_wages hours_worked 1 Attishoo 48 8 10 40 2 Smiley 22 8 10 30 3 Smethurst 35 5 7 30 4 Guidu 35 5 7 32 5 Madaya 35 8 10 40 Δουλκερίδης 5
Παράδειγµα (2/2) Προβληματική ενημέρωση Δεν μπορούμε να αλλάξουμε το W μόνο στην πρώτη πλειάδα Προβληματική εισαγωγή Δεν μπορούμε να εισάγουμε νέο εργαζόμενο εάν δε γνωρίζουμε το hourly_wages για το συγκεκριμένο ratig Προβληματική διαγραφή Εάν διαγράψουμε όλους τους υπαλλήλους με ratig=8 χάνουμε την πληροφορία ότι συσχετίζεται με hourly_wages=10 ss ame lot ratig hourly_wages hours_worked 1 Attishoo 48 8 10 40 2 Smiley 22 8 10 30 3 Smethurst 35 5 7 30 4 Guidu 35 5 7 32 5 Madaya 35 8 10 40 Δουλκερίδης 6
Χρήση Διασπάσεων Εμπειρικά ο πλεονασμός προκύπτει σε ένα σχεσιακό σχήμα όταν επιβάλλονται μη φυσιολογικού τύπου διασυνδέσεις ανάμεσα στα γνωρίσματα Πολλά προβλήματα που σχετίζονται με πλεονασμό μπορούν να αντιμετωπιστούν με την αντικατάσταση ενός πίνακα από μια συλλογή «μικρότερων» πινάκων (διάσπαση μεγάλου πίνακα σε άλλους μικρότερους) Δουλκερίδης 7
Παράδειγµα (συνέχεια) Hourly_Emps2(ss, ame, lot, ratig, hours_worked) Wages(ratig, hourly_wages) ss ame lot ratig hours_worked 1 Attishoo 48 8 40 2 Smiley 22 8 30 3 Smethurst 35 5 30 4 Guidu 35 5 32 5 Madaya 35 8 40 ratig hourly_wages 8 10 5 7 Δουλκερίδης 8
Προβλήµατα που Σχετίζονται µε τη Διάσπαση Χρειάζεται να γίνει διάσπαση; Κανονικές μορφές πινάκων Ποια προβλήματα μπορεί να προκαλέσει η διάσπαση; Δύο ενδιαφέρουσες ιδιότητες Σύζευξη χωρίς απώλεια πληροφορίας Επαναδημιουργία κάθε στιγμιότυπου του αρχικού πίνακα από τα στιγμιότυπα των μικρότερων πινάκων Διατήρηση συναρτησιακών εξαρτήσεων Δυνατότητα επιβολής κάθε περιορισμού του αρχικού πίνακα, επιβάλλοντας κάποιους περιορισμούς στους μικρότερους πίνακες Μειονέκτημα των διασπάσεων Ανάγκη σύζευξης πινάκων (jois) για την απάντηση επερωτήσεων (ueries) Δουλκερίδης 9
Συναρτησιακές Εξαρτήσεις Η συναρτησιακή εξάρτηση (fuctioal depedecy FD) είναι ένα είδος περιορισμού ακεραιότητας (IC) που γενικεύει την έννοια του κλειδιού Έστω R(X,Y, ), τότε θα λέμε ότι ένα στιγμιότυπο r της R ικανοποιεί την FD:XàY, όταν για κάθε ζεύγος πλειάδων t 1 και t 2 του r ισχύουν Αν t 1.X=t 2.X => t 1.Y=t 2.Y Παράδειγμα: ABàC A B C D A1 B1 C1 A1 B1 C1 A1 B2 C2 A2 B1 C3 D1 D2 D1 D1 Δουλκερίδης 10
Εγκυρότητα και Περιορισµοί Κλειδιού Έγκυρο ονομάζεται το στιγμιότυπο ενός πίνακα που ικανοποιεί όλους τους περιορισμούς ακεραιότητας (ICs), καθώς και όλες τις συναρτησιακές εξαρτήσεις (FDs) Δεν είναι δυνατός ο έλεγχος ισχύος (=δεν παραβιάζεται καμιά FD) μιας συναρτησιακής εξάρτησης FD επί μιας σχέσης R Είναι δυνατός μόνο σε κάποιο στιγμιότυπο r της R Μια FD δεν αποτελεί περιορισμό κλειδιού (στο προηγούμενο παράδειγμα) παρά το ότι δεν παραβιάζεται η ABàC, το AB δε συνιστά κλειδί του πίνακα Ο περιορισμός κύριου κλειδιού αποτελεί μια ειδική περίπτωση FD Χ à Υ Τα γνωρίσματα που αποτελούν το κλειδί παίζουν το ρόλο του Χ, ενώ το σύνολο όλων των γνωρισμάτων παίζουν το ρόλο του Υ Δουλκερίδης 11
Ιδιότητες Συναρτησιακών Εξαρτήσεων (1/3) Μια FD f λέμε ότι συνεπάγεται από ένα σύνολο F από FD όταν η f ισχύει για το κάθε ένα στιγμιότυπο πίνακα όπου ισχύουν όλες οι συναρτησιακές εξαρτήσεις του F Εγκλεισμός F + του F (closure) είναι το σύνολο όλων των FD που συνεπάγονται από το F Αξιώματα του Armstrog Ανακλαστικότητα: Εάν X Ê Y, τότε X à Y Επάυξηση: Εάν Χ à Υ, τότε ΧΖ à ΥΖ για κάθε Ζ Επαγωγή: Εάν Χ à Υ και Υ à Ζ, τότε Χ à Ζ Αυτοί είναι ισχυροί και πλήρεις κανόνες λογισμού για FD Δουλκερίδης 12
Ιδιότητες Συναρτησιακών Εξαρτήσεων (2/3) Δύο επιπλέον κανόνες (που προκύπτουν από τα αξιώματα) Ένωση: Εάν Χ à Υ και Χ à Ζ, τότε Χ à ΥΖ Διάσπαση: Εάν Χ à ΥΖ, τότε Χ à Υ και Χ à Ζ Παράδειγμα: Cotracts(cotractid,supplierid,projectid,deptid,partid,uatity,value) C είναι το κλειδί: C à CSJDPQV Η αγορά ενός είδους (P) από ένα πρόγραμμα (J) γίνεται μέσω ενός μόνο συμβολαίου (C): JP à C Κάθε τμήμα (D) αγοράζει το πολύ ένα είδος (P) από έναν προμηθευτή (S): SD à P JPàC και C à CSJDPQV συνεπάγονται: JP à CSJDPQV SD à P συνεπάγεται: SDJ à JP SDJ à JP και JP à CSJDPQV συνεπάγονται: SDJ à CSJDPQV Δουλκερίδης 13
Ιδιότητες Συναρτησιακών Εξαρτήσεων (3/3) Ο υπολογισμός του εγκλεισμού ενός συνόλου FD είναι ακριβός (το μέγεθος του εγκλεισμού είναι εκθετικό ως προς το πλήθος των γνωρισμάτων) Αυτό που μας ενδιαφέρει είναι εάν μια δεδομένη FD Χ à Υ ανήκει στον εγκλεισμό ενός συνόλου F από FD Ένας αποδοτικός τρόπος ελέγχου Υπολογίζουμε τον εγκλεισμό των γνωρισμάτων Χ + του Χ ως προς το F Είναι ένα σύνολο γνωρισμάτων Α τέτοιο ώστε: Χ à Α Î F + Υπάρχει γραμμικός αλγόριθμος για τον υπολογισμό του Ελέγχουμε εάν το Υ ανήκει στο Χ + Παράδειγμα Το σύνολο F = {A à B, B à C, CD à E} συνεπάγεται το Α à Ε; Δηλαδή το Α à Ε ανήκει στο F + ή ισοδύναμα το Ε ανήκει στο Α + ; Δουλκερίδης 14
Εγκλεισµός Συνόλου Γνωρισµάτων Δίνονται: μια σχέση R, ένα σύνολο γνωρισμάτων {Α 1,Α 2,...,Α } της R, και ένα σύνολο F από FD Να βρεθούν: όλα τα υπόλοιπα γνωρίσματα Β της R έτσι ώστε: {Α 1,Α 2,...,Α } à Β Αλγόριθμος Ξεκινάμε με το σύνολο γνωρισμάτων Κ= {Α 1,Α 2,...,Α } repeat util o chage if (A à B Î F) ad (A Î K) ad (B Ï K) the πρόσθεσε το B στο Κ Δουλκερίδης 15
Παράδειγµα ΑΒ à C AD à E B à D AF à B Πώς θα χρησιμοποιήσουμε τον αλγόριθμο για να ελέγξουμε εάν ένα σύνολο γνωρισμάτων είναι κλειδί; Εγκλεισμός του Α,Β: {A,B} + = Εγκλεισμός του Α,F: {A,F} + = Το σύνολο F = {A à B, B à C, CD à E} συνεπάγεται το Α à Ε; Δουλκερίδης 16
Άλλο Παράδειγµα Δίνεται σχέση R(A,B,C,D,E,F,G) και οι ακόλουθες συναρτησιακές εξαρτήσεις: (1) AàBC (2) EàCF, (3) BàE, (4) CDàEF, (5) AàG α) Να βρεθεί ο εγκλεισμός του Α. β) Βρείτε ένα υποψήφιο κλειδί για την R. Δουλκερίδης 17
Χρήση των FD για Παραγωγή Καλών Σχηµάτων Ξεκινάμε με ένα σύνολο σχέσεων Ορίζουμε τις FD (και τα κλειδιά) για τις σχέσεις με βάση τη σημασιολογία της εφαρμογής Μετασχηματίζουμε τις σχέσεις σε κανονικές μορφές (κανονικοποίηση) Με χρήση διάσπασης Διαισθητικά «καλό» σχήμα σημαίνει ότι Δεν υπάρχουν ανώμαλες καταστάσεις Μπορούμε να ανακατασκευάσουμε όλη την αρχική πληροφορία Δουλκερίδης 18
Κανονικές Μορφές Όταν ένα σχεσιακό σχήμα βρίσκεται σε μία κανονική μορφή, γνωρίζουμε ότι συγκεκριμένου τύπου προβλήματα δεν υπάρχουν Πρωτη κανονική μορφή (1NF) Ένας πίνακας είναι σε 1NF όταν κάθε γνώρισμά του καταχωρεί ατομικές τιμές Δεύτερη κανονική μορφή (2NF) Εάν κάθε γνώρισμα εξαρτάται από ολόκληρο το πρωτεύον κλειδί Εάν κάθε υποψήφιο κλειδί αποτελείται από ένα γνώρισμα, τότε ο πίνακας είναι σε 2NF Τρίτη κανονική μορφή (3NF) Boyce-Codd Normal Form (BCNF) 3NF BCNF 1NF 2NF Δουλκερίδης 19
Κανονική Μορφή Boyce-Codd (BCNF) Μια απλή συνθήκη για την αποφυγή ανωμαλιών από τις σχέσεις Μια σχέση R βρίσκεται σε BCNF, όσον αφορά στις FD της, αν και μόνο αν οποτεδήποτε ισχύει μια μη τετριμμένη εξάρτηση A à B στην R, το Α περιέχει κάποιο κλειδί της R Γιατί η παραβίαση αυτής της συνθήκης παράγει μη καλά σχήματα; Δουλκερίδης 20
Παράδειγµα BCNF Hourly_Emps(ss, ame, lot, ratig, hourly_wages, hours_worked) Ποιες είναι οι συναρτησιακές εξαρτήσεις; Ποια είναι τα κλειδιά; Βρίσκεται η σχέση σε BCNF; ss ame lot ratig hourly_wages hours_worked 1 Attishoo 48 8 10 40 2 Smiley 22 8 10 30 3 Smethurst 35 5 7 30 4 Guidu 35 5 7 32 5 Madaya 35 8 10 40 Δουλκερίδης 21
Τρίτη Κανονική Μορφή Η διάσπαση σε BCNF δε διατηρεί τις εξαρτήσεις Μια σχέση R βρίσκεται σε 3NF αν και μόνο αν Για οποιαδήποτε μη τετριμμένη εξάρτηση Χ à Α στην R, το Χ περιέχει κάποιο κλειδί της R ή Το Α αποτελεί τμήμα κάποιου κλειδιού της R Είναι συμβιβασμός αντί της BCNF Κάθε BCNF πίνακας είναι και 3NF Η 3NF επιτρέπει κάποιο πλεονασμό Δουλκερίδης 22
Άσκηση για το Σπίτι Δίνεται σχέση R(A,B,C,D,E) και οι συναρτησιακές εξαρτήσεις: A à B, BC à E, ED à A Βρείτε όλα τα κλειδιά της R. Βρίσκεται η R σε BCNF? Βρίσκεται η R σε 3NF? Δουλκερίδης 23
Μερική και Μεταβατική Εξάρτηση Έστω μια FD X à A που παραβιάζει τη συνθήκη 3NF. Διακρίνονται δύο περιπτώσεις: Το Χ είναι γνήσιο υποσύνολο κάποιου κλειδιού Κ (Μερική Εξάρτηση) ΚΛΕΙΔΙ Γνωρίσματα Χ Γνώρισμα Α Το Χ δεν αποτελεί γνήσιο υποσύνολο κανενός κλειδιού (Μεταβατική Εξάρτηση) ΚΛΕΙΔΙ Γνωρίσματα Χ Γνώρισμα Α ΚΛΕΙΔΙ Γνώρισμα Α Γνωρίσματα Χ Δουλκερίδης 24
Παραδείγµατα Σχετικά µε 3NF Μερική εξάρτηση Reserves(sid,bid,day,creditcard) (SBDC) Αν ισχύει S à C, τα ζεύγη (S,C) καταχωρούνται με πλεονασμό Μεταβατική εξάρτηση Hourly_Emps(SNLRWH) Αν ισχύει R à W, τότε ισχύει και: S à R à W, άρα προβλήματα στην εισαγωγή, ενημέρωση και διαγραφή Πλεονασμός ακόμη κι όταν ο πίνακας είναι 3NF Reserves (SBDC) και ισχύει S à C Δεν είναι 3NF Εάν ισχύει επιπλέον C à S Είναι 3NF, διότι το CBD είναι κλειδί Πάλι όμως υπάρχει πλεονασμός στα ζεύγη (S,C) Δουλκερίδης 25
Διασπάσεις Έστω R μια σχέση με γνωρίσματα {Α 1,Α 2,...,Α } Δημιουργήστε δύο σχέσεις R 1 και R 2 με γνωρίσματα {Β 1,Β 2,...,Β m } και {C 1,C 2,...,C l } αντίστοιχα, έτσι ώστε {Β 1,Β 2,...,Β m } È {C 1,C 2,...,C l } = {Α 1,Α 2,...,Α } και 1. η R 1 είναι ο περιορισμός της R πάνω στο {Β 1,Β 2,...,Β m } 2. η R 2 είναι ο περιορισμός της R πάνω στο {C 1,C 2,...,C l } 3. η επανένωση (joi) των R 1 και R 2 παράγει την R Δουλκερίδης 26
Ορολογία των Διασπάσεων Ο περιορισμός (1,2) ονομάζεται προβολή και τα διπλότυπα απαλείφονται Η επανένωση στο (3) ονομάζεται σύζευξη Μια διάσπαση που ικανοποιεί το (3) ονομάζεται διάσπαση με σύζευξη χωρίς απώλεια πληροφορίας (lossless-joi decompositio) Μόνο τέτοιου είδους διασπάσεις μας ενδιαφέρουν Δουλκερίδης 27
Διάσπαση µε Σύζευξη Χωρίς Απώλεια Πληροφορίας Η διάσπαση της R στα X και Y είναι με σύζευξη χωρίς απώλεια πληροφορίας ως προς το F αν και μόνο αν ο εγκλεισμός του F περιλαμβάνει την εξάρτηση X Y à X ή την X Y à Y Συγκεκριμένα η διάσπαση της R στα ΧΥ και R-Υ είναι με σύζευξη χωρίς απώλεια πληροφορίας, αν το Χ à Υ ισχύει πάνω στην R και το Χ Υ είναι κενό S P D s1 p1 d1 s2 p2 d2 s3 p1 d3 Διάσπαση S s1 s2 s3 P p1 p2 p1 P p1 p2 p1 D d1 d2 d3 Ανασύσταση S P D s1 p1 d1 s2 p2 d2 s3 p1 d3 s1 p1 d3 s3 p1 d1 Δουλκερίδης 28
Παράδειγµα Hourly_Emps(SNLRWH) και ισχύει R à W Παραβιάζεται η 3NF Διάσπαση σε δύο πίνακες SNLRH RW Χωρίς απώλεια πληροφορίας! Διότι (με βάση την προηγούμενη παρατήρηση) ισχύει R à W και το R W είναι κενό, οπότε γίνεται διάσπαση σε RW και (Hourly_Emps W) Δουλκερίδης 29
Διασπάσεις που Διατηρούν τις Εξαρτήσεις (1/2) Έστω CSJDPQV, C είναι το κλειδί, JP à C και SD à P To JP είναι επίσης κλειδί Το SD à P παραβιάζει τη BCNF Διάσπαση σε BCNF: CSJDQV και SDP Πρόβλημα: ο έλεγχος JP à C απαιτεί σύζευξη Διάσπαση που διατηρεί τις εξαρτήσεις (διαισθητικά) Αν η R διασπαστεί στα Χ, Y και Ζ και επιβάλλουμε τις FD που ισχύουν στα X, στο Υ και στο Ζ, τότε όλες οι FD που ίσχυαν αρχικά στην R πρέπει να εξακολουθούν να ισχύουν Προβολή ενός συνόλου FD F: Αν η R διασπαστεί στα Χ,..., η προβολή F X του F στο X είναι το σύνολο των FD U à V του F + (εγκλεισμός του F) για τις οποίες τα U, V ανήκουν στο X Δουλκερίδης 30
Διασπάσεις που Διατηρούν τις Εξαρτήσεις (2/2) Η διάσπαση της R στα X και Y διατηρεί τις εξαρτήσεις αν: (F X È F Υ ) + = F + δηλαδή αν θεωρήσουμε μόνο τις εξαρτήσεις του F + που μπορούν να ελεγχθούν στο Χ χωρίς να εξετάσουμε το Υ, και (αντίστοιχα) στο Υ χωρίς να εξετάσουμε το Χ, αυτές συνεπάγονται όλες τις εξαρτήσεις του F + Είναι σημαντικό να θεωρήσουμε το F + κι όχι το F, στον παραπάνω ορισμό Έστω ABC με Α à Β, Β à C, C à A και διασπάμε σε AB και BC Η διάσπαση διατηρεί τις εξαρτήσεις; H C à A διατηρείται; Η διατήρηση των εξαρτήσεων δε συνεπάγεται τη σύζευξη χωρίς απώλεια πληροφορίας Έστω ABC με Α à Β και διασπάμε σε AB και BC Δουλκερίδης 31
Γιατί να Χρησιµοποιήσουµε Διάσπαση; Η πρώτη ερώτηση που πρέπει να αναλογιστούμε Είναι απαραίτητο να γίνει κάποια διάσπαση; Αν μια σχέση βρίσκεται σε μια κανονική μορφή, τότε συγκεκριμένοι τύποι προβλημάτων ελαχιστοποιούνται/αποφεύγονται Αυτό μπορεί να μας βοηθήσει να αποφασίσουμε εάν είναι καλό να διασπάσουμε μια σχέση Ο ρόλος των FD στον εντοπισμό πλεονασμού Έστω σχέση R με γνωρίσματα τα A, B και C Αν δεν ισχύουν FD: Δεν υπάρχει πλεονασμός Αν ισχύει (π.χ. Α à Β): Διάφορες πλειάδες μπορεί να έχουν την ίδια τιμή για το Α κι αν συμβεί αυτό, τότε όλες θα έχουν την ίδια τιμή και για το Β Δουλκερίδης 32
Διάσπαση σε BCNF Αλγόριθμος διάσπασης σχέσης R σε μια συλλογή BCNF σχέσεων Έστω ότι η FD X à A παραβιάζει την BCNF Όπου Χ Ì R και Α ένα απλό γνώρισμα της R Τότε ο πίνακας R διασπάται σε R-A και XA Εάν κάποιο από τα R-A και XA δεν είναι BCNF, εφαρμόζεται αναδρομικά ο αλγόριθμος Δουλκερίδης 33
Παράδειγµα Διάσπασης σε BCNF CSJDPQV SD à P JP à C SD à P J à S SDP CSJDQV J à S JS 1. Όμως δε διατηρείται η JP à C 2. Μπορούμε να προσθέσουμε μία σχέση CJP 3. Πλεονασμός! CJDQV Δουλκερίδης 34
Σχετικά µε τη Διάσπαση σε BCNF Η διάσπαση σε BCNF είναι συνεπής-σωστή Χωρίς απώλεια πληροφορίας Το τελικό σύνολο των διασπασμένων σχέσεων μπορεί να διαφέρει, ανάλογα με Ποιο σύνολο FD ξεκινήσαμε Τη σειρά που επιλέξαμε τις FD που παραβίαζαν τη BCNF Τελικά όλα τα αποτελέσματα θα βρίσκονται σε BCNF Δουλκερίδης 35
Διάσπαση σε 3NF Υπάρχει πάντα διάσπαση σε 3NF που διατηρεί τις εξαρτήσεις και είναι χωρίς απώλεια σύζευξης και μπορεί να υπολογιστεί σε πολυωνυμικό χρόνο Μπορεί να χρησιμοποιηθεί ο αλγόριθμος για BCNF Για να εξασφαλιστεί η διατήρηση των εξαρτήσεων Αν το Χ à Υ δε διατηρείται, προσθέτουμε τη σχέση ΧΥ Το πρόβλημα είναι ότι μπορεί η ΧΥ να παραβιάζει την 3NF π.χ. θεωρήστε την προσθήκη του CJP για να διατηρήσουμε τη JP à C. Τι θα συνέβαινε αν είχαμε επιπλέον και τη J à C; Αντί για το αρχικό σύνολο εξαρτήσεων F, χρησιμοποίησε την ελάχιστη κάλυψη του F Δουλκερίδης 36
Ελάχιστη Κάλυψη για το Σύνολο των FD Ελάχιστη κάλυψη G για το σύνολο συναρτησιακών εξαρτήσεων F F + = G + Δεξί μέρος εξαρτήσεων στο G είναι ένα χαρακτηριστικό Το G είναι το ελάχιστο σύνολο με την πρώτη ιδιότητα Παράδειγμα Οι A à B, ABCD à E, EF à GH, ACDF à EG έχουν την ελάχιστη κάλυψη: A à B, ACD à E, EF à G και EF à H Δουλκερίδης 37