Κανονικοποίηση Βάσεων
      Δεδοµένων

(Database Normalization)


     Πχης (M) B. Παπαλιάκος ΠΝ
      (vpapaliakos@gmail.com)
Διαδικαστικά θέµατα

Διάρκεια: 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.
Παράδειγµα:
     invoice_id   line_nr         product_code   product_name   customer_name


                            product_code             product_name
                                                 →
                            invoice_id
                                                 →   customer_name
1. Εξάρτηση (Dependency)
Δώστε παραδείγµατα εξαρτηµένων µεταβλητών:

●   Σε µια ΒΔ µαθητών-µαθηµάτων-βαθµών
●   Σε µια ΒΔ υλικών-αποθηκών-αποθεµάτων
●   Σε µια ΒΔ αυτοκινήτων
“Καλή” και “Κακή” εξάρτηση

●    “Καλή” εξάρτηση (“Good” dependency):
●    Πρωτεύον κλειδί (Primary Key) → άλλες ιδιότητες


●    “Κακές” εξαρτήσεις (“Bad” dependencies):
●     Μερική εξάρτηση (Partial dependency)
    invoice_id   line_nr      product_code   product_name   customer_name




●    Μεταβατική εξάρτηση (Transitive dependency)
    invoice_id   line_nr      product_code   product_name   customer_name
Αποτέλεσµα;
2Α. Πλεονασµός δεδοµένων
               (Data redundancy)
Η ίδια πληροφορία φυλάσσεται σε διάφορα µέρη (διπλο-εγγραφή).
Παράδειγµα: η διεύθυνση και το τηλέφωνο ενός πελάτη µπορεί να φυλάσεται στο αρχείο των
λογαριασµών όψεως και στο αντίστοιχο αρχείο των λογαριασµών ταµιευτηρίου µιας τράπεζας.

 κωδ_λογαρ.       πελ_όνοµα         πελ_διευθ        πελ_τηλ
 οψ-004           Παπαλιάκος        Κρυστάλλη        6943483457
                     κωδ_λογαρ.       πελ_όνοµα        πελ_διευθ         πελ_τηλ
                     ταµ-037          Παπαλιάκος       Κρυστάλλη         6943483457
                                   Αυτό ονοµάζεται
                            πλεονασµός δεδοµένων
                                (data redundancy).
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
Τι κάνουµε ???
                                   I am superhero
                                         2NF
                                       (arghh!)
 ●   Normalization to the rescue

                                                    I am super-
                                                     superhero
I am superhero
                                                        3NF
      1NF
                                                      (arghh!)
    (arghh!)
3. Normal forms & normalization
1η κανονική µορφή - First           “The key...”
  Normal Form (1NF)


2η κανονική µορφή - Second       “the whole key...”
  Normal Form (2NF)


3η κανονική µορφή - Third    “and nothing but the key!”
  Normal Form (3NF)
3. Normal forms & normalization
Η διαδικασία κανονικοποίησης (για κάθε πίνακα)

●   Συµµόρφωση των δεδοµένων µας σε διαδοχικές κανονικές
    µορφές (1NF → 2NF → 3NF)
●   Κάθε στήλη (σε κάθε πίνακα) εξαρτάται από
         ●   Το κλειδί,
         ●   ολόκληρο το κλειδί και
         ●   τίποτα άλλο εκτός από το κλειδί

●   1NF (the key) → 2NF (the whole key) → 3NF (& nothing but the key)
3Α. 1η κανονική µορφή
              st
             1 Normal Form (1NF)
1η κανονική µορφή
First Normal Form (1NF): “the Key”

●   Το κλειδί καθορίζει όλες τις ιδιότητες (στήλες) του πίνακα
●   ΟΧΙ πολλαπλές τιµές σε µία στήλη




●   ΟΧΙ οµάδες δεδοµένων: µία στήλη = µία ιδιότητα
3Α. 1η κανονική µορφή
          st
         1 Normal Form (1NF)
●   Ο παρακάτω πίνακας είναι σε 1NF;
3Β. 2η κανονική µορφή
            nd
           2 Normal Form (2NF)
2η κανονική µορφή
Second Normal Form (2NF): “the whole key...”

●   1η κανονική µορφή (1NF)

                                +
●   ΟΧΙ µερικές εξαρτήσεις (partial dependencies),


                           Άρα............
Θεραπεία για τις “κακές εξαρτήσεις”
Αφαιρούµε τις µερικές εξαρτήσεις




   invoice_id   line_nr        product_code    product_name   customer_name




   invoice_id   line_nr         product_code   product_name




   invoice_id       customer_name
3Γ. 3η κανονική µορφή
            rd
           3 Normal Form (3NF)
3η κανονική µορφή
Third Normal Form (3NF): “...and nothing but the key!”

●   2η κανονική µορφή (2NF)

                               +
●   ΟΧΙ µεταβατικές εξαρτήσεις (transitive dependencies)


                       Οπότε..............
Θεραπεία για τις “κακές εξαρτήσεις”
Αφαιρούµε τις µεταβατικές εξαρτήσεις

   invoice_id   line_nr        product_code   product_name



   invoice_id       customer_name




   invoice_id   line_nr        product_code          product_code   product_name



   invoice_id       customer_name
Κανονικοποίηση στην πράξη
Συνεπώς...
●   Αφαιρούµε
       –   Πολλαπλές στήλες – πολλαπλές τιµές
       –   Μερικές εξαρτήσεις
       –   Μεταβατικές εξαρτήσεις
●   Εξαλείφουµε προβλήµατα στα δεδοµένα µας

●   Κανονικοποίηση όλων των πινάκων
●   Κανονικοποίηση όλης της ΒΔ
Επίλογος
●   Βασικές έννοιες
        –   Εξάρτηση (Dependency)
        –   Πλεονασµός δεδοµένων (Data redundancy)
        –   Ασυνέπεια δεδοµένων (Data inconsistency)
        –   Κανονικοποίηση (Normalization)
        –   Κανονικές µορφές (Normal forms)
                      1NF – 2NF - 3NF
Επίλογος

Στόχοι:
1.Να µπορούµε να εξηγήσουµε τις έννοιες:
      – Εξάρτηση (data dependency)

      –   Πλεονασµός (redundancy) και
      –   Ασυνέπεια (inconsistency) δεδοµένων
2.Να µπορούµε να εξαλείψουµε τα παραπάνω
  προβλήµατα µέσω της κανονικοποίησης
  (normalization).
Πηγές
●   http://en.wikipedia.org/wiki/Database_normaliza
    tion (click here)
●   http://databases.about.com/od/specificproducts/
    a/normalization.htm (click here)
Ερωτήσεις ???

More Related Content

PDF
Kef2o θεωρία Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον
PDF
33programma
PPT
Entity relationship diagram (erd)
ODP
Sql select clause 15 min-5
ODP
Bubblesort presentation
PDF
2024 Trend Updates: What Really Works In SEO & Content Marketing
PDF
Storytelling For The Web: Integrate Storytelling in your Design Process
PDF
Artificial Intelligence, Data and Competition – SCHREPEL – June 2024 OECD dis...
Kef2o θεωρία Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον
33programma
Entity relationship diagram (erd)
Sql select clause 15 min-5
Bubblesort presentation
2024 Trend Updates: What Really Works In SEO & Content Marketing
Storytelling For The Web: Integrate Storytelling in your Design Process
Artificial Intelligence, Data and Competition – SCHREPEL – June 2024 OECD dis...
Ad

Db crash_course-normalization

  • 1. Κανονικοποίηση Βάσεων Δεδοµένων (Database Normalization) Πχης (M) B. Παπαλιάκος ΠΝ (vpapaliakos@gmail.com)
  • 2. Διαδικαστικά θέµατα Διάρκεια: 20 λεπτά ● ●Η παρουσίαση είναι διαθέσιµη στη διεύθυνση http://papaliakos.gr/db/presentations ●Επίσης σας έχει διανεµηθεί σε χαρτί ώστε... ●ΝΑ ΚΡΑΤΗΣΕΤΕ ΣΗΜΕΙΩΣΕΙΣ! ●Ερωτήσεις δεκτές, κατά προτίµηση στο τέλος κάθε ενότητας
  • 3. Εισαγωγή ● Υπόθεση: είστε σχετικοί µε το αντικείµενο των ΒΔ. ● Νιώθετε ότι σας λείπουν κάποιες γνώσεις, όµως τα καταφέρατε σε µια-δυο περιπτώσεις που χρειάστηκε να φτιάξετε ΒΔ στην access. ● Σας προσφέρουν 2000 € για µια ΒΔ-δουλειά µιας εβδοµάδας: pas mal!
  • 5. Στόχοι Να µπορούµε να εξηγήσουµε τις έννοιες: ● Εξάρτηση (data dependency) ● Πλεονασµός (redundancy) και ● Ασυνέπεια (inconsistency) δεδοµένων Να µπορούµε να εξαλείψουµε τα παραπάνω προβλήµατα µέσω της κανονικοποίησης (normalization).
  • 6. Βασικές έννοιες - Πυλώνες ● Εξάρτηση (Dependency) ● Πλεονασµός δεδοµένων (Data redundancy) ● Ασυνέπεια δεδοµένων (Data inconsistency) ● Κανονικοποίηση (Normalization) ● Κανονικές µορφές (Normal forms) ● 1NF – 2NF - 3NF “Στο πεδίο των Η/Υ όπου κι αν πετάξεις µια πέτρα θα χτυπήσεις µια βάση δεδοµένων”
  • 7. 1. Εξάρτηση (Dependency) Όταν λέµε: το Y εξαρτάται από το X εννοούµε: Y=f(X) ● ή µε άλλα λόγια, το Χ καθορίζει το Υ. ● Αυτή η εξάρτηση σηµειώνεται ως X → Y. Παράδειγµα: invoice_id line_nr product_code product_name customer_name Τι εξαρτήσεις έχουµε εδώ;
  • 8. 1. Εξάρτηση (Dependency) Όταν λέµε: το Y εξαρτάται από το X εννοούµε: Y=f(X) ● ή µε άλλα λόγια, το Χ καθορίζει το Υ. ● Αυτή η εξάρτηση σηµειώνεται ως X → Y. Παράδειγµα: invoice_id line_nr product_code product_name customer_name product_code product_name → invoice_id → customer_name
  • 9. 1. Εξάρτηση (Dependency) Δώστε παραδείγµατα εξαρτηµένων µεταβλητών: ● Σε µια ΒΔ µαθητών-µαθηµάτων-βαθµών ● Σε µια ΒΔ υλικών-αποθηκών-αποθεµάτων ● Σε µια ΒΔ αυτοκινήτων
  • 10. “Καλή” και “Κακή” εξάρτηση ● “Καλή” εξάρτηση (“Good” dependency): ● Πρωτεύον κλειδί (Primary Key) → άλλες ιδιότητες ● “Κακές” εξαρτήσεις (“Bad” dependencies): ● Μερική εξάρτηση (Partial dependency) invoice_id line_nr product_code product_name customer_name ● Μεταβατική εξάρτηση (Transitive dependency) invoice_id line_nr product_code product_name customer_name
  • 12. 2Α. Πλεονασµός δεδοµένων (Data redundancy) Η ίδια πληροφορία φυλάσσεται σε διάφορα µέρη (διπλο-εγγραφή). Παράδειγµα: η διεύθυνση και το τηλέφωνο ενός πελάτη µπορεί να φυλάσεται στο αρχείο των λογαριασµών όψεως και στο αντίστοιχο αρχείο των λογαριασµών ταµιευτηρίου µιας τράπεζας. κωδ_λογαρ. πελ_όνοµα πελ_διευθ πελ_τηλ οψ-004 Παπαλιάκος Κρυστάλλη 6943483457 κωδ_λογαρ. πελ_όνοµα πελ_διευθ πελ_τηλ ταµ-037 Παπαλιάκος Κρυστάλλη 6943483457 Αυτό ονοµάζεται πλεονασµός δεδοµένων (data redundancy).
  • 13. 2Α. Πλεονασµός δεδοµένων (Data redundancy) ● Παράδειγµα: Τι µπορεί να πάει στραβά???
  • 14. 2Β. Ασυνέπεια δεδοµένων (Data inconsistency) ● Αυτός ο πλεονασµός µπορεί να οδηγήσει σε ασυνέπεια δεδοµένων (data inconsistency) δηλαδή σε ● διαφορετικά αντίγραφα των ιδίων δεδοµένων τα οποία ● µπορεί να µη συµφωνούν µεταξύ τους.
  • 15. 2Β. Ασυνέπεια δεδοµένων (Data inconsistency) ● διαφορετικά αντίγραφα των ιδίων δεδοµένων ● µπορεί να µη συµφωνούν µεταξύ τους. ● Παράδειγµα: αν αλλάξουµε τη διεύθυνση ενός πελάτη στο αρχείο των λογαριασµών ταµιευτηρίου, τότε αυτή η αλλαγή δεν θα φαίνεται οπουδήποτε αλλού (πχ. στο αρχείο των λογαριασµών όψεως). κωδ_λογαρ. πελ_όνοµα πελ_διευθ πελ_τηλ οψ-004 Παπαλιάκος Κρυστάλλη 6943483457 κωδ_λογαρ. πελ_όνοµα πελ_διευθ πελ_τηλ ταµ-037 Παπαλιάκος Καβάφη 6947159333
  • 16. 2Β. Ασυνέπεια δεδοµένων (Data inconsistency) ● διαφορετικά αντίγραφα των ιδίων δεδοµένων ● συµφωνούν µεταξύ τους;
  • 17. Προβλήµατα στα δεδοµένα µας (Data anomalies) Update anomaly Insertion anomaly Deletion anomaly
  • 18. Τι κάνουµε ??? I am superhero 2NF (arghh!) ● Normalization to the rescue I am super- superhero I am superhero 3NF 1NF (arghh!) (arghh!)
  • 19. 3. Normal forms & normalization 1η κανονική µορφή - First “The key...” Normal Form (1NF) 2η κανονική µορφή - Second “the whole key...” Normal Form (2NF) 3η κανονική µορφή - Third “and nothing but the key!” Normal Form (3NF)
  • 20. 3. Normal forms & normalization Η διαδικασία κανονικοποίησης (για κάθε πίνακα) ● Συµµόρφωση των δεδοµένων µας σε διαδοχικές κανονικές µορφές (1NF → 2NF → 3NF) ● Κάθε στήλη (σε κάθε πίνακα) εξαρτάται από ● Το κλειδί, ● ολόκληρο το κλειδί και ● τίποτα άλλο εκτός από το κλειδί ● 1NF (the key) → 2NF (the whole key) → 3NF (& nothing but the key)
  • 21. 3Α. 1η κανονική µορφή st 1 Normal Form (1NF) 1η κανονική µορφή First Normal Form (1NF): “the Key” ● Το κλειδί καθορίζει όλες τις ιδιότητες (στήλες) του πίνακα ● ΟΧΙ πολλαπλές τιµές σε µία στήλη ● ΟΧΙ οµάδες δεδοµένων: µία στήλη = µία ιδιότητα
  • 22. 3Α. 1η κανονική µορφή st 1 Normal Form (1NF) ● Ο παρακάτω πίνακας είναι σε 1NF;
  • 23. 3Β. 2η κανονική µορφή nd 2 Normal Form (2NF) 2η κανονική µορφή Second Normal Form (2NF): “the whole key...” ● 1η κανονική µορφή (1NF) + ● ΟΧΙ µερικές εξαρτήσεις (partial dependencies), Άρα............
  • 24. Θεραπεία για τις “κακές εξαρτήσεις” Αφαιρούµε τις µερικές εξαρτήσεις invoice_id line_nr product_code product_name customer_name invoice_id line_nr product_code product_name invoice_id customer_name
  • 25. 3Γ. 3η κανονική µορφή rd 3 Normal Form (3NF) 3η κανονική µορφή Third Normal Form (3NF): “...and nothing but the key!” ● 2η κανονική µορφή (2NF) + ● ΟΧΙ µεταβατικές εξαρτήσεις (transitive dependencies) Οπότε..............
  • 26. Θεραπεία για τις “κακές εξαρτήσεις” Αφαιρούµε τις µεταβατικές εξαρτήσεις invoice_id line_nr product_code product_name invoice_id customer_name invoice_id line_nr product_code product_code product_name invoice_id customer_name
  • 28. Συνεπώς... ● Αφαιρούµε – Πολλαπλές στήλες – πολλαπλές τιµές – Μερικές εξαρτήσεις – Μεταβατικές εξαρτήσεις ● Εξαλείφουµε προβλήµατα στα δεδοµένα µας ● Κανονικοποίηση όλων των πινάκων ● Κανονικοποίηση όλης της ΒΔ
  • 29. Επίλογος ● Βασικές έννοιες – Εξάρτηση (Dependency) – Πλεονασµός δεδοµένων (Data redundancy) – Ασυνέπεια δεδοµένων (Data inconsistency) – Κανονικοποίηση (Normalization) – Κανονικές µορφές (Normal forms) 1NF – 2NF - 3NF
  • 30. Επίλογος Στόχοι: 1.Να µπορούµε να εξηγήσουµε τις έννοιες: – Εξάρτηση (data dependency) – Πλεονασµός (redundancy) και – Ασυνέπεια (inconsistency) δεδοµένων 2.Να µπορούµε να εξαλείψουµε τα παραπάνω προβλήµατα µέσω της κανονικοποίησης (normalization).
  • 31. Πηγές ● http://en.wikipedia.org/wiki/Database_normaliza tion (click here) ● http://databases.about.com/od/specificproducts/ a/normalization.htm (click here)