Sql Kodları ANA SAYFA    İLETİŞİM    HAKKIMIZDA 

SQL FOREIGN KEY Kullanımı

Temel olrak FOREIGN KEY yardımcı index oluşturmak için kullanılır. Bir tabloda "id" alanına PRIMARY KEY uygulayabiliriz. Ancak aynı tablodaki başka bir alan farklı bir tablodaki kayda bağlı çalışabilir. MS Access veritabanlarında bu duruma "İlişkili Veritabanı" deniliyor. İşte bu iki tablo arasında bir bağ kurmak gerektiği durumlarda FOREIGN KEY devreye giriyor. Böylece tablolar arası veri akışı daha hızlı olduğu gibi ileride artan kayıt sayısı sonucu veri bozulmalarının önüne geçilmiş olunur.

Olayı tablolar üzerinden anlatmak gerekirse, aşağıdaki gibi bir Personel tablomuz olsun.

p_id Adi_soyadi
1 Salih ESKİOĞLU
2 Ayhan ÇETİNKAYA
3 Serkan ÖZGÜREL
4 İlhan ÖZLÜ

Bu tabloyla beraber çalışan Satışlar tablomuz da aşağıdaki gibi olsun.

s_id Urun Satis_fiyati satan_id
1 LCD Tv 1300 1
2 Ses sistemi 750 1
3 Buzdolabı 1100 4
4 Çamaşır Makinesi 950 3

Burada Personel tablomuzdaki "p_id" alanı ve Satışlar tablomuzdaki "s_id" alanları Primary Key ile indexlenmiştir. Ancak Satışlar tablosunda, ilgili satış işleminin hangi personel tarafından yapıldığı bilgisini tutan "satan_id" isimli alan vardır. Yazacağınız programda veritabanından bilgileri çekip ekrana aktaracağınız için iki tablo arasında bir ilişki vardır. Bu ilişkiyi ise Personel tablosundaki "p_id" ile Satışlar tablosundaki "satan_id" alanları belirler. Dolayısı ile "satan_id" alanına FOREIGN KEY yani ikincil index tanınlayarak aradaki veri bütünlüğünün sağlanmasını sağlarken aynı zamanda da veri akışının da hızlanmasını sağlamış oluruz.

.
- Tablo Oluştururken FOREIGN KEY Tanımlama Örneği

SQL Server / Oracle / MS Acess ortamlarında kullanım biçimine örnek:

CREATE TABLE Satislar
(
id int NOT NULL PRIMARY KEY,
Urun varchar(20) ,
Satis_fiyati varchar(20),
satan_id int
CONSTRAINT fk_satici FOREIGN KEY References Personel(id)
)

FOREIGN KEY tanımlaması yapılırken hangi tablodaki hangi alanla ilişkili oldğunu REFERENCES ifadesinden sonra yazmak gerekir.

MySQL ortamında kullanım biçimine örnek:

CREATE TABLE Satislar
(
id int NOT NULL,
Urun varchar(20) ,
Satis_fiyati varchar(20),
Satan_id int,
PRIMARY KEY (id),
CONSTRAINT fk_satici FOREIGN KEY (satan_id) REFERENCES Personel(id)
)


Burada göreceğiniz üzere FOREIGN KEY tanımlanırken CONSTRAINT ile ona bir isim veriliyor. Böylece daha sonra bu FOREIGN KEY yapısını kaldırmak istersek bu verdiğimiz ismi kullanmamız gerekecektir.

 

- Var olan Tabloya FOREIGN KEY Tanımlama Örneği

MySQL / SQL Server / Oracle / MS Access ortamlarında kullanım biçimine örnek:

ALTER TABLE Satislar
ADD CONSTRAIN fk_satici
FOREIGN KEY (satan_id)
REFERENCES Personel(id)

 

- FOREIGN KEY Kaldırma Örneği

MySQL ortamlarında FOREIGN KEY yapısını kaldırmak:

ALTER TABLE Satislar
DROP  FOREIGN KEY fk_satici

SQL Server / Oracle / MS Access ortamlarında FOREIGN KEY yapısını kaldırmak:

ALTER TABLE Satislar
DROP  CONSTRAINT fk_satici

Görüldüğü üzere MySQL veritabanından kaldırma işlemi sırasında FOREIGN KEY ifadesi kullanılırken, diğer veritabanlarında CONSTRAINT ifadesi kullanılıyor. Ama her iki biçimdede sonuna, oluştururken verdiğimiz ismi yazmamız gerekiyor.

 


www.sqlkodlari.com - 2014
Telif hakları uyarısı: Sitedeki bilgiler izinsiz KOPYALANABİLİR. Çünkü bu bilgiler bilgisayar standartlarındandır ve bizim bulup ürettiğimiz şeyler değildir. Başka sitelerde de burada anlatılan açıklamalara rastlayabilirsiniz. Ancak ricamız buradan faydalı bir şeyler öğreniyorsanız, o zaman siteyi tavsiye edin ki başkaları da öğrensin.

sql foreign key kullanımı nasıldır