logo

DBMS'deki Bilgi Bütünlüğü kısıtlamaları

Referans bütünlüğü kısıtlaması aynı zamanda şu şekilde de bilinir: yabancı anahtar kısıtlaması . Yabancı anahtar, değerleri başka bir tablonun Birincil anahtarından türetilen bir anahtardır.

Değerlerin türetildiği tablo olarak bilinir. Master veya Referanslı Tablo ve değerlerin buna göre eklendiği Tablo olarak bilinir. Çocuk veya Referans Verme Tablo, Başka bir deyişle tablonun yer aldığı tablo diyebiliriz. yabancı anahtar denir çocuk masası ve aşağıdakileri içeren tablo Birincil anahtar/aday anahtar denir başvurulan veya ana tablo . Veritabanı ilişkisel modeli hakkında konuştuğumuzda aday anahtar, sıfır veya daha fazla özniteliğe sahip olabilen bir dizi öznitelik olarak tanımlanabilir.



Ana Tablonun veya Başvurulan tablonun sözdizimi şöyledir:

kalın metin css
 CREATE TABLE Student (Roll int PRIMARY KEY, Name varchar(25) , Course varchar(10) ); 

Burada Roll sütunu şu şekilde hareket ediyor: Birincil anahtar, bu, alt tablodaki yabancı anahtarın değerinin elde edilmesine yardımcı olacaktır.

Referans Bütünlüğü kısıtlaması

Çocuk Tablosu veya Referans tablosunun sözdizimi şöyledir:



 CREATE TABLE Subject (Roll int references Student, SubCode int, SubName varchar(10) ); 

Referans Bütünlüğü kısıtlaması

Yukarıdaki tabloda Roll sütunu şu şekilde hareket etmektedir: Yabancı anahtar, değerleri Ana tablodaki Birincil anahtarın Rulo değeri kullanılarak türetilen.

Yabancı Anahtar Kısıtlaması VEYA Referans Bütünlüğü kısıtlaması.

İki referans bütünlüğü kısıtlaması vardır:

Kısıtlama Ekle: Değer MASTER Tablosunda yer almıyorsa CHILD Tablosuna değer eklenemez



Kısıtlamayı Sil: Değer CHILD Tablosunda yer alıyorsa, değer MASTER Tablosundan silinemez

Diyelim ki SUBJECT Tablosunda Roll = 05'i diğer sütun değerleriyle birlikte eklemek istediniz, o zaman hemen bir hata göreceksiniz ' Yabancı anahtar Kısıtlaması İhlal Edildi ' yani bir ekleme komutunu şu şekilde çalıştırırken:

KONU değerlerine ekleyin (5, 786, OS); Ekleme Kısıtlaması nedeniyle SQL tarafından kabul edilmeyecektir (Değer ana tabloda yer almıyorsa alt tabloya değer ekleyemeyeceğiniz için, ana tabloda Roll = 5 bulunmadığından, alt tabloya Roll = 5 girilmesine izin verilmeyecektir)

java dize biçimi

Benzer şekilde STUDENT Tablosundan Roll = 4'ü silmek isterseniz hemen bir hata görürsünüz. Yabancı anahtar Kısıtlaması İhlal Edildi ' yani bir silme komutunu şu şekilde çalıştırırken:

Rulo = 4 olan ÖĞRENCİ'den sil; Silme Kısıtlaması nedeniyle SQL tarafından kabul edilmeyecektir. ( Değer alt tabloda bulunuyorsa ana tablodan değeri silemeyeceğiniz için, alt tabloda Roll = 5 mevcut olduğundan, Roll = 5'in ana tablodan silinmesine izin verilmeyecektir, hadi bir şekilde Roll = 5'i silmeyi başardık, ardından Roll = 5 alt tabloda mevcut olacak ve bu da sonuçta ekleme kısıtlamasını ihlal edecektir.

KASKAD SİLİNME ÜZERİNDE.

Silme kısıtlamasına göre: Değer CHILD Tablosunda yer alıyorsa, değer MASTER Tablosundan silinemez. Bir sonraki soru, eğer değer alt tabloda yer alıyorsa, silme kısıtlamasını ihlal etmeden değeri ana tablodan silebilir miyiz? yani, ana tablodan değeri sildiğimiz anda, ona karşılık gelen değerin de alt tablodan silinmesi gerekir.

ah java

Yukarıdaki sorunun cevabı EVET'tir, eğer değer, silme kısıtlamasını ihlal etmeden alt tabloda bulunuyorsa, ana tablodan değeri silebiliriz, alt tabloyu oluştururken küçük bir değişiklik yapmamız gerekir, yani ekleyerek. basamaklı silme işleminde .

TABLO SÖZ DİZİMİ

 CREATE TABLE Subject (Roll int references Student on delete cascade, SubCode int, SubName varchar(10) ); 

Yukarıdaki sözdiziminde, references anahtar sözcüğünden (yabancı anahtar oluşturmak için kullanılır) hemen sonra, silme kademesini ekledik, şimdi ekleyerek, değer alt tabloda yer alıyorsa, silme işlemini ihlal etmeden değeri ana tablodan silebiliriz. kısıtlama. Şimdi, alt tabloda Roll = 5 olmasına rağmen ana tablodan Roll = 5'i silmek istiyorsanız, bu mümkün çünkü ana tablodan Roll = 5'i silme komutunu verdiğiniz anda satır Roll ='e sahip oluyor. Alt tablodaki 5 de silinecek.

Referans Bütünlüğü kısıtlaması
Referans Bütünlüğü kısıtlaması

Her biri dört değere sahip olan yukarıdaki iki tablo STUDENT ve SUBJECT gösterilmektedir, şimdi bir SQL komutu yazarak STUDENT(Master) Tablosundan Roll = 4'ü silmek istediğinizi varsayalım: ÖĞRENCİ'den sil (Roll = 4);

SQL yukarıdaki komutu çalıştırdığı anda, SUBJECT( Child ) Tablosundan Roll = 4'e sahip olan satır da silinecektir, Sonuç ÖĞRENCİ ve KONU tablo şöyle görünecek:

Referans Bütünlüğü kısıtlaması
Referans Bütünlüğü kısıtlaması

Yukarıdaki iki tablo STUDENT ve SUBJECT'te, her iki tabloda da Roll = 4 tablosunun, silme kısıtlamasını ihlal etmeden tek seferde silindiğini görebilirsiniz.

Bazen röportajlarda çok önemli bir soru sorulur: Yabancı Anahtarın NULL değerleri olabilir mi?

Yukarıdaki sorunun cevabı EVET'tir, NULL değerlerine sahip olabilir, ancak Birincil anahtar ne pahasına olursa olsun NULL olamaz. Yukarıdaki soruyu pratik olarak anlamak için, null silme kavramını aşağıda anlayalım.

SİLMEDE BOŞ.

Silme kısıtlamasına göre: Değer CHILD Tablosunda yer alıyorsa, değer MASTER Tablosundan silinemez. Bir sonraki soru, eğer değer alt tabloda yer alıyorsa, silme kısıtlamasını ihlal etmeden değeri ana tablodan silebilir miyiz? yani, ana tablodan değeri sildiğimiz anda, ona karşılık gelen değer de alt tablodan silinmeli veya NULL değeriyle değiştirilebilir.

Yukarıdaki sorunun cevabı EVET'tir, yabancı anahtara NULL ekleyerek silme kısıtlamasını ihlal etmeden değer alt tabloda yer alıyorsa, değeri ana tablodan silebiliriz, alt tabloyu oluştururken küçük bir değişiklik yapmamız gerekir, yani. toplayarak silindiğinde null .

dizeyi biçimlendirme java

TABLO SÖZ DİZİMİ:

 CREATE TABLE Subject (Roll int references Student on delete null, SubCode int, SubName varchar(10) ); 

Yukarıdaki sözdiziminde, references anahtar sözcüğünden (yabancı anahtar oluşturmak için kullanılır) hemen sonra, silme null'u ekledik, şimdi ekleyerek, değer alt tabloda yer alıyorsa, silme işlemini ihlal etmeden değeri ana tablodan silebiliriz. kısıtlama. Şimdi Roll = 4'ü ana tablodan silmek istiyorsanız, Roll =4 alt tabloda olmasına rağmen bu mümkündür, çünkü ana tablodan Roll = 4'ü silme komutunu verdiğiniz anda satır Roll ='e sahiptir. Alt tablodaki 4'ün yerini NULL değeri alacaktır.

Referans Bütünlüğü kısıtlaması
Referans Bütünlüğü kısıtlaması

Her biri dört değere sahip olan yukarıdaki iki tablo STUDENT ve SUBJECT gösterilmektedir, şimdi bir SQL komutu yazarak STUDENT(Master) Tablosundan Roll = 4'ü silmek istediğinizi varsayalım: ÖĞRENCİ'den sil (Roll = 4);

SQL yukarıdaki komutu çalıştırdığı anda, SUBJECT( Child ) Tablosundan Roll = 4'e sahip olan satırın yerini NULL değeri alacaktır, sonuç ÖĞRENCİ ve KONU tablo şöyle görünecek:

Referans Bütünlüğü kısıtlaması
Referans Bütünlüğü kısıtlaması

Yukarıdaki iki tablodan STUDENT ve SUBJECT tablosunda STUDENT Roll = 4'ün silindiğini, SUBJECT tablosundaki Roll = 4 değerinin NULL ile değiştirildiğini görebilirsiniz. Bu, Yabancı anahtarın boş değerlere sahip olabileceğini kanıtlar. SUBJECT Tablosunda Roll sütunu Yabancı Anahtar ile birlikte Birincil Anahtar ise, bu durumda NULL değerlerine sahip bir yabancı anahtar yapamayız.