Professional Documents
Culture Documents
VERİ BÜTÜNLÜĞÜ
VTYS’lerde veri bütünlüğünü sağlamanın iki temel yolu vardır; Tanımlanabilir veri
bütünlüğü ve prosedürel veri bütünlüğü. Tanımlanabilir veri bütünlüğü, tanımlanan nesnelerin
kendi özellikleri sayesinde sağlanabilen veri bütünlükleridir. Çok fazla müdahale ve
programlama imkânı sağlamaz ama kullanımı çok basit bir tanımlamadan ibarettir. Prosedürel
veri bütünlüğü ise bir programlama yaklaşımı ile bütünlüğün tasarlanmasını gerektirir.
Prosedürel öğeler, Trigger’lar, Stored Procedure’ler veya programcılar tarafından yazılan üst
seviyeli programlardır.
1. CONSTRAINTS (Kısıtlayıcılar)
1
Veritabanı Ders Notları (5)
Öğr.Gör. Erkut TEKELİ
1.2. DEFAULT
Tablo içerisinde veri girişi yapılmak üzere değer verilmezse veri girişi için standart
olarak atanacak değeri tanımlamakta kullanılır.
Aşağıdaki örnek SQL cümlesinde Sehir sütunu boş geçildiği takdirde otomatik olarak
bu sütuna ADANA değeri girilir.
Aşağıdaki örnek SQL cümlesinde OgrNo sütunu birincil anahtar olarak oluşturuluyor.
Bazı durumlarda birincil anahtar olarak belirlenen sütun sayısı birden fazla olabilir
(Bkz. Varlık-İlişki modeli). Aşağıda kullanımıyla ilgili örnek verilmiştir.
2
Veritabanı Ders Notları (5)
Öğr.Gör. Erkut TEKELİ
FOREIGN KEY olarak oluşturulacak sütun başka bir tabloda birincil anahtar olarak
belirlenen sütundur.
FOREIGN KEY olarak oluşturulacak sütun içerisine girilecek veriler referans olarak
kullanılan sütunda bulunmalıdır. Kayıt girişi esnasında referans sütunda bu değeri içeren veri
yoksa SQL cümlemiz hata verecek ve kayıt işlemi gerçekleşmeyecektir.
Yine aynı şekilde, NOTLAR tablosunun ders_kodu sütunu ile DERS tablosunun
birincil anahtar sütunu olan ders_kodu sütunu ilişkilendirilmiştir.
Bu tür sorunların engellenmesi için ilişkiler kurulurken silme (ON DELETE) veya
güncelleme (ON UPDATE) işlemi için izin verilmelidir. Bu izne ardışık bütünlük ismi verilir.
Ardışık bütünlük aşağıdaki seçeneklerden birinin devreye girmesini sağlayabilir.
3
Veritabanı Ders Notları (5)
Öğr.Gör. Erkut TEKELİ
CASCADE
NO ACTION
Birincil tarafta silmeye müsaade edebilmek için yabancı taraftaki bütün ilişkili
satırların silinmiş olması şartını arar. Bir tane bile silinmemiş satır varsa, birincil taraftaki
satırın da silinmesine izin vermez. Eğer belirtilmemişse varsayılan seçenek olarak NO
ACTION seçeneği geçerlidir.
SET DEFAULT
Bir satır silindiğinde buna bağlı yabancı anahtar sütunu üstünde default değeri varsa,
yabancı anahtar sütununa default değeri atanır.
SET NULL
Bir satır silindiğinde buna bağlı yabancı anahtar sütun NULL olabilir olarak tanımlı
ise, yabancı anahtar sütununa NULL değeri atanır.
4
Veritabanı Ders Notları (5)
Öğr.Gör. Erkut TEKELİ
1.5. CHECK
Tablo oluşturulurken bir sütun içerisine girilebilecek değerler için bir kısıtlama
getirmek amacıyla kullanılır. Sütun için belirlenecek koşul tek bir şartı içeriyorsa CHECK
ifadesi sütun isminden sonra yazılarak koşul belirtilir.
Yukarıdaki gibi bir tanımlama yapıldığında vize ve final sütunlarına 0'dan küçük bir
veri girilemez.
Eğer sütun için birden fazla koşul belirtmemiz gerekiyorsa CHECK ifadesi
CONSTRAINT olarak kullanılır.
Yukarıdaki şekilde oluşturulan tabloda vize ve final notu 0 ve 100 arasında girilmek
zorundadır.
CONSTRAINT chkkod
CHECK (urun_kod IN ('A086', 'A087', 'A088', 'A089')
OR urun_kod LIKE 'A10%')
Yukarıdaki CHECK ifadesi urun_kodunun A086, A087, A088, A089 olmasını veya
A10 ile başlamasını gerektirmektedir.
5
Veritabanı Ders Notları (5)
Öğr.Gör. Erkut TEKELİ
1.6. UNIQUE
Bir sütunun aynı veriyi sadece bir kez içermesi isteniyorsa UNIQUE ifadesi kullanılır.
Aşağıdaki örnek SQL cümlesinde Telefon sütununda aynı telefon numarası birden
fazla bulunamaz.
Bir sütunun içeriğinin otomatik olarak artması isteniyorsa sütun ismi ve veri tipinden
sonra IDENTITY fonksiyonunu kullanmak gerekir. Fonksiyon içinde başlangıç değeri ve
artım miktarı girilmelidir. Artım miktarı girilmezse 1 olarak alınacaktır. Bu durumda bu sütun
için değer girmemize gerek kalmayacaktır. Her yeni kayıtta ilgili sütun bir sonraki numarayı
alacaktır.
Bir sütunun içeriğinin otomatik olarak artması isteniyorsa sütun isminden sonra
AUTO INCREMENT ifadesini kullanmak yeterlidir. Bu durumda bu sütun için değer
girmemize gerek kalmayacaktır. Her yeni kayıtta ilgili sütun bir sonraki numarayı alacaktır.
6
Veritabanı Ders Notları (5)
Öğr.Gör. Erkut TEKELİ
2. CONSTRAINT’leri yönetmek
Bir tablo üstünde hangi Constraint’lerin tanımlı olduğunu görebilmek için çeşitli yollar
vardır:
CONSTRAINT’leri silmek
Constraint’lerin veritabanında bazen anlık olarak denetlemesi istenmez. Bir süre için
Constraint’leri susturmak gerekebilir. Bu türden durumlarda şu genel ifadeden yararlanacağız;