VERİTABANI PROGRAMLAMA Dersi Kısıtlayıcı ve Tetikleyiciler soru cevapları:
Toplam 29 Soru & Cevap#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.