Αναζήτηση σε όλο το Office.com
 
υποστήριξη / Access / Βοήθεια και Οδηγίες για την Access 2007 / Σχεδίαση βάσης δεδομένων
 
 

Βασικές αρχές σχεδίασης βάσης δεδομένων

Ισχύει για: Microsoft Office Access 2007

 

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

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

Σε αυτό το άρθρο


Κάποιοι όροι βάσης δεδομένων που πρέπει να γνωρίζετε

ΗMicrosoft Office Access 2007 οργανώνει τις πληροφορίες σας σε πίνακες: λίστες με γραμμές και στήλες, που θυμίζουν σημειωματάριο λογιστή ή φύλλο εργασίας του Microsoft Office Excel 2007. Σε μια απλή βάση δεδομένων, ίσως έχετε έναν μόνο πίνακα. Για τις περισσότερες βάσεις δεδομένων, θα χρειαστείτε περισσότερους από έναν. Για παράδειγμα, ίσως έχετε έναν πίνακα που αποθηκεύει πληροφορίες για προϊόντα, έναν άλλον που αποθηκεύει πληροφορίες για παραγγελίες και έναν άλλον με πληροφορίες για πελάτες.

Εικόνα τριών πινάκων σε φύλλα δεδομένων

Κάθε σειρά ονομάζεται επίσης εγγραφή και κάθε στήλη, ονομάζεται επίσης πεδίο. Η εγγραφή είναι ένας εποικοδομητικός και συνεπής τρόπος συνδυασμού πληροφοριών σχετικά με κάτι. Το πεδίο είναι ένα στοιχείο πληροφοριών  — ένας τύπος στοιχείου που εμφανίζεται σε κάθε εγγραφή. Στον πίνακα "Προϊόντα", για παράδειγμα, κάθε γραμμή ή εγγραφή περιέχει πληροφορίες για ένα προϊόν. Κάθε στήλη ή πεδίο περιέχει κάποιον τύπο πληροφοριών σχετικά με αυτό το προϊόν, όπως το όνομα ή η τιμή του.

Επιστροφή στην αρχή της σελίδας Επιστροφή στην αρχή της σελίδας

Τι είναι η καλή σχεδίαση βάσης δεδομένων;

Υπάρχουν ορισμένες αρχές που καθοδηγούν τη διαδικασία της σχεδίασης βάσης δεδομένων. Η πρώτη αρχή είναι ότι οι διπλότυπες πληροφορίες (που επίσης ονομάζονται πλεονάζοντα δεδομένα) είναι κακές, διότι σπαταλούν χώρο και αυξάνουν την πιθανότητα σφαλμάτων και ασυνεπειών. Η δεύτερη αρχή είναι ότι η ορθότητα και η πληρότητα των πληροφοριών είναι σημαντικές. Εάν η βάση δεδομένων σας περιέχει λανθασμένες πληροφορίες, οι εκθέσεις που αντλούν πληροφορίες από τη βάση δεδομένων επίσης θα περιέχουν λανθασμένες πληροφορίες. Ως αποτέλεσμα, οι όποιες αποφάσεις σας βασίζονται σε αυτές τις εκθέσεις θα είναι βασισμένες σε παραπληροφόρηση.

Επομένως, μια καλή σχεδίαση βάσης δεδομένων είναι αυτή που:

  • Χωρίζει τις πληροφορίες σε πίνακες που βασίζονται σε θέματα, για να ελαττωθούν τα πλεονάζοντα δεδομένα.
  • Παρέχει στην Access τις πληροφορίες που απαιτούνται για να συνδεθούν οι πληροφορίες στους πίνακες, σύμφωνα με τις ανάγκες.
  • Βοηθά την υποστήριξη και εξασφαλίζει την ακρίβεια και την ακεραιότητα των πληροφοριών.
  • Εξυπηρετεί την επεξεργασία των δεδομένων και των αναγκών έκθεσης.

Επιστροφή στην αρχή της σελίδας Επιστροφή στην αρχή της σελίδας

Η διαδικασία σχεδίασης

Η διαδικασία σχεδίασης αποτελείται από τα ακόλουθα βήματα:

  • Καθορισμός του σκοπού που θα εξυπηρετεί η βάση δεδομένων σας    

Αυτό το βήμα βοηθά στην προετοιμασία για τα υπόλοιπα βήματα.

  • Εύρεση και οργάνωση των απαιτούμενων πληροφοριών    

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

  • Χωρισμός των πληροφοριών σε πίνακες    

Χωρίστε τα στοιχεία πληροφοριών σε κύριες οντότητες ή θέματα, όπως "Προϊόντα" ή "Παραγγελίες". Κάθε θέμα γίνεται τότε πίνακας.

  • Μετατροπή των στοιχείων πληροφοριών σε στήλες    

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

  • Καθορισμός πρωτευόντων κλειδιών    

Επιλέξτε το πρωτεύον κλειδί κάθε πίνακα. Το πρωτεύον κλειδί είναι μια στήλη που χρησιμοποιείται για τον μοναδικό προσδιορισμό κάθε γραμμής. Για παράδειγμα, "Κωδικός προϊόντος" ή "Κωδικός παραγγελίας".

  • Δημιουργία σχέσεων πινάκων    

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

  • Βελτίωση της σχεδίασης    

Αναλύστε τη σχεδίαση για σφάλματα. Δημιουργήστε τους πίνακες και προσθέστε μερικές εγγραφές ως δείγμα δεδομένων. Εξετάστε εάν παίρνετε τα αποτελέσματα που θέλετε από τους πίνακες. Κάντε τις απαραίτητες προσαρμογές στη σχεδίαση.

  • Εφαρμογή των κανόνων κανονικοποίησης    

Εφαρμόστε τους κανόνες κανονικοποίησης δεδομένων, για να εξετάσετε εάν οι πίνακές σας είναι σωστά δομημένοι. Κάντε τις απαραίτητες προσαρμογές στους πίνακες.

Επιστροφή στην αρχή της σελίδας Επιστροφή στην αρχή της σελίδας

Καθορισμός του σκοπού που θα εξυπηρετεί η βάση δεδομένων σας

Είναι καλή ιδέα να γράψετε στο χαρτί το σκοπό που θα εξυπηρετεί η βάση δεδομένων — το σκοπό που θα εξυπηρετεί, τον τρόπο που υπολογίζετε να τη χρησιμοποιήσετε, καθώς και το ποιος θα τη χρησιμοποιεί. Για μια μικρή βάση δεδομένων μιας μικρής οικογενειακής επιχείρησης, για παράδειγμα, θα γράφατε κάτι απλό, όπως "Η βάση δεδομένων πελατών διατηρεί μια λίστα με πληροφορίες πελατών, για να εξυπηρετεί ταχυδρομικές αποστολές και εκθέσεις". Εάν η βάση δεδομένων είναι πιο σύνθετη ή χρησιμοποιείται από πολλά άτομα, όπως συμβαίνει συχνά σε μια εταιρεία, η καταγραφή του σκοπού της θα μπορούσε κάλλιστα να πιάνει μια παράγραφο ή και περισσότερο, και θα πρέπει να περιλαμβάνει το πότε και το πώς θα χρησιμοποιεί ο καθένας τη βάση δεδομένων. Ο στόχος είναι να υπάρχει μια καλά ανεπτυγμένη δήλωση αποστολής, στην οποία να γίνεται αναφορά σε όλη τη διάρκεια της διαδικασίας της σχεδίασης. Μια τέτοια δήλωση σας βοηθά να εστιαστείτε στους στόχους σας κατά τη λήψη αποφάσεων.

Επιστροφή στην αρχή της σελίδας Επιστροφή στην αρχή της σελίδας

Εύρεση και οργάνωση των απαιτούμενων πληροφοριών

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

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

Έπειτα, σκεφτείτε τους τύπους των εκθέσεων ή των ταχυδρομικών αποστολών που θα θέλατε να παράγετε από τη βάση δεδομένων. Για παράδειγμα, ίσως θέλετε να παράγετε εκθέσεις πωλήσεων που εμφανίζουν τις πωλήσεις κατά θρήσκευμα ή μια συνοπτική έκθεση απογραφής που εμφανίζει τα επίπεδα της αποθήκης προϊόντων. Ίσως επίσης να θέλετε να δημιουργήσετε φόρμες επιστολών για αποστολή στους πελάτες, για την ανακοίνωση κάποιας έκπτωσης ή της προσφοράς ενός δώρου. Σχεδιάστε στο νου σας την έκθεση και φανταστείτε πώς θα είναι. Ποιες πληροφορίες θα συμπεριλαμβάνατε; Καταγράψτε όλα τα στοιχεία. Κάντε το ίδιο για τη φόρμα επιστολών, καθώς και για κάθε άλλη έκθεση που υπολογίζετε να δημιουργήσετε.

Ένα άτομο που φαντάζεται μια έκθεση απογραφής προϊόντων

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

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

Είναι λογικό να συντάξετε ένα πρωτότυπο για κάθε έκθεση ή κατάλογο εξόδου, και να σκεφτείτε ποια στοιχεία θα χρειαστείτε για να να παράγετε την έκθεση. Για παράδειγμα, όταν εξετάζετε μια φόρμα επιστολής, μπορεί να σας έρθουν στο νου κάποια στοιχεία. Εάν θέλετε να περιλάβετε την κατάλληλη προσφώνηση — για παράδειγμα τη συμβολοσειρά "κ." ή "κα." με την οποία αρχίζει μια προσφώνηση, θα χρειαστεί να δημιουργήσετε ένα στοιχείο προσφώνησης. Επίσης, ίσως να ξεκινάτε συνήθως μια επιστολή με την προσφώνηση "Αγαπητέ κ. Σμιθ", αντί για "Αγαπητέ κ. Σιλβέστερ Σμιθ". Αυτό υποδηλώνει ότι συνήθως θα θέλετε να αποθηκεύετε το επώνυμο χωριστά από το όνομα.

Ένα σημείο-κλειδί είναι ότι πρέπει να διασπάτε κάθε πληροφορία στα μικρότερα χρήσιμα μέρη της. Στην περίπτωση ενός ονοματεπώνυμου, για να κάνετε το επώνυμο άμεσα διαθέσιμο, θα διασπάσετε το ονοματεπώνυμο σε δύο μέρη — Όνομα και Επώνυμο. Για να ταξινομήσετε μια έκθεση κατά επώνυμο, για παράδειγμα, είναι χρήσιμο να έχετε αποθηκεύσει το επώνυμο του πελάτη χωριστά. Γενικά, για την ταξινόμηση, την αναζήτηση, τον υπολογισμό και την έκθεση βάσει ενός στοιχείου μιας πληροφορίας, πρέπει να τοποθετήσετε αυτό το στοιχείο σε χωριστό πεδίο.

Σκεφτείτε τις ερωτήσεις στις οποίες θέλετε να απαντά η βάση δεδομένων. Για παράδειγμα, πόσες πωλήσεις του κύριου προϊόντος σας κλείσατε τον προηγούμενο μήνα; Πού κατοικούν οι καλύτεροι πελάτες σας; Ποιος είναι ο προμηθευτής του προϊόντος σας με τις μεγαλύτερες πωλήσεις; Η πρόβλεψη αυτών των ερωτήσεων σας βοηθά να εστιαστείτε στα πρόσθετα στοιχεία που θα καταγράψετε.

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

Επιστροφή στην αρχή της σελίδας Επιστροφή στην αρχή της σελίδας

Χωρισμός των πληροφοριών σε πίνακες

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

Χειρόγραφα στοιχεία πληροφοριών ομαδοποιημένα κατά θέματα

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

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

Εικόνα που δείχνει έναν πίνακα που περιέχει και προϊόντα και προμηθευτές

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

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

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

Τέλος, ας υποθέσουμε ότι υπάρχει ένα μόνο προϊόν από τον προμηθευτή Coho Winery και θέλετε να το διαγράψετε, διατηρώντας τις πληροφορίες για το όνομα και τη διεύθυνση του προμηθευτή. Πώς θα διαγράψετε το προϊόν, χωρίς να χάσετε τις πληροφορίες του προμηθευτή; Δεν μπορείτε, επειδή κάθε εγγραφή περιέχει δεδομένα σχετικά με κάποιο προϊόν, μαζί με δεδομένα σχετικά με τον προμηθευτή, και δεν είναι δυνατόν να διαγράψετε το ένα χωρίς να διαγραφεί και το άλλο. Για να διατηρήσετε χωριστά αυτά τα δεδομένα, πρέπει να χωρίσετε τον πίνακα στα δύο: ο ένας πίνακας θα περιέχει τις πληροφορίες του προϊόντος και ο άλλος τις πληροφορίες του προμηθευτή. Η διαγραφή μιας εγγραφής προϊόντος θα πρέπει να διαγράφει μόνο τα δεδομένα που σχετίζονται με το προϊόν, και όχι τα δεδομένα που σχετίζονται με τον προμηθευτή.

Όταν έχετε επιλέξει το θέμα που αντιπροσωπεύεται από έναν πίνακα, στις στήλες αυτού του πίνακα πρέπει να αποθηκεύονται δεδομένα που είναι σχετικά μόνο με αυτό το θέμα. Για παράδειγμα, στον πίνακα "Προϊόντα" πρέπει να αποθηκεύονται μόνο δεδομένα σχετικά με τα προϊόντα. Επειδή η διεύθυνση του προμηθευτή είναι ένα δεδομένο σχετικό με τον προμηθευτή και όχι ένα δεδομένο σχετικό με το προϊόν, ανήκει στον πίνακα "Προμηθευτές".

Επιστροφή στην αρχή της σελίδας Επιστροφή στην αρχή της σελίδας

Μετατροπή των στοιχείων πληροφοριών σε στήλες

Για να καθορίσετε τις στήλες ενός πίνακα, αποφασίστε ποιες πληροφορίες χρειάζεται να παρακολουθείτε για το θέμα που καταγράφεται στον πίνακα. Για παράδειγμα, για τον πίνακα "Πελάτες", οι στήλες "Όνομα", "Διεύθυνση", "Πόλη-Περιφέρεια-Τ.Κ.", "Αποστολή ηλεκτρονικού ταχυδρομείου", "Προσφώνηση" και "Διεύθυνση ηλεκτρονικού ταχυδρομείου" αποτελούν μια καλή αρχική λίστα. Κάθε εγγραφή του πίνακα περιέχει το ίδιο σύνολο στηλών, επομένως μπορείτε να αποθηκεύσετε τις πληροφορίες "Όνομα", "Διεύθυνση", "Πόλη-Περιφέρεια-Τ.Κ.", "Αποστολή ηλεκτρονικού ταχυδρομείου", "Προσφώνηση" και "Διεύθυνση ηλεκτρονικού ταχυδρομείου" για κάθε εγγραφή. Για παράδειγμα, η στήλη "Διεύθυνση" περιέχει διευθύνσεις πελατών. Κάθε εγγραφή περιέχει δεδομένα σχετικά με έναν πελάτη και το πεδίο "Διεύθυνση" περιέχει τη διεύθυνση αυτού του πελάτη.

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

Πρέπει επίσης να σκεφτείτε εάν η βάση δεδομένων θα περιέχει πληροφορίες που αφορούν τη δική σας χώρα μόνο ή θα είναι διεθνείς. Για παράδειγμα, εάν σχεδιάζετε να αποθηκεύσετε διεθνείς διευθύνσεις, είναι καλύτερα να έχετε τη στήλη "Χώρα" αντί για τη στήλη "Περιφέρεια", επειδή μια τέτοια στήλη εξυπηρετεί και τις διευθύνσεις της χώρας σας και τις διευθύνσεις άλλων χωρών/περιοχών. Παρόμοια, η στήλη "Ταχυδρομικός κώδικας" είναι πιο χρήσιμη από τη στήλη "Ταχυδρομικός κώδικας πόλης", εάν πρόκειται να αποθηκεύσετε διεθνείς διευθύνσεις.

Στη λίστα που ακολουθεί εμφανίζονται κάποιες συμβουλές για τον καθορισμό των στηλών σας.

  • Μην περιλαμβάνετε υπολογισμένα δεδομένα    

Στις περισσότερες περιπτώσεις, δεν πρέπει να αποθηκεύετε στους πίνακες το αποτέλεσμα υπολογισμών. Αντί για αυτό, μπορείτε να εκτελείτε τους υπολογισμούς στην Access όταν θέλετε να δείτε το αποτέλεσμα. Για παράδειγμα, ας υποθέσουμε ότι υπάρχει μια έκθεση "Προϊόντα κατά παραγγελία", στην οποία εμφανίζεται το μερικό άθροισμα των μονάδων κατά παραγγελία, για κάθε κατηγορία προϊόντων στη βάση δεδομένων. Ωστόσο, δεν υπάρχει στήλη για το μερικό άθροισμα "Μονάδες κατά παραγγελία" σε κανέναν πίνακα. Αντί για αυτό, ο πίνακας "Προϊόντα" περιλαμβάνει μια στήλη "Μονάδες κατά παραγγελία", που αποθηκεύει τις μονάδες κατά παραγγελία για κάθε προϊόν. Με τη χρήση αυτών των δεδομένων, η Access υπολογίζει το μερικό άθροισμα κάθε φορά που εκτυπώνετε την έκθεση. Το ίδιο το μερικό άθροισμα δεν πρέπει να αποθηκεύεται σε πίνακα.

  • Να αποθηκεύετε τις πληροφορίες στα μικρότερα λογικά μέρη τους    

Ίσως έχετε την τάση να έχετε ένα πεδίο για ονοματεπώνυμα ή για ονόματα προϊόντων μαζί με περιγραφές προϊόντων. Εάν συνδυάζετε περισσότερα από ένα είδος πληροφοριών σε ένα πεδίο, είναι δύσκολο να ανακτήσετε αργότερα μεμονωμένα δεδομένα. Δοκιμάστε να διασπάστε τις πληροφορίες σε λογικά μέρη. Για παράδειγμα, δημιουργήστε χωριστά πεδία για όνομα και επώνυμο ή για όνομα προϊόντος, κατηγορία και περιγραφή.

Λίστα στοιχείων πληροφορίας κατά τη διαδικασία σχεδίασης

Όταν έχετε βελτιώσει τις στήλες δεδομένων σε κάθε πίνακα, είστε έτοιμοι να επιλέξετε το πρωτεύον κλειδί κάθε πίνακα.

Επιστροφή στην αρχή της σελίδας Επιστροφή στην αρχή της σελίδας

Καθορισμός πρωτευόντων κλειδιών

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

Εάν έχετε ήδη ένα μοναδικό αναγνωριστικό για έναν πίνακα, όπως έναν αριθμό προϊόντος που προσδιορίζει μοναδικά κάθε προϊόν στον κατάλογό σας, μπορείτε να χρησιμοποιήσετε αυτό το αναγνωριστικό ως το πρωτεύον κλειδί του πίνακα — αλλά μόνο αν οι τιμές σε αυτή τη στήλη θα είναι πάντοτε διαφορετικές για κάθε εγγραφή. Δεν μπορείτε να έχετε διπλότυπες τιμές σε ένα πρωτεύον κλειδί. Για παράδειγμα, μη χρησιμοποιείτε ονόματα ατόμων ως πρωτεύον κλειδί, γιατί δεν είναι μοναδικά. Είναι πολύ πιθανό να υπάρχουν δύο άτομα με το ίδιο όνομα στον ίδιο πίνακα.

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

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

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

Εάν δεν έχετε υπόψη σας μια στήλη ή ένα σύνολο στηλών που θα μπορούσαν να αποτελέσουν ένα καλό πρωτεύον κλειδί, μπορείτε να χρησιμοποιήσετε μια στήλη που έχει τύπο δεδομένων "Αυτόματη αρίθμηση". Όταν χρησιμοποιείτε τον τύπο δεδομένων "Αυτόματη αρίθμηση", από την Access αντιστοιχίζεται αυτόματα σ' εσάς μια τιμή. Ένα τέτοιο αναγνωριστικό δεν περιέχει δεδομένα. Δεν περιέχει πληροφορίες δεδομένων που περιγράφουν τη γραμμή την οποία αντιπροσωπεύει. Τα αναγνωριστικά που είναι κενά δεδομένων είναι ιδανικά για να χρησιμοποιηθούν ως πρωτεύοντα κλειδιά, επειδή δεν αλλάζουν. Ένα πρωτεύον κλειδί που περιέχει δεδομένα σχετικά με μια γραμμή — έναν αριθμό τηλεφώνου ή ένα όνομα πελάτη, για παράδειγμα — είναι πιο πιθανό να αλλάξει, επειδή η ίδια η πληροφορία δεδομένων ενδέχεται να αλλάξει.


Εικόνα που αναπαριστά τον πίνακα Προϊόντα με πεδίο πρωτεύοντος κλειδιού

Επεξήγηση 1 Μια στήλη που ορίζεται σε τύπο δεδομένων "Αυτόματη αρίθμηση", συχνά αποτελεί ένα καλό πρωτεύον κλειδί. Δεν υπάρχουν δύο αναγνωριστικά προϊόντων που να είναι τα ίδια.

Σε μερικές περιπτώσεις, ίσως θέλετε να χρησιμοποιήσετε δύο ή περισσότερα πεδία τα οποία, μαζί, παρέχουν το πρωτεύον κλειδί ενός πίνακα. Για παράδειγμα, σε έναν πίνακα "Λεπτομέρειες παραγγελιών", που αποθηκεύει στοιχεία γραμμής για παραγγελίες, θα γινόταν χρήση δύο στηλών στο πρωτεύον κλειδί του: "Κωδικός παραγγελίας" και "Κωδικός προϊόντος". Όταν ένα πρωτεύον κλειδί χρησιμοποιεί περισσότερες από μία στήλες, ονομάζεται επίσης σύνθετο κλειδί.

Για τη βάση δεδομένων πωλήσεων προϊόντων, μπορείτε να δημιουργήσετε μια στήλη "Αυτόματη αρίθμηση" για κάθε έναν από τους πίνακες, για να χρησιμεύσει ως πρωτεύον κλειδί: "Κωδικός προϊόντος" για τον πίνακα "Προϊόντα", "Κωδικός παραγγελιών" για τον πίνακα "Παραγγελίες", "Κωδικός πελατών", για τον πίνακα "Πελάτες" και "Κωδικός προμηθευτών" για τον πίνακα "Προμηθευτές".

Εικόνα που εμφανίζει στοιχεία πληροφοριών κατά τη διαδικασία σχεδίασης

Επιστροφή στην αρχή της σελίδας Επιστροφή στην αρχή της σελίδας

Δημιουργία σχέσεων πινάκων

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


Η φόρμα Παραγγελίες

Επεξήγηση 1 Οι πληροφορίες σε αυτή τη φόρμα προέρχονται από τον πίνακα "Πελάτες"...
Επεξήγηση 2 ...τον πίνακα "Υπάλληλοι"...
Επεξήγηση 3 ...τον πίνακα "Παραγγελίες"...
Επεξήγηση 4 ...τον πίνακα "Προϊόντα"...
Επεξήγηση 5 ...και τον πίνακα "Λεπτομέρειες παραγγελιών".

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

Επιστροφή στην αρχή της σελίδας Επιστροφή στην αρχή της σελίδας

Δημιουργία σχέσης ένα-προς-πολλά

Σκεφτείτε το εξής παράδειγμα: τους πίνακες "Προμηθευτές" και "Προϊόντα" στη βάση δεδομένων παραγγελιών προϊόντων. Ένας προμηθευτής μπορεί να προμηθεύει οποιοδήποτε πλήθος προϊόντων. Επομένως, για οποιονδήποτε προμηθευτή που απεικονίζεται στον πίνακα "Προμηθευτές", ενδέχεται να υπάρχουν πολλά προϊόντα που απεικονίζονται στον πίνακα "Προϊόντα". Η σχέση μεταξύ του πίνακα "Προμηθευτές" και του πίνακα "Προϊόντα" είναι, επομένως, μια σχέση ένα-προς-πολλά.

Η έννοια ένα-προς-πολλά

Για να απεικονίσετε μια σχέση ένα-προς-πολλά στη σχεδίαση της βάσης δεδομένων, πάρτε το πρωτεύον κλειδί που βρίσκεται στην πλευρά "ένα" της σχέσης και προσθέστε το ως πρόσθετη στήλη ή στήλες στον πίνακα που βρίσκεται στην πλευρά "πολλά" της σχέσης. Σε αυτή την περίπτωση, για παράδειγμα, προσθέτετε τη στήλη "Κωδικός προμηθευτή" από τον πίνακα "Προμηθευτές" στον πίνακα "Προϊόντα". Η Access μπορεί τότε να χρησιμοποιήσει τον κωδικό του προμηθευτή στον πίνακα "Προϊόντα", για να εντοπίσει το σωστό προμηθευτή για κάθε προϊόν.

Η στήλη "Κωδικός προμηθευτή" στον πίνακα "Προϊόντα" ονομάζεται ξένο κλειδί. Ένα ξένο κλειδί είναι ένα άλλο πρωτεύον κλειδί του πίνακα. Η στήλη "Κωδικός προμηθευτή" στον πίνακα "Προϊόντα" είναι ένα ξένο κλειδί, επειδή είναι επίσης το πρωτεύον κλειδί για τον πίνακα "Προμηθευτές".

Λίστα στοιχείων πληροφορίας κατά τη διαδικασία σχεδίασης

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

Επιστροφή στην αρχή της σελίδας Επιστροφή στην αρχή της σελίδας

Δημιουργία σχέσης "πολλά προς πολλά"

Σκεφτείτε τη σχέση μεταξύ των πινάκων "Προϊόντα" και "Παραγγελίες".

Μία παραγγελία ενδέχεται να περιλαμβάνει περισσότερα από ένα προϊόντα. Από την άλλη, ένα προϊόν ενδέχεται να εμφανίζεται σε πολλές παραγγελίες. Επομένως, για κάθε εγγραφή στον πίνακα "Παραγγελίες", ενδέχεται να υπάρχουν πολλές εγγραφές στον πίνακα "Προϊόντα" και για κάθε εγγραφή στον πίνακα "Προϊόντα" ενδέχεται να υπάρχουν πολλές εγγραφές στον πίνακα "Παραγγελίες". Αυτού του τύπου η σχέση ονομάζεται σχέση πολλά-προς-πολλά, επειδή για κάθε προϊόν ενδέχεται να υπάρχουν πολλές παραγγελίες και για κάθε παραγγελία ενδέχεται να υπάρχουν πολλά προϊόντα. Σημειώστε ότι για να εντοπίζετε σχέσεις πολλά-προς-πολλά μεταξύ των πινάκων, είναι σημαντικό να σκέφτεστε και τις δύο πλευρές της σχέσης.

Τα θέματα των δύο πινάκων — παραγγελίες και προϊόντα —έχουν μια σχέση πολλά-προς-πολλά. Αυτό παρουσιάζει ένα πρόβλημα. Για να κατανοήσετε το πρόβλημα, φανταστείτε τι θα συνέβαινε εάν δοκιμάζατε να δημιουργήσετε τη σχέση μεταξύ των δύο πινάκων προσθέτοντας το πεδίο "Κωδικός προϊόντος" στον πίνακα "Παραγγελίες". Για να έχετε περισσότερα από ένα προϊόντα ανά παραγγελία, χρειάζεστε περισσότερες από μία εγγραφές ανά παραγγελία στον πίνακα "Παραγγελίες". Έτσι θα επαναλαμβάνατε πληροφορίες παραγγελιών για κάθε γραμμή που σχετίζεται με μία παραγγελία — με αποτέλεσμα να προκύψει μια μη αποτελεσματική σχεδίαση που ενδέχεται να οδηγήσει σε ανακριβή δεδομένα. Το ίδιο πρόβλημα παρουσιάζεται εάν τοποθετήσετε το πεδίο "Κωδικός παραγγελίας" στον πίνακα "Προϊόντα" — θα έχετε περισσότερες από μία εγγραφές στον πίνακα "Προϊόντα" για κάθε προϊόν. Πώς λύνεται αυτό το πρόβλημα;

Η λύση είναι να δημιουργήσετε έναν τρίτο πίνακα, που συχνά ονομάζεται πίνακας σύνδεσης, ο οποίος να διασπά τις σχέσεις πολλά-προς-πολλά σε δύο σχέσεις ένα-προς-πολλά. Εσείς εισάγετε το πρωτεύον κλειδί για κάθε έναν από τους δύο πίνακες στον τρίτο πίνακα. Ως αποτέλεσμα, στον τρίτο πίνακα εγγράφεται κάθε παρουσία ή εμφάνιση της σχέσης.

Σχέση πολλά-προς-πολλά

Κάθε εγγραφή στον πίνακα "Λεπτομέρειες παραγγελιών" απεικονίζει ένα στοιχείο γραμμής σε μια παραγγελία. Το πρωτεύον κλειδί του πίνακα "Λεπτομέρειες παραγγελιών" αποτελείται από δύο πεδία — τα ξένα κλειδιά από τους πίνακες "Παραγγελίες" και "Προϊόντα". Η χρήση μόνο του πεδίου "Κωδικός παραγγελίας" δεν λειτουργεί ως το πρωτεύον κλειδί για αυτό τον πίνακα, επειδή μία παραγγελία ενδέχεται να έχει πολλά στοιχεία γραμμής. Το πεδίο "Κωδικός παραγγελίας" επαναλαμβάνεται για κάθε στοιχείο γραμμής σε μια παραγγελία, επομένως το πεδίο δεν περιέχει μοναδικές τιμές. Η χρήση του πεδίου "Κωδικός προϊόντος" επίσης δεν λειτουργεί, επειδή ένα προϊόν ενδέχεται να εμφανίζεται σε πολλές διαφορετικές παραγγελίες. Όμως και τα δύο πεδία μαζί, πάντα παράγουν μια μοναδική τιμή για κάθε εγγραφή.

Στη βάση δεδομένων πωλήσεων προϊόντων, οι πίνακες "Παραγγελίες" και "Προϊόντα" δεν σχετίζονται απευθείας ο ένας με τον άλλον, αλλά έμμεσα, μέσω του πίνακα "Λεπτομέρειες παραγγελιών". Η σχέση πολλά-προς-πολλά μεταξύ παραγγελιών και προϊόντων απεικονίζεται στη βάση δεδομένων με τη χρήση δύο σχέσεων ένα-προς-πολλά:

  • Ο πίνακας "Παραγγελίες" και ο πίνακας "Λεπτομέρειες παραγγελιών" έχουν μια σχέση ένα-προς-πολλά. Κάθε παραγγελία ενδέχεται να έχει περισσότερα από ένα στοιχεία γραμμής, αλλά κάθε στοιχείο γραμμής συνδέεται σε μία μόνο παραγγελία.
  • Ο πίνακας "Προϊόντα" και ο πίνακας "Λεπτομέρειες παραγγελιών" έχουν μια σχέση ένα-προς-πολλά. Κάθε προϊόν ενδέχεται να έχει πολλά στοιχεία γραμμής που σχετίζονται μαζί του, αλλά κάθε στοιχείο γραμμής αναφέρεται μόνο σε ένα προϊόν.

Από τον πίνακα "Λεπτομέρειες παραγγελιών", μπορείτε να προσδιορίσετε όλα τα προϊόντα σε μια συγκεκριμένη παραγγελία. Μπορείτε επίσης να προσδιορίσετε όλες τις παραγγελίες για ένα συγκεκριμένο προϊόν.

Μετά την ενσωμάτωση του πίνακα "Λεπτομέρειες παραγγελιών", η λίστα των πινάκων και των πεδίων θα φαίνεται κάπως έτσι:

Λίστα στοιχείων πληροφορίας κατά τη διαδικασία σχεδίασης.

Επιστροφή στην αρχή της σελίδας Επιστροφή στην αρχή της σελίδας

Δημιουργία σχέσης ένα-προς-ένα

Ένας άλλος τύπος σχέσης είναι η σχέση ένα-προς-ένα. Για παράδειγμα, ας υποθέσουμε ότι χρειάζεται να εγγράψετε κάποιες ειδικές συμπληρωματικές πληροφορίες προϊόντος που θα τις χρειάζεστε σπάνια ή που εφαρμόζονται μόνο σε λίγα προϊόντα. Επειδή δεν χρειάζεστε συχνά αυτές τις πληροφορίες και επειδή η αποθήκευση των πληροφοριών στον πίνακα "Προϊόντα" θα είχε ως αποτέλεσμα έναν κενό χώρο για κάθε προϊόν για το οποίο δεν εφαρμόζονται, τις τοποθετείτε σε χωριστό πίνακα. Όπως και στον πίνακα "Προϊόντα", χρησιμοποιείτε ως πρωτεύων κλειδί το πεδίο "Κωδικός προϊόντος". Η σχέση μεταξύ αυτού του συμπληρωματικού πίνακα και του πίνακα "Προϊόντα" είναι μια σχέση ένα-προς-ένα. Για κάθε εγγραφή στον πίνακα "Προϊόντα", υπάρχει μία εγγραφή που να της ταιριάζει στον συμπληρωματικό πίνακα. Όταν προσδιορίζετε μια τέτοια σχέση, οι δύο πίνακες πρέπει να έχουν ένα κοινό πεδίο.

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

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

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

Επιστροφή στην αρχή της σελίδας Επιστροφή στην αρχή της σελίδας

Βελτίωση της σχεδίασης

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

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

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

  • Μήπως ξεχάσατε κάποιες στήλες; Εάν ναι, ανήκουν οι πληροφορίες στον υπάρχοντα πίνακα; Εάν πρόκειται για πληροφορίες σχετικά με κάτι άλλο, ίσως χρειαστεί να δημιουργήσετε έναν άλλον πίνακα. Δημιουργήστε μια στήλη για κάθε στοιχείο πληροφορίας που χρειάζεται να παρακολουθείτε. Εάν η πληροφορία δεν είναι δυνατόν να υπολογιστεί από άλλες στήλες, είναι πιθανό να χρειαστεί μια νέα στήλη για αυτήν.
  • Μήπως υπάρχουν κάποιες στήλες που είναι περιττές, επειδή μπορούν να υπολογιστούν από υπάρχοντα πεδία; Εάν ένα στοιχείο πληροφορίας μπορεί να υπολογιστεί από άλλες υπάρχουσες στήλες — μια εκπτωτική τιμή που υπολογίζεται από τη λιανική τιμή, για παράδειγμα — συνήθως είναι καλύτερα να κάνετε ακριβώς αυτό και να αποφύγετε τη δημιουργία μιας νέας στήλης.
  • Μήπως προσθέτετε κατ' επανάληψη διπλότυπες πληροφορίες σε κάποιον από τους πίνακες; Εάν ναι, ίσως χρειάζεται να χωρίσετε τον πίνακα σε δύο πίνακες που έχουν μια σχέση ένα-προς-πολλά.
  • Μήπως έχετε πίνακες με πολλά πεδία, περιορισμένο αριθμό εγγραφών και πολλά κενά πεδία σε μεμονωμένες εγγραφές; Εάν ναι, σκεφτείτε την περίπτωση να ξανασχεδιάσετε τον πίνακα, ώστε να έχει λιγότερα πεδία και περισσότερες εγγραφές.
  • Έχει διασπαστεί κάθε στοιχείο πληροφορίας στα μικρότερα χρήσιμα μέρη του; Εάν χρειάζεται να εκτελέσετε έκθεση, ταξινόμηση, αναζήτηση ή υπολογισμό σε ένα στοιχείο πληροφορίας, τοποθετήστε αυτό το στοιχείο σε χωριστή στήλη.
  • Περιέχει κάθε στήλη ένα δεδομένο σχετικό με το θέμα του πίνακα; Εάν μια στήλη δεν περιέχει πληροφορίες σχετικές με το θέμα του πίνακα, τότε ανήκει σε διαφορετικό πίνακα.
  • Απεικονίζονται όλες οι σχέσεις μεταξύ πινάκων, είτε με κοινά πεδία είτε με έναν τρίτο πίνακα; Οι σχέσεις ένα-προς-ένα και ένα-προς-πολλά απαιτούν κοινές στήλες. Οι σχέσεις πολλά-προς-πολλά απαιτούν έναν τρίτο πίνακα.

Βελτίωση του πίνακα "Προϊόντα"

Ας υποθέσουμε ότι κάθε προϊόν στη βάση δεδομένων πωλήσεων προϊόντων ανήκει σε μια γενική κατηγορία, όπως αναψυκτικά, καρυκεύματα ή θαλασσινά. Ο πίνακας "Προϊόντα" θα μπορούσε να περιλαμβάνει ένα πεδίο που να εμφανίζει την κατηγορία κάθε προϊόντος.

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

Μια καλύτερη λύση είναι να κάνετε τις "Κατηγορίες" ένα νέο θέμα παρακολούθησης από τη βάση δεδομένων, με το δικό του πίνακα και το δικό του πρωτεύον κλειδί. Μπορείτε κατόπιν να προσθέσετε το πρωτεύον κλειδί από τον πίνακα "Κατηγορίες" στον πίνακα "Προϊόντα" ως ξένο κλειδί.

Οι πίνακες "Κατηγορίες" και "Προϊόντα" έχουν μια σχέση ένα-προς-πολλά: μια κατηγορία μπορεί να περιλαμβάνει περισσότερα από ένα προϊόντα, αλλά ένα προϊόν μπορεί να ανήκει μόνο σε μία κατηγορία.

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

  • Κωδικός προϊόντος
  • Όνομα
  • Κωδικός προϊόντος1
  • Όνομα1
  • Κωδικός προϊόντος2
  • Όνομα2
  • Κωδικός προϊόντος3
  • Όνομα3

Εδώ, κάθε προϊόν είναι μια επαναλαμβανόμενη ομάδα στηλών, που διαφέρουν από τις άλλες μόνο κατά την προσθήκη ενός αριθμού στο τέλος του ονόματος της στήλης. Όταν εντοπίζετε στήλες που είναι αριθμημένες κατ' αυτό τον τρόπο, θα πρέπει να επανεξετάσετε τη σχεδίασή σας.

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

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

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

Επιστροφή στην αρχή της σελίδας Επιστροφή στην αρχή της σελίδας

Εφαρμογή των κανόνων κανονικοποίησης

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

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

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

Πρώτη κανονική φόρμα

Η πρώτη κανονική φόρμα δηλώνει ότι σε κάθε διασταύρωση γραμμών και στηλών στον πίνακα, υπάρχει μία τιμή και ποτέ μια λίστα από τιμές. Για παράδειγμα, δεν είναι δυνατόν να έχετε ένα πεδίο που ονομάζεται "Τιμή" και να τοποθετείτε σε αυτό περισσότερες από μία τιμές. Εάν θεωρήσετε κάθε διασταύρωση γραμμών και στηλών ως κελί, τότε κάθε κελί μπορεί να περιέχει μόνο μία τιμή.

Δεύτερη κανονική φόρμα

Η δεύτερη κανονική φόρμα απαιτεί από κάθε στήλη χωρίς κλειδί να είναι πλήρως εξαρτημένη από ολόκληρο το πρωτεύον κλειδί και όχι απλώς από ένα μέρος του. Αυτός ο κανόνας εφαρμόζεται όταν διαθέτετε ένα πρωτεύον κλειδί που αποτελείται από περισσότερες από μία στήλες. Για παράδειγμα, ας υποθέσουμε ότι έχετε έναν πίνακα που περιέχει τις ακόλουθες στήλες, όπου το "Κωδικός παραγγελίας" και το "Κωδικός προϊόντος" σχηματίζουν το πρωτεύον κλειδί:

  • Κωδικός παραγγελίας (πρωτεύον κλειδί)
  • Κωδικός προϊόντος (πρωτεύον κλειδί)
  • Όνομα προϊόντος

Αυτή η σχεδίαση παραβιάζει τη δεύτερη κανονική φόρμα, επειδή το "Όνομα προϊόντος" εξαρτάται από τον "Κωδικό προϊόντος", αλλά όχι από τον "Κωδικό παραγγελίας" και επομένως δεν εξαρτάται από ολόκληρο το πρωτεύον κλειδί. Πρέπει να καταργήσετε τη στήλη "Όνομα προϊόντος" από τον πίνακα. Ανήκει σε άλλον πίνακα ("Προϊόντα")

Τρίτη κανονική φόρμα

Η τρίτη κανονική φόρμα απαιτεί από κάθε στήλη χωρίς κλειδί όχι μόνον να εξαρτάται από ολόκληρο το πρωτεύον κλειδί, αλλά να είναι ανεξάρτητη από όλες τις άλλες.

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

  • Κωδικός προϊόντος (πρωτεύον κλειδί)
  • Όνομα
  • ΠΛΤ
  • Έκπτωση

Ας υποθέσουμε ότι η έκπτωση εξαρτάται από την προτεινόμενη λιανική τιμή (ΠΛΤ). Αυτός ο πίνακας παραβιάζει την τρίτη κανονική φόρμα, επειδή μια στήλη χωρίς κλειδί, η στήλη "Έκπτωση" εξαρτάται από μια άλλη στήλη χωρίς κλειδί, τη στήλη "ΠΛΤ". Η ανεξαρτησία των στηλών σημαίνει ότι θα μπορείτε να αλλάζετε οποιαδήποτε στήλη χωρίς κλειδί, χωρίς να επηρεάζετε οποιαδήποτε άλλη στήλη. Εάν αλλάξετε μια τιμή στο πεδίο "ΠΛΤ", η στήλη "Έκπτωση" θα αλλάξει ανάλογα, παραβιάζοντας έτσι αυτόν τον κανόνα. Σε αυτή την περίπτωση, η στήλη "Έκπτωση" θα πρέπει να μετακινηθεί σε άλλον πίνακα που έχει κλειδί το "ΠΛΤ".

Επιστροφή στην αρχή της σελίδας Επιστροφή στην αρχή της σελίδας

Για περισσότερες πληροφορίες

Για περισσότερες πληροφορίες σχετικά με τα βασικά της σχεδίασης πινάκων, ανατρέξτε στο άρθρο Δημιουργία πινάκων σε μια βάση δεδομένων.

Για πρόσθετες πληροφορίες σχετικά με τη σχεδίαση φύλλου δεδομένων, ανατρέξτε στις παρακάτω εκδόσεις:

  • Hernandez, Michael J. Database Design for Mere Mortals: A Hands-On Guide to Relational Database Design, Second Edition. Addison-Wesley Professional. 2003.
  • Fleming, Candace C. von Halle, Barbara. Handbook of Relational Database Design. Addison-Wesley Professional. 1989.
  • Riordan, Rebecca M. Designing Effective Database Systems. Addison-Wesley Professional. 2005.

Επιστροφή στην αρχή της σελίδας Επιστροφή στην αρχή της σελίδας