Veritabanı İlişki Mantığı Hakkında
Merhaba Veritabanı Severler :)
Bugünkü makalemizde veritabanının temelini oluşturan ilişki kavramından kısaca bahsedeceğiz.Eğer Blogumu düzenli
takip ediyorsanız bir önceki makalemizde veritabanın kullanılan veri tiplerinden bahsetmiştim şimdi ise
veritabanındaki ilişki mantığını mümkün olduğunca basite indirgeyerek anlatmaya çalışacağım.
Önceki makalemizde anlattığım gibi veritabanı belirli ve spesifik kuralları olan bir yapının adıdır ve bu yapıda
en temel mantık yazılan bir veriyi tekrar ettirmeden başka noktalarda kullanmaktır.
Şimdi bir düşünün,bilgisayarınıza oyun yüklüyorsunuz ve oyunun masaüstünüzde kısayolu olmadan oyunu her oynamak
istediğinizde oyunun kurulum klasörlerinin yolunu ezberlemeniz gerektiğini, ne kadarda sıkıcı bir durum değil mi?
İşte veritabanı mantığıda buna benzer bir ihtiyaçtan doğmuş ve oyunun çalıştırma dosyasını istediğimiz her yere
binlerce kez kısayol atarak istediğimiz yerden tek tıklamayla çalıştırma mantığına dayanıyor.
Peki her veriyi nasıl bir başka yerde kullanacağız?
Bu sorumuzun cevabını biraz teorik vermekten öte uygulama ile anlatmak istiyorum.
1-Bire-Bir İlişki:
Diyelim bakkal Ahmet amcanın müşterileri olsun ve her müşteri için hesap cetvelleri olsun.Her hesap cetvelinde
müşterinin adı yerine o müşterinin müşteriler tablosundaki benzersiz müşteri numarasını kısayol atalım ve her
seferinde ekmek,yumurta kaydını yaparken Ahmet amca sadece müşteriyi seçsin ama adını yazmasın bunun yerine Ahmet amcanın benzersiz müşteri numarasını kullansın.
İşte böyle bir kullanıma bire-bir veritabanı tablosunun ilişkilendirilmesi denir,en basit deyimiyle bir veriyi
başka yerlerden çağırmaktır.
2-Bire-Çok İlişki:
Yine Ahmet amcanın veritabanında müşterileri olsun ve her müşterinin iletişim bilgilerini İletişim tablosunda
tuttuğumuzu varsayalım.Mesela Hasan usta Ahmet amcanın müşterisi olsun ve Ahmet amca Hasan ustanın telefon
bilgilerini veritabanına kaydetsin ama o da ne Hasan ustanın iki farklı cep telefonu numarası var peki bu durumda
ne yapacağız?
İletişim tablosunda Cep Telefonu-1 adında bir kayıt açıp karşısına Hasan ustanın benzersiz müşteri numarasını
yazıyoruz,ardından Cep-Telefonu-2 adında bir kayıt daha açıp karşısına yine Hasan ustanun benzersiz numarasını
yazıyoruz.Gördüğünüz gibi Hasan ustanın müşteri numarasını iki farklı verinin karşısında kullandık.
3-Çoka-Çok İlişki:
Bu defa da Ahmet amca bakkaldaki ürünlerin yerlerini daha kolay bulabilmek için nasıl gerçek hayatta raflara göre
ayırıyorsa buradaki mantıkta aynı şekilde verileri kategorilerine göre ayırmaya benziyor ancak bütün ürünler belli
kategorilere göre ayrılırken bazı ürünler her iki kategoriye ait olabiliyor.
Mesela hazır fındık paketleri hem hazır gıda kategorisinde olabileceği gibi hemde yemeklik ürünler kategorisine
ait olabiliyor.(kakao-fındıklı kekten bahsediyorum olsa da yesek :) )
Bu durumda fındık ürününü her iki kategori altında kayıt etmemiz gerekiyor ve bu işlem için ara tablolama denilen
teknik devreye giriyor.
Fındık paketinin ürün numarası kaydını açtıktan sonra karşısına hazır gıdanın kategori numarasını girdikten sonra
kaydediyor ve hemen aynı ürün numarasının karşısına yeni bir kayıt açıp bu defa yemeklik ürünler kategorisinin
numarasını yazıyoruz.Böylece bir ürünü birden çok kategori adı altında kaydedebiliyoruz.Bu işlem teorik açıdan
bire-çok ilişkiye benzese de bunun ayırımını pratik uygulamada çok daha iyi anlayacağız.
Peki hangi ilişkiyi nasıl belirleyeceğiz?
Bu sorunun cevabını kendi kendimize sorarak mantık çerçevesinde veritabanında tasarlayacağız.Şöyle ki;
Bir ürünün birden çok kategorisi olabilir mi?
Eğer cevap hayırsa: Bire-bir veya bire-çok ilişki kullanılacak,
eğer cevap evetse: çoka-çok ilişki söz konusu.
Peki cevap evet olduğunda yapılacak teknik belli ancak cevap hayır olduğunda bire-bir mi yoksa bire-çok ilişkiyi
mi kullanacağız?
Bunun cevabı veritabanında verinin ne olduğuna bağlıdır,eğer Ahmet amcanın hesap cetvelleri gibi bir mantık
söz konusu ise bire-bir,müşteri iletişim bilgilerindeki gibi bir mantık ise bire-çok tablo ilişkisini kullanacağız.
Şu anda veritabanına yeni başlayan biri iseniz ya da bu yazılanları mantıken anlayıp tam olarak ne yapmaya
çalıştığımızı anlamadıysanız (özellikle son paragraflar) üzülmeyin,bende zamanında çok zorlanmıştım bu konularda
ve emin olun en çok zorlandığım konular artık en uzmanlık alanlarım oldu :)
Bu yüzden sonraki yazmayı planladığım ikinci makalede hepsini pratik olarak uygulayıp ne yapmaya çalıştığımızı
anlayacak ve bundan büyük bir zevk alacağınızı garanti edebilirim ama etmiyorum nolur nolmaz çünkü :)
Şimdilik bu kadar teorik bilgi yeterlidir umarım,bir sonraki makalede görüşmek üzere Hoşçakalın ;)
Bugünkü makalemizde veritabanının temelini oluşturan ilişki kavramından kısaca bahsedeceğiz.Eğer Blogumu düzenli
takip ediyorsanız bir önceki makalemizde veritabanın kullanılan veri tiplerinden bahsetmiştim şimdi ise
veritabanındaki ilişki mantığını mümkün olduğunca basite indirgeyerek anlatmaya çalışacağım.
Önceki makalemizde anlattığım gibi veritabanı belirli ve spesifik kuralları olan bir yapının adıdır ve bu yapıda
en temel mantık yazılan bir veriyi tekrar ettirmeden başka noktalarda kullanmaktır.
Şimdi bir düşünün,bilgisayarınıza oyun yüklüyorsunuz ve oyunun masaüstünüzde kısayolu olmadan oyunu her oynamak
istediğinizde oyunun kurulum klasörlerinin yolunu ezberlemeniz gerektiğini, ne kadarda sıkıcı bir durum değil mi?
İşte veritabanı mantığıda buna benzer bir ihtiyaçtan doğmuş ve oyunun çalıştırma dosyasını istediğimiz her yere
binlerce kez kısayol atarak istediğimiz yerden tek tıklamayla çalıştırma mantığına dayanıyor.
Peki her veriyi nasıl bir başka yerde kullanacağız?
Bu sorumuzun cevabını biraz teorik vermekten öte uygulama ile anlatmak istiyorum.
1-Bire-Bir İlişki:
Diyelim bakkal Ahmet amcanın müşterileri olsun ve her müşteri için hesap cetvelleri olsun.Her hesap cetvelinde
müşterinin adı yerine o müşterinin müşteriler tablosundaki benzersiz müşteri numarasını kısayol atalım ve her
seferinde ekmek,yumurta kaydını yaparken Ahmet amca sadece müşteriyi seçsin ama adını yazmasın bunun yerine Ahmet amcanın benzersiz müşteri numarasını kullansın.
İşte böyle bir kullanıma bire-bir veritabanı tablosunun ilişkilendirilmesi denir,en basit deyimiyle bir veriyi
başka yerlerden çağırmaktır.
2-Bire-Çok İlişki:
Yine Ahmet amcanın veritabanında müşterileri olsun ve her müşterinin iletişim bilgilerini İletişim tablosunda
tuttuğumuzu varsayalım.Mesela Hasan usta Ahmet amcanın müşterisi olsun ve Ahmet amca Hasan ustanın telefon
bilgilerini veritabanına kaydetsin ama o da ne Hasan ustanın iki farklı cep telefonu numarası var peki bu durumda
ne yapacağız?
İletişim tablosunda Cep Telefonu-1 adında bir kayıt açıp karşısına Hasan ustanın benzersiz müşteri numarasını
yazıyoruz,ardından Cep-Telefonu-2 adında bir kayıt daha açıp karşısına yine Hasan ustanun benzersiz numarasını
yazıyoruz.Gördüğünüz gibi Hasan ustanın müşteri numarasını iki farklı verinin karşısında kullandık.
3-Çoka-Çok İlişki:
Bu defa da Ahmet amca bakkaldaki ürünlerin yerlerini daha kolay bulabilmek için nasıl gerçek hayatta raflara göre
ayırıyorsa buradaki mantıkta aynı şekilde verileri kategorilerine göre ayırmaya benziyor ancak bütün ürünler belli
kategorilere göre ayrılırken bazı ürünler her iki kategoriye ait olabiliyor.
Mesela hazır fındık paketleri hem hazır gıda kategorisinde olabileceği gibi hemde yemeklik ürünler kategorisine
ait olabiliyor.(kakao-fındıklı kekten bahsediyorum olsa da yesek :) )
Bu durumda fındık ürününü her iki kategori altında kayıt etmemiz gerekiyor ve bu işlem için ara tablolama denilen
teknik devreye giriyor.
Fındık paketinin ürün numarası kaydını açtıktan sonra karşısına hazır gıdanın kategori numarasını girdikten sonra
kaydediyor ve hemen aynı ürün numarasının karşısına yeni bir kayıt açıp bu defa yemeklik ürünler kategorisinin
numarasını yazıyoruz.Böylece bir ürünü birden çok kategori adı altında kaydedebiliyoruz.Bu işlem teorik açıdan
bire-çok ilişkiye benzese de bunun ayırımını pratik uygulamada çok daha iyi anlayacağız.
Peki hangi ilişkiyi nasıl belirleyeceğiz?
Bu sorunun cevabını kendi kendimize sorarak mantık çerçevesinde veritabanında tasarlayacağız.Şöyle ki;
Bir ürünün birden çok kategorisi olabilir mi?
Eğer cevap hayırsa: Bire-bir veya bire-çok ilişki kullanılacak,
eğer cevap evetse: çoka-çok ilişki söz konusu.
Peki cevap evet olduğunda yapılacak teknik belli ancak cevap hayır olduğunda bire-bir mi yoksa bire-çok ilişkiyi
mi kullanacağız?
Bunun cevabı veritabanında verinin ne olduğuna bağlıdır,eğer Ahmet amcanın hesap cetvelleri gibi bir mantık
söz konusu ise bire-bir,müşteri iletişim bilgilerindeki gibi bir mantık ise bire-çok tablo ilişkisini kullanacağız.
Şu anda veritabanına yeni başlayan biri iseniz ya da bu yazılanları mantıken anlayıp tam olarak ne yapmaya
çalıştığımızı anlamadıysanız (özellikle son paragraflar) üzülmeyin,bende zamanında çok zorlanmıştım bu konularda
ve emin olun en çok zorlandığım konular artık en uzmanlık alanlarım oldu :)
Bu yüzden sonraki yazmayı planladığım ikinci makalede hepsini pratik olarak uygulayıp ne yapmaya çalıştığımızı
anlayacak ve bundan büyük bir zevk alacağınızı garanti edebilirim ama etmiyorum nolur nolmaz çünkü :)
Şimdilik bu kadar teorik bilgi yeterlidir umarım,bir sonraki makalede görüşmek üzere Hoşçakalın ;)
hoş konuşma uslubünda yazmışın anlaşılır güzel örnekler vermişsiniz tşk ediyorumYorumunuzu buraya yazabilirsiniz...