PostgreSQL Kısıtlamalar: Örnekli Türler
Kısıtlama Nedir?
Veri türleri, bir tabloda saklanabilecek bilgi türünü sınırlamak için kullanılır. Ancak bu yaklaşımla ilgili 2 sorun var.
- Sorun 1: Veri türlerinin uyguladığı kısıtlamalar belirli uygulamalar için yeterli değildir. Örneğin, Öğe fiyatını içeren bir sütun yalnızca pozitif değerleri kabul etmelidir. Ancak yalnızca pozitif sayıları kabul eden spesifik bir veri türü yoktur.
- Sayı 2: Bir satır/sütun verisindeki bilgileri diğer sütunlara veya satırlara göre sınırlamak isteyebilirsiniz. Örneğin, Öğe bilgilerini içeren bir tabloda, her benzersiz sütun kısıtlaması için yalnızca bir satır bulunmalıdır.
Bu tür sorunların üstesinden gelmek ve bu kuralları tanımlamak için kullanabilirsiniz. sınırlamas PostgreSQL. Basit bir ifadeyle kısıtlamalar, verilerinizin uyması gereken kurallardır. Tablo kısıtlamalarının eklenmesi, veritabanı sisteminin veri bütünlüğünü zorunlu kılmasını sağlar.
Bu nedenle, kullanıcı tanımlanmış bir kısıtlamayı ihlal eden bir sütunda veri depolamaya çalışıyorsa bir hata mesajı görüntülenmelidir.
Bir çeşit PostgreSQL Kısıtlamalar
Çeşitli türlere bir göz atalım PostgreSQL Veri doğruluğunu sağlamak için oluşturabileceğiniz kısıtlama:
- Benzersiz
- Geçersiz değil
- Kısıtlamayı Kontrol Et
- Birincil anahtar
- Yabancı anahtar
- Yürütme Kısıtlaması
1) PostgreSQL Benzersiz Kısıtlama
Benzersiz kısıtlamalar, bir sütunda veya bir grup sütun kısıtlamasında bulunan verilerin benzersiz olmasını sağlamanıza yardımcı olur.
Örnek E-posta
CREATE TABLE Item( Item_no integer UNIQUE, Name text, );
2) Boş Kısıtlamalar DEĞİLDİR
Boş olmayan bir kısıtlama, bir sütunun hiçbir zaman boş değer olmaması gerektiğini tanımlar. Bu tür kısıtlama, kontrol kısıtlaması oluşturmaya çok benzer. Fakat, PostgreSQL daha verimli olan boş olmayan bir kısıtlama oluşturur. Bu yöntemin sorunu, boş olmayan kısıtlamalara açık adlar verememenizdir.
Boş değil kısıtlaması varsayılan bir kısıtlama değildir PostgreSQL standarttır ve taşınabilir uygulamalarda kullanılmamalıdır. Daha sonra eklendi PostgreSQL başkalarıyla uyumlu hale getirmek için DBMS sistemleri. Çoğu kişi bunu bir komut dosyasındaki kısıtlamayı değiştirmeyi kolaylaştırdığı için kullanır.
Sözdizimi:
CREATE TABLE Item ( product no integer NULL, Item_name text NULL, Itm_price numeric NULL );
3) PostgreSQL Kısıtlamaları Kontrol Et
Bir kontrol kısıtlaması, bazı sütunlardaki değerin bir Boolean ifadesi olması gerektiğini belirtmenize yardımcı olur.
The PostgreSQL kontrol kısıtlaması, ardından parantez içindeki bir ifadenin geldiği CHECK anahtar sözcüğünden oluşur. Postgres kontrol kısıtlaması, sınırlandırılması gereken sütunu içermelidir, aksi takdirde hiçbir anlam ifade etmez.
Sözdizimi:
CREATE TABLE Item( Item_id INTEGER PRIMARY KEY, name VARCHAR(20), Item_price NUMERIC CHECK(price>0) );
Örnek:
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) Birincil Anahtar Kısıtlamaları
Birincil anahtar kısıtlaması, bir sütunu veya sütun grubunu tablodaki satırlar için benzersiz tanımlayıcı olarak kullanmanıza olanak tanır. Birincil anahtar kısıtlamalarını tanımlamak için bildirilen değerlerinizin hem benzersiz olması hem de boş olmaması gerekir. Bu, iki tablo tanımının aynı verileri kabul etmesine olanak tanır.
Sözdizimi:
Create Table Item( Item_no, integer PRIMARY KEY, Item_name text, Item_Price numeric );
Örnek 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) );
Örnek 2:
CREATE TABLE first( A1 INTEGER. A2 INTEGER. PRIMARY KEY (tl) ); Second way CREATE TABLE test( tl INTEGER PRIMARY KEY, t2 INTEGER. );
Örnek 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) Yabancı Anahtar Kısıtlamaları
Yabancı anahtar kısıtlaması, bir sütundaki veya sütun grubundaki değerlerin, başka bir tablonun bazı satırlarında görünen değerlerle eşleşmesi gerektiğini belirtir. Bu, ilişkili iki tablo arasında referans bütünlüğünü oluşturmanıza olanak tanır.
Farklı ürünlere ilişkin siparişleri saklayan bir tablonuz olduğunu varsayalım. Tablonun mevcut ürün siparişlerini içerdiğinden emin olmak istiyorsunuz. Yani burada siparişler tablosunda ürünler tablosuna referans veren bir yabancı anahtar kısıtlaması tanımlamanız gerekiyor.
Sözdizimi:
CREATE TABLE ( id INTEGER PRIMARY KEY. name VARCHAR(IO) >; CREATE TABLE testable Id INTEGER PRIMARY KEY read INTEGER REFERENCES (id) );
Örnek 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) Hariç Tutma Kısıtlamaları
Hariç tutma kısıtlamaları, belirtilen sütunlarda veya belirtilen operatörlere sahip ifadelerde herhangi iki satırın birbirleriyle karşılaştırılması durumunda, bu operatör karşılaştırmalarından en az birinin boş veya yanlış bir değer döndüreceğinden emin olmanıza yardımcı olur. Bunu eklemek PostgreSQL kısıtlama otomatik olarak kısıtlama bildiriminde belirtilen türde bir dizin oluşturacaktır.
Örnek:
Örneğin, aşağıdakiler PostgreSQL ifadesi Okul adında yeni bir tablo oluşturur ve beş sütun ekler.
CREATE TABLE SCHOOL6( STDID INT PRIMARY KEY NOT NULL, STDNAME TEXT NOT NULL, STDAGE INT NOT NULL, FEEDBACK CHAR(50), STANDARD INT NOT NULL,
Örneğin, aşağıdakiler PostgreSQL ifadesi, üç sütun ekleyen Branch adında yeni bir tablo oluşturur. STD_ID sütunu yabancı anahtardır ve SCHOOL6 tablosunun kimlik alanına başvurur.
CREATE TABLE BRANCH ( BRANCHCODE INT PRIMARY KEY NOT NULL, BRAMCHNAME CHAR(50) NOT NULL, STD_ID INT references SCHOOL6(ID) );