Περιορισμοί ακεραιότητας βάσης δεδομένων. Καθορισμός περιορισμών ακεραιότητας

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

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

Από αυτόν τον ορισμό, μπορούμε να εξαγάγουμε τις ακόλουθες απλές διατυπώσεις περιορισμών:

1. Όλες οι σειρές του πίνακα πρέπει να έχουν την ίδια δομή, τον ίδιο αριθμό χαρακτηριστικών.

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

3. Οι τιμές χαρακτηριστικών πρέπει να είναι ατομικές.

4. Οι τιμές κάθε χαρακτηριστικού πρέπει να λαμβάνονται από κάποιο σταθερό σύνολο τιμών (domain).

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

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

1. η απουσία διπλών πλειάδων ( αυτή η απαίτησηισχύει μόνο για κύρια χαρακτηριστικά κλειδιού).

2. η απουσία χαρακτηριστικών με πολλαπλές σημασίες.

1. Βρείτε τη συμμόρφωση των προϋποθέσεων ακεραιότητας από τους όρους που αναφέρονται παραπάνω (1 - 4).

2. Δημιουργήστε μια λίστα χαρακτηριστικών για πληροφορίες σχετικά με τη διεύθυνση της σχέσης ΕΡΓΑΖΟΜΕΝΟΥ, τα οποία διασφαλίζουν την ατομικότητα.

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

Παράδειγμα 1. Εξετάστε τη σχέση ΕΡΓΑΖΟΜΕΝΩΝ με το ξένο κλειδί "Κωδικός Τμήματος" και σχετίζεται με τη σχέση ΤΜΗΜΑΤΑ με το κύριο κλειδί "Κωδικός Τμήματος" (βλ. Εικ. 8). Εάν υπάρχει υπάλληλος II Volkov που εργάζεται στο τμήμα Ο1, τότε το αντίστοιχο τμήμα πρέπει να υπάρχει και τα δεδομένα σχετικά με αυτό πρέπει να αποθηκεύονται στον πίνακα ΤΜΗΜΑΤΑ.

Στάση Εργαζομένων

Τμήματα Σχέσεων

Παράδειγμα 2. Η σχέση μεταξύ του πίνακα Student και Passed πραγματοποιείται από το πεδίο NUMBER_Totals, αυτή είναι μια σχέση προς ένα (1: M). Επιπλέον, ο κύριος είναι ο πίνακας Student και ο δευτερεύων είναι ο πίνακας Pass, αφού μπορεί να περιέχει οποιονδήποτε αριθμό εγγραφών με τιμή στο πεδίο NUMBER_Activities, η οποία μπορεί να είναι μόνο μία φορά στον πίνακα Student. Το πεδίο σύνδεσης πρέπει να είναι το κύριο κλειδί του κύριου πίνακα. Ο κύριος πίνακας μερικές φορές ονομάζεται γονικός πίνακας και ο δευτερεύων πίνακας μερικές φορές ονομάζεται θυγατρικός πίνακας.

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

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

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

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

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

Εργασίες αυτο-μελέτης

1. Προσθέστε στον πίνακα ΕΡΓΑΖΟΜΕΝΟΥ ένα αρχείο σχετικά με τον ΟΑ Frolova που εργάζεται στο τμήμα προσωπικού. Απεικονίστε τη σχέση ΕΡΓΑΖΟΜΕΝΩΝ και ΤΜΗΜΑΤΩΝ.

2. Αφαιρέστε από τον πίνακα DEPARTMENTS την εγγραφή με την τιμή του χαρακτηριστικού Short_departments_name "LEAD". Απεικονίστε τη σχέση ΕΡΓΑΖΟΜΕΝΩΝ και ΤΜΗΜΑΤΩΝ.

Παρατηρήσεις

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

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

Όλες οι λειτουργίες της βάσης δεδομένων μειώνονται σε χειρισμό εγγραφών και πεδίων πινάκων. Αναφερόμενοι στο αρχείο των φοιτητών μας (βλ. Πίνακα 1), μπορεί να θέλετε να μάθετε ποιος από τους μαθητές ανήκει στην ομάδα 407 - η απάντηση είναι ο Sidorov (καταχώρηση 3) και ο Soloviev (καταχώριση 4). Ένα άλλο παράδειγμα: ποιος είναι ο μεγαλύτερος από τους μαθητές - η απάντηση είναι ο Πετρόφ (ρεκόρ 2). Αυτά είναι παραδείγματα των απλούστερων λειτουργιών ανάκτησης.

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

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

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

Το σύνολο των λειτουργιών που προτείνει η Codd περιέχει οκτώ πράξεις:

1) θεωρητικές λειτουργίες όπως ένωση, διασταύρωση, διαφορά και καρτεσιανό προϊόν, και στο δεύτερο - επιλογή, προβολή, ένωση και διαίρεση

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

Παράδειγμα 1. Ένωση. R3 = R1 È R2

Ο λόγος R1 είναι ο πίνακας "Αιτούντες - νικητές της Ολυμπιάδας" και R2 - ο πίνακας "Υποψήφιοι που πέρασαν τον διαγωνισμό βάσει εξετάσεων".

Οι υποψήφιοι επιτραπέζιοι είναι οι νικητές της Ολυμπιάδας.

Πίνακας Υποψήφιοι που πέρασαν τον διαγωνισμό βάσει εξετάσεων.

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

Πίνακας υποψηφίων εγγεγραμμένων στο Πανεπιστήμιο.

Παράδειγμα 2. Τομή. R3 = R1 Ç R2

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

Πίνακας Οι υποψήφιοι που εισήχθησαν στο πανεπιστήμιο με δύο δείκτες.

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

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

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

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

Παράδειγμα 1. Εξετάστε τη βάση δεδομένων "Ένωση συνεταιρισμών". Όσον αφορά τους ΠΡΟΜΗΘΕΥΤΕΣ (ΟΝΟΜΑ ΤΟΥ ΠΡΟΜΗΘΕΥΤΗ, ΔΙΕΥΘΥΝΣΗ ΤΟΥ ΠΡΟΜΗΘΕΥΤΗ, ΠΡΟDΟΝ, ΤΙΜΗ), σε σχέση με ένα τέτοιο σύστημα, ενδέχεται να προκύψουν τα ακόλουθα προβλήματα:

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

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

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

4. Ανωμαλία ένταξης: η διεύθυνση ενός προμηθευτή που δεν προμηθεύει προς το παρόν αγαθά μπορεί να καταγραφεί στη βάση δεδομένων · μπορούν να τοποθετηθούν απροσδιόριστες τιμές των χαρακτηριστικών ΠΡΟDΟΝ και ΤΙΜΗ. Αλλά αν αρχίσει να στέλνει κάποιο προϊόν, μπορείτε να ξεχάσετε να διαγράψετε την πλειάδα με απροσδιόριστες τιμές. ΟΝΟΜΑ ΑΓΑΘΩΝ και ΑΓΟΡΩΝ αποτελεί το κλειδί αυτής της σχέσης και μπορεί να είναι δύσκολο ή αδύνατο να βρεθούν πλειάδες με απροσδιόριστες τιμές.

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

Ανωμαλίες εισαγωγής (INSERT)

Ενημέρωση ανωμαλιών (ΕΝΗΜΕΡΩΣΗ)

Διαγραφή ανωμαλιών (ΔΙΑΓΡΑΦΗ)

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

· Ο υπάλληλος Ivanov, που εργάζεται στο Τμήμα 1, εκτελεί την εργασία 1 στο πρώτο έργο "Space" και την εργασία 1 στο δεύτερο έργο "Climate".

· Ο υπάλληλος Petrov, που εργάζεται στο τμήμα 1, εκτελεί την εργασία 2 στο πρώτο έργο "Cosmos".

· Ο υπάλληλος Sidorov, που εργάζεται στο Τμήμα 2, εκτελεί την εργασία 3 στο πρώτο έργο "Space" και την εργασία 2 στο δεύτερο έργο "Climate".

Αυτή η κατάσταση αντικατοπτρίζεται στον πίνακα EMPLOYEES_DEPARTMENTS_PROJECTS(τα βασικά πεδία είναι πλάγια).

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

Η ίδια η έννοια των δηλωμένων περιορισμών ακεραιότητας στο SQL κληρονομήθηκε από το σχεσιακό μοντέλο και έγινε πιο περίπλοκη με την ανάπτυξη του προτύπου. Στην Oracle, η ονοματολογία των περιορισμών ακεραιότητας είναι ευρέως σύμφωνη με την SQL -92 (αν και το πεδίο εφαρμογής δεν έχει εκπληρωθεί), αλλά δεν έχει φτάσει στο επίπεδο της SQL: 1999. Έτσι, η Oracle δεν επιτρέπει τη δημιουργία περιορισμός ακεραιότηταςσε επίπεδο βάσης δεδομένων (χρησιμοποιώντας τη λέξη υπηρεσίας ASSERTION) και είναι πολύ περιορισμένη στη διατύπωση της συνθήκης για τον έλεγχο των τιμών με την κατασκευή CHECK, καθώς δεν επιτρέπει την πρόσβαση στα δεδομένα της βάσης δεδομένων.

Η λέξη ASSERTION από το πρότυπο SQL υποδηλώνει μια άλλη μετάφραση (και κατανόηση) των περιορισμών ακεραιότητας, ως "ισχυρισμοί περιορισμών ακεραιότητας".

Οι δηλωμένοι περιορισμοί ακεραιότητας στο Oracle μπορούν να καθοριστούν σε επίπεδα:

  • ένα ξεχωριστό πεδίο σειράς στον πίνακα.
  • μια ξεχωριστή γραμμή?
  • ζεύγη τραπεζιών.

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

Το Oracle σάς επιτρέπει να διατυπώνετε τέτοιους περιορισμούς κατά τη δημιουργία ενός πίνακα με την εντολή ΔΗΜΙΟΥΡΓΙΑ ΠΙΝΑΚΑ και για υπάρχοντες πίνακες μπορούν να προστεθούν και να ακυρωθούν με τις ακόλουθες εντολές:

  • ALTER TABLE… MODIFY - προσθήκη περιορισμών κάθε είδους και κατάργηση του περιορισμού NOT NULL.
  • ALTER TABLE… ADD / DROP - προσθέστε και καταργήστε περιορισμούς όλων των ειδών, εκτός του NOT NULL.

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

ΑΛΛΑΓΗ ΠΙΝΑΚΑΣ projx RENAME CONSTRAINT sys_c0011509 TO name_is_needed;

Ποικιλίες Περιορισμών Αξιολογημένης Ακεραιότητας

ΟΧΙ NULL περιορισμός

Ο περιορισμός NOT NULL υποχρεώνει μια στήλη ή ομάδα στηλών να έχουν πάντα μια τιμή (εάν μια ομάδα, τότε σε τουλάχιστον ένα πεδίο). Η απαίτηση ότι η στήλη είναι άδεια είναι πολύ επιθυμητή, καθώς σώζει τον προγραμματιστή από πολλές ανησυχίες που σχετίζονται με τις ιδιαιτερότητες του χειρισμού NULL. Δυστυχώς, οι απαιτήσεις της θεματικής περιοχής και ορισμένες ενέργειες στο SQL (για παράδειγμα, GROUP BY ROLLUP ...) δεν επιτρέπουν την πλήρη εγκατάλειψη στηλών με την ιδιότητα NULL.

Αυτός είναι ο μόνος περιορισμός ακεραιότητας που αποθηκεύεται όχι μόνο στον πίνακα USER_CONSTRAINTS, αλλά και στον πίνακα USER_TAB_COLUMNS ως ιδιότητα στήλης. (Κάποτε, το NULL / NOT NULL θεωρούνταν τυπικά ιδιότητα στήλης και όχι περιορισμός ακεραιότητας.) Για το λόγο αυτό, η προσθήκη και η κατάργηση αυτού του περιορισμού εκτελείται σύμφωνα με τους κανόνες αλλαγής ιδιότητας στήλης, μόνο μετά λέξη -κλειδίΤΡΟΠΟΠΟΙΩ:

ALTER TABLE proj MODIFY (budget NOT NULL)? - δημιουργία περιορισμού με όνομα συστήματος · οι αγκύλες είναι προαιρετικές ALTER TABLE proj MODIFY (budget NULL). - την κατάργηση του περιορισμού · Οι αγκύλες είναι προαιρετικές ALTER TABLE proj MODIFY (budget CONSTRAINT is_mandatory NOT NULL)? - δημιουργία ενός περιορισμού με ένα όνομα που δόθηκε από τον προγραμματιστή

Στις σύγχρονες εκδόσεις του Oracle, ένας ανεξάρτητος περιορισμός NOT NULL θα επισημοποιηθεί τεχνικά ως περιορισμός CHECK με προϋπόθεση τον έλεγχο: ο προϋπολογισμός ΔΕΝ είναι μηδενικός και ταυτόχρονα θα καθοριστεί σε USER_CONSTRAINTS με την τιμή NULLABLE = "Y". Η ιδιότητα NOT NULL που προκύπτει από τον κανόνα του κύριου κλειδιού θα αντικατοπτρίζεται μόνο στο USER_CONSTRAINTS.

Κύρια κλειδιά

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

ΠΙΝΑΚΑΣ ΑΛΛΑΓΗΣ proj ΠΡΟΣΘΗΚΗ ΠΡΩΤΟΤΥΠΟΥ ΚΛΕΙΔΙΟΥ (projno, pname); - δημιουργία περιορισμού (κύριο κλειδί βασισμένο σε δύο στήλες) με το όνομα συστήματος ALTER TABLE proj DROP PRIMARY KEY. - ακύρωση του ALTER TABLE proD ADD CONSTRAINT pk_proj PRIMARY KEY (projno) περιορισμός, - δημιουργία ενός περιορισμού με ένα όνομα που δόθηκε από τον προγραμματιστή

Οι τιμές στα κύρια πεδία κλειδιού πρέπει πάντα να υπάρχουν.

Ορισμένοι τύποι στηλών δεν επιτρέπονται πριν σχηματιστεί το κύριο κλειδί (για παράδειγμα, LOB ή ΚΑΤΑΣΤΑΣΗ ΜΕ ΖΩΝΗ ΧΡΟΝΟΥ).

Μοναδικότητα τιμών σε στήλες

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

Παράδειγμα δημιουργίας:

ALTER TABLE proj ADD UNIQUE (pname);

Λάβετε υπόψη ότι η στήλη PNAME δεν επιτρέπεται να παραλείπει τιμές. Σύμφωνα με το πρότυπο SQL, η μοναδικότητα εντοπίζεται διαθέσιμοςτιμές στήλης. Εάν επιβάλλουμε επιπλέον έναν περιορισμό σε μια τέτοια στήλη

ALTER TABLE proj MODIFY (pname NOT NULL)?

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

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

ΑΛΛΑΓΟΣ ΠΙΝΑΚΑΣ t ΠΡΟΣΘΗΚΗ ΑΝΤΙΜΕΤΩΠΙΣΜΟΥ xx ΜΟΝΑΔΙΚΟ (a, b); -- Λάθος!

Ξένα κλειδιά

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

ALTER TABLE proj ADD (ldept NUMBER (2)); ΠΙΝΑΚΑΣ ΕΠΙΛΟΓΗΣ proj ΠΡΟΣΘΗΚΗ ΞΕΝΟΥ ΚΛΕΙΔΙΟΥ (ldept) ΑΝΑΦΟΡΕΣ dept (deptno);

Με ξένους βασικούς κανόνες στη στήλη LDEPT δεναπαγορεύεται η παράλειψη τιμών. Το πρότυπο SQL απαιτεί από το DBMS να ελέγξει ότι οι τιμές στις στήλες προορισμού του πίνακα αντιστοιχούν μόνο διαθέσιμοςξένες βασικές αξίες. Με άλλα λόγια, ενδέχεται να μην υπάρχουν τιμές στα ξένα κλειδιά.

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

Λειτουργίες δεδομένων

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

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

Ανάλογα με τον τύπο των ενεργειών που εκτελούνται, διακρίνονται οι ακόλουθες λειτουργίες:

  • προσδιορισμός των δεδομένων και εύρεση της θέσης τους στη βάση δεδομένων ·
  • λήψη (ανάγνωση) δεδομένων από τη βάση δεδομένων ·
  • συμπερίληψη (καταγραφή) δεδομένων στη βάση δεδομένων ·
  • διαγραφή δεδομένων από τη βάση δεδομένων ·
  • τροποποίηση (αλλαγή) των δεδομένων της βάσης δεδομένων.

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

Περιορισμοί ακεραιότηταςΕίναι οι κανόνες στους οποίους πρέπει να τηρούνται οι τιμές των στοιχείων δεδομένων. Οι περιορισμοί ακεραιότητας χωρίζονται σε σαφήςκαι σιωπηρή.

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

Ρητοί περιορισμοί ενσωματώνονται στη δομή της βάσης δεδομένων χρησιμοποιώντας τη Γλώσσα Ελέγχου Δεδομένων (DCL). Οι συνθήκες που επιβάλλονται στις τιμές δεδομένων χρησιμοποιούνται συχνότερα ως ρητοί περιορισμοί. Για παράδειγμα, ο αριθμός διαβατηρίου είναι μοναδικός, ο μισθός δεν μπορεί να είναι αρνητικός και η ημερομηνία πρόσληψης του υπαλλήλου θα είναι κατ 'ανάγκη μικρότερη από την ημερομηνία μεταφοράς του σε άλλη εργασία.

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


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

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

Λειτουργίες δεδομένων

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

Οποιαδήποτε λειτουργία στα δεδομένα περιλαμβάνει επιλογή δεδομένων(επιλογή), δηλαδή η επιλογή από ολόκληρο το σύνολο των δεδομένων ακριβώς στα οποία πρέπει να εκτελεστεί η απαιτούμενη λειτουργία και η ενέργεια στα επιλεγμένα δεδομένα, ĸᴏᴛᴏᴩᴏᴇ καθορίζει τη φύση της λειτουργίας. Συνθήκη επιλογής- ϶ᴛᴏ κάποιο κριτήριο για την επιλογή δεδομένων, στο οποίο χρησιμοποιείται η λογική θέση ενός στοιχείου δεδομένων, η αξία του και οι σχέσεις μεταξύ των δεδομένων.

Ανάλογα με τον τύπο των ενεργειών που εκτελούνται, διακρίνονται οι ακόλουθες λειτουργίες:

  • προσδιορισμός των δεδομένων και εύρεση της θέσης τους στη βάση δεδομένων ·
  • λήψη (ανάγνωση) δεδομένων από τη βάση δεδομένων ·
  • συμπερίληψη (καταγραφή) δεδομένων στη βάση δεδομένων ·
  • διαγραφή δεδομένων από τη βάση δεδομένων ·
  • τροποποίηση (αλλαγή) των δεδομένων της βάσης δεδομένων.

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

Περιορισμοί ακεραιότητας- ϶ᴛᴏ τους κανόνες που πρέπει να πληρούν οι τιμές των στοιχείων δεδομένων. Οι περιορισμοί ακεραιότητας χωρίζονται σε σαφήςκαι σιωπηρή.

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

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

Επίσης διακρίνετε στατικόςκαι δυναμικόςπεριορισμοί ακεραιότητας. Οι στατικοί περιορισμοί είναι εγγενείς σε όλες τις καταστάσεις του λογισμικού, ενώ οι δυναμικοί καθορίζουν την ικανότητα του λογισμικού να μεταβαίνει από τη μία κατάσταση στην άλλη. Παραδείγματα περιορισμών στατικής ακεραιότητας είναι η απαίτηση για τη μοναδικότητα του αριθμού μεμονωμένων φορολογουμένων (ΑΦΜ) ή ο καθορισμός περιορισμένου συνόλου τιμών για το χαρακτηριστικό "Gender" ("m" και "w"). Ως παράδειγμα περιορισμού δυναμικής ακεραιότητας, μπορούμε να αναφέρουμε τον κανόνα ĸᴏᴛᴏᴩᴏᴇ που ισχύει για τα πεδία μετρητή: η τιμή του μετρητή δεν μπορεί να μειωθεί.

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

Πολλά διαφορετικά μοντέλα δεδομένων έχουν αναπτυχθεί σήμερα. Τα κυριότερα είναι ϶ᴛᴏ δίκτυα, ιεραρχικά και σχέσεις μοντέλων.

Περιορισμοί ακεραιότητας - έννοια και τύποι. Ταξινόμηση και χαρακτηριστικά της κατηγορίας "Περιορισμοί ακεραιότητας" 2017, 2018.

  • - Περιορισμοί ακεραιότητας

    Χειρισμός δεδομένων Παραδείγματα τυπικών τελεστών για χειρισμό ιεραρχικά οργανωμένων δεδομένων είναι τα ακόλουθα: Βρείτε το καθορισμένο δέντρο βάσης δεδομένων (για παράδειγμα, τμήμα 310). Μετακινηθείτε από το ένα δέντρο στο άλλο. Μετάβαση από τον ένα δίσκο στον άλλο μέσα στο δέντρο ....


  • - Περιορισμοί ακεραιότητας στο μοντέλο σχέσης οντότητας

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


  • - Περιορισμοί ακεραιότητας

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

  • "Ένας πίνακας ή μια προβολή μπορεί να έχει μόνο ένα μοναδικό κλειδί."
    Αναφορά Oracle9i SQL σχετικά με τον περιορισμό της χρήσης μοναδικών περιορισμών

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

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

    Ας ξεκινήσουμε από την αρχή - Oracle9i Database Concepts Release 2 (9.2).Η τεκμηρίωση τονίζει την έννοια της "Ακεραιότητας δεδομένων", η οποία σχετίζεται με την εφαρμογή επιχειρηματικών κανόνων που σχετίζονται με τη βάση δεδομένων. Η ακεραιότητα των δεδομένων χωρίζεται σε πέντε τύπους κανόνων, μερικοί από τους οποίους παρέχονται από τους περιορισμούς ακεραιότητας της βάσης δεδομένων της Oracle:

    1. NULL -rule - NOT NULL περιορισμός.

    2. μοναδικές τιμές- μοναδικοί βασικοί περιορισμοί.

    3. τιμές βασικού κλειδιού- περιορισμοί βασικού κλειδιού.

    4. Κανόνες ακεραιότητας αναφοράς - περιορισμοί βασικών ξένων (ή "περιορισμοί ακεραιότητας αναφοράς" - και τα δύο ονόματα βρίσκονται στην τεκμηρίωση της Oracle).

    5. Έλεγχος σύνθετων περιορισμών - Περιορισμοί ελέγχου.

    (Εδώ, στα αριστερά της παύλας είναι ο κανόνας Ακεραιότητα δεδομένων και στα δεξιά ο τύπος Περιορισμοί ακεραιότητας που εφαρμόζει αυτόν τον κανόνα)

    Ο τέταρτος τύπος κανόνων "Ακεραιότητα δεδομένων" είναι σύνθετος και παρέχεται μόνο εν μέρει από τους "Περιορισμούς ακεραιότητας":

    1. έκθεση των εξαρτημένων δεδομένων στο NULL κατά τη διαγραφή δεδομένων αναφοράς ·

    2. διαδοχική διαγραφή εξαρτημένων δεδομένων κατά τη διαγραφή δεδομένων αναφοράς.

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

    Υπόλοιποι υποτύποι του τέταρτου στοιχείου "Ακεραιότητα δεδομένων":

    ορύθμιση εξαρτημένων δεδομένων σε NULL κατά την αλλαγή δεδομένων αναφοράς ·

    οδιαδοχική αλλαγή εξαρτημένων δεδομένων κατά την αλλαγή δεδομένων αναφοράς ·

    ορύθμιση προεπιλεγμένων εξαρτημένων δεδομένων κατά την αλλαγή ή τη διαγραφή δεδομένων αναφοράς ·

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

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

    Ετσι, ΜΟΝΑΔΙΚΟΣΚλειδίΠεριορισμός... Αυτός ο περιορισμός απαιτεί κάθε τιμή στο πεδίο κλειδί να είναι μοναδική. Η έννοια της "αξίας" εδώ σημαίνει μια ορισμένη τιμή και η τιμή NULL δεν εμπίπτει σε αυτόν τον ορισμό, οπότε ένα, δύο και ακόμη και όλα τα πεδία στον ΜΟΝΑΔΙΚΟ βασικό περιορισμό μπορεί να είναι ίσα με το NULL. Σε αντίθεση με το PRIMARY Key Constraint, στο οποίο η τιμή NULL δεν επιτρέπεται καθόλου.

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

    Περιορισμός ακεραιότητας αναφοράς απαιτεί την ύπαρξη πίνακα γονέα (αναφοράς) ΜΟΝΑΔΙΚΟΣ περιορισμός κλειδιούή ΠΡΩΤΟΤΥΠΟΣ Βασικός Περιορισμός.Εάν δεν υπάρχει περιορισμός NOT NULL σε κανένα πεδίο που περιλαμβάνεται στον περιορισμό ακεραιότητας αναφοράς, σε αυτό το πεδίο

    επιτρέπεται μια τιμή NULL και ένας τέτοιος περιορισμός ακεραιότητας αναφοράς θα θεωρηθεί σωστός.

    • Εάν δεν υπάρχει ευρετήριο στο εξωτερικό κλειδί. Στη συνέχεια, κατά τη διαγραφή ή την αλλαγή του κύριου κλειδιού του γονικού πίνακα, η Oracle θα αποκτήσει μια κλειδαριά στο θυγατρικό τραπέζι στο επίπεδο του τραπεζιού, απελευθερώνοντας αυτήν την κλειδαριά αμέσως μετά την απόκτησή της. Εάν το ξένο κλειδί είναι ON DELETE CASCADE, τότε η διαγραφή εγγραφών από τον γονικό πίνακα θα οδηγήσει σε κλειδαριές αποκλειστικής κοινής χρήσης στον θυγατρικό πίνακα. Απαιτείται επίσης μια κοινή κλειδαριά σε ολόκληρο τον θυγατρικό πίνακα εάν αλλάξετε τα πεδία του γονικού πίνακα στα οποία γίνεται αναφορά από τα πεδία του θυγατρικού πίνακα. Οι κοινόχρηστες κλειδαριές επιτρέπουν δεδομένα μόνο για ανάγνωση, επομένως καμία εισαγωγή, διαγραφή ή ενημέρωση δεδομένων στον θυγατρικό πίνακα δεν θα είναι διαθέσιμη μέχρι να ολοκληρωθεί η συναλλαγή στον μητρικό πίνακα.
    • Εάν υπάρχει ένα ευρετήριο στο ξένο κλειδί, τότε δεν θα υπάρχουν πλέον κλειδαριές στο επίπεδο του πίνακα και με οποιαδήποτε διαγραφή ή αλλαγή δεδομένων στον μητρικό πίνακα, μόνο οι μεμονωμένες αντίστοιχες εγγραφές στον θυγατρικό πίνακα θα κλειδωθούν μέχρι τη συναλλαγή έχει ολοκληρωθεί (αποκλειστικό κλείδωμα σε επίπεδο σειράς).

    ΕΛΕΓΧΟΣΑκεραιότηταΠεριορισμοί.Επιτρέπονται σε ένα ή περισσότερα πεδία του πίνακα και απαιτούν μια ορισμένη ΑΛΗΘΙΝΗ ή ΑΓΝΩΣΤΗ συνθήκη ως αποτέλεσμα για κάθε σειρά του πίνακα. Αξιοσημείωτο είναι ότι ΑΓΝΩΣΤΙΚΟ σημαίνει… ΑΡΘΡΟ! Με άλλα λόγια, εάν παντού (σε κάθε περίπτωση, ακολουθώντας την ίδια τεκμηρίωση Oracle) μια τιμή NULL δεν είναι ίση με τίποτα, συμπεριλαμβανομένου του ίδιου, τότε εδώ "λειτουργεί" ως ΑΛΗΘΙΝΗ. Αστείο, έτσι δεν είναι;

    Ιδιαιτερότητες:

    • μπορεί να χρησιμοποιηθεί μόνο έκφραση Boolean.
    • δεν μπορείτε να χρησιμοποιήσετε δευτερεύοντα ερωτήματα, συναρτήσεις SQL ή ακολουθίες (αναρωτιέμαι γιατί;)
    • δεν μπορείτε να χρησιμοποιήσετε SYSDATE, UID, USE R, USERENV, LEVEL, ROWNUM.

    Ο αριθμός των περιορισμών ακεραιότητας CHECK είναι απεριόριστος, αλλά η σειρά με την οποία ενεργοποιούνται είναι απρόβλεπτη. Λοιπόν, όταν χρησιμοποιείτε γράμματα συμβολοσειράς ή συναρτήσεις SQL όπως TO_CHAR, TO_DATE, TO_NUMBER με παραμέτρους υποστήριξης παγκοσμιοποίησης ως επιχειρήματα, η Oracle χρησιμοποιεί τις προεπιλεγμένες τιμές αυτών των παραμέτρων στο βασικό επίπεδο. Αυτές οι τιμές μπορούν να αντικατασταθούν στον δημιουργούμενο περιορισμό ακεραιότητας CHECK.

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

    Τρόπος ΡΥΘΜΙΣΤΕ ΑΝΤΙΠΡΟΣΩΠΕΙΣ.

    Η δήλωση SET CONSTRAINTS καθιστά περιορισμούς είτε ΑΝΑΦΕΡΟΜΕΝΟΥΣ είτε ΑΜΕΣΟΥΣ (ΑΝΑΦΟΡΑ και ΑΜΕΣΑ αναφέρονται στα χαρακτηριστικά Περιορισμού, που συζητήθηκαν αργότερα) για ένα μέρος μιας συναλλαγής. Αυτός ο χειριστήςμπορεί να χρησιμοποιηθεί για να ρυθμίσετε τη λειτουργία είτε στη λίστα Περιορισμοί είτε σε όλους (ΟΛΟΥΣ) Περιορισμούς. Η ενέργεια αυτού του χειριστή τελειώνει με την ολοκλήρωση της τρέχουσας συναλλαγής ή με την έναρξη της ενέργειας ενός άλλου χειριστή του ίδιου είδους. Αυτός ο τελεστής δεν είναι διαθέσιμος σε κανόνες ετικέτας.

    ΟΡΙΣΜΕΝΟΙ ΑΝΤΙΠΡΟΣΩΠΕΙΣ ... ΑΜΕΣΑ καλεί πρώτα έναν έλεγχο για την ύπαρξη ενεργοποιητών περιορισμών που εκκρεμούσαν προηγουμένως και, στη συνέχεια, ενεργοποιούνται οι Περιορισμοί που ενεργοποιούνται από τις δηλώσεις εκτέλεσης στην τρέχουσα συναλλαγή. Οποιαδήποτε παραβίαση του Περιορισμού κατά τη διάρκεια μιας τέτοιας διαδικασίας θα σηματοδοτηθεί με σφάλμα και όταν επιτευχθεί COMMIT, θα προκληθεί πλήρης επαναφορά της τρέχουσας συναλλαγής. Η δήλωση ALTER SESSION μπορεί επίσης να έχει μια έκφραση SET CONSTRAINTS, αλλά μόνο για όλους τους περιορισμούς (δεν μπορείτε να τους απαριθμήσετε). Αυτό ισοδυναμεί με την εκτέλεση της δήλωσης SET CONSTRAINTS στην αρχή κάθε συναλλαγής.

    Εκτέλεση των ρυθμίσεων SET… ΑΜΕΣΗ δήλωση λίγο πριν από την ολοκλήρωση της συναλλαγής σας επιτρέπει να προσδιορίσετε την επιτυχία της επερχόμενης ΕΠΙΤΡΟΠΗΣ και να αποφύγετε περιττές ανατροπές.

    Πολιτείες Περιορισμών.

    Με τις δηλώσεις CREATE TABLE ή ALTER TABLE, μπορείτε να ορίσετε την κατάσταση κάθε περιορισμού σε επίπεδο πίνακα χρησιμοποιώντας τις ακόλουθες εκφράσεις:

    • Η ΕΝΕΡΓΟΠΟΙΗΣΗ εγγυάται ότι όλες οι εισροές στον Περιορισμό ικανοποιούνται.
    • DISABLE επιτρέπει την είσοδο να μην συμμορφώνεται με τον Περιορισμό.
    • Το VALIDATE διασφαλίζει ότι όλα τα δεδομένα που υπάρχουν ήδη στον πίνακα είναι σύμφωνα με τον Περιορισμό.
    • Το NOVALIDATE επιτρέπει στα δεδομένα που βρίσκονται ήδη στον πίνακα να μην πληρούν τον Περιορισμό.

    ... και οι συνδυασμοί τους:

    • Το ENABLE VALIDATE είναι παρόμοιο με το ENABLE και διασφαλίζει ότι απολύτως όλες οι εγγραφές (που έχουν ήδη εισαχθεί και εισαχθεί) ικανοποιούν τον Περιορισμό.
    • ΕΝΕΡΓΟΠΟΙΗΣΗ NOVALIDATE εγγυάται ότι όλα τα δεδομένα εισόδου θα ικανοποιηθούν με τον Περιορισμό, ωστόσο, τα δεδομένα που υπάρχουν ήδη στον πίνακα ενδέχεται να μην πληρούν τον Περιορισμό.
    • Το DISABLE NOVALIDATE είναι το ίδιο με το DISABLE. Δεν είναι εγγυημένη η ικανοποίηση τόσο των δεδομένων εισόδου όσο και αυτών που ήδη υπάρχουν στον πίνακα.
    • DISABLE VALIDATE απενεργοποιεί τον Περιορισμό, αφαιρεί το ευρετήριο στο οποίο δημιουργήθηκε και απαγορεύει τυχόν αλλαγές στα πεδία που περιλαμβάνονται στον Περιορισμό.

    ... και λίγο για τις δυνατότητες της εφαρμογής:

    · η έκφραση ΕΝΕΡΓΟΠΟΙΗΣΗ σημαίνει ΕΝΕΡΓΟΠΟΙΗΣΗ

    · DISABLE συνεπάγεται DISABLE NOVALIDATE.

    · ΕΠΙΒΕΒΑΙΩΣΗ και ΚΑΝΟΝΙΣΜΟΣ δεν σημαίνουν τίποτα για ΕΝΕΡΓΟΠΟΙΗΣΗ και ΑΠΕΝΕΡΓΟΠΟΙΗΣΗ (ας πούμε ότι είναι το εξαρτημένο μέρος της έκφρασης για ΕΝΕΡΓΟΠΟΙΗΣΗ και ΑΠΕΝΕΡΓΟΠΟΙΗΣΗ).

    · έχουμε ήδη αναφέρει τη δημιουργία και τη διαγραφή ευρετηρίων.

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

    · Η μετακίνηση ενός μεμονωμένου περιορισμού από ΕΝΕΡΓΟΠΟΙΗΣΗ NOVALIDATE σε ΕΝΕΡΓΟΠΟΙΗΣΗ ΕΠΙΒΕΛΙΣΗΣ δεν αποκλείει την ανάγνωση, εγγραφή ή άλλες λειτουργίες DDL, μπορούν να εκτελούνται παράλληλα.

    Και οι τελευταίες σημαντικές σημειώσεις.

    • Κατά τη δημιουργία ενός Περιορισμού, μπορείτε να καθορίσετε ως χαρακτηριστικό εάν είναι δυνατόν αργότερα στη συναλλαγή να ορίσετε έναν ΑΝΑΤΡΟΠΗ ελέγχου αυτού του Περιορισμού χρησιμοποιώντας τη δήλωση SET CONSTRAINTS (βλ. Παραπάνω). Η προεπιλογή ΔΕΝ ΕΙΝΑΙ ΑΦΑΙΡΕΣΗ (που σημαίνει, νομίζω, είναι κατανοητό). Αφού δημιουργήσετε τον Περιορισμό, δεν μπορείτε να αλλάξετε την τιμή του χαρακτηριστικού συνόλου, παρά μόνο εάν δημιουργήσετε ξανά τον Περιορισμό, οπότε "σκεφτείτε επτά φορές"!
    • Το INIT IALLY είναι ένα προαιρετικό χαρακτηριστικό στο DEFERRABLE που μπορεί να παρακαμφθεί από τη δήλωση SET CONSTRAINT (δείτε ξανά παραπάνω) και το οποίο ορίζει την προεπιλεγμένη συμπεριφορά όταν ένας περιορισμός ενεργοποιείται με το σύνολο χαρακτηριστικών DEFERRABLE. Κατά τη δημιουργία ενός περιορισμού, το INIT IALLY IMMEDIATE ορίζεται από προεπιλογή, τότε ο περιορισμός θα ενεργοποιείται κάθε φορά που εκτελείται μια ξεχωριστή δήλωση. Εάν οριστεί το INIT IALLY DEFERRED, ο περιορισμός θα ενεργοποιηθεί μέχρι το τέλος κάθε συναλλαγής. Για το NOT DEFERRABLE, αυτό το πρόσθετο χαρακτηριστικό δεν είναι απαραίτητο, καθώς είναι ΠΡΩΤΟΤΕΡΑ ΑΜΕΣΑ εξ ορισμού.
    • RELY έκφραση. Από προεπιλογή, όταν αλλάζει ο Περιορισμός (χρησιμοποιώντας τον περιορισμό ALTER TABLE ή MODIFY), ορίζεται ΚΑΝΟΝΙΚΑ. Και σημαίνει το εξής: πρέπει η Oracle "να λάβει υπόψη τον περιορισμό NOVALIDATE για να ξαναγράψει το ερώτημα; RELY ενεργοποιεί τον υπάρχοντα περιορισμό λειτουργίας (εδώ η λέξη" mode "χρησιμοποιείται στην τεκμηρίωση αναφοράς SQL, αν και έχω ήδη συνηθίσει λέξη "κατάσταση" από τις Έννοιες, - προφανώς, έγραψαν διαφορετικά άτομα, ξεχνώντας να συμφωνήσουν στους όρους) NOVALIDATE, το οποίο θα σας επιτρέψει να ξαναγράψετε ένα ερώτημα που διαφορετικά θα μπορούσε να ξαναγραφεί μόνο με έναν Περιορισμό στη λειτουργία ΕΠΙΒΕΒΑΙΩΣΗ. Κάτι σαν αυτό. Περισσότερες λεπτομέρειες την επόμενη φορά.
    • ΕΞΑΙΡΕΣΕΙΣ ΕΝΤΟΣ ορίζει το σχήμα και τον πίνακα στον οποίο θα εισαχθούν τα ROWID που παραβιάζουν τον Περιορισμό όταν αλλάζει η κατάσταση (Περιορισμός). Εάν δεν καθορίσετε ένα σχήμα και όνομα πίνακα, θα θεωρηθεί ότι χρησιμοποιείται ένας πίνακας με το όνομα EXCEPTIONS στο τρέχον σχήμα.
    Αυτό είναι όλο. Για σήμερα.
    Συνεχίζοντας το θέμα:
    Λύσεις

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

    Νέα άρθρα
    /
    Δημοφιλής