PostgreSQL Omezení: Typy s příkladem
Co je omezení?
Datové typy se používají k omezení druhu informací, které lze uložit do tabulky. Tento přístup má ale 2 problémy.
- Číslo 1: Omezení vynucená datovými typy nejsou pro určité aplikace adekvátní. Například sloupec obsahující cenu položky by měl přijímat pouze kladné hodnoty. Neexistuje však žádný konkrétní datový typ, který přijímá pouze kladné číslo.
- Vydání 2: Možná budete chtít omezit informace v datech řádku/sloupce ve vztahu k jiným sloupcům nebo řádkům. Například tabulka obsahující informace o položce by měla mít pouze jeden řádek pro každé jedinečné omezení sloupce.
K překonání takových problémů a definování těchto pravidel můžete použít omezenís ve PostgreSQL. Jednoduše řečeno, omezení jsou pravidla, která musí vaše data dodržovat. Přidání omezení tabulky umožňuje databázovému systému vynutit integritu dat.
Pokud se tedy uživatel pokouší uložit data do sloupce, který porušuje definované omezení, měla by se zobrazit chybová zpráva.
Typ PostgreSQL Omezení
Pojďme se podívat na různé druhy PostgreSQL omezení, které můžete vytvořit, abyste zajistili správnost dat:
- Unikátní
- Nenulový
- Zkontrolujte omezení
- Primární klíč
- Cizí klíč
- Omezení provedení
1) PostgreSQL Jedinečné omezení
Jedinečná omezení vám pomohou zajistit, že data obsažená ve sloupci nebo skupině omezení sloupců jsou jedinečná.
Příklad
CREATE TABLE Item( Item_no integer UNIQUE, Name text, );
2) NOT Null Constraints
Ne-null omezení definuje, že sloupec by nikdy neměl mít hodnotu null. Tento typ omezení je velmi podobný vytvoření kontrolního omezení. Nicméně, PostgreSQL vytváří nenulové omezení, což je efektivnější. Problém s touto metodou je v tom, že nemůžete dát explicitní názvy nenulovým omezením.
Omezení není null není výchozí PostgreSQL standardní a neměly by se používat v přenosných aplikacích. Později bylo přidáno PostgreSQL aby to bylo kompatibilní s nějakým jiným DBMS systémy. Mnozí jej používají, protože usnadňuje přepínání omezení v souboru skriptu.
Syntaxe:
CREATE TABLE Item ( product no integer NULL, Item_name text NULL, Itm_price numeric NULL );
3) PostgreSQL Zkontrolujte omezení
Kontrolní omezení vám pomůže určit, že hodnota v některém sloupci musí být logický výraz.
Jedno PostgreSQL check constraint se skládá z klíčového slova CHECK, za kterým následuje výraz v závorkách. Kontrolní omezení Postgres by mělo zahrnovat sloupec, který by měl být omezen, jinak to nedává žádný smysl.
Syntaxe:
CREATE TABLE Item( Item_id INTEGER PRIMARY KEY, name VARCHAR(20), Item_price NUMERIC CHECK(price>0) );
Příklad:
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) Omezení primárního klíče
Omezení primárního klíče vám umožňuje použít sloupec nebo skupinu sloupců jako jedinečný identifikátor pro řádky v tabulce. Chcete-li definovat omezení primárního klíče, vaše deklarované hodnoty by měly být jedinečné a ne null. To umožňuje, aby dvě definice tabulky akceptovaly stejná data.
Syntaxe:
Create Table Item( Item_no, integer PRIMARY KEY, Item_name text, Item_Price numeric );
Příklad 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říklad 2:
CREATE TABLE first( A1 INTEGER. A2 INTEGER. PRIMARY KEY (tl) ); Second way CREATE TABLE test( tl INTEGER PRIMARY KEY, t2 INTEGER. );
Příklad 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) Omezení cizího klíče
Omezení cizího klíče určuje, že hodnoty ve sloupci nebo skupině sloupců musí odpovídat hodnotám uvedeným v některém řádku jiné tabulky. To vám umožní vytvořit referenční integritu mezi dvěma přidruženými tabulkami.
Předpokládejme, že máte tabulku, která ukládá objednávky pro různé produkty. Chcete zajistit, aby tabulka obsahovala objednávky produktů, které existují. Zde tedy musíte definovat omezení cizího klíče v tabulce objednávek, které odkazuje na tabulku produktů.
Syntaxe:
CREATE TABLE ( id INTEGER PRIMARY KEY. name VARCHAR(IO) >; CREATE TABLE testable Id INTEGER PRIMARY KEY read INTEGER REFERENCES (id) );
Příklad 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) Omezení vyloučení
Omezení vyloučení vám pomohou zajistit, že pokud jsou jakékoli dva řádky vzájemně porovnány v zadaných sloupcích nebo výrazech se zadanými operátory, pak alespoň jedno z těchto porovnání operátorů vrátí hodnotu null nebo false. Přidání tohoto PostgreSQL constraint automaticky vytvoří index typu zadaného v deklaraci omezení.
Příklad:
Například následující PostgreSQL příkaz vytvoří novou tabulku s názvem School a přidá pět sloupců.
CREATE TABLE SCHOOL6( STDID INT PRIMARY KEY NOT NULL, STDNAME TEXT NOT NULL, STDAGE INT NOT NULL, FEEDBACK CHAR(50), STANDARD INT NOT NULL,
Například následující PostgreSQL vytvoří novou tabulku s názvem Branch, která přidá tři sloupce. Sloupec STD_ID je cizí klíč a odkazuje na pole ID tabulky SCHOOL6.
CREATE TABLE BRANCH ( BRANCHCODE INT PRIMARY KEY NOT NULL, BRAMCHNAME CHAR(50) NOT NULL, STD_ID INT references SCHOOL6(ID) );