4 Şubat 2014 Salı

Veritabanı Kısıtlamaları


            İlişkisel veritabanlarında bütünlük en önemli özelliklerden biridir . Daha basit olarak , girilen veriler doğru ve tutarlı olmalıdır yani girilen bir verinin tekrar girilmemesi , olmayan verilerin girilmeye çalışılması gibi . Bunu bir takım kısıtlamalarla yapabiliriz .



             Primary Key (Birincil Anahtar) : Primary key tabloların olmazsa olmazından biridir . Eğer tablonuz ilişkisel veritabanı tablosu ise %99 bir alanı primary key seçmek zorundasınız . Tc kimlik no , banka hesap no , sicil no , okul no  gibi  tek bir kişiye özel alanların tekrar etmemesi için primary key seçilmesi zorunludur . Primary key seçilen alan boş geçilemez , tekrarlanamaz , büyük bir olasılıkla değiştirilemez ve boş geçilemez . Genellikle bu alan veri girilmesi yerine otomatik oluşturulan alanlardır. "Oracle da sequence , sql server da identity ile yapılabilmektedir ."


           Unique Key (Tekil Anahtar) : Unique key bir tabloda tekrar etmemesi gereken başka bir alan daha varsa - primary key gibi :) - kullanılan kısıtlamadır . Primary key ile Unique key arasındaki fark ise unique key'in null geçilebilebilir olmasıdır .



            Composit Key (Birleşik Anahtar): Aslında pek karşılaşılmayan composit key iki veya daha fazla kolonun birleşip primary key gibi kullanılmasıdır . " Örneğin bir veritabanına bir öğrenci adı eklendiğinde aynısında binlerce olabilir ama okul_adı ve sınıf_adı kolonlarını key olarak işaretlerseniz veri tekrarını engellemiş olursunuz ayrıca ogrenci_id için alan açmamış kullanılan alandan kazanmış olursunuz ama ne kadar sağlıklıdır tartışılır :) ".



           Foreign Key (Referans Anahtar) : Foreign key iki tabloyu ilişkilendirmek için kullanılan anahtardır . Bir tablonun primary key i ile diğer bir tablonun kolonu ilişkilendirilir . Normalizasyonda amaç birkaç alan birbirine bağlı ve sürekli tekrar ediyorsa onu başka bir tabloya taşımak gerekir . İşte bu taşınan tablo tek bir foreign key ile taşındığı yere bağlanabilir . Anlatılması ve anlaması yeterince zor olan bu foreign key'i bir örnek açıklamak gerekirse ...


Hastaneler Tablosu



Burada dikkat ettiyseniz bölge ad , bölge  müdürü , bölge  müdür yardımcısı , bölge  aciklamasi ve bolge no kolonları sürekli tekrar ediyor . Şimdi gelin bu tekrarı engellemek için tabloyu hastane ve bolgeler olmak üzere iki tabloya bölelim


Hastane Tablosu



Bolge Tablosu



           Şimdi bir de en üstteki Hastaneler tablosunun binlerce satırdan oluştuğunun hayal edin . Gereksiz yere aynı değerler tekrar tekrar girilecek  storage  , zaman , maliyet hepsinden zarar . Kesinlikle bu tablo ikiye bölünmeli . İşte foreign key de tam bu sırada imdadımıza yetişiyor . Bu bölünme sonucu ortaya çıkan hastane tablosu ile bolge tablosunu birbirine bağlayan bolge_id  bir foreign key dir . Aynı zamanda bolge tablosundaki bolge_id bir primary key dir.


Foreign Key   : Hastane tablosu ile Bolge tablosunu birbirine bağlayan bölge_id bir foreign keydir . Hastane tablosuna olmayan bir bolgeyi girmenizi engeller .

Primary Key : Bölge tablosundaki Bölge_id ve Hastane tablosundaki Hastane_id primary key olmalıdır çünkü sadece tek bir hastaneyi ve tek bir bölgeyi işaret etmelidir .

Unique Key : Bolge_no adlı kolon bir unique keydir . Çünkü her ilin tek bir plaka numarası vardır fakat burda girmesenizde bir sıkıntı çıkarmaz .

Composit Key : Burada Bölge_ad ve Hastane_ad  key olarak işaretlenip  primary key olarak kullanılabilir fakat bir primary key koymaya üşenmek başınıza bir sürü dert açabilir bu yüzden bunu pek tavsiye etmiyorum :)

0 yorum:

Yorum Gönder