Db crash_course-normalization
-
Upload
vasilios-papaliakos -
Category
Design
-
view
477 -
download
1
description
Transcript of Db crash_course-normalization
Κανονικοποίηση Βάσεων Δεδοµένων
(Database Normalization)
Πχης (M) B. Παπαλιάκος ΠΝ([email protected])
Διαδικαστικά θέµατα
●Διάρκεια: 20 λεπτά
●Η παρουσίαση είναι διαθέσιµη στη διεύθυνση http://papaliakos.gr/db/presentations●Επίσης σας έχει διανεµηθεί σε χαρτί ώστε...●ΝΑ ΚΡΑΤΗΣΕΤΕ ΣΗΜΕΙΩΣΕΙΣ!
●Ερωτήσεις δεκτές, κατά προτίµηση στο τέλος κάθε ενότητας
Εισαγωγή
● Υπόθεση: είστε σχετικοί µε το αντικείµενο των ΒΔ.
● Νιώθετε ότι σας λείπουν κάποιες γνώσεις, όµως τα καταφέρατε σε µια-δυο περιπτώσεις που χρειάστηκε να φτιάξετε ΒΔ στην access.
● Σας προσφέρουν 2000 € για µια ΒΔ-δουλειά µιας εβδοµάδας: pas mal!
Εισαγωγή
Στόχοι
Να µπορούµε να εξηγήσουµε τις έννοιες:
● Εξάρτηση (data dependency)● Πλεονασµός (redundancy) και ● Ασυνέπεια (inconsistency) δεδοµένων
Να µπορούµε να εξαλείψουµε τα παραπάνω προβλήµατα µέσω της κανονικοποίησης (normalization).
Βασικές έννοιες - Πυλώνες
● Εξάρτηση (Dependency)● Πλεονασµός δεδοµένων (Data redundancy)● Ασυνέπεια δεδοµένων (Data inconsistency)● Κανονικοποίηση (Normalization)● Κανονικές µορφές (Normal forms)
● 1NF – 2NF - 3NF
“Στο πεδίο των Η/Υ όπου κι αν πετάξεις µια πέτρα θα χτυπήσεις µια βάση δεδοµένων”
1. Εξάρτηση (Dependency)Όταν λέµε: το Y εξαρτάται από το X εννοούµε:
Y = f ( X )
● ή µε άλλα λόγια, το Χ καθορίζει το Υ.● Αυτή η εξάρτηση σηµειώνεται ως X → Y.
Παράδειγµα:
Τι εξαρτήσεις έχουµε εδώ;
invoice_id line_nr product_code product_name customer_name
1. Εξάρτηση (Dependency)Όταν λέµε: το Y εξαρτάται από το X εννοούµε:
Y = f ( X )
● ή µε άλλα λόγια, το Χ καθορίζει το Υ.● Αυτή η εξάρτηση σηµειώνεται ως X → Y.
Παράδειγµα:
product_code → product_name
invoice_id → customer_name
invoice_id line_nr product_code product_name customer_name
1. Εξάρτηση (Dependency)
Δώστε παραδείγµατα εξαρτηµένων µεταβλητών:
● Σε µια ΒΔ µαθητών-µαθηµάτων-βαθµών● Σε µια ΒΔ υλικών-αποθηκών-αποθεµάτων● Σε µια ΒΔ αυτοκινήτων
“Καλή” και “Κακή” εξάρτηση
● “Καλή” εξάρτηση (“Good” dependency):
● Πρωτεύον κλειδί (Primary Key) → άλλες ιδιότητες
● “Κακές” εξαρτήσεις (“Bad” dependencies):
● Μερική εξάρτηση (Partial dependency)
● Μεταβατική εξάρτηση (Transitive dependency)
invoice_id line_nr product_code product_name customer_name
invoice_id line_nr product_code product_name customer_name
Αποτέλεσµα;
2Α. Πλεονασµός δεδοµένων (Data redundancy)
Η ίδια πληροφορία φυλάσσεται σε διάφορα µέρη (διπλο-εγγραφή).
Παράδειγµα: η διεύθυνση και το τηλέφωνο ενός πελάτη µπορεί να φυλάσεται στο αρχείο των
λογαριασµών όψεως και στο αντίστοιχο αρχείο των λογαριασµών ταµιευτηρίου µιας τράπεζας.
Αυτό ονοµάζεται
πλεονασµός δεδοµένων
(data redundancy).
κωδ_λογαρ. πελ_όνοµα πελ_διευθ πελ_τηλοψ-004 Παπαλιάκος Κρυστάλλη 6943483457
κωδ_λογαρ. πελ_όνοµα πελ_διευθ πελ_τηλταµ-037 Παπαλιάκος Κρυστάλλη 6943483457
2Α. Πλεονασµός δεδοµένων (Data redundancy)
● Παράδειγµα:
Τι µπορεί να πάει στραβά???
2Β. Ασυνέπεια δεδοµένων(Data inconsistency)
● Αυτός ο πλεονασµός µπορεί να οδηγήσει σε
ασυνέπεια δεδοµένων (data inconsistency)
δηλαδή σε ● διαφορετικά αντίγραφα των ιδίων δεδοµένων τα οποία ● µπορεί να µη συµφωνούν µεταξύ τους.
2Β. Ασυνέπεια δεδοµένων(Data inconsistency)
● διαφορετικά αντίγραφα των ιδίων δεδοµένων ● µπορεί να µη συµφωνούν µεταξύ τους. ● Παράδειγµα: αν αλλάξουµε τη διεύθυνση ενός πελάτη στο αρχείο των λογαριασµών
ταµιευτηρίου, τότε αυτή η αλλαγή δεν θα φαίνεται οπουδήποτε αλλού (πχ. στο αρχείο των λογαριασµών όψεως).
κωδ_λογαρ. πελ_όνοµα πελ_διευθ πελ_τηλοψ-004 Παπαλιάκος Κρυστάλλη 6943483457
κωδ_λογαρ. πελ_όνοµα πελ_διευθ πελ_τηλταµ-037 Παπαλιάκος Καβάφη 6947159333
2Β. Ασυνέπεια δεδοµένων(Data inconsistency)
● διαφορετικά αντίγραφα των ιδίων δεδοµένων ● συµφωνούν µεταξύ τους;
Προβλήµατα στα δεδοµένα µας(Data anomalies)
Update anomaly
Insertion anomaly
Deletion anomaly
Τι κάνουµε ???
● Normalization to the rescue
I am superhero1NF
(arghh!)
I am superhero2NF
(arghh!)
I am super-superhero
3NF(arghh!)
3. Normal forms & normalization
1η κανονική µορφή - First Normal Form (1NF)
2η κανονική µορφή - Second Normal Form (2NF)
3η κανονική µορφή - Third Normal Form (3NF)
“The key...”
“the whole key...”
“and nothing but the key!”
3. Normal forms & normalization
Η διαδικασία κανονικοποίησης (για κάθε πίνακα)
● Συµµόρφωση των δεδοµένων µας σε διαδοχικές κανονικές µορφές (1NF → 2NF → 3NF)
● Κάθε στήλη (σε κάθε πίνακα) εξαρτάται από● Το κλειδί, ● ολόκληρο το κλειδί και ● τίποτα άλλο εκτός από το κλειδί
● 1NF (the key) → 2NF (the whole key) → 3NF (& nothing but the key)
3Α. 1η κανονική µορφή1st Normal Form (1NF)
1η κανονική µορφήFirst Normal Form (1NF): “the Key”
● Το κλειδί καθορίζει όλες τις ιδιότητες (στήλες) του πίνακα ● ΟΧΙ πολλαπλές τιµές σε µία στήλη
● ΟΧΙ οµάδες δεδοµένων: µία στήλη = µία ιδιότητα
3Α. 1η κανονική µορφή1st Normal Form (1NF)
● Ο παρακάτω πίνακας είναι σε 1NF;
3Β. 2η κανονική µορφή2nd Normal Form (2NF)
2η κανονική µορφή Second Normal Form (2NF): “the whole key...”
● 1η κανονική µορφή (1NF)
+ ● ΟΧΙ µερικές εξαρτήσεις (partial dependencies),
Άρα............
Θεραπεία για τις “κακές εξαρτήσεις”
Αφαιρούµε τις µερικές εξαρτήσεις
invoice_id customer_name
invoice_id line_nr product_code product_name customer_name
invoice_id line_nr product_code product_name
3Γ. 3η κανονική µορφή3rd Normal Form (3NF)
3η κανονική µορφήThird Normal Form (3NF): “...and nothing but the key!”
● 2η κανονική µορφή (2NF)
+● ΟΧΙ µεταβατικές εξαρτήσεις (transitive dependencies)
Οπότε..............
Θεραπεία για τις “κακές εξαρτήσεις”
Αφαιρούµε τις µεταβατικές εξαρτήσεις
invoice_id customer_name
invoice_id customer_name
product_code product_name
invoice_id line_nr product_code product_name
invoice_id line_nr product_code
Κανονικοποίηση στην πράξη
Συνεπώς...
● Αφαιρούµε– Πολλαπλές στήλες – πολλαπλές τιµές– Μερικές εξαρτήσεις– Μεταβατικές εξαρτήσεις
● Εξαλείφουµε προβλήµατα στα δεδοµένα µας
● Κανονικοποίηση όλων των πινάκων ● Κανονικοποίηση όλης της ΒΔ
Επίλογος
● Βασικές έννοιες– Εξάρτηση (Dependency)– Πλεονασµός δεδοµένων (Data redundancy)– Ασυνέπεια δεδοµένων (Data inconsistency)– Κανονικοποίηση (Normalization)– Κανονικές µορφές (Normal forms)
1NF – 2NF - 3NF
Επίλογος
Στόχοι: 1.Να µπορούµε να εξηγήσουµε τις έννοιες:
– Εξάρτηση (data dependency)– Πλεονασµός (redundancy) και – Ασυνέπεια (inconsistency) δεδοµένων
2.Να µπορούµε να εξαλείψουµε τα παραπάνω προβλήµατα µέσω της κανονικοποίησης (normalization).
Πηγές
● http://en.wikipedia.org/wiki/Database_normalization (click here)
● http://databases.about.com/od/specificproducts/a/normalization.htm (click here)
Ερωτήσεις ???