SQL Foreign Key Nedir? Oluşturma ve Kullanımı

Foreign key nedir ile Foreign key anlatılmış, MySQL, SQL Server, Oracle vb. sistemler için SQL ile Foreign key oluşturma ve kullanımı ile ilgili bilgi verilmiştir.

Foreign key nedir?

SQL içerinde SQL Primary Key veya SQL Unique ile birlikte iki tabloyu ilişkilendirmek için kullanılan bir kısıtlamadır.

Veri tabanı tasarımı sırasında tablolar çeşitli parçalara ayrılarak veri tekrarının önüne geçilir.

Parçalara ayrılan tabloları anlamlı bir şekilde birleştirmek için ortak bir sütun belirlenebilir.

Ortak sütun parçaların birleştirilmesinde faydalı olsa da bir tablodaki satırın silinmesi veya güncellenmesi sırasında veri bütünlüğü bozulabilir.

Bu durumda tablolar arası Foreign Key veya Uzak Anahtar denilen ilişki kurularak veri bütünlüğü sağlanmış olur.

Özetle; Foreign key kısıtlamasının kullanım amacı veri bütünlüğünü sağlamaktır.

Foreign key oluşturma

Foreign key veri tabanı tasarımı sırasında, tablo oluşturma veya daha sonra ihtiyaç halinde bir tabloya eklenebilir.

Veri tabanı tasarımı sırasında eklemek faydalı olacaktır.

Foreign key oluşturma – 1

CREATE TABLE tablo_adi (
  sutun_adi veritipi kısıtlama,
  ...
  ...
  FOREIGN KEY (sutun_adi) REFERENCES diger_tablo_adi(diger_sutun_adi)
    ON UPDATE <EYLEM>
    ON DELETE <EYLEM>
);

Foreign key oluşturma – 2

CREATE TABLE tablo_adi (
  sutun_adi veritipi kısıtlama,
  ...
  ...
  CONSTRAINT FK_adi FOREIGN KEY (sutun_adi) REFERENCES diger_tablo_adi(diger_sutun_adi)
    ON UPDATE <EYLEM>
    ON DELETE <EYLEM>
);

Foreign key kısıtlamasına eklenen ON UPDATE ve ON DELETE özellikleri isteğe bağlıdır.

ON UPDATE ve ON DELETE özelliği diger_tablo_adi içerisindeki diger_sutun_adi ile belirtilen sütunda bir değişiklik olduğunda <EYLEM> ile belirtilen işlemi yapar.

Foreign key eylemleri

Foreign key kısıtlamasına ait eylemler kullanılan VTYS göre değişmektedir.

CASCADE: REFERENCES ile belirtilen sütunda bir eylem (UPDATE, DELETE) olduğunda Foreign key ile belirtilen ilişkili sütunda benzer eylemi yapar.

NO ACTION: Foreign key sütunu ve REFERENCES ile belirtilen sütunda bir ilişki varsa, REFERENCES ile belirtilen sütunda bir eyleme (UPDATE, DELETE) izin vermez.

SET NULL: REFERENCES ile belirtilen sütunda bir eylem (UPDATE, DELETE) olduğunda Foreign key ile belirtilen ilişkili sütunu NULL yapar.

NOT: Foreign key sütununda NOT NULL kısıtlaması varsa hata verir.

SET DEFAULT: REFERENCES ile belirtilen sütunda bir eylem (UPDATE, DELETE) olduğunda Foreign key ile belirtilen ilişkili sütuna DEFAULT değerini verir.

NOT: Foreign key sütununda DEFAULT kısıtlaması yoksa hata verir.

RESTIRCT: MySQL VTYS içerisinde bulunan bu eylem NO ACTION ile aynı işleve sahiptir.

Bazı VTY Sistemleri Foreign key eylemlerini desteklemez bazıları ise kısmen destekler.

Foreign key kullanımı sırasında kullanılan eylem türüne dikkat edilmelidir.

Hatalı eylem seçildiğinde önlenemez hatalara neden olabilir.

Hayırlı günler dilerim.

Yusuf SEZER

Yusuf SEZER

Computer Engineer who interested about web technologies, algorithms, artificial intelligence and embedded systems; constantly exploring new technologies.


Bunlara'da bakmalısın!