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

click fraud protection

Είστε έτοιμοι να ξεκινήσετε τη δημιουργία βάσεων δεδομένων και πινάκων με το Γλώσσα δομημένων ερωτημάτων? Σε αυτό το άρθρο, διερευνούμε τη διαδικασία δημιουργίας πινάκων χειροκίνητα με τις εντολές CREATE DATABASE και CREATE TABLE. Εάν είστε νέοι στο SQL, ίσως θελήσετε να διαβάσετε μερικά Βασικά στοιχεία SQL πρώτα.

Επιχειρηματικές απαιτήσεις

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

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

instagram viewer
Διάγραμμα οντοτήτων-σχέσεων σε αυτήν την σελίδα.

Επιλογή πλατφόρμας βάσης δεδομένων

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

Ως πρόσθετο πλεονέκτημα, η χρήση SQL συμβατή με ANSI θα διασφαλίσει ότι αυτές οι εντολές θα λειτουργούν σε οποιοδήποτε DBMS που υποστηρίζει το πρότυπο SQL, συμπεριλαμβανομένων των Oracle και Microsoft SQL Server. Εάν δεν έχετε επιλέξει ακόμα μια πλατφόρμα για τη βάση δεδομένων σας, οι Επιλογές λογισμικού βάσης δεδομένων σας καθοδηγούν στη διαδικασία επιλογής.

Δημιουργία βάσης δεδομένων

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

ΔΗΜΙΟΥΡΓΙΑ προσωπικού βάσεων δεδομένων

Σημειώστε την κεφαλαιοποίηση που χρησιμοποιείται στο παραπάνω παράδειγμα. Είναι κοινή πρακτική μεταξύ των προγραμματιστών SQL να χρησιμοποιούν όλα τα κεφαλαία γράμματα για λέξεις-κλειδιά SQL όπως "ΔΗΜΙΟΥΡΓΙΑ" και "DATABASE" ενώ χρησιμοποιείτε όλα τα πεζά γράμματα για ονόματα που ορίζονται από τον χρήστη, όπως η βάση δεδομένων "προσωπικού" όνομα. Αυτές οι συμβάσεις παρέχουν εύκολη αναγνωσιμότητα.

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

Δημιουργία του πρώτου μας πίνακα

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

Το χαρακτηριστικό ReportsTo αποθηκεύει το αναγνωριστικό διαχειριστή για κάθε υπάλληλο. Από τα δείγματα αρχείων που εμφανίζονται, μπορούμε να διαπιστώσουμε ότι ο Sue Scampi είναι ο διευθυντής τόσο του Tom Kendall όσο και του John Smith. Ωστόσο, δεν υπάρχουν πληροφορίες στη βάση δεδομένων σχετικά με τον διαχειριστή της Sue, όπως υποδεικνύεται από την καταχώριση NULL στη σειρά της.

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

ΧΡΗΣΗ προσωπικού

Εναλλακτικά, το "DATABASE προσωπικό?" Η εντολή θα εκτελούσε την ίδια λειτουργία. Τώρα μπορούμε να ρίξουμε μια ματιά στην εντολή SQL που χρησιμοποιείται για τη δημιουργία του πίνακα των υπαλλήλων μας:

ΔΗΜΙΟΥΡΓΙΑ υπαλλήλων ΠΙΝΑΚΑΣ
(υπάλληλος INTEGER NOT NULL,
επώνυμο ΒΑΡΚΑΡ (25) ΟΧΙ ΜΗΝ,
Όνομα VARCHAR (25) ΟΧΙ NULL,
reportsto INTEGER NULL) ·

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

ΔΗΜΙΟΥΡΓΙΑ ΤΡΑΠΕΖΙ_ όνομα_τραπεζιού
(Επιλογές τύπου δεδομένων χαρακτηριστικού_name,
...,
Επιλογές τύπου δεδομένων χαρακτηριστικού_name);

Χαρακτηριστικά και τύποι δεδομένων

Στο προηγούμενο παράδειγμα, το όνομα του πίνακα είναι υπάλληλοι και συμπεριλαμβάνουμε τέσσερις γνωρίσματα: υπάλληλος, επώνυμο, όνομα, και αναφορά. Ο τύπος δεδομένων υποδεικνύει τον τύπο πληροφοριών που επιθυμούμε να αποθηκεύσουμε σε κάθε πεδίο. Το αναγνωριστικό υπαλλήλου είναι ένας απλός ακέραιος αριθμός, επομένως θα χρησιμοποιήσουμε τον τύπο δεδομένων INTEGER τόσο για το πεδίο υπαλλήλου όσο και για το πεδίο αναφοράς. Τα ονόματα των υπαλλήλων θα είναι συμβολοσειρές χαρακτήρων μεταβλητού μήκους και δεν περιμένουμε από κανέναν υπάλληλο να έχει το όνομα ή το επώνυμο μεγαλύτερο από 25 χαρακτήρες. Επομένως, θα χρησιμοποιήσουμε τον τύπο VARCHAR (25) για αυτά τα πεδία.

Τιμές NULL

Μπορούμε επίσης να προσδιορίσουμε ένα από τα δύο NULL ή NOT NULL στο πεδίο επιλογών της δήλωσης ΔΗΜΙΟΥΡΓΙΑ. Αυτό απλά λέει στη βάση δεδομένων εάν επιτρέπονται τιμές NULL (ή κενές) για αυτό το χαρακτηριστικό κατά την προσθήκη σειρών στη βάση δεδομένων. Στο παράδειγμά μας, το τμήμα Ανθρώπινου Δυναμικού απαιτεί την αποθήκευση ενός προσωπικού και ενός πλήρους ονόματος για κάθε υπάλληλο. Ωστόσο, δεν έχει κάθε υπάλληλος διαχειριστής (ο Διευθύνων Σύμβουλος αναφέρει σε κανέναν!), Επομένως επιτρέπουμε NULL καταχωρήσεις σε αυτόν τον τομέα. Σημειώστε ότι το NULL είναι η προεπιλεγμένη τιμή και η παράλειψη αυτής της επιλογής θα επιτρέπει σιωπηρά τιμές NULL για ένα χαρακτηριστικό.

Δημιουργία των υπολειπόμενων πινάκων

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

Ας δούμε την αντίστοιχη SQL:

ΔΗΜΙΟΥΡΓΙΑ επικράτειες ΠΙΝΑΚΑ
(teritorid INTEGER ΟΧΙ NULL,
επικράτεια Περιγραφή ΒΑΡΚΑΡΙ (40) ΔΕΝ NULL,
regionid ΒΑΡΚΑΡΙ (25) ΟΧΙ ΜΗΝ)

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

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

ΔΗΜΙΟΥΡΓΙΑ ΠΙΝΑΚΑΣ εργοδότες
(υπάλληλος INTEGER NOT NULL,
wilayahid INTEGER NOT NULL) ·

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

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

Ωστόσο, όλα δεν χάνονται. Μπορούμε να χρησιμοποιήσουμε την εντολή ALTER TABLE για να προσθέσουμε αυτό το χαρακτηριστικό στην υπάρχουσα βάση δεδομένων μας. Θέλουμε να αποθηκεύσουμε τον μισθό ως ακέραια τιμή. Η σύνταξη είναι αρκετά παρόμοια με αυτήν της εντολής CREATE TABLE, εδώ είναι:

Υπάλληλοι ALTER TABLE
ΠΡΟΣΘΗΚΗ μισθού INTEGER NULL;

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

instagram story viewer