Veritabanı İlişkisel Tablolar ( RESİMLİ – BONUSLU )

Herkese merhaba arkadaşlar. İnanın yazmayı çok özlemişim. İş yoğunluğu ve yorgunluk (bahane olamaz ama) beni alıkoydu. Bende böyle güzel ve yeni başlayanlar için yararlı olabilecek bir konu seçtim. Veritabanının ilişkisel olması neden işimize yarar? İki tablo arasında nasıl bir bağlantı olabilir. Indexleme nedir? Ne işimize yarar? Bence yeni başlayanlar için güzel sorular ne dersiniz 🙂 

Veritabanı Tablo Yapısı

Önce iki tane tablo yapıp bunları ilişkisiz kullanmak istiyorum.

Yukarıda gördüğünüz tablolar ilişkisiz iki tabloya örnek olarak verildi. Kullanıcılar ve Adresler tabloları Primary Key ( Birincil Anahtar ) içeriyor fakat bunlar sadece bulundukları tablo içinde 2 kaydı birbirinden ayırmamıza yarıyor Kullanıcı kaydı yaptık ve adres kaydı yaptık. Fakat adresin hangi kullanıcıya ait olduğunu şuan bilmiyoruz. Bunu bilmemiz için ilişkisel bir mimari kullanmamız gerekmektedir.

INDEX’LEME NEDİR? NE İŞİMİZE YARAR?

Not: PK:Primary Key-> Tabloya eklenen bir anahtardır ve tekrarlanamaz, kayıtları birbirinden ayıran anahtardır.

Yine yukarıdaki tablolardan örnek verirsek. Bir kullanıcı eklediniz. PK olmadığı durumda veritabanına adı burak olan kullanıcıları bana bul dediğinizde işleminiz çooook uzun sürebilir. Fakat PK olduğunu düşünürsek bana 5 numaralı kullanıcıyı getir diyeceğiz ve zaten 5 numaranın yerini bilen veritabanı gidip kapısını çalacak 5 numaranın ve diyecek ki hadi gitme vakti geldi 🙂 Böylece çok daha hızlı bir şekilde size o kaydı getirebilecek. Daha basit bir örnek verirsek, bir apartmanda 5 kişi oturuyor ve size o 5 kişinin içinden burak olanı bulmanız isteniyor. Siz tek tek bütün kapıları çalıp sorarsınız ve bulursunuz amaaa size 3. kattaki burak denirse sizin yapmanız gereken tek şey 3. kata çıkıp bulmak kalır. Bence güzel bir örnek oldu.

İLİŞKİSEL TABLOLAR

Yukarıda gördüğünüz gibi artık iki tablo arasında bir bağlantı var. Bu bağlantı ile artık adreslerin hangi kullanıcıyla bağlantılı olduğunu biliyoruz.

 1 numaralı kullanıcı: BURAK

 2 numaralı adresin sahibi 1 numaralı kullanıcı: BURAK

Bu bağlantıyı bize saylayan anahtar Foreign Key :  İlişkisel veri tabanı tasarımında bir başka tablo ile ilişkilendirilecek olan tablonun diğer tabloda bir nevi kısıtlanmasıdır. İlişkilendirilecek olan tablonun Primary key alanı ile diğer tablonun Foreign key alanı birbiri ile bağlanır. Bir Foreign Key özelliği tanımlanmış bir alan gerekirse NULL olarak geçilebilir. Genelde de bir tabloda Foreign Key olararak tanımlanmış bir alan birbirini tekrar eden değerler ile doludur. Çünkü bir başka tabloda ki ilgili alanla ilişkilendirilmiştir. ( http://www.ismailgursoy.com.tr/foreign-key-nedir/ )

Eğer ki FK ile PK ilişkisi kullanmasaydık ne dezavantajları vardı?

 4 numaralı kullanıcı ekle

 5 numaralı adres ekle -> 5 numaralı adresin kullanıcısına 4 numaralı kullanıcıyı ekle

Şuan elimizde şöyle kayıtlar var;

Eğer PK ile FK bağlantısı kurmazsak; Adres tablosundaki Kullanici_Id ‘leri Indexlememiş oluruz ve bunun ne sonuçlar doğuracağını yukarıda yazmıştım. Sizin elinizde kullanıcının bir tek ID’ si olduğu zaman o kullanıcının bağlı olduğu bütün ikincil tablolardan kullanıcıyla ilgili istediğiniz bilgileri hızlı ve kolay şekilde elde edebilirsiniz.

BONUS:  CASCADE ÖZELLİĞİ

Bu yazıma bir bonus bilgi eklemek istedim. Örnekle açıklayayım: 4 numaralı kullanıcının ID’sinin değişmesi durumu söz konusu oldu ( Çok absürt bir örnek fakat bununla kendi işimde çok sık karşılaşıyorum süreçler böyle yönetiliyor ) ve sizin bu kullanıcıyla bağlantılı 50 tablonuz var. Ya 50 tabloya tek tek update komutu yazacaksınız ya da napacaksınız? Cevabı başlıkta 🙂 Update Rule dediğimiz bir ilişki özelliğini CASCADE yaptığınız zaman bu Id’yi ilgili bütün tablolarda otomatik update eder ve bu inanılmaz işinizi kolaylaştırıp sizi hata yapmaktan alıkoyar. Aynı şekilde Delete Rule özelliğini CASCADE yaparsanız Kullanıcı silindiği zaman bütün ilgili tablolardan onun ID’sinin olduğu kayıtları otomatik siler. ALLAHIM BU ÖZELLİK ÇOK GÜZEL dediğinizi duyar gibiyim 😀

Yazılım Mühendisliği okuyan arkadaşlar, Veritabanı Yönetim Sistemleri diye bir dersiniz var. O dersi iyi dinleyin derim. İyi çalışmalar, Allah’a emanet olun.

3 thoughts on “Veritabanı İlişkisel Tablolar ( RESİMLİ – BONUSLU )

  1. merhaba . ilişkisel veritabanında kafamda toparlayamadığım bir sorun var . ilişkili bir tabloya veri eklerken . mesela sipariş tablom var vede siparişdetay tablom var. birbirlerine siparişid ile bağlı . bu durumda ben sipariş eklerken 2 tabloyada normal veri ekler gibi eklememi yapacam yoksa sadece siparişdetay tabloma yada sipariş tabloma eklicem kendisi diğer tabloyu otomatikmi dolduracak . kafam çok karıştı yardımcı olursanız memnun olurum

    1. Merhaba Yakup. Detay tablona veri eklerken üst tablondan gelen bir id bulunmakta o id ile bağlaman gerekiyor. Bu ekleme işlemleri programsal seviyede ilişkisel yapılarla yapman gerekiyor. Mesela .net MVC kullaniyorsan tabloların ilişkisel ise kendisi insert işlemini doğru sırada yapıyor ve birbirine bağlıyor verileri. Umarım yeterli bir cevap olmuştur.

      1. çok teşekkürler cevabınız için. evet anlayabildim 🙂 . ilginiz için çok teşekkürler.

Bir Cevap Yazın