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

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

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

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

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

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

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

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

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

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

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

Δημιουργία προσωπικού DATABASE

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

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

Μάθετε περισσότερα

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

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

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

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

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

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

USE προσωπικό?

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

CREATE TABLE εργαζόμενοι (εργαζόμενος INTEGER NOT NULL, επώνυμο VARCHAR (25) NOT NULL, όνομα VARCHAR (25) NOT NULL, reportsto INTEGER NULL);

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

CREATE TABLE table_name (attribute_name επιλογές τύπων δεδομένων, ..., options_name επιλογές τύπου δεδομένων);

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

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

NULL Αξίες

Μπορούμε επίσης να καθορίσουμε είτε NULL είτε NOT NULL στο πεδίο επιλογών της εντολής CREATE. Αυτό απλά λέει στη βάση δεδομένων αν οι τιμές NULL (ή κενές) επιτρέπονται για αυτό το χαρακτηριστικό κατά την προσθήκη σειρών στη βάση δεδομένων. Στο παράδειγμά μας, η υπηρεσία ανθρώπινου δυναμικού απαιτεί να αποθηκεύεται για κάθε εργαζόμενο αναγνωριστικό και πλήρες όνομα εργαζομένου. Ωστόσο, δεν έχει κάθε μάνατζερ ένας διευθυντής - ο CEO αναφέρει σε κανέναν! - έτσι επιτρέπουμε τις καταχωρήσεις NULL σε αυτό το πεδίο. Σημειώστε ότι η τιμή NULL είναι η προεπιλεγμένη τιμή και η παράλειψη αυτής της επιλογής θα επιτρέψει σιωπηρά τιμές NULL για ένα χαρακτηριστικό.

Κατασκευή των υπόλοιπων πινάκων

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

CREATE TABLE επικράτεια (territoryid INTEGER NOT NULL, περιοχή Περιγραφή VARCHAR (40) NOT NULL, regionid VARCHAR (25) NOT NULL);

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

Δημιουργία εργαστηριακών επιπέδων (εργαζόμενο INTEGER NOT NULL, territoryid INTEGER NOT NULL);

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

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

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

ALTER TABLE εργαζόμενος ADD μισθός INTEGER NULL;

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

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