Βασικές αρχές σχεδίασης βάσης δεδομένων
Applies ToAccess για Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

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

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

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

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

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

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

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

Αρχή της σελίδας

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

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

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

  • Διαιρεί τις πληροφορίες σας σε πίνακες βάσει θέματος για να μειώσει τα πλεονάζοντα δεδομένα.

  • Παρέχει στην Access τις πληροφορίες που χρειάζεται για να ενώσει τις πληροφορίες στους πίνακες, ανάλογα με τις ανάγκες.

  • Βοηθά στην υποστήριξη και τη διασφάλιση της ακρίβειας και της ακεραιότητας των πληροφοριών σας.

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

Αρχή της σελίδας

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

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

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

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

  • Βρείτε και οργανώστε τις απαιτούμενες πληροφορίες     

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

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

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

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

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

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

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

  • Ρύθμιση των σχέσεων πινάκων    

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

  • Περιορισμός της σχεδίασης    

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

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

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

Αρχή της σελίδας

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

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

Αρχή της σελίδας

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

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

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

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

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

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

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

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

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

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

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

Αρχή της σελίδας

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

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

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

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

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

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

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

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

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

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

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

Αρχή της σελίδας

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

Για να προσδιορίσετε τις στήλες σε έναν πίνακα, αποφασίστε ποιες πληροφορίες χρειάζεστε για να παρακολουθήσετε το θέμα που έχει καταγραφεί στον πίνακα. Για παράδειγμα, για τον πίνακα Customers, τα στοιχεία Name, Address, City-State-Zip, Send e-mail, Salutation and E-mail address αποτελούν μια καλή αρχική λίστα στηλών. Κάθε εγγραφή στον πίνακα περιέχει το ίδιο σύνολο στηλών, ώστε να μπορείτε να αποθηκεύετε πληροφορίες για το Όνομα, τη Διεύθυνση, το Νομό-Πόλη-Ταχυδρομικό κώδικα, την Αποστολή μηνυμάτων ηλεκτρονικού ταχυδρομείου, το Χαιρετισμό και το Ηλεκτρονικό ταχυδρομείο για κάθε εγγραφή. Για παράδειγμα, η στήλη διευθύνσεων περιέχει τις διευθύνσεις των πελατών. Κάθε εγγραφή περιέχει δεδομένα σχετικά με έναν πελάτη και το πεδίο διεύθυνσης περιέχει τη διεύθυνση του συγκεκριμένου πελάτη.

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

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

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

  • Να μην περιλαμβάνονται υπολογιζόμενα δεδομένα    

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

  • Αποθήκευση πληροφοριών στα μικρότερα λογικά τμήματά τους    

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

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

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

Αρχή της σελίδας

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

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

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

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

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

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

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

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

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

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

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

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

Αρχή της σελίδας

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

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

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

1. Οι πληροφορίες σε αυτή τη φόρμα προέρχονται από τον πίνακα "Πελάτες"...

2. ... ο πίνακας "Υπάλληλοι"...

3. ... ο πίνακας "Παραγγελίες"...

4. ... ο πίνακας "Προϊόντα"...

5. ... και τον πίνακα "Λεπτομέρειες παραγγελίας".

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

Αρχή της σελίδας

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

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

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

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

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

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

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

Αρχή της σελίδας

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

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

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

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

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

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

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

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

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

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

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

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

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

Αρχή της σελίδας

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

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

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

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

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

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

Αρχή της σελίδας

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

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

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

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

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

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

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

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

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

  • Κάθε στήλη περιέχει κάποιο γεγονός σχετικά με το θέμα του πίνακα; Εάν μια στήλη δεν περιέχει πληροφορίες σχετικά με το θέμα του πίνακα, ανήκει σε διαφορετικό πίνακα.

  • Αναπαρίστανται όλες οι σχέσεις μεταξύ πινάκων, είτε από κοινά πεδία είτε από έναν τρίτο πίνακα; Οι σχέσεις ένα-προς-ένα και ένα-προς-πολλά απαιτούν κοινές στήλες. Οι σχέσεις πολλά-προς-πολλά απαιτούν έναν τρίτο πίνακα.

Περιορισμός του πίνακα "Προϊόντα"

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

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

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

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

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

  • Αναγνωριστικό προϊόντος

  • Όνομα

  • Αναγνωριστικό προϊόντος1

  • Name1

  • Αναγνωριστικό προϊόντος2

  • Name2

  • Αναγνωριστικό προϊόντος3

  • Name3

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

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

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

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

Αρχή της σελίδας

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

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

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

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

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

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

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

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

  • Αναγνωριστικό παραγγελίας (πρωτεύον κλειδί)

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

  • Όνομα προϊόντος

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

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

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

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

  • ProductID (πρωτεύον κλειδί)

  • Όνομα

  • SRP

  • Προεξόφληση

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

Αρχή της σελίδας

Χρειάζεστε περισσότερη βοήθεια;

Θέλετε περισσότερες επιλογές;

Εξερευνήστε τα πλεονεκτήματα της συνδρομής, περιηγηθείτε σε εκπαιδευτικά σεμινάρια, μάθετε πώς μπορείτε να προστατεύσετε τη συσκευή σας και πολλά άλλα.

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