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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Όνομα

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

  • Name1

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

  • Name2

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

  • Name3

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Όνομα

  • SRP

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

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

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

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

Αναπτύξτε τις δεξιότητές σας
Εξερευνήστε το περιεχόμενο της εκπαίδευσης
Αποκτήστε πρώτοι τις νέες δυνατότητες
Συμμετοχή σε Microsoft Office μέλη του προγράμματος Insider

Σας βοήθησαν αυτές οι πληροφορίες;

Πόσο ικανοποιημένοι είστε με τη γλωσσική ποιότητα;
Τι επηρέασε την εμπειρία σας;

Σας ευχαριστούμε για τα σχόλιά σας!

×