Κανονικοποίηση της βάσης δεδομένων σας: Πρώτη κανονική φόρμα

Αυτοί οι δύο απλοί κανόνες θα σας βοηθήσουν να ομαλοποιήσετε τη βάση δεδομένων σας

Η πρώτη κανονική φόρμα (1NF) θέτει τους βασικούς κανόνες για μια οργανωμένη βάση δεδομένων:

Τι σημαίνουν αυτοί οι κανόνες όταν εξετάζετε το πρακτικό σχεδιασμό μιας βάσης δεδομένων; Είναι πραγματικά απλό.

1. Εξαλείψτε την αλληλεπικάλυψη

Ο πρώτος κανόνας υπαγορεύει ότι δεν πρέπει να αναπαράγουμε δεδομένα στην ίδια σειρά ενός πίνακα. Μέσα στην κοινότητα της βάσης δεδομένων, αυτή η έννοια αναφέρεται ως ατομικότητα ενός πίνακα. Οι πίνακες που συμμορφώνονται με αυτόν τον κανόνα λέγεται ότι είναι ατομικοί. Ας διερευνήσουμε αυτή την αρχή με ένα κλασικό παράδειγμα: έναν πίνακα μέσα σε μια βάση δεδομένων ανθρώπινων πόρων που αποθηκεύει τη σχέση διευθυντή-εξαρτώμενου. Για τους σκοπούς του παραδείγματος μας, θα επιβάλλουμε τον επιχειρηματικό κανόνα ότι κάθε διαχειριστής μπορεί να έχει έναν ή περισσότερους υφισταμένους, ενώ κάθε υποκείμενος μπορεί να έχει μόνο έναν διαχειριστή.

Διαισθητικά, κατά τη δημιουργία μιας λίστας ή ενός υπολογιστικού φύλλου για την παρακολούθηση αυτών των πληροφοριών, θα μπορούσαμε να δημιουργήσουμε έναν πίνακα με τα ακόλουθα πεδία:

Ωστόσο, υπενθυμίστε τον πρώτο κανόνα που επιβάλλεται από το 1NF: Απομάκρυνση διπλασιαστικών στηλών από τον ίδιο πίνακα. Είναι σαφές ότι οι στήλες Subordinate1-Subordinate4 είναι διπλασιαστικές. Αφιερώστε λίγο χρόνο και αναλογιστείτε τα προβλήματα που προκύπτουν από αυτό το σενάριο. Εάν ένας διαχειριστής έχει μόνο έναν υποδεέστερο, οι στήλες Subordinate2-Subordinate4 είναι απλά σπαταλημένοι χώροι αποθήκευσης (ένα πολύτιμο προϊόν βάσης δεδομένων). Επιπλέον, φανταστείτε την περίπτωση όπου ένας διαχειριστής έχει ήδη 4 υφισταμένους - τι συμβαίνει εάν αναλάβει κάποιον άλλο υπάλληλο; Η όλη δομή του πίνακα θα απαιτούσε τροποποίηση.

Σε αυτό το σημείο, μια δεύτερη φωτεινή ιδέα εμφανίζεται συνήθως στους αρχάριους της βάσης δεδομένων: Δεν θέλουμε να έχουμε περισσότερες από μία στήλες και θέλουμε να επιτρέψουμε μια ευέλικτη αποθήκευση δεδομένων. Ας δοκιμάσουμε κάτι τέτοιο:

Και ο τομέας των υφισταμένων θα περιέχει πολλαπλές καταχωρήσεις στη φόρμα "Mary, Bill, Joe".

Αυτή η λύση είναι πιο κοντά, αλλά επίσης υπολείπεται του σημείου. Η στήλη των υφισταμένων εξακολουθεί να είναι διπλασιασμένη και μη ατομική. Τι συμβαίνει όταν πρέπει να προσθέσουμε ή να αφαιρέσουμε έναν υφιστάμενο; Πρέπει να διαβάσουμε και να γράψουμε ολόκληρο το περιεχόμενο του πίνακα. Αυτό δεν είναι μια μεγάλη υπόθεση σε αυτή την κατάσταση, αλλά τι γίνεται αν ένας διευθυντής είχε εκατό εργαζομένους; Επίσης, περιπλέκει τη διαδικασία επιλογής δεδομένων από τη βάση δεδομένων σε μελλοντικά ερωτήματα.

Ακολουθεί ένας πίνακας που ικανοποιεί τον πρώτο κανόνα του 1NF:

Σε αυτή την περίπτωση, κάθε υποκείμενος έχει μία μόνο καταχώρηση, αλλά οι διαχειριστές μπορούν να έχουν πολλαπλές καταχωρίσεις.

2. Προσδιορίστε το πρωτεύον κλειδί

Τώρα, τι γίνεται με τον δεύτερο κανόνα: προσδιορίστε κάθε σειρά με μια μοναδική στήλη ή σύνολο στηλών (το πρωτεύον κλειδί ); Μπορείτε να ρίξετε μια ματιά στον παραπάνω πίνακα και να προτείνετε τη χρήση της δευτερεύουσας στήλης ως πρωτεύον κλειδί. Στην πραγματικότητα, η δευτερεύουσα στήλη είναι ένας καλός υποψήφιος για ένα πρωτεύον κλειδί λόγω του γεγονότος ότι οι επιχειρηματικοί μας κανόνες διευκρίνιζαν ότι κάθε υποκείμενος μπορεί να έχει μόνο έναν διαχειριστή. Ωστόσο, τα δεδομένα που επιλέξαμε να αποθηκεύσουμε στον πίνακα μας καθιστούν αυτή την λύση λιγότερο από την ιδανική. Τι συμβαίνει εάν προσλάβουμε έναν άλλο υπάλληλο που ονομάζεται Jim; Πώς αποθηκεύουμε τη σχέση διευθυντή-δευτερεύουσας βάσης στη βάση δεδομένων;

Είναι καλύτερο να χρησιμοποιείτε ένα πραγματικά μοναδικό αναγνωριστικό (όπως αναγνωριστικό υπαλλήλου) ως κύριο κλειδί . Το τελικό τραπέζι θα μοιάζει με αυτό:

Τώρα, ο πίνακας μας είναι στην πρώτη κανονική μορφή! Εάν θέλετε να συνεχίσετε να μαθαίνετε για την εξομάλυνση, διαβάστε τα άλλα άρθρα αυτής της σειράς: