Προσδιορισμός των περιορισμών ακεραιότητας. Εξωτερικά κλειδιά Ξένα κλειδί δημιουργώντας ένα κύριο κλειδί στο MySQL

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

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

Τύποι δεδομένων σε Bashes

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

  • Ακέραιοι αριθμοί από ακέραιους αριθμούς ·
  • Float - δεδομένα από κλασματικούς αριθμούς, λεγόμενα δεδομένα πλωτών σημείων.
  • Char, Varchar - τύποι δεδομένων κειμένου (συμβολική);
  • Λογικός τύπος λογικών δεδομένων (ναι / όχι);
  • Ημερομηνία / ώρα - Προσωρινά δεδομένα.

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

Ποιο είναι το κύριο κλειδί και το εξωτερικό κλειδί των σχεσιακών τραπεζιών βάσης δεδομένων

Πρωτεύων κλειδί

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

Πρωταρχικό κλειδί (PK) Πολύ σημαντικό για κάθε τραπέζι. Θα εξηγήσω γιατί.

  • Το κύριο κλειδί δεν σας επιτρέπει να δημιουργείτε πανομοιότυπα αρχεία (γραμμές) στον πίνακα.
  • Το PK παρέχει μια λογική σύνδεση μεταξύ των πινάκων μιας βάσης δεδομένων (για σχεσιακή βάση δεδομένων).

Στη λογική σύνδεση μεταξύ των πινάκων, αξίζει να σταματήσετε λεπτομερέστερα.

Βασικό εξωτερικό

Ξένο κλειδί, σύντομα FK. Παρέχει μια ξεκάθαρη λογική σύνδεση, μεταξύ των πινάκων μιας βάσης δεδομένων.

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

Ένα πιο περίπλοκο παράδειγμα.

Δύο πίνακες δεδομένων: Άνθρωποι και αριθμοί τηλεφώνου.

Πίνακας: Άνθρωποι

Πίνακας: Τηλεφωνικοί αριθμοί

Οι αριθμοί τηλεφώνου πίνακα PK είναι μοναδικοί. Fk Αυτό το τραπέζι είναι pk panish. Η σχέση μεταξύ των αριθμών τηλεφώνου και των ανθρώπων παρέχει πίνακες τηλεφώνου FK. Δίνω:

  • Η Hytev έχει δύο τηλέφωνα.
  • Η Volkova έχει δύο τηλέφωνα.
  • Η Belkin έχει ένα τηλέφωνο.
Πρωταρχικό κλειδί και εξωτερικό κλειδί

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

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

1.2.5. Πρωτεύων κλειδί

Έχουμε ήδη μιλήσει αρκετά για τα βασικά πεδία, αλλά ποτέ δεν τα χρησιμοποίησα. Το πιο ενδιαφέρον πράγμα που εργάστηκαν όλα. Αυτό είναι ένα πλεονέκτημα και ίσως η έλλειψη μιας Microsoft SQL Server και της βάσης δεδομένων MS Access. Σε πίνακες Paradox, αυτό το τέχνασμα δεν θα περάσει και χωρίς την παρουσία ενός κλειδιού πεδίου, ο πίνακας θα διαβάσει μόνο.

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

Δημιουργία πίνακα παγκοσμίως_Unique_data (Guid Newid Newid (), VCNAME VARCRAR (50), Constraint PK_Guid πρωτογενή κλειδί (GUID))

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

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

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

Σε αυτό το παράδειγμα, το πεδίο UniorIdentifier (GUID) εμφανίζεται ως το κύριο κλειδί. Η προεπιλεγμένη τιμή για αυτό το πεδίο είναι το αποτέλεσμα της διαδικασίας NEWID Server.

Προσοχή

Μόνο ένα κύριο κλειδί μπορεί να δημιουργηθεί για ένα τραπέζι.

Για την απλότητα των παραδειγμάτων, είναι επιθυμητό να χρησιμοποιηθεί ένας αριθμητικός τύπος ως κλειδί και εάν το επιτρέπει η βάση δεδομένων, θα είναι καλύτερη αν είναι πληκτρολογήστε "autoincement" (αυτόματα αυξανόμενη / μείωση αριθμού). Στο MS SQL Server, αυτό το πεδίο είναι ταυτότητα και σε MS πρόσβαση, αυτό είναι ένα πεδίο τύπου "μετρητή".

Το ακόλουθο παράδειγμα δείχνει τον τρόπο δημιουργίας ενός πίνακα προϊόντων στο οποίο ένα πεδίο ακέραιο με αυτόματο ζουμ εμφανίζεται ως κύριο κλειδί:

Δημιουργία προϊόντων πίνακα (ID INT ENTENTITY (1, 1), Προϊόν Varchar (50), Χρήματα τιμών, Αριθμητικός αριθμός (10, 2), Constrint PK_ID Κύριο Κλειδί (ID))

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

Το κύριο κλειδί μπορεί να αποτελείται από περισσότερες από μία στήλες. Το ακόλουθο παράδειγμα δημιουργεί έναν πίνακα στον οποίο τα πεδία "id" και "εμπορεύματα" αποτελούν το κύριο κλειδί, πράγμα που σημαίνει ότι ο δείκτης μοναδικότητας θα δημιουργηθεί και στα δύο πεδία:

Δημιουργία προϊόντων πίνακα1 (ID INT ENTENTITY (1, 1), Προϊόν Varchar (50), Χρήματα τιμών, Αριθμητικός αριθμός (10, 2), Constraint PK_ID Πρωταρχικό κλειδί (ID, [όνομα προϊόντος]))

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

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

1.2.6. Εξωτερικό κλειδί

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

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

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

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

Πίνακας 1.3 Ονόματα περιεχομένου πίνακα

Πίνακας 1.4. Τα περιεχόμενα του πίνακα τηλεφώνων

Ο Πίνακας 1.4 περιέχει πέντε αριθμούς τηλεφώνου. Στο πεδίο Master Key είναι επίσης ένα μοναδικό κύριο κλειδί, το οποίο μπορεί επίσης να γίνει αυτόματα να ενισχυθεί. Το δευτερεύον κλειδί είναι μια σύνδεση με το κύριο κλειδί του πίνακα ονομάτων. Πώς λειτουργεί αυτή η σύνδεση; Petrova Στο τραπέζι των ονομάτων Δεδομένου ότι το κύριο κλειδί αξίζει έναν αριθμό 1. Στο τραπέζι των τηλεφώνων στο δευτερεύον κλειδί, αναζητούμε έναν αριθμό 1 και να πάρετε τους αριθμούς των αριθμών τηλεφώνου Petrov. Το ίδιο με τα υπόλοιπα αρχεία. Η οπτική επικοινωνία μπορεί να φανεί στο σχήμα 1.5.

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

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

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

Καταχώρηση 1.6. Δημιουργία πινάκων που σχετίζονται με το εξωτερικό κλειδί

Δημιουργία ονομάτων πίνακα (ταυτότητα IDNAME INT (1,1), VCNAME VARCRAR (50), CRODAINT PK_GUID πρωτεύον κλειδί (IDNAME),) Δημιουργία τηλεφώνων πίνακα (IDPhone INT ταυτότητα (1,1), IDNAME Int, VCPhone Varchar (10), Constraint PK_IDPHONE Πρωταρχικό κλειδί (IDPhone), Constraint FK_IDNAME ξένο κλειδί (IDNAME) Ονόματα αναφορών (IDNAME))

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

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

Προσοχή!

Το εξωτερικό κλειδί μπορεί να αναφερθεί μόνο στο κύριο κλειδί ενός άλλου πίνακα ή να περιορίσει τη μοναδικότητα. Αυτό σημαίνει ότι μετά τις αναφορές λέξεων-κλειδιών θα πρέπει να είναι το όνομα του πίνακα και σε παρένθεση, μπορείτε να καθορίσετε μόνο το κύριο κλειδί ή ένα πεδίο με μοναδικό όριο. Άλλα πεδία δεν μπορούν να καθοριστούν.

Τώρα, αν μπορείτε να συμπληρώσετε τους πίνακες δεδομένων. Οι ακόλουθες τρεις εντολές προσθέτουν τρία επώνυμα που έχουμε δει στον Πίνακα 1.3:

Εισαγωγή σε τιμές ονόματος (VCNAME) ("Petrov") Εισαγωγή σε ονόματα (VCNAME) Τιμές ("Ivanov") Εισαγωγή σε τιμές ονόματος (VCNAME) ("Sidorov")

Εάν έχετε ήδη συνεργαστεί με SQL, μπορείτε να προσθέσετε αρχεία και για τηλεφώνου. Θα ξεπεράσω αυτές τις εντολές, και μπορείτε να τις δείτε στο αρχείο ξένου ξένου geys.sql του κεφαλαίου1 κατάλογος σε ένα συμπαγές δίσκο.

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

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

Κατά τη δημιουργία ενός εξωτερικού κλειδιού, μπορείτε να καθορίσετε την διαγραφή του Cascade ή στο Cascade Update. Σε αυτή την περίπτωση, εάν διαγράψετε την εγγραφή Petrice από τον πίνακα ονομάτων ή αλλάξτε το αναγνωριστικό, τότε όλες οι καταχωρήσεις στον πίνακα τηλεφώνων που σχετίζονται με τη συμβολοσειρά Petrov θα ενημερωθούν αυτόματα. Ποτέ. Όχι, πρέπει να γράψετε με μεγάλα γράμματα: Ποτέ μην το κάνετε. Όλα πρέπει να διαγραφούν ή να αλλάξουν χειροκίνητα. Εάν ο χρήστης θα διαγραφεί κατά λάθος την καταχώρηση από τον πίνακα ονομάτων, τότε τα αντίστοιχα τηλέφωνα διαγράφονται. Το σημείο στη συνέχεια, για να δημιουργήσετε ένα εξωτερικό κλειδί, αν εξαφανιστεί οι μισές περιοριστικές δυνατότητές του! Όλα πρέπει να γίνουν μόνο με το χέρι και τα αναγνωριστικά δεν μπορούν να αλλάξουν καθόλου.

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

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

Επιλέξτε Vcname, VCPhone από ονόματα, τηλέφωνα όπου ονόματα.Idname \u003d τηλέφωνα.Idname

Θα μιλήσουμε λεπτομερέστερα σχετικά με τέτοια αιτήματα στο κεφάλαιο 2. Τώρα έχω δώσει ένα παράδειγμα μόνο για να δείτε τη δύναμη των σχετικών πινάκων.

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

Ο ίδιος ο πίνακας μπορεί επίσης να έχει ένα μέγιστο 253 εξωτερικά πλήκτρα. Τα εξωτερικά πλήκτρα στο τραπέζι είναι λιγότερο συχνές, κυρίως όχι περισσότερο από 3. πιο συχνά στον πίνακα, μπορεί να υπάρχουν πολλές αναφορές σε άλλους πίνακες.

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

Πίνακας 1.5. Πίνακας με εσωτερική σύνδεση

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

Ας δούμε πώς μπορείτε να δημιουργήσετε όλα αυτά με τη μορφή του ερωτήματος SQL:

Δημιουργία θέσεων πίνακα (ταυτότητα INT INT (1,1), IDPARENTPOSITION INT, VCNAME VARCRAR (30), CRODAINT PK_IDPOSITION Πρωταρχικό κλειδί (IDPOSITION), CRONCATION FK_IDPARENTPOSITION ΞΕΝΕΣ ΚΛΕΙΣΤΟ ΚΛΕΙΔΙ (IDPOSITION)

Όπως μπορείτε να δείτε, το εξωτερικό κλειδί απλά αναφέρεται στον ίδιο πίνακα που δημιουργούμε. Στο CD, στον κατάλογο του κεφαλαίου 1 μπορείτε να δείτε στο φάκελο ξένου glosys_to_to_sql. Στο επόμενο κεφάλαιο, θα εξετάσουμε να συνεργαστούμε με τέτοιους πίνακες λεπτομερέστερα.

Σχέση ένα σε ένα

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

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

Δημιουργία ονόματος πίνακα (IDNAME UNOMONIDAITIOR Προεπιλογή NEWID (), VCNAME VARCHCRA (50), Κύριο Κλειδί PK_GUID PK_GUID (IDNAME)) Δημιουργία τηλεφώνων πίνακες (IDPhone Unioanterifier προεπιλεγμένο NEWID (10), Constraint PK_IDPhone Κύριο πλήκτρο (IDPHONE), Constraint FK_IDPHONE ξένο κλειδί (IDPHONE) Ονόματα αναφοράς (IDNAME))

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

Πολλά σε πολλά

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

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

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

Οι πίνακες 1.6 και 1.7 παρουσιάζουν παραδείγματα των πινάκων των επωνύλων και των τηλεφώνων, αντίστοιχα. Και ο πίνακας 1.8 δείχνει έναν πίνακα συνδετικού.

Πίνακας 1.6. Ονόματα πίνακα

Πίνακας 1.7. Τηλέφωνα

Πίνακας 1.8. Τηλέφωνα

Ας δούμε τώρα ποια θα είναι η λογική αναζήτησης δεδομένων με πολλούς σε πολλούς. Ας υποθέσουμε ότι πρέπει να βρούμε όλα τα τηλέφωνα που ανήκουν στον Ιβάνοφ. Το κύριο κλειδί του Ivanov είναι 1. Βρείτε όλα τα αρχεία στον πίνακα σύνδεσης που το πεδίο "επικοινωνία με το όνομα" είναι ίσο με 1. Αυτά θα είναι αρχεία 1 και 2. Σε αυτά τα αρχεία στην "επικοινωνία με το τηλέφωνο", τα αναγνωριστικά 1 και 2 βρίσκονται, και έτσι, ο Ivanov ανήκει στα δωμάτια από το τραπέζι, τα οποία βρίσκονται σε γραμμές 1 και 2.

Τώρα αποφασίστε την ανατροφοδότηση - ορίζουμε ποιος έχει πρόσβαση στον αριθμό τηλεφώνου 567575677. Αυτός ο αριθμός στον πίνακα τηλεφώνου έχει το πλήκτρο 3. Ψάχνουμε για όλες τις καταχωρήσεις στο Binder Table, όπου στο πεδίο "Επικοινωνία με το τηλέφωνο" είναι 3. Αυτά είναι αρχεία με αριθμούς 4 και 5, οι οποίοι στην "επικοινωνία με το όνομα" περιέχουν τιμές 2 και 3, αντίστοιχα. Αν τώρα κοιτάξετε τον πίνακα των επώνυμα, τότε θα δείτε στους αριθμούς 2 και 3 Petrov και Sidorov. Έτσι, αυτοί οι δύο κάτοικοι χρησιμοποιούν τον αριθμό τηλεφώνου 567575677.

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

Δημιουργία ονόματος πίνακα (IDNAME UNIONIDAITIOR Προεπιλογή NEWID (), VCNAME VARCRAR (50), Constrint PK_GUID Κύρια Κλειδιά (IDNAME)) Δημιουργία τηλεφώνων πίνακα (IDPhone UnioDonifier Προεπιλογή NEWID (10), Constraint PK_IDPHONE Κύριο πλήκτρο (IDPHONE)) Δημιουργία πίνακα LINKTABLE (IDLinkTable Unioidentifier Προεπιλογή NEWID (), IDNAME NOBORIONIFITIOR, IDPHONE UNIONIDEDITION, CRONDAINT PK_IDLinkTable Κύριο Κλειδί (IDPHONT), CRONDAINT FK_IDPHONE ξένο κλειδί (IDPHONE), CRONTAINT FK_IDNAME ξένα ονόματα (IDNAME) Ονόματα αναφοράς (IDNAME) )

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

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

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

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

ΠΡΩΤΕΥΩΝ ΚΛΕΙΔΙ. - Πρωταρχικό κλειδί, ο περιορισμός που σας επιτρέπει να προσδιορίσετε ξεκάθαρα κάθε είσοδο στον πίνακα Sql.

Πρωταρχικός βασικός μαντείο.
Πρωτεύων κλειδί ( ΠΡΩΤΕΥΩΝ ΚΛΕΙΔΙ.) μπορεί να περιορίσει τους πίνακες ή τις στήλες τους. Αυτά τα λειτουργικά έργα καθώς και μοναδικό περιορισμό. Αλλά θα πρέπει να ληφθεί υπόψη η διαφορά μεταξύ των πρωτογενών κλειδιών και της μοναδικότητας των στηλών στη μέθοδο χρήσης τους με τα εξωτερικά πλήκτρα. Τα πρωτογενή κλειδιά δεν μπορούν να επιτρέψουν τις μηδενικές τιμές. Αυτό σημαίνει ότι, όπως και τα πεδία που περιορίζουν το μοναδικό, οποιοδήποτε πεδίο που χρησιμοποιείται σε περιορισμό ΠΡΩΤΕΥΩΝ ΚΛΕΙΔΙ.πρέπει να εφαρμοστεί ήδη μη μηδενική.

Πρωταρχικός βασικός μαντείο.. Παράδειγμα Αριθμός 1.
Ένα παράδειγμα δημιουργίας ενός πίνακα Sql Με περιορισμό ΠΡΩΤΕΥΩΝ ΚΛΕΙΔΙ.:

Μαθητης σχολειου.
(Kod_stud ακέραιος όχι null ΠΡΩΤΕΥΩΝ ΚΛΕΙΔΙ.,
Fam char (30) όχι μηδέν μοναδικό
Adres char (50),
Μπάλα δεκαδικό);

Ο καλύτερος περιορισμός χώρου ΠΡΩΤΕΥΩΝ ΚΛΕΙΔΙ. Στο πεδίο (ή στο πεδίο), το οποίο θα σχηματίσει ένα μοναδικό αναγνωριστικό γραμμής και να αποθηκεύσει ένα μοναδικό όριο για πεδία που πρέπει να είναι μοναδικά λογικά (όπως αριθμοί τηλεφώνου ή το πεδίο της σάρωσης) και να μην εντοπίσει τις σειρές. Περιορισμός ΠΡΩΤΕΥΩΝ ΚΛΕΙΔΙ. Μπορεί επίσης να εφαρμοστεί σε πολλά πεδία που αποτελούν έναν μοναδικό συνδυασμό τιμών:

Πρωταρχικός βασικός μαντείο.. Παράδειγμα αριθ. 2.

Δημιουργία πίνακα Μαθητης σχολειου.
(Fam char (30) όχι ,
Im char (30) όχι null
Adres char (50),
ΠΡΩΤΕΥΩΝ ΚΛΕΙΔΙ. (Fam, im));

Κύριο κλειδί mysql

Πρωταρχικό κλειδί SQL. / Mysql. Παράδειγμα αριθμού 3.

Δημιουργία πίνακα Άτομα (
P_id int δεν ,
Το Lastname Varchar (255) όχι μηδέν,
Firstname varchar (255),
Διεύθυνση VARCHAR (255),
Πόλη Varchar (255),
ΠΡΩΤΕΥΩΝ ΚΛΕΙΔΙ. (P_id));

Πρωταρχικό κλειδί SQL / MySQL. Παράδειγμα αριθμού 4.

Δημιουργία πίνακα `ad_packages" (
Id id (111) δεν είναι null auto_increment,
`Τίτλος 'varchar (132) όχι μηδενική προεπιλογή",
`Price` float not null default '0',
`Type` varchar (22) όχι μηδενική προεπιλογή",
`C_type` enum (" μετρητά ",« σημεία »,« rur ») όχι μηδενικά προεπιλεγμένα« μετρητά »,
ΠΡΩΤΕΥΩΝ ΚΛΕΙΔΙ. (`id`)
);

Πρωταρχικό κλειδί SQL / MySQL. Παράδειγμα αριθ. 5.

Δημιουργία πίνακα `Gamestat` (
`ID` int (11) not null auto_increment,
`Game` varchar (10) όχι μηδενική προεπιλογή 'tuz',
`Stavok` int (11) not null default '0',
`Usd` float not null default '0',
`Rur` float όχι null προεπιλογή '0',
`Point` float not null default '0',
`Bank_usd` Δεκαδικό (12,2) όχι μηδενικό προεπιλεγμένο '0.00',
`Bank_rur` δεκαδικό (12,2) όχι μηδενικό προεπιλογή" 0,00 »,
`Bank_point` Δεκαδικό (12,2) μη μηδενικό προεπιλογή '0.00',
Πρωταρχικό κλειδί (`id`)
);

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

Σχέδιο για σήμερα είναι:

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

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

Πρωτεύων κλειδί

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

Εδώ για αυτό και ήρθε με το κύριο κλειδί. Κάποτε ένα μοναδικό αναγνωριστικό και αυτό είναι. ΣΕ mysql Στο παράδειγμα της οποίας πραγματοποιούμε όλα τα παραδείγματα από το πεδίο ΑΥΤΟΜΑΤΗ ΑΥΞΗΣΗ. Δεν μπορείτε να καθορίσετε αν δεν ορίσετε ότι αυτό είναι το κύριο κλειδί.

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

Εξωτερικό κλειδί ( Ξένο κλειδί.)

Υπάρχουν πολλά άλλα εξωτερικό κλειδί (Ξένο κλειδί.). Ονομάζεται επίσης αναφορά. Απαιτείται να δεσμευτεί στους πίνακες μεταξύ τους.

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

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

Δημιουργία εξωτερικού κλειδιού

Δημιουργία παπουτσιών πίνακα (παπούτσια_ID INT AUTO_INCEMENT Πρωταρχικό κλειδί, τίτλος Κείμενο, μέγεθος int, Τιμή Float, Count Int, Τύπος Varchar (30), Προμηθευτής INT, Ξένων Κλειδί (προμηθευτής) Προμηθευτής (Supplier_ID));

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

Σύνθετο κλειδί (Σύνθετο πλήκτρο)

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

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

Δημιουργία δοκιμής πίνακα (field_1 int, field_2 κείμενο, πεδίο_3 bigint, κύριο κλειδί (field_1, field_3));

Στο παραπάνω παράδειγμα, δύο πεδία συνδυάζονται σε ένα σύνθετο κλειδί και στον πίνακα δεν θα καταγραφεί με αυτά τα ίδια πεδία.

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

Εφαρμόζεται για: SQL Server (ξεκινώντας από το 2016) SQL Azure Pack SQL AzureAllel Data Data Data Data Datahouse

Μπορείτε να προσδιορίσετε το κύριο κλειδί στο SQL Server 2016 χρησιμοποιώντας το SQL Server Management Studio ή το Transact-SQL περιβάλλον. Η δημιουργία ενός πρωτεύοντος κλειδιού οδηγεί αυτόματα στη δημιουργία ενός κατάλληλου μοναδικού δείκτη ομαδοποίησης ή μη κλειδώματος.

Σε ΑΥΤΗΝ την ΕΝΟΤΗΤΑ

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

    Περιορισμοί

    Ασφάλεια

    Δημιουργώντας ένα πρωτεύον κλειδί με:

    Τετάρτη SQL Server Management Studio

Περιορισμοί

    Ο πίνακας μπορεί να έχει μόνο έναν κύριο βασικό περιορισμό.

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

Ασφάλεια

Δικαιώματα

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

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

Δημιουργία πρωτεύοντος κλειδιού

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

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

    Κάντε δεξί κλικ στο εργαλείο επιλογής γραμμής στήλης και επιλέξτε την εντολή. Ορίστε το κύριο κλειδί.

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

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

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

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

    ΣΕ Αντικειμένων

    Δημιουργήστε ένα ερώτημα.

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

    Χρησιμοποιήστε το AdventureWorks2012; Πηγαίνω. Αλλάξτε την παραγωγή πίνακα.TransactionHistoryArcive Προσθέστε τον περιορισμό PK_TRANSASCASSACHISTORYARY_TRANSASSASCASSID Πρωτογενή κλειδί συμπλέγεται (συναλλαγή); Πηγαίνω.

Δημιουργώντας ένα πρωτεύον κλειδί σε ένα νέο τραπέζι

    ΣΕ ΑντικειμένωνΣυνδεθείτε στην εμφάνιση του συστατικού συστατικού του εξαρτήματος της βάσης δεδομένων.

    Στον κανονικό πίνακα, επιλέξτε το στοιχείο Δημιουργήστε ένα ερώτημα.

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

    Χρησιμοποιήστε το AdventureWorks2012; Πηγαίνω. Δημιουργία παραγωγής πίνακα.TransactionHistoryArchive1 (συναλλαγή INT NOT NULT, CONTRAINT PK_TRANSASSACTHISTORYARY_TRANSASCASCASSID Πρωταρχικός κλειδιού (συναλλαγή)); Πηγαίνω.

    Για περισσότερες πληροφορίες, ανατρέξτε στην ενότητα, και.

Συνεχίζοντας το θέμα:
Δίκτυο

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