PostgreSQL Beperkingen: typen met voorbeeld

Wat is beperking?

Gegevenstypen worden gebruikt om het soort informatie te beperken dat in een tabel kan worden opgeslagen. Maar er zijn twee problemen met deze aanpak.

  • Zaak 1: Beperkingen die door gegevenstypen worden afgedwongen, zijn voor bepaalde toepassingen niet adequaat. Een kolom met een Artikelprijs mag bijvoorbeeld alleen positieve waarden accepteren. Er is echter geen specifiek gegevenstype dat alleen het positieve getal accepteert.
  • Issue 2: Mogelijk wilt u de informatie in rij-/kolomgegevens beperken ten opzichte van andere kolommen of rijen. Een tabel met iteminformatie zou bijvoorbeeld slechts één rij moeten hebben voor elke unieke kolombeperking.

Om dergelijke problemen te overwinnen en deze regels te definiëren, kunt u gebruiken beperkings in PostgreSQL. Simpel gezegd zijn beperkingen regels waaraan uw gegevens moeten voldoen. Door tabelbeperkingen toe te voegen, kan het databasesysteem de gegevensintegriteit afdwingen.

Wanneer een gebruiker gegevens probeert op te slaan in een kolom die een gedefinieerde beperking schendt, moet er een foutmelding worden weergegeven.

Soort van PostgreSQL beperkingen

Laten we eens kijken naar verschillende soorten PostgreSQL beperking die u kunt instellen om de juistheid van gegevens te garanderen:

  • Uniek
  • Niet nul
  • Beperking controleren
  • Hoofdsleutel
  • Vreemde sleutel
  • Uitvoeringsbeperking

1) PostgreSQL Unieke beperking

Met unieke beperkingen kunt u ervoor zorgen dat de gegevens in een kolom of een groep kolombeperkingen uniek zijn.

Voorbeeld

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

2) GEEN nulbeperkingen

Een niet-null-beperking definieert dat een kolom nooit een nulwaarde mag zijn. Dit type beperking lijkt sterk op het maken van een controlebeperking. Echter, PostgreSQL creëert een niet-nulbeperking, die efficiënter is. Het probleem met deze methode is dat je geen expliciete namen kunt geven aan niet-null-beperkingen.

De niet nul-beperking is geen standaardwaarde PostgreSQL standaard en mag niet worden gebruikt in draagbare toepassingen. Het werd later toegevoegd in PostgreSQL om het compatibel te maken met een ander DBMS-systemenVelen gebruiken het omdat het eenvoudig is om de beperking in een scriptbestand te schakelen.

Syntax:

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

3) PostgreSQL Controleer beperkingen

Met een controlebeperking kunt u opgeven dat de waarde in een bepaalde kolom een ​​Booleaanse expressie moet zijn.

De PostgreSQL check-beperking bestaat uit het CHECK-sleutelwoord, gevolgd door een expressie tussen haakjes. De controlebeperking Postgres moet betrekking hebben op de kolom die moet worden beperkt, anders heeft het geen enkele zin.

Syntax:

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

Voorbeeld:

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) Primaire sleutelbeperkingen

Met een primaire sleutelbeperking kunt u een kolom of groep kolommen gebruiken als unieke identificatie voor rijen in de tabel. Om primaire sleutelbeperkingen te definiëren, moeten uw gedeclareerde waarden zowel uniek als niet nul zijn. Hierdoor kunnen twee tabeldefinities dezelfde gegevens accepteren.

Syntax:

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

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

Voorbeeld 2:

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

Voorbeeld 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) Beperkingen voor buitenlandse sleutels

Een refererende-sleutelbeperking specificeert dat de waarden in een kolom of een groep kolommen moeten overeenkomen met de waarden die in een rij van een andere tabel voorkomen. Hiermee kunt u de referentiële integriteit tussen twee gekoppelde tabellen vaststellen.

Laten we aannemen dat u een tabel heeft waarin bestellingen voor verschillende producten zijn opgeslagen. U wilt er zeker van zijn dat de tabel bestellingen bevat van bestaande producten. Hier moet u dus een refererende-sleutelbeperking definiëren in de ordertabel die verwijst naar de productentabel.

Syntax:

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

Voorbeeld 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) Uitsluitingsbeperkingen

Uitsluitingsbeperkingen helpen u ervoor te zorgen dat als twee rijen met elkaar worden vergeleken op de opgegeven kolommen of expressies met opgegeven operatoren, ten minste één van deze operatorvergelijkingen een null- of false-waarde retourneert. Door dit toe te voegen PostgreSQL constraint maakt automatisch een index van het type dat is opgegeven in de constraintdeclaratie.

Voorbeeld:

Bijvoorbeeld het volgende: PostgreSQL statement maakt een nieuwe tabel met de naam School en voegt vijf kolommen toe.

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

Bijvoorbeeld het volgende: PostgreSQL statement maakt een nieuwe tabel met de naam Branch, die drie kolommen toevoegt. De kolom STD_ID is de externe sleutel en verwijst naar het ID-veld van de tabel SCHOOL6.

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