Πλήρης λειτουργική εξάρτηση από την κανονικοποίηση της βάσης δεδομένων

Μια πλήρης λειτουργική εξάρτηση είναι μια κατάσταση ομαλοποίησης της βάσης δεδομένων που ισοδυναμεί με το πρότυπο κανονικοποίησης της δεύτερης κανονικής μορφής (2NF) . Εν συντομία, αυτό σημαίνει ότι πληροί τις απαιτήσεις της πρώτης κανονικής φόρμας (1NF) και όλα τα μη βασικά χαρακτηριστικά είναι πλήρως λειτουργικά εξαρτώμενα από το πρωτεύον κλειδί.

Αυτό δεν είναι τόσο περίπλοκο όσο μπορεί να ακούγεται. Ας δούμε αυτό με περισσότερες λεπτομέρειες.

Περίληψη της πρώτης κανονικής μορφής

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

Όλα αυτά σημαίνουν ότι κάθε χαρακτηριστικό πρέπει να έχει μία μόνο ατομική αξία.

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

Πρώτη κανονική μορφή μη συμμόρφωσης
Υπάλληλος Τοποθεσία
Γιάννης Λος Άντζελες
Τίνα Λος Άντζελες, Σικάγο

Η επέκταση αυτού του σχεδίου ενδέχεται να επηρεάσει αρνητικά τις ενημερώσεις ή καταχωρήσεις δεδομένων. Για να διασφαλιστεί η συμμόρφωση με το 1NF, αναδιατάξτε τον πίνακα, έτσι ώστε όλες οι ιδιότητες (ή τα κελιά στήλης) να διατηρούν μία μόνο τιμή:

Πρώτη συμμόρφωση με κανονική μορφή
Υπάλληλος Τοποθεσία
Γιάννης Λος Άντζελες
Τίνα Λος Άντζελες
Τίνα Σικάγο

Αλλά το 1NF εξακολουθεί να μην είναι αρκετό για να αποφευχθούν προβλήματα με τα δεδομένα.

Πώς λειτουργεί το 2NF για να εξασφαλίσει πλήρη εξάρτηση

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

Οι σχεδιαστές βάσεων δεδομένων χρησιμοποιούν ένα συμβολισμό για να περιγράψουν τις εξαρτώμενες σχέσεις μεταξύ χαρακτηριστικών:

Αν το χαρακτηριστικό Α καθορίζει την τιμή του Β, γράφουμε αυτό το Α -> Β - που σημαίνει ότι το Β εξαρτάται λειτουργικά από το Α. Σε αυτή τη σχέση, το Α καθορίζει την τιμή του Β, ενώ το Β εξαρτάται από το Α.

Για παράδειγμα, στον ακόλουθο πίνακα Employee Departments , EmployeeID και DeptID είναι και τα δύο υποψήφια κλειδιά: EmployeeID είναι το πρωτεύον κλειδί του πίνακα, ενώ το DeptID είναι ξένο κλειδί.

Οποιοδήποτε άλλο χαρακτηριστικό - σε αυτήν την περίπτωση, το EmployeeName και το DeptName - πρέπει να εξαρτάται από το πρωτεύον κλειδί για να αποκτήσει την αξία του.

Τμήματα Εργαζομένων
Ταυτότητα Υπαλλήλου Ονομα υπαλλήλου DeptID DeptName
Emp1 Γιάννης Dept001 Χρηματοδότηση
Emp2 Τίνα Dept003 Εμπορικός
Emp3 Κάρλος Dept001 Χρηματοδότηση

Σε αυτήν την περίπτωση, ο πίνακας δεν είναι πλήρως εξαρτώμενος επειδή, ενώ το EmployeeName εξαρτάται από το πρωτεύον κλειδί EmployeeID, το DeptName εξαρτάται από το DeptID. Αυτό ονομάζεται μερική εξάρτηση .

Για να γίνει αυτός ο πίνακας σύμφωνος με το 2NF, πρέπει να διαχωρίσουμε τα δεδομένα σε δύο πίνακες:

Υπαλλήλους
Ταυτότητα Υπαλλήλου Ονομα υπαλλήλου DeptID
Emp1 Γιάννης Dept001
Emp2 Τίνα Dept003
Emp3 Κάρλος Dept001

Καταργούμε το χαρακτηριστικό DeptName από τον πίνακα Employees και δημιουργούμε ένα νέο πίνακα Τμήματα :

Τμήματα
DeptID DeptName
Dept001 Χρηματοδότηση
Dept002 Ανθρώπινο δυναμικό
Dept003 Εμπορικός

Τώρα οι σχέσεις μεταξύ των πινάκων εξαρτώνται πλήρως, ή στο 2NF.

Γιατί η πλήρης εξάρτηση είναι σημαντική

Η πλήρης εξάρτηση μεταξύ των χαρακτηριστικών της βάσης δεδομένων συμβάλλει στην εξασφάλιση της ακεραιότητας των δεδομένων και την αποφυγή ανωμαλιών δεδομένων.

Για παράδειγμα, εξετάστε τον πίνακα στην παραπάνω ενότητα, που τηρεί μόνο το 1NF. Εδώ είναι και πάλι:

Πρώτη συμμόρφωση με κανονική μορφή
Υπάλληλος Τοποθεσία
Γιάννης Λος Άντζελες
Τίνα Λος Άντζελες
Τίνα Σικάγο

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

Ή, τι εάν θέλουμε να προσθέσουμε έναν υπάλληλο σε αυτό το τραπέζι, αλλά δεν γνωρίζουμε ακόμα την τοποθεσία; Μπορεί να μην επιτρέψουμε να προσθέσετε ακόμη και έναν νέο υπάλληλο εάν το χαρακτηριστικό Τοποθεσία δεν επιτρέπει τιμές NULL.

Η πλήρης εξάρτηση δεν είναι ολόκληρη η εικόνα, όμως, όταν πρόκειται για εξομάλυνση. Πρέπει να βεβαιωθείτε ότι η βάση δεδομένων σας βρίσκεται στην τρίτη κανονική φόρμα (3NF).