Kısıtlayıcılar (Constraints) Primary ve Unique Key




Merhaba,
Bu makalede birer kısıtlayıcı olan primary ve unique key örneklendirerek açıklamaya çalışacağız.Hemen başlayalım...

İlk olarak primary key'i inceleyeceğiz.

PRIMARY KEY

Primary key bir tabloya girilen her veri topluluğu (satır) için benzersiz olan bir anahtar oluşturur.Bir örnekle açıklayacak olursak bunu okul numaralarımıza benzetebiliriz. Bir okulda öğrencinin adı,soyadı,sınıfı,adresi gibi birçok veri tutulabilir ancak spesifik bir öğrenciye ulaşabilmek için sadece adı ya da soyadını girmek yeterli olmaz. Aynı isim ve hatta aynı soyisime sahip birden fazla öğrenci olabilir. Bunun için her öğrenciye benzersiz bir kimlik verilir bu bir okulda öğrenci numarası ya da bir ülkede kimlik numarası olarak gösterilebilir..

CREATE TABLE Ogrenci
(
ogrenciID int NOT NULL PRIMARY KEY,
isim varchar(100NOT NULL,
soyisim varchar(100),
adres varchar(255),
sınıf int
)



Yukarıdaki örnek kodumuzda 'Ogrenci' adında bir tablo oluşturulmuş ve 'ogrenciID' adında bir sütuna sahip. Bu sütun 'primary key' olarak tanımlanmış.










Bu tabloya bazı veriler girdik. Burada dikkat edilmesi gereken nokta 'Tolunay Güdük' adına sahip aynı mahallede ve aynı sınıfta okuyan iki kişi var ancak bu iki kişi birbirinden farklıdır. Bu iki kişiyi ayırt edebilmek için 'ogrenciID' olarak tanımladığımız ve benzersiz bir veri olan 'primary key' e bakmamız gerekir. Bu sayede aynı değerlere sahip birden fazla veriyi birbirinden ayırt edebiliriz.



Önemli Nokta : Primary key 'not null' olarak tanımlanmalıdır.Bu sayede her kullanıcı bir ID almış olur. ve her tabloda sadece bir sütun 'primary key' olabilir.Birden fazla sütunu primary key olarak tanımlayamayız.


Peki eğer tablomuzda birden fazla tekil veri sütunu oluşturmak istersek ne yapacağız? Örneğin bir bir sistemde kullanıcı girişini ele alalım. Her kullanıcıya sabit bir ID vermemiz gerekiir ki istediğimiz kullanıcıya direk ulaşabilelim. Bunun yanında bu sisteme kayıt olan her kullanıcı bir e-mail e sahip olacaktır ve bir e-mail sadece bir kullanıcı anlamına geleceğinden aynı e-mail ile birden fazla kullanıcı hesabı oluşturulmasına engel olmak isteyelim. Peki bunu nasıl yapabiliriz?
Cevap Unique Key

UNIQUE  KEY

Daha öncede belirttiğimiz gibi her kullanıcı bir ID ye sahip ve bu ID primary key olsun.

CREATE TABLE Kullanici
(
kullaniciID int NOT NULL PRIMARY KEY,
nick varchar(100NOT NULL,
isim varchar(100NOT NULL,
soyisim varchar(100),
)

Yukarıdaki kodumuza e-mail sütunu eklemek istersek bunu unique key ile yapmamız gerekecek. Bir tabloda bir sütunu primary key yapabiliyorduk ancak unique key birden fazla sütun için kullanılabilir. Yani tablomuz bir primary ve birden fazla unique key'e sahip olabilir.

"eMail nchar(100)NOT NULL UNIQUE "  bu satırı yukarıdaki kodumuza eklersek;

CREATE TABLE Kullanici
(
kullaniciID int NOT NULL PRIMARY KEY,
nick varchar(100NOT NULL,
isim varchar(100NOT NULL,
soyisim varchar(100),
eMail varchar(100)  NOT NULL UNIQUE,
)

Bu sayede 'ID' ve 'eMail' alanlarımız benzersiz yani aynı tablo içerisinde tek olur.Tabloya eklediğimiz bir mail adresini tekrar eklemek istersek veritabanımız bir uyarı mesajı verecek ve buna izin vermeyecektir.

Bu her e-mail adresi ile tek bir kullanıcı hesabı oluşturulmasını sağlar. Aynı e-mail ile birden fazla hesap oluşturulması engellenir.

Önemli Uyarı : unique key her tabloda sadece bir satır için null değeri alır yani tabloda unique oluşturulan bir sutun ya tamamen not null tanımlanmalı ya da sadece bir tek kayıt için null bırakılıp geri kalan tüm kayıtlar için doldurulmalıdır.


Umarım yardımcı olur. İyi çalışmalar dilerim...