3.4.2

3.4.2 Κανονικοποίηση και Πρώτη Κανονική Μορφή
Στην ενότητα 3.2 αναφερθήκαμε στην επαναληπτικότητα των δεδομένων και ότι αυτή δημιουργεί προβλήματα στους πίνακες που προκύπτουν από το σχεσιακό μοντέλο. Αναλογιστήκαμε όμως τους λόγους που καθιστούν ανεπιθύμητη την επαναληπτικότητα;

Οι κύριοι λόγοι είναι:
 * Πρόβλημα Ενημέρωσης Δεδομένων.**

Αν χρειαστεί να γίνει αλλαγή των δεδομένων κατά τη χρήση της ΒΔ, αυτά πρέπει να αλλάξουν όπου εμφανίζονται. Για παράδειγμα, η αλλαγή διεύθυνσης ενός μαθητή οδηγεί σε ενημέρωση δύο γραμμών του πίνακα Μαθητής (Σχήμα 3.4.4). Οι ενημερώσεις, δημιουργούν καθυστερήσεις και αν για κάποιους λόγους δεν ενημερωθούν όλες οι γραμμές του πίνακα οδηγούμαστε σε ασυνέπεια δεδομένων (άλλες γραμμές να έχουν τη νέα διεύθυνση και άλλες την παλιά).


 * Πρόβλημα Διαγραφής Δεδομένων.**

Αν για κάποιους λόγους, ένας μαθητής καταργήσει όλους τους τηλεφωνικούς του αριθμούς, δηλώνοντας ότι δεν έχει τηλέφωνο, τι μπορούμε να κάνουμε; Οι εναλλακτικές λύσεις που έχουμε αλλά καμία δεν μπορεί να εφαρμοστεί είναι οι εξής: 1) να θέσουμε κενό (NULL) σε όλες τις τιμές της στήλης τηλέφωνο, κάτι το οποίο δεν μπορεί να γίνει διότι η στήλη μπορεί να συμμετέχει στο πρωτεύον κλειδί του πίνακα, και 2) να διαγράψουμε τις γραμμές του πίνακα, που επίσης δεν μπορεί να γίνει διότι θα χάσουμε τις υπόλοιπες πληροφορίες για το συγκεκριμένο μαθητή.


 * Πρόβλημα Εισαγωγής Δεδομένων.**

Κάθε φορά που εισάγουμε στη βάση δεδομένων έναν νέο μαθητή, πρέπει να εισάγουμε και κάποιον αριθμό τηλεφώνου, κάτι το οποίο δεν είναι απαραίτητο να γίνει στην αρχή.

14355 14582 14695 Παπαδόπουλος Χαρισίδης Κερκινάκης Βενιζέλου 4 Τσιμισκή 19 Εγνατία 151 Θεσσαλονίκη Θεσσαλονίκη Θεσσαλονίκη 69999999999 23106666666 23107777777 || Σχήμα 3.4.4 Πίνακας με επαναλαμβανόμενες πληροφορίες
 * ~ ΑΜ Μαθητή ||~ Επίθετο ||~ Διεύθυνση ||~ Πόλη ||~ Τηλέφωνο ||
 * 14355
 * Παπαδόπουλος
 * Βενιζέλου 4
 * Θεσσαλονίκη
 * 23105555555

Η λύση που υπάρχει για την επίλυση των παραπάνω προβλημάτων είναι η κατασκευή δύο διαφορετικών πινάκων. Στο παραπάνω σχήμα 3.4.4 παρουσιάζεται ο πίνακας Μαθητής με επαναλαμβανόμενες πληροφορίες λόγω της ύπαρξης του χαρακτηριστικού πολλαπλής τιμής Τηλέφωνο Μετά την κατασκευή δύο πινάκων, η νέα μορφή της βάσης δεδομένων που προκύπτει παρουσιάζεται στο Σχήμα 3.4.5.

14582 14695 Χαρισίδης Κερκινάκης Τσιμισκή 19 Εγνατία 151 Θεσσαλονίκη Θεσσαλονίκη ||
 * ~ ΑΜ Μαθητή ||~ Επίθετο ||~ Διεύθυνση ||~ Πόλη ||
 * 14355
 * Παπαδόπουλος
 * Βενιζέλου 4
 * Θεσσαλονίκη

14355 14582 14695 69999999999 23106666666 23107777777 || Σχήμα 3.4.5 Κατασκευή δύο πινάκων για την αποφυγή της επαναληπτικότητας των δεδομένων
 * ~ ΑΜ Μαθητή ||~ Τηλέφωνο ||
 * 14355
 * 23105555555

Βασικός στόχος της κανονικοποίησης είναι ο προσδιορισμός ενός συνόλου πινάκων με στόχο την ελαχιστοποίηση της επαναληπτικότητας δεδομένων. Με τη μέθοδο της κανονικοποίησης πραγματοποιούνται διαδοχικές διασπάσεις των πινάκων σε πιο απλές μορφές. Η διάσπαση ακολουθεί κάποιους κανόνες. Από τον αρχικό πίνακα απομακρύνονται κάποια χαρακτηριστικά και τοποθετούνται σε νέους πίνακες ώστε να είναι δυνατή η ανασύνδεση των αρχικών πληροφοριών μέσω των νέων σχέσεων. Έχουν προταθεί πέντε κανονικές μορφές που όμως δεν θα αναλυθούν στην παρούσα ενότητα εκτός από την πρώτη κανονική μορφή.


 * Πρώτη Κανονική Μορφή (1NF)**

Ένας πίνακας βρίσκεται στην πρώτη κανονική μορφή όταν οι τιμές που λαμβάνει κάθε στήλη του πίνακα είναι ατομικές. Επομένως, η πρώτη κανονική μορφή απαγορεύει την ύπαρξη στηλών οι οποίες περιέχουν χαρακτηριστικά πολλαπλής τιμής. Υπάρχουν δύο τρόποι για να μετασχηματίσουμε έναν πίνακα που περιέχει πολλαπλές τιμές στην πρώτη κανονική μορφή. Ο ένας τρόπος είναι να επαναλάβουμε τα δεδομένα πολλές φορές, έτσι ώστε τελικά ο πίνακας που θα προκύψει να περιέχει μόνο ατομικές τιμές στις στήλες. Ο δεύτερος τρόπος είναι να χρησιμοποιήσουμε ξεχωριστό πίνακα για τα χαρακτηριστικά πολλαπλών τιμών. Και οι δύο τρόποι θεωρούνται σωστοί, όμως ο δεύτερος μειώνει σημαντικά την επαναληπτικότητα των δεδομένων.


 * Παράδειγμα πρώτης κανονικής μορφής **

Θεωρείστε ότι σχεδιάζεται το Μαθητολόγιο του σχολείου σας. Κάθε μαθητής παρακολουθεί μαθήματα ανάλογα με την τάξη. Για κάθε μαθητή θα υπάρχουν τα στοιχεία του καθώς και τα μαθήματα τα οποία παρακολουθεί.

14666 14582 14695 Παπαδόπουλος Χαρισίδης Κερκινάκης Ιωάννης Νικόλαος Δημήτριος Χρήστος Μενέλαος Γεώργιος Εθν. Αμύνης 8 Τσιμισκή 19 Εγνατία 151 Μαθηματικά Φυσική Αγωγή Φυσική ||
 * ~ ΑΜ Μαθητή ||~ Επίθετο ||~ ¨Όνομα ||~ Όνομα Πατρός ||~ Διεύθυνση ||~ Μαθήματα ||
 * 14355
 * Παπαδόπουλος
 * Ιωάννης
 * Δημήτριος
 * Βενιζέλου 4
 * ΣΔΒΔ

Παρατηρούμε ότι το χαρακτηριστικό Μαθήματα είναι πολλαπλής τιμής και θα αναγκαστούμε να διασπάσουμε τον πίνακα ώστε να κανονικοποιηθεί.

14666 14582 14695 Παπαδόπουλος Χαρισίδης Κερκινάκης Ιωάννης Νικόλαος Δημήτριος Χρήστος Μενέλαος Γεώργιος Εθν. Αμύνης 8 Τσιμισκή 19 Εγνατία 151 ||
 * ~ ΑΜ Μαθητή ||~ Επίθετο ||~ ¨Όνομα ||~ Όνομα Πατρός ||~ Διεύθυνση ||
 * 14355
 * Παπαδόπουλος
 * Ιωάννης
 * Δημήτριος
 * Βενιζέλου 4

14355 14355 14355 14666 14582 14695 Μαθηματικά Φυσική Αγωγή κ.α ΣΔΒΔ Νέα Ελληνικά Φυσική Μαθηματικά ||
 * ~ ΑΜ Μαθητή ||~ Μαθήματα ||
 * = 14355
 * ΣΔΒΔ

**Ερωτήσεις / Δραστηριότητες**
 * 1) Πότε ένα χαρακτηριστικό ονομάζεται σύνθετο και πότε πολλαπλής τιμής; Δώστε από ένα παράδειγμα για την κάθε περίπτωση.
 * 2) Ποια είναι χρησιμότητα του κλειδιού σε ένα πίνακα;
 * 3) Ποια η χρησιμότητα του δευτερεύοντος κλειδιού; Δώστε ένα παράδειγμα.
 * 4) Εξηγείστε τι εννοούμε με τον όρο επανάληψη πληροφοριών.
 * 5) Περιγράψτε τις ανωμαλίες ενημέρωσης που προκύπτουν από την επαναληπτικότητα των δεδομένων.
 * 6) Εξηγείστε τι εννοούμε με τον όρο κανονικοπόιηση.


 * Δραστηριότητα 1**: Μαθητολόγιο

Πρόκειται να σχεδιάσετε το Μαθητολόγιο του σχολείου σας. Σας δίνονται οι πίνακες του παραδείγματος 3.4.1. Μπορείτε να τους συμπληρώσετε ώστε να περιλαμβάνονται και οι βαθμοί των μαθητών σε κάθε μάθημα;

//Σημείωση//: Μην ξεχάσετε να εφαρμόσετε κανονικοποίηση

Προσδιορίστε τα κλειδιά των πινάκων που δημιουργήσατε στην Δραστηριότητα 1 (πρωτεύον, δευτερεύον ή σύνθετο);
 * Δραστηριότητα 2:** Μαθητολόγιο