9 Nisan 2015 Perşembe

Oracle Constraint(Kısıt) Türleri Nelerdir ?

Oracle Constraint(Kısıt) Türleri

Bildiğiniz gibi veritabanında tablolarımızı oluştururken bazı alanlara kısıtlamalar getirebiliriz. Tanımladığımız bu kısıtlamalar alanları diğerlerinden ayıracak yani özel bir alan yapacak ve Insert, Update, Delete gibi komutları kullanırken oluşabilecek sorunları ortadan kaldıracaktır.

Örneğin; Tablomuza bir üye kayıt ederken üye adını boş bırakılamaz şeklinde tanımlayabiliriz, bu sayede tablomuza kayıt girerken üye adı olmayan bir kayıt ekleyemeyiz. Aynı şekilde bir alana kayıt yapılırken veri girilmediği takdirde belirli değerlerin atanmasını sağlayabiliriz.

Örneğin; Üye kaydını ele alalım tablomuzda "Uyruk" adlı bir alan olsun ve kayıt yapılırken "Uyruk" belirtilmediyse "TC" olarak kaydetsin şeklinde kısıtlamalar da getirebiliriz.

  Veritabanında Constraintler aşağıda ki gibi tanımlanır;

Create Table Deneme ( Deneme_id number(8) not null, Deneme_ad varchar2(14) not null, );
Oracle Veritabanı üzerinde ki Constraintler;
  •  Not Null
  • Unique
  • Primary Key
  • Foreign Key
  • Check
  • Default

Not Null: Tabloya kayıt eklenirken eğer bir alana "Not Null" kısıtlaması getirildiyse o alan boş bırakılamaz.

Yazının başında belittiğim örneği ele alırsak;

Create Table Uyeler ( Uye_id number(10) not null, Uye_ad varchar2(14) not null, Uye_yas number(2) );

Bir tabloya daha sonradan da bu kısıtlamaları ekleyebiliriz.

Örneğin;
Alter table Uyeler Modify (Uye_yas Not Null);

Eklediğimiz bir kısıtlamayı kaldırmak için;
Alter Table Uyeler Modify (Uye_yas Null);

Unique: Tabloya veri girişi yapılırken bazı alanların tekil olması gerekebilir. "Unique" kısıtlaması tanımlanan alanların tekil olmasını sağlar.
Örneğin;

Create Table Uyeler ( Uye_id number(8) Not Null Unique, Uye_Ad varchar2(14) Not Null );

Bir tabloya daha sonra da "Unique" kısıtlaması ekleyebilir veya kaldırabiliriz.
Örneğin;

Eklemek için;
Alter Table Uyeler Add Unique (Uye_id);

Kaldırmak için;
Alter Table Uyeler Drop Unique (Uye_id);

Primary Key: Primary Key çalışma mantığı Unique ile aynıdır. Tanımlandığı alanın tekil olmasını ve boş bırakılmamasını sağlar. Her tabloda bir tane Primary Key alanı bulunur. Birden fazla alana Primary Key tanımlanabilir fakat her tablonun sadece bir tane Primary Key' i vardır.
Örneğin;
Create Table Uyeler ( Uye_id number(8), Uye_Ad varchar2(14), Uye_Soyad varchar2(20), Constraint Uyeler_uye_id_PK Primary Key (Uye_id) );

Birden fazla alana Primary Key Tanımlamak;
Create Table Uyeler ( Uye_id number(8), Uye_Ad varchar2(14), Uye_Soyad varchar2(20), Constraint Uyeler_PK Primary Key (Uye_id,Uye_Ad,Uye_Soyad) );

Mevcut bir tabloya Primary Key eklemek;
Alter Table Uyeler Add Constraint Uyeler_uye_id_PK Primary Key (Uye_id);

Silmek istersek;
Alter Table Uyeler Drop Constraint Uyeler_uye_id_PK;

Foreign Key: Bir kolonun başka bir tablodaki "Primary Key" özelliğinde olan kolon ile ilişkilendirilmesini sağlar. Böylece "Foreign Key" olarak belirttiğimiz alana gelişigüzel değerler girilemez ve verilerde tutarsızlığı engellemiş oluruz.

Örneğin; Uyeler tablomuzu oluşturmuştuk, "Bolgeler" tablomuzuda oluşturduğumuzu ve içersinde "sehir_id" isimli bir "Primary Key" alanı olduğunu varsayalım. Bu tabloyu “Uyeler” adlı tablomuz ile birleştirelim.
Create Table Uyeler ( Uye_id number(8), Uye_ad varchar2(14) not null, Uye_soyad varchar2(20) not null, Sehir_id number(3) not null Constraint uyeler_pk Primary Key (Uye_id), Constraint Uyeler_Fk Foreign Key (sehir_id) References Bolgeler (sehir_id);

**Yukarıda ki örnekte “Uyeler” tablomuza “Bolgeler” tablomuzu referans alarak “Sehir_id” kolonu ekledik ve bu alan “Foreign Key” olmuş oldu.

Mevcut tablomuza da daha sonradan “Foreign Key” ekleyebiliriz.
Alter Table Uyeler Add Constraint Uyeler_FK Foreign Key (sehir_id) References Bolgeler (sehir_id);

Eğer Foreign Key’ i kaldırmak istersek;
Alter Table Uyeler Drop Constraint Uyeler_FK;

Check Constraint: Bir kolona girilen verilerin sınırlarını belirlememize yardımcı olur.
Örneğin;
Create Table Uyeler ( Uye_id number(8), Uye_ad varchar2(14), Uye_soyad varchar2(20), Uye_yas INT Not Null, Constraint yas_kontrol Check (Uye_yas  > 18) );

**Bu kontrol sayesinde girilen yaş sınırını “18” den büyük olarak belirlemiş olduk. Mevcut tabloya 

Check Constraint Eklemek ve Silmek; Eklemek için;
Alter Table Uyeler Add Constraint yas_kontrol Check (uye_yas > 18 );

Silmek için;
Alter Table Uyeler Drop Constraint yas_kontrol;

Default Constraint: Tabloya bir kayıt girilerken boş bırakılan alanlara standart verilerin atanmasını sağlar.

Örneğin;
Create Table Uyeler ( Uye_id number(8), Uye_ad varchar2(15), Uye_soyad varchar2(20), Uye_Uyruk varchar2(2) Default ‘TC’; );

**Yukarıda ki tabloya bir kayıt girilirken eğer “Uye_Uyruk” kısmına bir veri girilmezse kayıt işlemi tamamlandığında otomatik olarak “TC” atanacaktır.

Mevcut tabloya Default Constraint  Eklemek veya Silmek; Eklemek için;
Alter Table Uyeler Modify Uye_Uyruk Default ‘TC’;

Silmek için;
Alter Table Uyeler Modify Uye_Uyruk Default NULL;

Bu yazımda Oracle veritabanında tablolar üzerinde kullanılan Constraintlere(kısıtlamalara) göz attık. Bu kısıtlamalar sayesinde karmaşıklıkları rahatça ortadan kaldırabiliriz.

Bu sayede veritabanını etkin ve verimli bir şekilde kullanmış oluruz. Bir sonraki yazıda görüşmek üzere, hoşça kalın.

Hiç yorum yok:

Yorum Gönder