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.