Veri Bütünlüğü - Sibel SOMYÜREK

advertisement
VERI BÜTÜNLÜĞÜ
Sibel SOMYÜREK
VERI BÜTÜNLÜĞÜ

Veri bütünlüğü nedir?
VERI BÜTÜNLÜĞÜ

İlişkisel veri tabanı modellerinde
yanlış ya da ilişkisiz verilerin çeşitli yollarla veri
tabanına kaydedilmesi önlenip,
 farklı tablolara dağıtılan verilerin kendi içerisinde
tutarlılık göstermesine veri bütünlüğü denir.

VERI BÜTÜNLÜĞÜ

Veri bütünlüğü, verinin
doğruluğunu ve
 tutarlılığını anlatmaktadır.

VERI BÜTÜNLÜĞÜ

Uygulamalarda
önceden bir takım kurallar tanımlanarak,
 bozuk, tutarsız verilerin girişi önlenerek ya da
 mevcut bilgilerin üzerinde değişiklik yaparken
bozulması engellenerek
veri bütünlüğü sağlanır.

VERI BÜTÜNLÜĞÜ

Veri bütünlüğü, verinin
Doğru olmasını
 Tam olmasını ve
 tutarlılığını anlatmaktadır.

VERI BÜTÜNLÜĞÜ

Örneğin öğrenci bilgilerinin tutulduğu bir
tabloda:
öğrenci numarası alanının tek olması,
 öğrenci numarası alanında 12 karakterden oluşan bir
değer olması,
 bölüm kodu alanının bölümler tablosunda muhakkak
bir karşılığının olması vb.

VERI BÜTÜNLÜĞÜNÜ SAĞLAMA
YÖNTEMLERI

Veri tabanı yönetim sistemlerinde veri bütünlüğü
hangi yollarla sağlanabilir?
VERI BÜTÜNLÜĞÜNÜ SAĞLAMA
YÖNTEMLERI

VTYS’de veri bütünlüğünü iki yöntemle
sağlanabilir
1.
2.
Tanımlanabilir veri bütünlüğü
Prosedürel (Programsal) veri bütünlüğü
VERI BÜTÜNLÜĞÜNÜ SAĞLAMA
YÖNTEMLERI

Tanımlanabilir veri bütünlüğü
Tanımlanan nesnelerin kendi özellikleri sayesinde
sağlanabilen veri bütünlüğüdür.

Prosedürel (Programsal) veri bütünlüğü
Bir programlama mantığıyla bütünlüğün tasarlanması
gerekir.
VERI BÜTÜNLÜĞÜNÜ SAĞLAMA
YÖNTEMLERI

Tanımlanabilir veri bütünlüğü
1.
2.
3.
Constraint’ler (kısıtlayıcılar),
Rule’lar (kurallar) ve
Default’lar (varsayılanlar)
VERI BÜTÜNLÜĞÜNÜ SAĞLAMA
YÖNTEMLERI

Prosedürel veri bütünlüğü
1. Trigger (tetikleyici)
2. Stored Procedure (saklı yordam)
VERI BÜTÜNLÜĞÜNÜ SAĞLAMA
YÖNTEMLERI

Prosedürel veri bütünlüğü
1. Trigger (tetikleyici)
2. Stored Procedure (saklı yordam)
VERI BÜTÜNLÜĞÜNÜ SAĞLAMA
YÖNTEMLERI

Constraint’ler (kısıtlayıcılar)
1.
2.
3.
4.
5.
Primary Key Constraint
Unique Constraint
Check Constraint
Default Constraint
Foreign Key Constraint
VERI BÜTÜNLÜĞÜNÜ SAĞLAMA
YÖNTEMLERI

Primary Key Constraint





Veri tabanı tablosundaki bir satır için benzersiz bir
tanımlayıcıdır
Primary key boş deger alamaz
Her satırda farklı bir değer almak zorundadır
Her tabloda en fazla bir tane primary key kısıtı
olabilir.
Yapısında primary key olmayan bir tablo hiçbir
tabloyla ilişkilendirilemez.
VERI BÜTÜNLÜĞÜNÜ SAĞLAMA
YÖNTEMLERI

Primary Key Constraint
Örnek:
 Öğrenci bilgileri tablosu için öğrencino sütunu
birincil anahtar zorlayıcısı olarak tanımlanabilir.
 Bu durumda öğrenci numarası olmayan hiçbir
öğrenci tabloya eklenemez
 Girilmiş bir öğrenci numarası tekrar girilemez.

VERI BÜTÜNLÜĞÜNÜ SAĞLAMA
YÖNTEMLERI

Primary Key Constraint

Örnek:
CREATE TABLE ogrenci(
ogrno INT (11) PRIMARY KEY,
ad CHAR(25),
soyad CHAR(25));
VERI BÜTÜNLÜĞÜNÜ SAĞLAMA
YÖNTEMLERI

Primary Key Constraint

Örnek:
CREATE TABLE ogrenci(
ogrno INT (11),
ad CHAR(25),
soyad CHAR(25),
CONSTRAINT PK_ogrenci PRIMARY KEY (ogrno));
VERI BÜTÜNLÜĞÜNÜ SAĞLAMA
YÖNTEMLERI

Primary Key Constraint

Örnek:
CREATE TABLE ogrenci(
ogrno INT (11),
ad CHAR(25),
soyad CHAR(25),
CONSTRAINT PK_ogrenci PRIMARY KEY (ogrno,
ad));
VERI BÜTÜNLÜĞÜNÜ SAĞLAMA
YÖNTEMLERI

Unique Key Constraint
Bir tabloda birçok sütunda tanımlanabilir
 Primary key’e benzer ancak küçük bir fark vardır
 Her satırda farklı bir değer almak zorundadır
 Boş deger alabilir

VERI BÜTÜNLÜĞÜNÜ SAĞLAMA
YÖNTEMLERI

Unique Key Constraint
Örnek:
 Örneğin öğrenci bilgileri tablosu için hem öğrenci no
sürunu hem de tckimlikno sütunu tekildir.
 Öğrenci no birincil anahtar olarak tanımlanmışsa
tckimlikno da unique key olarak tanımlanabilir.

VERI BÜTÜNLÜĞÜNÜ SAĞLAMA
YÖNTEMLERI

UNIQUE Key Constraint

Örnek:
CREATE TABLE ogrenci(
ogrno INT (11) PRIMARY KEY,
Tckimlikno INT(11) UNIQUE,
ad CHAR(25),
soyad CHAR(25)
);
VERI BÜTÜNLÜĞÜNÜ SAĞLAMA
YÖNTEMLERI

UNIQUE Key Constraint

Örnek:
CREATE TABLE ogrenci(
ogrno INT (11) PRIMARY KEY,
Tckimlikno INT(11),
ad CHAR(25),
soyad CHAR(25),
CONSTRAINT UN_ogr UNIQUE (Tckimlikno)
);
VERI BÜTÜNLÜĞÜNÜ SAĞLAMA
YÖNTEMLERI

Check Constraint
Bir sütuna ait değerin belirli formata uygun şekilde
girilmesi için oluşturulan bir kısıtlayıcıdır
 Bir sütundaki değerin geçerliliğini başka bir sütunla
karşılaştırarak elde edebilmemize olanak sağlar.

VERI BÜTÜNLÜĞÜNÜ SAĞLAMA
YÖNTEMLERI

Check Constraint
Örnek:
 Bir sütuna bir metin ifadesi girmek istiyoruz ama
metnin uzunluğunun 20 karakterden fazla
olmamasını istiyoruz.
 Ya da bir sütuna bayan ya da erkek değer, girilmesi
gerekiyor
 Bu durumda check constraint kullanılır.

VERI BÜTÜNLÜĞÜNÜ SAĞLAMA
YÖNTEMLERI

CHECK Constraint

Örnek:
CREATE TABLE ogrenci(
ogrno INT (11) PRIMARY KEY,
Tckimlikno INT(11) UNIQUE,
plakano INT(3),
ad CHAR(25),
soyad CHAR(25),
CONSTRAINT ilplakano CHECK (plakano BETWEEN
1 and 81)
);
VERI BÜTÜNLÜĞÜNÜ SAĞLAMA
YÖNTEMLERI

CHECK Constraint

Örnek:
CREATE TABLE ogrenci4(
ogrno INT (11) PRIMARY KEY,
Tckimlikno INT(11) UNIQUE,
ogrtur CHAR (12),
ad CHAR(25),
soyad CHAR(25),
CONSTRAINT tur CHECK (ogrtur in ('Lisans', 'Yüksek
Lisans', 'Doktora'))
)
VERI BÜTÜNLÜĞÜNÜ SAĞLAMA
YÖNTEMLERI

Default Constraint
Bir sutüna varsayılan bir değer atama işlemi yapar.
 Bir satırın bir sütununa değer girilmediği bir
durumda daha önceden belirlenen bir default
değerin, o satıra otomatik olarak aktarılmasını
yağar.

VERI BÜTÜNLÜĞÜNÜ SAĞLAMA
YÖNTEMLERI

Default Constraint
Örnek:
 E ticaret sistemine üye olan müşterilerin üyelik
tarihlerini sistemden otomatik olarak alıp ilgili
sütuna aktarmak için
 Ya da 2 farklı gruptaki öğrencilerden grup
girilmediğinde otomatik bir değer girilmesi için
kullanılır.

VERI BÜTÜNLÜĞÜNÜ SAĞLAMA
YÖNTEMLERI

DEFAULT Constraint

Örnek:
CREATE TABLE ogrenci5(
ogrno INT (11) PRIMARY KEY,
Tckimlikno INT(11) UNIQUE,
ogrtur CHAR (12) DEFAULT 'Lisans',
ad CHAR(25),
soyad CHAR(25)
);
VERI BÜTÜNLÜĞÜNÜ SAĞLAMA
YÖNTEMLERI

Not Null Constraint

Bir tablodaki bir sütuna girilecek her kaydın
mutlaka bir değer alması gerektiğini gsterir.ö
VERI BÜTÜNLÜĞÜNÜ SAĞLAMA
YÖNTEMLERI

Not Null Constraint
Örnek:
 Farklı illerden yarışmacıların kayıt yaptıkları bir
uygulamada il adı alanı boş bırakılmasın
istendiğinde bu kısıt kullanılabilir.

VERI BÜTÜNLÜĞÜNÜ SAĞLAMA
YÖNTEMLERI


Not Null Constraint
Örnek
CREATE TABLE yarismacilar(
no INT(4) PRIMARY KEY,
ad VARCHAR(30),
soyad VARCHAR(30),
iladi CHAR (20) NOT NULL
);
VERI BÜTÜNLÜĞÜNÜ SAĞLAMA
YÖNTEMLERI

Foreign Key Constraint
Örnek:
 Anket cevaplarının girildiği tablodaki soru no
sütunun anket sorularının bulunduğu tablodaki
soruno sütunundan aktarılması için kullanılır.

VERI BÜTÜNLÜĞÜNÜ SAĞLAMA
YÖNTEMLERI

FOREIGN KEY

Örnek:
CREATE TABLE anketcevaplar(
cevapno INT (11) PRIMARY KEY,
soruno INT(11),
cevap VARCHAR(100),
CONSTRAINT anketsoru FOREIGN KEY (soruno)
REFERENCES anketsorular(no)
);
VERI BÜTÜNLÜĞÜNÜ SAĞLAMA
YÖNTEMLERI



Update/Delete İşlem Kısıtları
Yabancıl anahtar kısıtı ile referans alınan
tablodaki değer üzerinde değişiklik ya da silme
işlemi yapılacağında ne tür işlemlerin
yapılabileceği ile ilgili kısıttır.
Bu işlemler:




No Action
Set Null
Cascade
Set Default
VERI BÜTÜNLÜĞÜNÜ SAĞLAMA
YÖNTEMLERI

Update/Delete İşlem Kısıtları

No Action:

Yabancıl anahtar tarafından referans verilen değer
silinmeye ya da değiştirilmeye çalışıldığında işlem
gerçekleşmez.
VERI BÜTÜNLÜĞÜNÜ SAĞLAMA
YÖNTEMLERI


No Action
Örnek
CREATE TABLE yarismacilar(
no INT(4) PRIMARY KEY,
ad VARCHAR(30),
soyad VARCHAR(30),
iladi CHAR (20) NOT NULL,
CONSTRAINT FK_iladi FOREIGN KEY (iladi)
REFERENCES iller(adi) ON DELETE NO ACTION
);
VERI BÜTÜNLÜĞÜNÜ SAĞLAMA
YÖNTEMLERI

Update/Delete İşlem Kısıtları

Set Null:

Yabancıl anahtar tarafından referans verilen değer
silinmeye ya da değiştirilmeye çalışıldığında,
yabancıl anahtarın bulunduğu tablodaki ilgili alana
boş değer atanır.
VERI BÜTÜNLÜĞÜNÜ SAĞLAMA
YÖNTEMLERI


Set Null
Örnek
CREATE TABLE yarismacilar(
no INT(4) PRIMARY KEY,
ad VARCHAR(30),
soyad VARCHAR(30),
iladi CHAR (20) NOT NULL,
CONSTRAINT FK_iladi FOREIGN KEY (iladi)
REFERENCES iller(adi) ON DELETE SET NULL
);
VERI BÜTÜNLÜĞÜNÜ SAĞLAMA
YÖNTEMLERI

Update/Delete İşlem Kısıtları

Cascade:

Yabancıl anahtar tarafından referans verilen değer
silinmeye ya da değiştirilmeye çalışıldığında,
yabancıl anahtarın bulunduğu tablodaki ilgili alana
değişiklik yansıtılır.
VERI BÜTÜNLÜĞÜNÜ SAĞLAMA
YÖNTEMLERI


Cascade
Örnek
CREATE TABLE yarismacilar(
no INT(4) PRIMARY KEY,
ad VARCHAR(30),
soyad VARCHAR(30),
iladi CHAR (20) NOT NULL,
CONSTRAINT FK_iladi FOREIGN KEY (iladi)
REFERENCES iller(adi) ON DELETE CASCADE
);
VERI BÜTÜNLÜĞÜNÜ SAĞLAMA
YÖNTEMLERI

Update/Delete İşlem Kısıtları

Set Default:

Yabancıl anahtar tarafından referans verilen değer
silinmeye ya da değiştirilmeye çalışıldığında,
yabancıl anahtarın bulunduğu tablodaki ilgili alana
daha önceden tanımlanmış olan varsayılan değer
atanır.
VERI BÜTÜNLÜĞÜNÜ SAĞLAMA
YÖNTEMLERI
Set Default:
 Örnek

CREATE TABLE yarismacilar5(
no INT(4) PRIMARY KEY,
ad VARCHAR(30),
soyad VARCHAR(30),
iladi CHAR (20) NOT NULL,
CONSTRAINT FK_iladi FOREIGN KEY (iladi)
REFERENCES iller(adi) ON DELETE SET DEFAULT
)
VERI BÜTÜNLÜĞÜNÜ SAĞLAMA
YÖNTEMLERI

Tanımlamalı veri bütünlüğünün üç türü vardır:
1.
2.
3.
Alan Bütünlüğü(Domain)
Varlık Bütünlüğü (Entity)
Referans Bütünlüğü (Referential)
VERI BÜTÜNLÜĞÜNÜ SAĞLAMA
YÖNTEMLERI

Tanımlamalı veri bütünlüğünün üç türü vardır:
1.



Alan Bütünlüğü(Domain)
Alan kısıtları bir veya birkaç sütun ile ilişkilidir.
Temel amaç sütunun ya da birkaç sütunun
tanımlanan kritere uygun olmasıdır.
Tabloya yeni satır eklendiğinde ya da var olan
satırlardan birisi update edildiğinde kısıt gerekli
kontrolü yapar.
VERI BÜTÜNLÜĞÜNÜ SAĞLAMA
YÖNTEMLERI

Tanımlamalı veri bütünlüğünün üç türü vardır:
2.



Varlık Bütünlüğü (Entity)
Varlık kısıtları satırlarla ilgilidir.
Bu tarz kısıtlar tüm sütunu dikkate almak yerine
özellikle tek bir satır ile ilişkilidir.
Bir satırın bir kolonundaki bilginin diğer hiç bir
satırda bulunmaması garanti altına alır.
VERI BÜTÜNLÜĞÜNÜ SAĞLAMA
YÖNTEMLERI

Tanımlamalı veri bütünlüğünün üç türü vardır:
Referans Bütünlüğü (Referential)
 Bir sütundaki bilginin diğer bir sütun ile eşleşmesi
zorunluluğunu sağlayarak bütünlüğü korur.
 Eşleşen sütunlar farklı iki tablonun sütunları
olabileceği gibi aynı tablonun sütunları da olabilir.
3.
VERI BÜTÜNLÜĞÜNÜ SAĞLAMA
YÖNTEMLERI
Tanımsal Bütünlük Türleri
Yöntemler
Alan Bütünlüğü(Domain)
Check Constraint
Default Constraint
Primary ve Foreign Key
Constraint çifti
Varlık Bütünlüğü (Entity)
Primary Key Constraint
Unique Key Constraint
Referans Bütünlüğü
(Referential)
Check Constraint
Foreign Key Constraint
VERI BÜTÜNLÜĞÜNÜ SAĞLAMA
YÖNTEMLERI

Rule

Check constraint ile aynı işi yapan kurallar oluşturulabilir.

Constraint’ten farkı tablodan ayrı bir nesne olarak oluşturulmasıdır

Bu nedenle oluşturulduktan sonra hangi tablonun hangi sütunu ile
ilişkili olduğu belirtilmek üzere bağ kurulmalıdır.
VERI BÜTÜNLÜĞÜNÜ SAĞLAMA
YÖNTEMLERI

Default

Default nesnesi default constraint ile aynı işleve sahiptir.

Constraint’ten farkı ayrı bir nesne gibi derlenmesidir.

Default nesnesine destek verilmesinin nedeni geriye dönük
uyumluluğu sağlamak içindir.
VERI BÜTÜNLÜĞÜNÜ SAĞLAMA
YÖNTEMLERI

Veri bütünlüğü ne kadar alt katmanda
çözülürse o kadar iyi olur
Veri Bütünlüğü sağlama
yöntemleri
Kısıtlar (constraint)
performans
Default ve rule
Trigger
Stored procedure veSQL
server dışından
fonksiyonellik
Download