PostgreSQL Περιορισμοί: Τύποι με Παράδειγμα

Τι είναι ο Περιορισμός;

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

  • Έκδοση 1: Οι περιορισμοί που επιβάλλονται από τύπους δεδομένων δεν επαρκούν για ορισμένες εφαρμογές. Για παράδειγμα, μια στήλη που περιέχει μια τιμή Στοιχείου θα πρέπει να δέχεται μόνο θετικές τιμές. Ωστόσο, δεν υπάρχει συγκεκριμένος τύπος δεδομένων που να δέχεται μόνο τον θετικό αριθμό.
  • θέμα 2: Ίσως θέλετε να περιορίσετε τις πληροφορίες σε δεδομένα γραμμής/στήλης σε σχέση με άλλες στήλες ή σειρές. Για παράδειγμα, ένας πίνακας που περιέχει πληροφορίες Στοιχείου θα πρέπει να έχει μόνο μία γραμμή για κάθε μοναδικό περιορισμό στήλης.

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

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

Του είδους PostgreSQL Περιορισμοί

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

  • Μοναδική
  • Οχι κενό
  • Ελέγξτε τον περιορισμό
  • Πρωτεύων κλειδί
  • Ξένο κλειδί
  • Περιορισμός εκτέλεσης

1) PostgreSQL Μοναδικός περιορισμός

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

Παράδειγμα

CREATE TABLE Item(
Item_no integer UNIQUE,
Name text,
);

2) ΟΧΙ Μηδενικοί περιορισμοί

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

Ο περιορισμός not null δεν είναι προεπιλεγμένος PostgreSQL στάνταρ και δεν πρέπει να χρησιμοποιείται σε φορητές εφαρμογές. Αργότερα προστέθηκε PostgreSQL για να το κάνει συμβατό με κάποιο άλλο Συστήματα DBMS. Πολλοί το χρησιμοποιούν επειδή διευκολύνει την εναλλαγή του περιορισμού σε ένα αρχείο σεναρίου.

Σύνταξη:

CREATE TABLE Item (
product no integer NULL, Item_name text NULL, Itm_price numeric NULL
);

3) PostgreSQL Ελέγξτε τους περιορισμούς

Ένας περιορισμός ελέγχου σάς βοηθά να καθορίσετε ότι η τιμή σε κάποια στήλη πρέπει να είναι μια Boolean έκφραση.

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

Σύνταξη:

CREATE TABLE Item(
Item_id INTEGER PRIMARY KEY,
name VARCHAR(20),
Item_price NUMERIC CHECK(price>0)
);

Παράδειγμα:

CREATE TABLE Emp(
ID	INTEGER primary key,
First_name VARCHAR(20),
Last_name VARCHAR(20),
Gender CHAR(l) check(gender gender='M'),
Salary INTEGER NOT NULL,
Dept_Num INTEGER
);
CREATE TABLE ITEM(
Id INTEGER PRIMARY KEY,
name VARCHAR(15),
price numeric CHECK (price > 0)
);

4) Περιορισμοί πρωτεύοντος κλειδιού

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

Σύνταξη:

Create Table Item(
Item_no, integer PRIMARY KEY,
Item_name text,
Item_Price numeric
);

Παράδειγμα 1:

CREATE TABLE Employee(
ID INTEGER PRIMARY KEY
Fname VARCHAR(20),
Lname VARCHAR(20),
Gender CHAR(l),
Salary INTEGER NOT NULL, Dept INTEGER, UNIQUE(FNAME, LNAME)
);

Παράδειγμα 2:

CREATE TABLE first(
A1 INTEGER. A2 INTEGER. PRIMARY KEY (tl)
);
Second way CREATE TABLE test( tl INTEGER PRIMARY KEY, t2 INTEGER.
);

Παράδειγμα 3:

CREATE TABLE Items (
Item_no integer UNIQUE NOT NULL, name text, price numeric
CREATE TABLE Items (
Items_no no integer PRIMARY KEY, name text, price numeric

5) Περιορισμοί εξωτερικού κλειδιού

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

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

Σύνταξη:

CREATE TABLE	(
id INTEGER PRIMARY KEY. name VARCHAR(IO)
>;
CREATE TABLE testable
Id INTEGER PRIMARY KEY
read INTEGER REFERENCES	(id)
);

Παράδειγμα 2:

CREATE TABLE Student (
Std_ID INTEGER primary key,
First_name VARCHAR(20),
Last_name VARCHAR(20),
Gender CHAR(l),
Steam, VARCHAR(20),
Dept_NUM INTEGER REFERENCES Department
);

6) Περιορισμοί αποκλεισμού

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

Παράδειγμα:

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

CREATE TABLE SCHOOL6(
STDID INT PRIMARY KEY NOT NULL,
STDNAME TEXT NOT NULL,
STDAGE INT NOT NULL,
FEEDBACK CHAR(50),
STANDARD INT NOT NULL,

Για παράδειγμα, το εξής PostgreSQL Η δήλωση δημιουργεί έναν νέο πίνακα που ονομάζεται Branch, ο οποίος προσθέτει τρεις στήλες. Η στήλη STD_ID είναι το ξένο κλειδί και αναφέρεται στο πεδίο ID του πίνακα SCHOOL6.

CREATE TABLE BRANCH (
BRANCHCODE INT PRIMARY KEY NOT NULL,
BRAMCHNAME CHAR(50) NOT NULL,
STD_ID INT references SCHOOL6(ID)
);