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

⚡ Έξυπνη Σύνοψη

PostgreSQL Οι περιορισμοί επιβάλλουν έξι ενσωματωμένους κανόνες ακεραιότητας σε επίπεδο βάσης δεδομένων: ΜΟΝΑΔΙΚΟΣ, ΟΧΙ ΜΗΔΕΝΙΚΟΣ, ΕΛΕΓΧΟΣ, ΠΡΩΤΕΥΟΝ ΚΛΕΙΔΙ, ΞΕΝΟ ΚΛΕΙΔΙ και ΕΞΑΙΡΕΣΗ. LessΤα ons καλύπτουν τη σύνταξη, τα παραδείγματα και πότε πρέπει να εφαρμόζεται κάθε κανόνας.

  • Integrity κανόνες: Αποκλείει μη έγκυρα δεδομένα σε επίπεδο βάσης δεδομένων.
  • 🔑 Πρωτεύων κλειδί: ΜΟΝΑΔΙΚΟ συν ΟΧΙ ΜΗΔΕΝΙΚΟ· ένα ανά τραπέζι.
  • 🔗 Ξένο κλειδί: Υποδεικνύει ΜΟΝΑΔΙΚΟ ή ΠΡΩΤΕΥΟΝ ΚΛΕΙΔΙ αλλού.
  • ΕΛΕΓΧΟΣ: Λογικός έλεγχος ανά γραμμή.
  • 🚫 ΔΕΝ ΕΙΝΑΙ ΜΗΔΕΝΙΚΟ: Απορρίπτει τις τιμές NULL.
  • 🎯 ΑΠΟΚΛΕΙΣΜΟΣ: ΜΟΝΑΔΙΚΟ με προσαρμοσμένους τελεστές.

PostgreSQL Περιορισμοί

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

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

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

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

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

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

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

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

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

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

Παράδειγμα

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

PostgreSQL NOT NULL Περιορισμός

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

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

Σύνταξη:

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

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)
);

PostgreSQL Περιορισμός ΠΡΩΤΕΥΟΥ ΚΛΕΙΔΙΟΥ

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

Σύνταξη:

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

PostgreSQL Περιορισμός ΕΞΩΤΕΡΙΚΟΥ ΚΛΕΙΔΙΟΥ

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

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

Σύνταξη:

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
);

PostgreSQL Περιορισμός ΑΠΟΚΛΕΙΣΜΟΥ

Οι περιορισμοί εξαίρεσης σάς βοηθούν να βεβαιωθείτε ότι εάν συγκρίνονται οποιεσδήποτε δύο σειρές μεταξύ τους στις καθορισμένες στήλες ή παραστάσεις με καθορισμένους τελεστές, τότε τουλάχιστον μία από αυτές τις συγκρίσεις τελεστών θα επιστρέψει τιμή 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)
);

Συχνές Ερωτήσεις

ΠΡΩΤΕΥΟΝ ΚΛΕΙΔΙ, ΞΕΝΟ ΚΛΕΙΔΙ, ΜΟΝΑΔΙΚΟ, ΟΧΙ ΜΗΔΕΝΙΚΟ, ΕΠΙΛΟΓΗ, ΕΞΑΙΡΕΣΗ.

Εργαλεία τεχνητής νοημοσύνης όπως το Copilot δημιουργούν εντολές CREATE TABLE με περιορισμούς και συνθήκες CHECK.

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

Το ΠΡΩΤΕΥΟΝ ΚΛΕΙΔΙ συνδυάζει το UNIQUE και το NOT NULL, ένα ανά πίνακα. Το UNIQUE επιτρέπει πολλαπλά και δέχεται NULL.

Χρησιμοποιήστε τις επιλογές ON DELETE CASCADE, SET NULL ή RESTRICT.

Όχι. Το CHECK αναφέρεται μόνο σε στήλες της ίδιας γραμμής. Χρησιμοποιήστε ξένα κλειδιά ή εναύσματα.

Χρησιμοποιήστε την EXCLUDE όταν η μοναδικότητα απαιτεί τελεστές μη ισότητας (π.χ. && για επικάλυψη)ping εύρη).

Ναι. Η συνάρτηση ALTER TABLE ADD CONSTRAINT λειτουργεί μετά τη δημιουργία. Χρησιμοποιήστε την συνάρτηση NOT VALID για να παραλείψετε τον έλεγχο των υπαρχουσών γραμμών.

Συνοψίστε αυτήν την ανάρτηση με: