Department of Computer Science University of Cyprus EPL342 Databases Lecture 23: Functional Dependencies and Normalization Normalization and Normal Forms (Chapter 10.3-10.4, Elmasri-Navathe 5ED) Demetris Zeinalipour http://www.cs.ucy.ac.cy/courses/epl342 23-1
Πεξηερόκελν Δηάιεμεο Κανονικοποιήζη (Normalization) θαη Κανονικέρ Μοπθέρ (Normal Forms) Οπιζμοί: Ππυηεύυν Γνώπιζμα (Prime Attribute), Μεπική/Ολική Σςναπηηζιακή Δξάπηηζη (Partial/Full FD) Κανονικέρ Μοπθέρ Πξώηε Καλνληθή Μνξθή (1NF) Δεύηεξε Καλνληθή Μνξθή (2NF) Τξίηε Καλνληθή Μνξθή (3NF) 23-2
Εηζαγσγή: Καλνληθνπνηήζε (Normalization) Κανονικοποιήζη (Normalization): H δηαδηθαζία διάζπαζηρ ησλ ζρέζεσλ κηαο βάζεο γηα λα ειαρηζηνπνηεζεί ε Δπανάλητη Γεδομένυν. Η επανάλητη είλαη ε πηγή ανυμαλιών ενημεπώζευν Η διάζπαζη γίλεηαη βάζεη ησλ FDs + Κλειδιών. H ζπλαξηεζηαθή εμάξηεζε TOWN ZIP ζην αθόινπζν ζρήκα πξνθαιεί ηελ επαλάιεςε δεδνκέλσλ (redundancy) Π.ρ., νη δηεπζύλζεηο ζηελ ίδηα πεξηνρή έρνπλ ην ίδην θώδηθα (zip) SSN Name Town Zip 1234 Joe Stony Brook 11790 4321 Mary Stony Brook 11790 5454 Tom Stony Brook 11790. Redundancy 23-3
Εηζαγσγή: Καλνληθέο Μνξθέο (Normal Forms, NF) Κανονικέρ Μοπθέρ (Normal forms, ΝF): Είλαη ζπλζήθεο νη νπνίεο επικςπώνοςν (certify) ηνλ Βαθμό Φπηζηόηηηαρ (Goodness Degree) ελόο Σρεζηαθνύ Σρήκαηνο. Οη ζςνθήκερ νξίδνληαη κε ρξήζε ησλ κλειδιών θαη ησλ ζπλαξηεζηαθώλ εμαξηήζεσλ FDs. Η Καλνληθή Μνξθή (NF) κηαο Σρέζεο αλαθέξεηαη ζηε ςηλόηεπη δςναηή NF πνπ είλαη εθικηή γηα έλα ζσήμα: 1NF 2NF 3NF BCNF 4NF 5NF Τν 4NF θαη 5NF δελ είλαη δηαδεδνκέλα ζηε πξάμε θαη δελ κειεηεζνύλ ελώ νη 3NF ή BCNF είλαη ε επιδιυκόμενη μοπθή. Εάλ νη FDs ΓΔΝ κπνξνύλ λα ενηοπιζηούν εύθνια ηόηε ε Κανονικοποιήζη γίλεηαη πξαθηηθά δύζκολη δηαδηθαζία. 23-4
Οξηζκνί: Ππυηεύυν Γνώπιζμα (Definitions: Prime Attribute) Είρακε αλαθέξεη όηη εάλ έλα ζρήκα έρεη πεξηζζόηεξα από έλα θιεηδί ηόηε θάζε θιεηδί νλνκάδεηαη εναλλακηικό κλειδί (candidate key) Έλα από απηά είλαη ην ππυηεύυν κλειδί (primary key) θαη ηα ππόινηπα ηα δεςηεπεύονηα (secondary keys). Π.ρ., (SSN, PNO, SID, Name) ή (SSN, PNO, SID, Name) Ππυηεύυν Γνώπιζμα (Prime ή Key Attribute): Γλώξηζκα ην νπνίν είλαη κέινο ελόο Candidate key Π.ρ., πην πάλσ ην PNO ή SSN ή SID Μη-Ππυηεύυν Γνώπιζμα (Non-prime ή Non-Key): Γλώξηζκα ην νπνίν ΔΕΝ είλαη κέινο θαλελόο Candidate key Π.ρ., πην πάλσ ην Name Οπιζμόρ Φπηζιμεύει ζηο 2NF 23-5
Οξηζκνί: Ολική/Μεπική FD (Definitions: Full/Partial FD) Ολική Σςναπηηζιακή Δξάπηηζη (Full FD): Μηα FD Y Z όπνπ ην Z εμαξηάηαη πλήπυρ από ην Υ. Δειαδή εάλ αθαιπεθεί οποιοδήποηε γλώξηζκα από ην Y (δει., απινπνίεζε ηνπ Υ) ηόηε ε FD ΓΔΝ ηζρύεη πηα. Π.ρ., {SSN, PNUMBER} HOURS, δηόηη εάλ απινπνηεζεί ην {SSN, PNumber} ηόηε δελ ηζρύεη SSN HOURS νύηε θαη ην PNUMBER HOURS Μεπική Σςναπηηζιακή Δξάπηηζη (Partial FD): Μηα εμάξηεζε Y Z πνπ ΓΔΝ είλαη Ολική Δειαδή κπνξεί λα αθαιπεθεί θάπνην γλώξηζκα από ην Y θαη λα ζςνεσίζει λα ιζσύει ην FD. Π.ρ., {SSN, PNUMBER} ENAME είλαη κεξηθή FD δηόηη εάλ αθαηξεζεί ην Pnumber ηόηε ζπλερίδεη λα ηζρύεη ην SSN ENAME. Οπιζμόρ Φπηζιμεύει ζηο 2NF 23-6
Οξηζκνί: Μεηαβαηηθή FD (Definitions: Τransitive FD) Μεηαβαηική Σςναπηηζιακή Δξάπηηζη (Transitive FD): Μηα FD X Z ε νπνία κπνξεί λα εμαρζεί από ηηο FDs X Y θαη Y Z Παπαδείγμαηα: SSN LetterGrade είλαη Μεηαβαηική FD Δηόηη SSN NumGrade θαη NumGrade LetterGrade SSN DMGRSSN είλαη Μεηαβαηική FD Δηόηη SSN DNUMBER and DNUMBER -> DMGRSSN SSN ENAME ΓΔΝ είλαη Μεηαβαηική Δηόηη δελ ππάξρεη ζύλνιν γνυπιζμάηυν X* ηέηνην ώζηε SSN X and X ENAME * Σεκεηώζηε όηη ην Φ πξέπεη λα είλαη non-key γνώπιζμα. Εάλ Φ είλαη πξσηεύσλ γλώξηζκα (π.ρ., X=SID) ηόηε δελ ζεσξείηαη όηη πθίζηαηαη κεηάβαζε ηεο κνξθήο SSN SID, SID ENAME. Οπιζμόρ Φπηζιμεύει ζηο 3NF 23-7
Πξώηε Καλνληθή Μνξθή ( 1NF: First Normal Form ) Άηςπορ Οπιζμόρ 1NF: Καλέλα Γλώξηζκα ΓΔΝ είλαη πλειόηιμο (multivalue)* γλώξηζκα. Παπάδειγμα 1NF * νύηε ζύλζεην (composite) γλώξηζκα, κόλν αηνκηθέο ηηκέο! Παπάδειγμα 1NF Λογική Γιάζπαζηρ ζε 1NF: Μεηάηξεςε θάζε πιεηόηηκν ζε λέα πιεηάδα. 23-8
Πξώηε Καλνληθή Μνξθή ( 1NF: First Normal Form ) Δπιζημάνζειρ για 1NF Πίλαθεο πνπ δελ είλαη ζε 1NF δελ είλαη θαλ ζην ζσεζιακό ζσήμα (ζην νπνίν θάζε γλώξηζκα πξέπεη λα είλαη αηνκηθή ηηκή). Τν 1NF αλαθέξεηαη θπξίσο γηα ιζηοπικούρ λόγοςρ (δειαδή σο ην πξώην βήκα ησλ ηζρπξόηεξσλ θαλνληθώλ κνξθώλ 3NF θαη BCNF πνπ ρξεζηκνπνηνύληαη ζηελ πξάμε). Ππόβλημα με 1ΝF Σπλερίδνπκε λα έρνπκε πιενλαζκό πιεξνθνξίαο (π.ρ., δεο Dname, DMgr_ssn) 23-9
Πξώηε Καλνληθή Μνξθή ( 1NF: First Normal Form ) Τν 1NF δελ επηηξέπνληαη νύηε εμθυλεςμένερ ζσέζειρ π.ρ., EMP_PROJ (SSN, Ename, {PROJS(Pnumber,Hours)}) Παράδειγμα Εμφωλεσμένης «Στέζης» Κανονικοποιημένες Στέζεις 1NF 1NF 23-10
Δεύηεξε Καλνληθή Μνξθή ( 2NF: Second Normal Form ) Άηςπορ Οπιζμόρ 2NF: Καλέλα Γλώξηζκα ΓΔΝ εμαξηάηαη μεπικώρ (partial dependence) από νπνηνδήπνηε κλειδί (είηε είλαη πξσηεύσλ ή δεπηεξεύσλ*) Παπάδειγμα 2NF Γιαηί οι Non-2NF ζσέζειρ έσοςν ππόβλημα; Γηαηί νη κεξηθέο εμαξηήζεηο (δει., FD2 θαη FD3) δεκηνπξγνύλ πλεοναζμό δεδομένυν (redundancy), π.ρ., Redundancy από FD2 SSN Pnumber Hours Ename Pname Plocation 1 1 3 Costas Sensors Nicosia 1 2 4 Costas Web Limassol 2 2 5 Christos Web Limassol Redundancy από FD3 *Σημείωζη: Το Κεθάλαιο 10.4 δίνει οριζμούς με τρήζη και ηων δσο ειδών 23-11
Δεύηεξε Καλνληθή Μνξθή ( 2NF: Second Normal Form ) Αο νξίζνπκε ηελ 2NF θάπσο πην ηππηθά. Οπιζμόρ 2NF: Μηα ζρέζε R είλαη ζε 2NF εάλ θάζε μη-ππυηεύυν γνώπιζμα (non-prime attribute) ζην R είλαη ολικά ζςναπηηζιακά εμαξηώκελν από ην πξσηεύσλ θιεηδί. Παπάδειγμα 2NF (SSN, Pnumber, Hours, Ename) Πξσηεύσλ Γλσξίζκαηα (Prime Attributes) Με-Πξσηεύσλ Γλσξίζκαηα + Μεξηθή Εμάξηεζε Με-Πξσηεύσλ Γλσξίζκαηα + Οιηθή Εμάξηεζε 23-12
Δεύηεξε Καλνληθή Μνξθή (Λνγηθή Δηάζπαζεο ζε 2NF) Λογική Γιάζπαζηρ ζε 2NF: Γηα θάζε κεξηθή FD πνπ παξαβηάδεη ηελ 2NF (δει., X Y, όποσ Χ partial key), δεκηνύξγεζε κηα λέα ζρέζε R(X Y), διαηηρώνηας ζηην αρτική ζτέζη ηο X. 2NF Decomposition (Γιάζπαζη) 2NF 2NF 2NF 23-13
Τξίηε Καλνληθή Μνξθή ( 3NF: Third Normal Form ) Άηςπορ Οπιζμόρ 3NF: Καλέλα Με-Πξσηεύσλ Γλώξηζκα ΓΔΝ εμαξηάηαη μεηαβαηικά (transitive dependence) από νπνηνδήπνηε κλειδί (είηε είλαη πξσηεύσλ ή δεπηεξεύσλ*) Παπάδειγμα 3NF Γιαηί οι Non-3NF ζσέζειρ έσοςν ππόβλημα; Γηαηί θαη πάιη παξακέλεη πιενλαζκόο (redundancy), π.ρ., Property_id County_name Lot# Area Price Tax_rate 1 Nicosia 1 A 100 15% 2 Limassol 6 C 120 10% 3 Nicosia 90 F 130 15% *Σημείωζη: Το Κεθάλαιο 10.4 δίνει οριζμούς με τρήζη και ηων δσο ειδών Redundancy! 23-14
Τξίηε Καλνληθή Μνξθή (3NF: Third Normal Form ) Αο νξίζνπκε ηελ 3NF θάπσο πην ηππηθά. Τςπικόρ Οπιζμόρ 3NF: Μηα ζρέζε R είλαη ζε 3NF εάλ γηα θάζε FD X Y ποσ ζτεηίζεηαι με ηο R ηζρύεη έλα από ηα αθόινπζα: Χ Y (i.e., ην FD είλαη ηεηξηκκέλν) ή Π.ρ., {County_Name,A1,A2} County_Name X είλαη ελαιιαθηηθό θιεηδί (ή ππεξθιεηδί) ηεο R ή Π.ρ., εάλ County_Name {Lot#, Area, Price, Tax_Rate} άξα δελ πξνθύπηνπλ κεηαβαηηθέο εμαξηήζεηο κέζσ non-key (εθόζνλ ην County_Name είλαη key) Κάζε γλώξηζκα A Y είλαη κέξνο θάπνηνπ θιεηδηνύ ηνπ R Επνκέλσο δελ πξνθύπηεη non-key κεηάβαζε κέζσ ηνπ X. 23-15
Τξίηε Καλνληθή Μνξθή (Λνγηθή Δηάζπαζεο ζε 3NF) Λογική Γιάζπαζηρ ζε 3NF: Γηα θάζε FD πνπ παξαβηάδεη ηελ 3NF (δει., X Y, Υ Ζ, όποσ Y nonkey), δεκηνύξγεζε δπν ζρέζεηο R1(X Y), R2(Υ Ζ), ηοποθεηώνηας ζηην R1 σο ξένο κλειδί ην Υ. Παπάδειγμα 3NF Φ Υ Ε Decomposition Φ Υ (Γιάζπαζη) Υ Ε Ίδιο Παπάδειγμα 3NF 3NF 3NF 23-16
Σύνοτη Κανονικών Μοπθών (Όπσο ζα πξέπεη λα ηα ζπκάζηε ) Ππώηη Κανονική Μοπθή (1NF) Δελ ππάξρνπλ Πλειόηιμα (Multivalues) Γιαθοπεηικά Γιαηςπυμένο: Όια ηα γλσξίζκαηα εμαξηώληαη από ην κλειδί. Γεύηεπη Κανονική Μοπθή (2NF) Δελ ππάξρνπλ Μεπικέρ (Partial) Δξαπηήζειρ Γιαθοπεηικά Γιαηςπυμένο: Όια ηα γλσξίζκαηα εμαξηώληαη από Ολόκληπο ηο κλειδί. Τπίηη Κανονική Μοπθή (3NF) Δελ ππάξρνπλ Μεηαβαηικέρ (Transitive) Δξαπηήζειρ Γιαθοπεηικά Γιαηςπυμένο: Όια ηα γλσξίζκαηα δελ εμαξηώληαη από Τίποηα Άλλο εκηόρ Ολόκληπο ηο κλειδί 23-17
Παξάδεηγκα Καλνληθνπνηήζεο Απσικό Σσήμα ( 1NF) ζε 3NF Βήμα 1: Κανονικοποιήζη ζε 2NF 23-19
Παξάδεηγκα Καλνληθνπνηήζεο ζε 3NF Από πποηγούμενη διαθάνεια ( 2NF) 2NF 3NF Βήμα 2: Κανονικοποιήζη ζε 3NF 3NF 3NF 23-20
Παξάδεηγκα Καλνληθνπνηήζεο ζε 3NF Ζ Αναδπομική Δκηέλεζη ηηρ Κανονικοποιήζηρ (Από πάλσ πξνο ηα θάησ) 2NF) 3NF) 23-21