Veritabanı Programlama Dersi 4. Ünite Sorularla Öğrenelim

Kısıtlayıcı ve Tetikleyiciler

1. Soru

Veritabanı sistemleri ne işe yarar?

Cevap

Veritabanı sistemleri, büyük miktarlardaki verileri depolamaya, istenildiği zaman bu verilere erişmeye, veriler üzerinde sorgulamaya ve verileri değiştirmeye yarar.


2. Soru

Pasif sistemlerde verilerin sorgulanması veya değiştirilmesi nasıl yapılır?

Cevap

Pasif sistemlerde verilerin sorgulanması veya değiştirilmesi kullanıcı veya arayüz tarafından oluşturulacak sorgularla yapılmaktadır.


3. Soru

Aktif veritabanı nedir?

Cevap

Veritabanı içinden veya dışından gelen olaylara oluşturulacak kurallar sayesinde otomatik olarak tepki üreten veritabanına aktif veritabanı denir.


4. Soru

Sütunun tanım kümesi nedir?

Cevap

Veritabanı uygulamalarında, tablodaki her bir sütun için girilebilecek değerlerin bir değerler kümesi vardır. Bir sütun için izin verilen değerler kümesine sütunun tanım kümesi denir.


5. Soru

Veri bütünlüğü nedir?

Cevap

Veritabanı tablolarındaki sütunlara girilen verilerin hem tip hem de tanım kümesi olarak doğru ve tutarlı olması gerekir. Bu kapsamda verinin doğru ve tutarlı bir şekilde işlenmesi veri bütünlüğü olarak ifade edilmektedir. Bir tabloda veri güncelleme, silme veya ekleme gibi işlemler yapılırken veri tutarlılığının kaybolmamasının garanti altına alınması demektir. 


6. Soru

Veri bütünlüğü kaça ayrılır ve adları nelerdir?

Cevap

Veri bütünlüğü temel olarak iki tipe ayrılmaktadır. Bunlar tanımlanabilir veri bütünlüğü ve prosedürel (programsal) veri bütünlüğüdür.


7. Soru

Tanımlanabilir veri bütünlüğü nedir?

Cevap

Tanımlanabilir veri bütünlüğü, tanımlanan nesnelerin kendi özellikleri sayesinde sağlanabilen veri bütünlüğüdür.


8. Soru

Prosedürel (Programsal) veri bütünlüğü nedir?

Cevap

Tanımlanabilir veri bütünlüğünden daha üst düzey programlamayla müdahale edilerek daha üst düzey veri bütünlüğü sağlanması gereken tip veri bütünlüğüne prosedürel (programsal) veri bütünlüğü denir.


9. Soru

Veri bütünlüğü sağlama yöntemlerinin fonksiyonellik açısından sıralanması nasıldır?

Cevap

Veri bütünlüğü sağlama yöntemlerinin fonksiyonellik açısından sıralanması en alttan en üste şöyledir: Kısıtlar, Kurallar/Varsayılanlar, Tetikleyiciler, Program.


10. Soru

Veritabanında kısıt nedir?

Cevap

Veritabanında bütünlüğü sağlamak için veri üzerindeki oluşturulmuş mantıksal sınırlamalara kısıt adı verilir.


11. Soru

Kısıtlayıcılar tabloların tanımlamasıyla beraber nasıl yapılır?

Cevap

Kısıtlayıcılar tabloların tanımlamasıyla beraber yapılmaktadır. Kısıtlar, tablo oluştururken CREATE TABLE, eğer tablo oluşturulmuşsa ALTER TABLE komutuyla oluşturulabilir. Ancak ALTER TABLE komutu ile kısıt oluşturulacaksa daha önceden sütunlara girilmiş bilgilerin kontrol edilmesi gerekir. Bununla beraber oluşturulacak her kısıta bir isim verilmesi gerekmektedir.


12. Soru

Tanımlanabilir veri bütünlüğü esaslarında satır bütünlüğü kısıtlarını açıklayınız.

Cevap

Satır bütünlüğü, tabloya girilen kayıtlardan her bir kaydın diğer kayıtlardan farklı bir değer olmasını sağlar. (Sf: 64, Tablo 4.1)


13. Soru

Tanımlanabilir veri bütünlüğü esaslarında sütun bütünlüğü kısıtlarını açıklayınız.

Cevap

Sütun bütünlüğü, tablodaki herhangi bir sütunun hangi gruptan verileri alabileceğini veya NULL bir değer alıp alamayacağını sağlar. (Sf: 64, Tablo 4.1)


14. Soru

Tanımşanabilir veri bütünlüğü esaslarında referanssal bütünlük kısıtlarını açıklayınız.

Cevap

Referanssal bütünlük kısıtları bir kolondaki bilginin diğer bir kolon ile eşleşmesi zorunluluğunu sağlayarak bütünlüğü korur. Eşleşen kolonlar farklı iki tablonun kolonları olabileceği gibi aynı tablonun kolonları da olabilir. (Sf: 64, Tablo 4.1)


15. Soru

Kısıtlara mantıklı isimler vermek neden önemlidir? Açıklayınız.

Cevap

Kısıtlara verilecek isimlerin mantıklı olması tercih sebebidir. Böylece verilen kısıt isimlerine bakarak hangi tablo veya sütuna kısıt verildiği kolayca anlaşılabilir. Kısıtlara isim vermek için ilk önce kısıtlayıcı tekniğinin kısaltılmış hali, daha sonra da tablo veya sütun ismi gibi bir yöntem izlenebilir.


16. Soru

Birincil Anahtar Kısıtlayıcısı (BAK) nedir? Açıklayınız.

Cevap

Birincil Anahtar Kısıtlayıcısına Primary Key Constraint denir. Veritabanında satır bütünlüğü sağlamak için kullanılan bu kısıtlayıcı bir tablodaki bir satıra girilen verilerden her bir satırı diğer satırlardan ayıran tanımlayıcı bir değer olmasını sağlar. Birinci kısıtlayıcı ile bir satıra daha önce girilmemiş değerler girilmesi sağlanır. Bu sayede her satırın diğer satırlardan farklı olmasını gerçekleştirir ve her satırın tekilliğini sağlar.


17. Soru

Tekil Alan Kısıtlayıcısı (TAK) nedir? Açıklayınız.

Cevap

Tekil Alan Kısıtlayıcısına Unique Constraint adı verilir. Birincil anahtar kısıtlayıcı gibi veritabanındaki satır bütünlüğünü sağlamak üzere kullanılan bu kısıtlayıcı ile istenilen sütundaki verilerin tekil (her değerden sadece bir tane) olması sağlanır. Birincil anahtar kısıtlayıcısının aksine tablodaki birden fazla sütuna tekil kısıtlayıcı tanımlanabilir ve sütundaki değer NULL olabilir. Eğer sütunu girilen değer NULL değil ise tekil alan kısıtlayıcısı tanımlanan sütuna mutlaka farklı değerler girilmesini sağlar.


18. Soru

Kontrol Kısıtlayıcısı (KK) nedir? Açıklayınız.

Cevap

Kontrol Kısıtlayıcısına Check Cnostraint denir. Tablodaki herhangi bir sütunun hangi gruptan verileri alabileceğini ve girilebilecek verileri bir koşul ile kısıtlayarak istenilen verilerin girilmesini sağlayan bütünlüktür.  Bununla beraber sütunun NULL değer alıp alamayacağının kontrolü de bu kısıtlayıcı ile sağlanabilir. Ayrıca iki farklı sütun değerini karşılaştırarak farklı sütunlardaki veri bütünlüğü de sağlanabilir. Aslında temel olarak Kurallar nesnesi ile aynı işleve sahiptir. 


19. Soru

Yabancı Anahtar Kısıtlayıcısı (YAK) nedir? Açıklayınız

Cevap

Yabancı Anahtar Kısıtlayıcısına Foreign Key Constraint denir. Bir tablodaki bir sütundaki değerin diğer tablolardaki değerlerle denetlenmesini sağlayan kısıtlayıcıdır. Bir tabloya yabancı anahtar kısıtlayıcısı tanımlandığı zaman referans edilen ve referans eden iki tablo arasında bir ilişki kurulması sağlanır. Böylece bir tablo için yabancı anahtar kısıtlayıcısı tanımlanmış ise bu tabloya girilecek her kaydın referans edilen tablodaki kayıtla eşleşmesi gerekir. Eğer yabancı anahtar kısıtlayıcı olan sütun NULL değerler alabiliyorsa bu durumda eşleşme aranmaz. 


20. Soru

Varsayılan Kısıtlayıcısı (VK) nedir? Açıklayınız.

Cevap

Varsayılan Kısıtlayıcısına Default Constraint denir. Ekleme işlemi için geçerli olan ve bir tabloya veri girişi esnasında verinin girildiği alan için alacağı varsayılan bir değerin tanımlanması için kullanılan kısıtlayıcıdır. Varsayılan kısıtlayıcılar için en pratik uygulama alanı işlemlerin gerçekleşme tarihlerini kaydetmek için sistem tarihini alan bir sütun tanımlamaktır. 


21. Soru

Tetikleyiciler nedir? Açıklayınız.

Cevap

Saklı yordamların özel bir çeşidi olan tetikleyiciler kullanılarak SQL Server üzerinde herhangi bir eylem gerçekleştiğinde başka bir eylemin gerçekleşmesi sağlanabilir. Yani yapılan bir eylem sonrası başka bir eylemin yapılması tetiklenebilir. Tetikleyiciler, genelde veritabanı bütünlüğünün sağlanması için kontrol mekanizmaları oluşturmak amacıyla kullanılırlar. Bununla beraber veritabanı bir eylem gerçekleştirdiği zaman aynı veya başka bir tabloya kayıt ekleme, silme veya güncelleme ile beraber rapor almak gibi başka eylemleri gerçekleştirmek için kullanılabilir. Özetle tetikleyiciler, veritabanı bir eylem gerçekleştiğinde otomatik olarak başka eylem / veya eylemler gerçeklemesi amacıyla kullanılan özel saklı yordamlardır.


22. Soru

Tetikleyici kullanma amaçlarından bazıları nelerdir?

Cevap

Çeşitli amaçlara uygun olarak tetikleyiciler kullanmak mümkündür. Bu amaçlardan bazıları aşağıdaki gibidir:

  • Satırların tekilliğini sağlamak için birincil anahtar üretmek
  • Veritabanına erişimleri ve değişiklikleri takip etmek
  • Veritabanının üretmiş olduğu standart hata mesajlarının dışında bir hata mesajı üretmek
  • Otomatik olarak rapor üretmek, e-posta atmak
  • Karmaşık iş kurallarını düzenlemek
  • Veritabanı bütünlüğünü sağlamak

23. Soru

MS SQL Server’da kaç farklı tetikleyici türü vardır ve adları nelerdir?

Cevap

MS SQL Server’da iki farklı tetikleyici türü vardır. Bunlar ardı sıra ve yerine tetikleyicileridir.


24. Soru

Ardı sıra tetikleyiciler nedir?

Cevap

Veritabanında bir eylem gerçekleştiği zaman başka bir eylem veya eylemlerin gerçekleşmesi istediği zaman kullanılan tetikleyicilere ardı sıra tetikleyicileri denilmektedir.


25. Soru

Yerine tetikleyiciler nedir? Açıklayınız.

Cevap

Ardı sıra tetikleyicilerinin aksine tetikleyiciyi çağıran eylem gerçekleşirken devreye giren ve kendi içinde tanımlanan komutları icra etmeye başlayan tetikleyicilerdir. Yani, tetikleyici çağıran eylem yerine geçerek tanımlanan eylemleri gerçekleştirerek çoğunlukla kontrol amaçlı kullanılırlar.


26. Soru

INSERT tetikleyicisi nasıl kullanılır? Açıklayınız.

Cevap

Bir tablo üzerinde yeni kayıt veya kayıtlar girildikten sonra otomatik olarak bir eylem veya eylemler yapılması istenildiği zaman INSERT tetikleyicisi kullanılır. INSERT tetikleyici devreye girdikten sonra yeni eklenen kayıtların bir kopyasının tutulduğu sahte bir tablo oluşturulur. Bu sahte tablo, tetikleyici sonlanana kadar saklanan bu tablo asıl tablonun yapısal bir kopyasıdır. SQL Server, satır bazında tetikleyici desteği sağlamamaktadır ve dolayısıyla eğer bir tabloya birden fazla kayıt girildiyse tetikleyici her kayıt için ayrı ayrı devreye girmeyip tek seferde bütün eklenen kayıtlar için yapılması istenen işlemi gerçekleştirir.


27. Soru

DELETE tetikleyicisi nedir? Açıklayınız.

Cevap

Tablodan bir kayıt silindiğinde otomatik olarak yapılması istenen işlemler için kullanılan bu tetikleyicide silinen kayıtlar DELETED sahte tablosuna kaydedilir. DELETED sahte tablosunun INSERTED sahte tablosundan farkı, asıl tablodan silinen kayıt artık DELETED sahte tablosunda yer almaktadır. Böylece silme işleminden vazgeçilmesi durumunda kayıt kaybedilmemiş olur.


28. Soru

UPDATE tetikleyicisinin çalışma prensibini açıklayınız.

Cevap

Tablo üzerindeki kayıt ya da kayıtlarda güncelleme olduğunda devreye girer. INSERT ve DELETE tetikleyicilerden farklı olarak UPDATE tetikleyici devreye girdiğinde eklenen sahte tablosu asıl tablodaki kayıtlardan, düzenlenmiş kayıtların kopyasını; silinen sahte tablosu ise kayıtların düzenleme işleminden önceki hallerini tutar.


29. Soru

Yıllık üyelik aidatı olan bir organizasyon olduğunu düşünelim. Yıllık üyelik aidatını yatıran kişiler organizasyonda yapılan tüm haklara sahip olsun. Bir kişi düzenlenen bir organizasyona katılmak istediğinde kişinin bilgileri girildikten sonra (tablo veya tablolara INSERT işlemi gerçekleşmesi) yıllık ücretinin yatırılıp yatırılmadığının kontrol edilmesi gerekmektedir. Bu kontrol kısıtlayıcılarla mı yapılır yoksa tetikleyicilerle mi? Neden? Açıklayınız.

Cevap

Kontrol etme eylemi INSERT tetikleyicisi ile gerçekleştirilebilir. Eğer yıllık ücret yatırılmadı ise ROLLBACK yapılarak ekleme eylemi geri alınabilir. Böyle bir durumu kısıtlayıcılarla yapmak mümkün değildir. Çünkü kısıtlayıcıların, sadece ekleme eyleminin gerçekleştiği tabloya veya satıra erişim hakkı vardır. Kısıtlayıcılar başka tablo veya satırlara erişemezler. Ama tetikleyicilerin diğer tablo ve satırlara erişim hakkı vardır. Böyle durumlarda tetikleyiciler kısıtlayıcılara karşı üstündür. Tabloya INSERT işleminden sonra yapılacak olan eylemler tetikleyiciler tarafından otomatik olarak yapıldığından ekstradan kod yazılması gerekmemektedir. Ekleme eyleminin birden fazla tabloya yazılması gerekiyorsa ve kişi üyelik aidatını yatırmadığı durumlarda tablodaki kayıtların tutarlı olması için ekleme eyleminin gerçekleşen tüm tablolardan silinmesi gerekmektedir.


Yaz Okulu Kayıt ve Ders Seçme
5 Temmuz 2021 Pazartesi