Constraints Kullanımı

Merhabalar,

Bu yazıda Constraints (Kısıtlayıcılar) konusunu inceleyeceğiz. Kısıtlayıcılar genelleme ve bütünlük sağlama açısından önemlidir. Kısıtlayıcı ile bir tabloda kolonu boş geçip geçemeyeceğimizi, başka bir tabloyla ilgili alanlarla ilişkilerinin olup olmayacağını belirtmede kullanılır. Kısıtlayıcılar 5 gruba ayrılır;

  1. Primary Key Constraint
  2. Unique Constraint
  3. Foreign Key Constraint
  4. Default Constraint
  5. Check Constraint

Şimdi sırayla bu kısıtlayıcıları inceleyelim.

Primary Key Constraint

Birincil anahtar kısıtlayıcısıdır. Her tabloda bir adet bulunabilir. Girilen her değerin farklı olması anlamına gelmektedir. Yani eşsiz kayıtlar tutmakta kullanılır. Bu alanlar NULL değere sahip olamazlar. Genelde otomatik artan sayılar için kullanılırlar. Otomatik arttırma Identity komutuyla gerçekleştirilir. Identity komutundan sonra işlemin kaçtan başlayacağı ve kaçar kaçar artacağı belirtilir. Identity(1,1) 1'den başlayacağını ve 1'er 1'er artacağını gösterir.

-- Tabloyu Create ederken;
IsımID int Identity(1,1) NOT NULL,
-- Tabloyu düzenlerken;
ALTER TABLE Isımler ADD PRIMARY KEY (IsımID)
-- Primary Key kısıtlayıcısını tablodan kaldırmak için;
ALTER TABLE Isımler
DROP CONSTRAINT pk_IsımID

Bu işlemleri kod ile yapmasak olmaz mı diyebilirsiniz. SQL Server üzerinde görsel olarak tablo yaratırken bu kısıtlamaları özellikler kısmında belirtebiliriz.

Unique Constraint

Tablodaki bir sütünün benzersiz olmasını istediğimiz durumlarda kullanırız. Örnek vermek gerekirse, T.C Kimlik numaraları, Banka Hesap Numaraları gibi vs. Primary key den farkı ise Unique key bir tabloda birden fazla olmasıdır, primary key ise tabloda sadece 1 adet olabilir. Unique olarak tanımlanmış bir alan NULL olabilir. Değeri NULL’dan farklı olacak olursa kesinlikle daha önce girilen değerlerden farklı olmak zorundadır.

Örnek:

CREATE TABLE Calisanlar
(
TCNo int NOT NULL UNIQUE,
Soyadi varchar(255) NOT NULL,
Adi varchar(255),
Adres varchar(255),
Sehir varchar(255)
)

Foreign Key Constraint

Yabancıl Anahtar anlamına gelen bu kısıtlayıcı tabloları ilişkilendirme de kullanılır. Yabancıl anahtar ile kısıtlanan tablodaki sütun diğer tablodaki sütun ile kısıtlanmış olur. Kod tarafında eşleştirme işlemi aşağıdaki biçimde yapılır;

CREATE TABLE Calisanlar
(CalisanID int NOT NULL PRIMARY KEY,
IlID int NOT NULL REFERENCES Il(IlID));

Foreign key tanımlamak için, tablomuzda ki FK olacak sütunu yazdıktan sonra REFERENCES yazıp bağlamak istediğimiz tablonun adını ve parantez içindede ilgili sütunu örnekte olduğu gibi yazarız.

Bir tabloda birden fazla Foreign Key bulunabilir.

Default Constraint

Varsayılan kısıtlayıcı demektir. Tablodaki herhangi bir alan için girilmesi gereken değerin atanmasıdır. INSERT komutu için geçerlidir. Örnek olarak bir kayıt eklendiğinde, kaydın eklenme zamanını default olarak belirtebiliriz.

Check Constraint

Kontrol Kısıtlayıcısı anlamına gelmektedir. Yani istediğimiz biçime göre verilerin girilmesini sağlar. Örneğin T.C Kimlik NO alanına 11 karakterin girilmesini sağlayabiliriz.

CREATE TABLE Calisanlar2
(
TCNo int NOT NULL UNIQUE,
Soyadi varchar(255) NOT NULL,
Adi varchar(255),
Adres varchar(255),
Sehir varchar(255),
Yas int not null check(Yas>=18) -- yaş kontrolü
)

Kısıtlayıcılar bu şekilde eğer aklınıza takılan olursa sormaktan çekinmeyin.