Foreign Key kullanmak sağlıksız mı?

MS SQL Server veritabanı ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Glen
Üye
Mesajlar: 277
Kayıt: 12 Eki 2005 11:58

Foreign Key kullanmak sağlıksız mı?

Mesaj gönderen Glen »

Başlığı yazarken bana bile çok saçma geldi..

"Tabiki foreign key kullanmak sağlıksız değil!" demek geldi içimden..

Ancak MSSQL veritabanını kullanan bir kaç büyük şirketin (LOGO, Mikro vs.) veritabanı yapılarını incelediğimde foreign key hiç kullanmadiklarini gordum.. (tabi gözden kaçırmadıysam) Gormemle kendi kafamda bazi soru isaretleri olustu halbuki ben veritabanimi tam teşkilat foreign keyler kullanarak yaptım.. Şuana kadar kullandigim foreign keylerin sayisi 100 ü gecmistir...

Sizce ben de mi bir yalnışlık var yoksa kendi içlerinde 30 - 40 tane yazilimci calistiran bu sirketler mi? :)
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Emin olun siz doğrusunu yapıyorsunuz. Çünkü foreign key kullanmadan da veritabanı tasarlanıp program yazılabilir ve bu kontroller yazdığınız programla yapılabilir. Fakat veritabanına sadece sizin yazdığınız arayüz haricinde de ulaşılacağını düşünmeniz gerekir. Öyle bir durumda veritabanı tutarlılığı (referential integrity) bozulacaktır. Veritabanı kısmında imkânların sonuna kadar kullanmak daha az kod yazmanıza da sebep olacaktır :wink:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Glen
Üye
Mesajlar: 277
Kayıt: 12 Eki 2005 11:58

Mesaj gönderen Glen »

Ben de onceden bu kontrolleri program tarafinda yapiyordum ve foreign key olayini ogrendigimde yapmakta oldugum programi tekrar yazdim sirf foreign keyler icin yapiyi tekrar kurdum.. Ve onlarin kullanmadigini yeni farkettigim icin acaba bosuna mi yaptim diye endişeye düşmüştüm :)

İlgilendiğiniz için teşekkür ederim rahatladim :)

Kolay gelsin tekrardan teşekkürler..
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Mesaj gönderen Kuri_YJ »

Selamlar,

Onların kullanmamaktaki maksatları farklı, bir çok kontrol vs. şeyleri kendi programlarında yapıyorlar, eğer DB değiştirmek zorunda kalırlarsa diye DB Seerverların kendi özelliklerini kullanmıyorlar. Bazıları ne trigger ne de stored procedure bile kullanmazlar. Databse server sadece onlar için Indexli bir Veri Havuzundan öte değil. Kısmen haklılar kısmen değiller. Bu tamamen bakış açısına bağlı bir şey.

Ama ben kullan derim, zira FK'lar ve PK'lar bütün DB'lerde aynıdır.

Kolay Gelsin
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Glen
Üye
Mesajlar: 277
Kayıt: 12 Eki 2005 11:58

Mesaj gönderen Glen »

Peki bisey sormak istiyorum yani benim foreign key vs. kullanmamin tek sebebi saglamligi ve de hizi artirmak.. Saglamligin arttigi sanirim kesin ancak performans konusunda da düsündügüm gibi bir avantaj yakaliyor muyum?

Cünkü ben sadece Insert veya Update komutu gonderiyorum onun disinda hic bir kontrol yapmama gerek kalmiyor, eger veritabanindan hata gelirse sadece onlari yakaliyip kullaniciya gosteriyorum.. İşime de geliyor elbet kod karisikligindan kaciyorum.. Dusunduklerim dogru dimi ?
Cevapla