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. Bu sütunun belirlemek için tablolar arası Foreign key ile ilişki kurularak veri bütünlüğü korunur. Diğer bir değişle Foreign key kullanım amacı veri bütünlüğünün sağlanmasıdır.
Foreign key, içeren tabloya alt tablo adı verilir Primary Key içeren tabloya başvurulan veya üst tablo adı verilir.
Calisanlar tablosu:
CalisanID |
CalisanAdi |
CalisanSoyadi |
Dogumgunu |
1 |
Frank |
Cesanne |
1969-12-04 |
2 |
John |
Smith |
1970-05-18 |
3 |
Mehmet |
Efe |
1974-08-04 |
Siparisler tablosu:
SiparisID |
SiparisNumasi |
CalisanID |
1 |
2123 |
3 |
2 |
5642 |
2 |
3 |
8542 |
1 |
4 |
4193 |
3 |
“Calisanlar” tablosunda ki “CalisanID” sütunu, “Calisanlar” tablosunun Primary Key dır. (Birincil anahtar)
“Siparisler” tablosundaki “CalisanID” sütunu, “Siparisler” tablosundaki Foreign Key dir.(Yabancı anahtar)
Aşağıdaki SQL, “Siparisler” tablosu oluşturulduğunda “Calisanlar” sütununda bir Foreign key(yabancı anahtar)oluşturur.
MySQL:
CREATE TABLE Siparisler (
SiparisID int NOT NULL,
SiparisNumasi int NOT NULL,
CalisanID int,
PRIMARY KEY (SiparisID),
FOREIGN KEY (CalisanID) REFERENCES Calisanlar(CalisanID)
);
SQL Sunucusu / Oracle / MS Erişimi:
CREATE TABLE Siparisler (
SiparisID int NOT NULL PRIMARY KEY,
SiparisNumasi int NOT NULL,
CalisanID int FOREIGN KEY REFERENCES Calisanlar(CalisanID)
);
“Siparisler” tablosu zaten oluşturulduğundan “Calisanlar” sütununa bir Foreign key kısıtlaması oluşturmak için Aşağıdaki SQL komutunu kullanabiliriz.
MySQL / SQL Sunucusu / Oracle / MS Erişimi:
ALTER TABLE Siparisler
ADD FOREIGN KEY (CalisanID) REFERENCES Calisanlar(CalisanID);
Bir Foreign key kısıtlamasının adlandırılmasına izin vermek ve birden çok sütunda bir Foreign key kısıtlaması tanımlamak için Aşağıdaki SQL komutu kullanılır.
MySQL / SQL Sunucusu / Oracle / MS Erişimi
ALTER TABLE Siparisler
ADD CONSTRAINT FK_KisiSiparisi
FOREIGN KEY (CalisanID) REFERENCES Calisanlar (CalisanID);
MySQL:
ALTER TABLE Siparisler
DROP FOREIGN KEY FK_ KisiSiparisi;
SQL Sunucusu / Oracle / MS Erişimi:
ALTER TABLE Siparisler
DROP CONSTRAINT FK_ KisiSiparisi;
İçerik: YUSUF ERDOĞAN