Foreign Key

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
snofru
Üye
Mesajlar: 204
Kayıt: 19 Ağu 2004 02:57
Konum: /local/usr/src
İletişim:

Foreign Key

Mesaj gönderen snofru »

S.A
Öncelikle bu konuyu gerek forumiçi gerekse netten araştırdığımı belirtmek ve hatta böyle bir soruyu sormaktan utandığımı, birkaç gün kararsız kalıp, sormanın ayıp olmadığı düşüncesini tekrar hatırladım ve soruyorum işte...

Bu maddeler Foreign Key içindir:
1- Nedir?
2- Amaç ne, ne zaman nasıl kullanılmalı?
3- Omazsa olmaz bi olay gibi, açıklama?
4- VT şekillendirmesindeki rolü, hangi alanların FK olacağı nasıl tespit edilir (sanırım ilk 3 maddeden donra bu kararı kendim verebilirim ama...)

Sonuçta; VT olayının temel özelliği olarak değerlendirilebilecek bu özelliği bilmiyorum ve bilgi istiyorum. FireBird kullandığımıda belirteyim...

Herkese teşekkürler, saygılarımla...
selm@n
Kıdemli Üye
Mesajlar: 442
Kayıt: 01 Oca 2004 11:52
Konum: Adapazarı
İletişim:

Mesaj gönderen selm@n »

Hocam öncelikle fahrettin abi'nin Veritabanı ile ilgili seminerlerini izlemenizi tavsiye ederim...

Kısaca özetliyelim...

Zorlayıcı (Constraint): Herhangi bir alan için girilebilecek verileri kısıtlayıcı kurallara zorlayıcı denir..Kullanıcı zorlayıcının istediği şekilde veri girmez ise, VTYS hata verir ve böylece gereksiz ve keyfi bilgi girişleri önlenmiş olur..
Örneğin Bölüm tablosunda olmayan bir bölümü Personel tablosunda bir elemanı tanımlar iken olmayan bir bölümü personele veremeye kaltığımızda bir hata verecek şekilde kısıtlamayapabiliriz..

Anahtar (Key) :Anahtar bir veya birden fazla alanın bir satır için niteleyeci olarak girilmesi için tanımlanan özel bir çeşit zorlayıcıdır...
Tekrarlanmıyacak bir alan tanımlandığında , bu anahtar alana birincil anahtar denir.
Primary Key
Unique Key
Foreing Key
gibi türevleri vardır...

Foreing Key : Bir tabloya girilebilecek değerleri başka bir tablonun belli alanında yer alabilecek veri grubu ile sınırlandırılmaya ve en önemlisi de ilişkilendirmeye yarar...

Örneğin ;Olmayan bir bölümü personelin bölüm alanına yazamayacağınız gibi;

Persolen Table
-------------------
Sicil_NO (Birincil Anahtar)
Adi
Soyadi
Bolum_NO (Foreing Key)


Bolum Table
-------------------
Bolum_NO (Birincil Anahtar)
Bolum_Adi

inşallah açıklayıcı olmuştur kolay gelsin (yanlız fahrettin abinin seminerini izlemeyi unutma :) )
;)
Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

aslinda foreing key kavrami birbirine yakin farkli iki anlamda kullanilmaktadir.

1. veritabaninda Referential Integrity yi saglamak icin trigger olusturmanin alternatifi olarak foreing key olusturulup amaclanan Referential Integrity (veri butunlugu) (bakiniz detayli bilgilendirme : viewtopic.php?t=644 ve tabi veritabani seminerleri. 5. 6. ve 8. seminer) saglanabilir.

2. anlaminda ise veritabani tasarimi yaparken personel tablosuna bolum adi yerine bolum numarasini koyup bu numara karsiligini bolum tablosundan alma olayina da personel tablosuna bolum no alanini foreing key olarak tanimladik deriz. (foreing key i cumle icinde kullanmis oldum :) ) Fakat Referential Integrity icin veritabani tarafinda foreing key olusturmuyor olabiliriz. Bunu trigger ile sagliyor olabiliriz. Tabi 1. anlam 2. anlami kapsamaktadir.


eger 1. anlami ile dusursek veritabani uzerinde hic foreing key tanimlamayabiliriz. Bunun yerine veri butunlugunu triggerlar ile gayet guyel temin edebiliriz. Yani olmasalar da olurlar.... Hatta ben sahsen foreing key yerine genelde trigger tercih ederim..

Fakat 2. anlami ile veritabanimizi tasarlarken bir bolum tablosundan personel tablosuna bolum no alanini gondermek iliskisel veritabani tasarim teorisi acisindan sarttir. Yani isin raconu budur :D

Dolayisiyla 4. sorunuza gelirsek buradaki foreing key kavramini 2. anlam olarak algilarsak ki oyel algilamak zorundayiz. Zira 2. anlamdan gecmeden 1. anlama gelinemiyor. Bu duurmda hangi alanlarin foreing key olmasi gerektigine karar vermek veritabani tasarim isinin bir nevi kendisidir zaten.... personel tablosundaki bolum no, dogdugu sehir no, musteri tablosundaki bulundugu sehir no vs.....

not: almanca bir klavye kullaniyorum. yazim hatalarim affola.... ozellikle y ve z harfleri yer degisebiliyor. :)
* http://www.fahrettin.org Manzara Fotoğraflarım... :)
* http://delphiturkiye.gunduz.info Seminerler... ;)
* http://www.hakmar.com.tr Kalite bir haktır... 8)
snofru
Üye
Mesajlar: 204
Kayıt: 19 Ağu 2004 02:57
Konum: /local/usr/src
İletişim:

Mesaj gönderen snofru »

S.A
Beyler Allah razı olsun kafamda baya baya şekillendi bu olay. Seminerlerden 6 hariç tümünü seyrettim (bazıları biraz problemli olsada, anlayabildiğim kadarıyla) 6'yı bugün indirip seyretcem. Trigger SP vs. ile alakalı tüm konuları da defalarca okudum.

Aslında bişey itiraf edeyim, ben bi proje için MySQL kasıyodum. 1 ay filan uğraştım. Baktım proje ilerlemiyor, sonra bi gün sayenizde Firebird filan kurdum işte, 2 tablo yaptım SP olayını denedim süpper bişii.. şimdi tüm VT yi FB ye dönüştürüyom, SP leri filan yazcam ama FK olayı çok rastlamaya başladığım için danıştım. İlgilenen herkese minnettarım...

İyi çalışmalar, saygılarımla...
Cevapla