4.2. Anahtarlar
SQL Dili kısmındaki hava_durumu ve iller tablolarını tekrar ele alalım ve hava_durumu tablosuna girilecek kayıtlardan iller tablosundaki kayıtlarla eşleşmeyecek olanlarının tabloya girilmeyeceğinden emin olmak istediğinizi varsayalım. Buna verilerin göreli bütünlüğünün sağlanaması diyoruz. Basitleştirmeli veritabanı sistemlerinde bu şöyle gerçeklenir: Önce iller tablosunda eşleşen bir kaydın olup olmadığına bakılır ve yeni hava_durumu kaydının tabloya girilip girilmeyeceğine karar verilir. Bu yaklaşım çok sakıncalı sorunlar içerir, ancak PostgreSQL bunu sizin için yapabilir.
Tabloların yeni bildirimleri şöyle olurdu:
CREATE TABLE iller (
ad varchar(80) primary key,
konum point
);
CREATE TABLE hava_durumu (
il varchar(80) references iller(ad),
asg_sck int,
azm_sck int,
yağış real,
tarih date
);
Şimdi geçersiz bir kaydı girmeye çalışalım:
INSERT INTO hava_durumu VALUES ('Berkeley', 45, 53, 0.0, '1994-11-28');
Çıktısı:
HATA: "hava_durumu" tablosu üzerindeki ekleme veya güncelleme işlemi "hava_durumu_il_fkey" foreign key kısıtlamasını ihlal ediyor AYRINTI: "iller" tablosunda (il)=(Berkeley) anahtarı mevcut değildir.
Anahtarların davranışları uygulamanıza en iyi şekilde uyarlanabilir. Bu eğitmende bu basit örnekten daha ileri gitmeyeceğiz, fakat daha fazla bilgi edinmek isterseniz, PostgreSQL belgelerindeki Data Definition kısmına bakabilirsiniz. Anahtarları doğru şekilde kullanarak veritabanı uygulamalarınızın kalitesini oldukça arttırabilirsiniz, dolayısıyla anahtar kullanımını iyi öğrenmenizi öneririz.