PostgreSQL Megszorítások: Típusok példával

Mi az a Megszorítás?

Az adattípusok a táblázatban tárolható információk korlátozására szolgálnak. De van 2 probléma ezzel a megközelítéssel.

  • 1. kiadás: Az adattípusok által kikényszerített korlátozások nem megfelelőek bizonyos alkalmazásokhoz. Például egy cikk árát tartalmazó oszlop csak pozitív értékeket fogadhat el. Nincs azonban olyan konkrét adattípus, amely csak a pozitív számot fogadná el.
  • Probléma 2: Lehetséges, hogy korlátozni kívánja a sorban/oszlopban lévő adatokat a többi oszlophoz vagy sorhoz képest. Például egy cikkinformációt tartalmazó táblázatban csak egy sor szerepelhet minden egyedi oszlopmegkötéshez.

Az ilyen problémák leküzdéséhez és a szabályok meghatározásához használhatja kényszers PostgreSQL. Egyszerűen fogalmazva, a korlátozások olyan szabályok, amelyeket az adatoknak követniük kell. A táblakényszerek hozzáadása lehetővé teszi az adatbázisrendszer számára, hogy kikényszerítse az adatok integritását.

Ezért, ha a felhasználó egy olyan oszlopban próbál adatokat tárolni, amely megsért egy meghatározott korlátozást, hibaüzenetet kell megjeleníteni.

Típusú PostgreSQL megszorítások

Vessünk egy pillantást a különféle típusokra PostgreSQL az adatok helyességének biztosítása érdekében létrehozható korlátozás:

  • Egyedülálló
  • Nem nulla
  • Ellenőrizze a Megszorítást
  • Elsődleges kulcs
  • Idegen kulcs
  • Végrehajtási kényszer

1) PostgreSQL Egyedi kényszer

Az egyedi megszorítások segítenek annak biztosításában, hogy egy oszlopban vagy oszlopkényszercsoportban szereplő adatok egyediek legyenek.

Példa

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

2) NOT Null Constraints

A nem nulla megkötés azt határozza meg, hogy egy oszlop soha nem lehet null érték. Ez a fajta megszorítás nagyon hasonlít az ellenőrzési kényszer létrehozásához. Azonban, PostgreSQL nem nulla megszorítást hoz létre, ami hatékonyabb. Ezzel a módszerrel az a probléma, hogy nem lehet explicit nevet adni a nem nulla megszorításoknak.

A nem null megkötés nem alapértelmezett PostgreSQL szabványos, és nem használható hordozható alkalmazásokban. Később bekerült PostgreSQL hogy kompatibilis legyen másokkal DBMS rendszerek. Sokan azért használják, mert egyszerűvé teszi a kényszer átváltását a parancsfájlban.

Syntax:

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

3) PostgreSQL Ellenőrizze a korlátozásokat

Az ellenőrzési megkötés segít meghatározni, hogy az egyes oszlopok értékének logikai kifejezésnek kell lennie.

A PostgreSQL A check kényszer a CHECK kulcsszóból áll, amelyet egy kifejezés követ zárójelben. A Postgres ellenőrzési kényszernek tartalmaznia kell azt az oszlopot, amelyet korlátozni kell, különben nincs értelme.

Syntax:

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

Példa:

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) Elsődleges kulcskorlátok

Az elsődleges kulcs megszorítása lehetővé teszi, hogy egy oszlopot vagy oszlopcsoportot használjon egyedi azonosítóként a táblázat soraihoz. Az elsődleges kulcs megszorításainak meghatározásához a deklarált értékeknek egyedinek és nem nullának kell lenniük. Ez lehetővé teszi, hogy két tábladefiníció ugyanazokat az adatokat fogadja el.

Syntax:

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

Példa 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)
);

Példa 2:

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

Példa 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) Idegenkulcs-korlátozások

Az idegenkulcs-kényszer azt határozza meg, hogy egy oszlopban vagy oszlopcsoportban lévő értékeknek meg kell egyeznie egy másik tábla valamelyik sorában megjelenő értékekkel. Ez lehetővé teszi a hivatkozási integritás létrehozását két társított tábla között.

Tegyük fel, hogy van egy táblázata, amely a különböző termékek rendeléseit tárolja. Győződjön meg arról, hogy a táblázat a meglévő termékek rendeléseit tartalmazza. Tehát itt meg kell határoznia egy idegen kulcs megszorítást a rendelési táblában, amely a termékek táblára hivatkozik.

Syntax:

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

Példa 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) Kizárási korlátok

A kizárási megszorítások segítségével megbizonyosodhat arról, hogy ha bármely két sort összehasonlítanak egymással a megadott oszlopokban vagy kifejezésekben meghatározott operátorokkal, akkor ezen operátor-összehasonlítások közül legalább az egyik nulla vagy hamis értéket ad vissza. Ezt hozzáadva PostgreSQL constraint automatikusan létrehoz egy, a kényszer deklarációban megadott típusú indexet.

Példa:

Például a következőket PostgreSQL utasítás létrehoz egy új táblát Iskola néven, és hozzáad öt oszlopot.

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

Például a következőket PostgreSQL utasítás létrehoz egy új táblát Branch néven, amely három oszlopot ad hozzá. Az STD_ID oszlop az idegen kulcs, és az SCHOOL6 tábla ID mezőjére hivatkozik.

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