| 
                
             | 
        
        
            
                
                    
                        | 
                            ADO.NET için İlişkisel Veritabanı Tasarımı | 
                        
                             | 
                                
                     
                    
                        
                            
	
    
		
            | Gönderiliyor lütfen bekleyin... |   
        
	 
    
 
                         | 
                     
                 
             | 
        
        
            
                
                Günümüzde hemen 
  hemen her web tabanlı hem de büyük çaplı kurumsal uygulamlarda verilerin işlenmesi 
  gerekiyor. Verileri bir veritabanında saklamak ve bunları programlama dilleri 
  ile işlemek için uyugulama geliştirme ara birimleri (API) kullanılır. 
  
Microsoft Windows 
  ortamında geçtiğimiz üç beş yılda ençok kullanılan uygulama geliştirme arabirimi 
  olarak ADO (Activex Data Object) öne çıkmıştır. .NET ile ise ADO.NET'i kullacağız. 
  ADO.NET ADO'ya nazaran birçok yenilik ve kolaylıklar getirmiştir. Bunları ilerleyen 
  yazılarımızda detaylı olarak inceleyeceğiz. 
  
Veritabanları 
  ve İlişkisel Veritabanı Modeli
  
 Veritabanı 
  Nedir?
  
 Veritabanı verilerimizi 
  düzenli bir biçimde tablolar halinde saklamamızı sağlayan programlardır. Veritabanları 
  ile ayrıca verilerimizi güvenli ve hızlı bir biçimde işlememize yardımcı olurlar. 
  Milyonlarca kayıtı aynı anda içinde barındıran ve bir çok gelişmiş araçlar sunan 
  veri tabanı programlarına, veri tabanı yönetim sistemleri denir. Mesela MS Access 
  bir veritabanı programıdır. Diğer taraftan MS SQL Server, Oracle, Sysbase, DB2 
  ve İnformix tam birer veritabanı yönetim sistemleridir. Veritabanı yönetim sistemleri 
  tam donanımlı olarak veriler üzerinde her türlü işlemi kolayca ve verilerin 
  güvenliğini sağlayarak çalışmamıza izin verirler. 
  
Veritabanı Modelleri 
  
  
 Veritabanı programları 
  günümüze gelene kadar veriler üzerinde çalışırken bir çok veri modellerini kullanmışlardır. 
  Bunların en ünlüleri; Hiyerarşik, Ağ, İlişkisel ve Nesne Yönelimli veri modelleridir. 
  İsterseniz bu veri modellerine kısaca bir göz atalım:
  
  - Hiyerarşik Veri 
    Modeli: Bu modelde veriler ağaç yapısına benzer bir biçimde modellenir. En 
    üste kök ve kökün dalları bulunur. Ayrıca her dalın alt dalı sayesinde dallanma 
    ve çeşitlilik artar. Bu modelde her bir alt dalın sadece bir tane noktadan 
    bağlanma şartı bu modelin en büyük kısıtlamalarından biridir. Hiyerarşik veri 
    modeli 1960 ve 1970 yılları arasında popüler olan bir modeldi. 
  
 - Ağ Veri Modeli: 
    Ağ veri modeli 1970'li yıların başında geliştirilmiştir. Bir verinin doğası 
    gereği birden çok veri ile ilişkisinin olmasından dolayı hızlıca kabul görmüştür. 
    Bu modelde verilerin birrinie ağ şeklinde bağlandığı varsayılır. 
  
 - İlişkisel Veri 
    Modeli: Şu anda kullanılan veri tabanlarının çoğu ilişkisel veri modeline 
    daha çok destek verirler. Bu modelde alakalı veriler tablolar içinde saklanır. 
    Ayrıca tablolar arasında değişik türde ilişki kurulur. İlişkiler kurulurken 
    birincil anahtar (Primary key) ve yabancı anahtarlar (Foreign Key) kullanılır. 
    Anahtar alanlar sayesinde indeksleme (indexing) yapma olanığı sunan ilişkisel 
    veri tabanlarında erişim ve işlemler daha hızlı yapılabilir.
  
 - Nesne Yönelimi 
    Veri Modeli: Diğerlerinden daha sonra ortaya atılan ve karmaşık uygulamarda 
    başarısını kanıtlamış nesne yönelimli programlamaya dayanan veri modelidir. 
    Bu modelin öngörüsü giderek çözülmesi daha zor hale gelen programlama problemlerini 
    çözen nesne yönelimli modelin veri modelleme de etkili olacağıdır. 
 
 
İlişkisel Veritabanı 
  Tasarımı Örneği
  
İlişkisel veri 
  tabanı tasarımı ile verilerimizin duplikasyonunu (duplication) önleme şansımız 
  vardır. Bu sayede veritabanımızı yönetmek daha kolay olduğu gibi verilerimizin 
  saklama aygıtlarında kapladıkları alanlar da daha küçük olur. Dahası bu sayede 
  veritabanı ile olan işlemerimiz de daha hızlı gerçekleşir ki veritabanı işlemleri 
  genelde diğer işlemlere göre masraflı işlemler olarak bilinirler. 
  
İlişkisel veritabanlarında 
  verilerin tablolar içinde saklandıklarını öğrenmiştik. Tablolarda her bir satır 
  bir kayıtı tutar. Bir kayıtta genelde birden fazla alan olur.  
   
   
  
Şekil 1.'deki Telefon_Defteri 
  tablosunda alalar: id, isim, soyisim, alan_kodu ve telf_no'dur. Aynı zamanda 
  tabloda 5 tane kayıt olduğu görülmektedir.
  
İlişkisel veritabanı 
  tasarımı üniversitelerde ayrı bir ders olarak okutulduğu gibi profesyonel kurslarda 
  birlerce dolarlarla verilen bir eğitimdir. Biz burada hızlıca ilişkisel veri 
  tasarımının nasıl yapılacağını canlı bir örnek üzerinde görerek olayın özünü 
  öğreneceğiz.
  
Bir web uygulaması 
  için anket modülü geliştireceğimizi varsayılm. Ankatemizde anket sorusunu, anketin 
  seçeneklerini, ve hangi anketin hangi seçeceğine hangi kayıtlı kullanıcının 
  cevap verdiğini tutmamız gerekiyor. Eğer tüm veritabanını tek bir tabloda toplarsak 
  aşağıdaki gibi bir tablo oluştururduk.
  
   
  
  
Şekil 2'de yeralan 
  tablo ile en basit veritabanı tasarım yapılmış ver veriler ile doldurulmuştur. 
  Yalnız yukarıdaki tablo ilişkisel veri tasarımı kurallarına göre tasarlanmadığı 
  ortadadır. Her kullanılan oy için anket_sorusu alanında bulunan veri tekrar 
  tekrar veri tabanında depolanır. secenek_1, secenek_2, secenek_3, secenek_4 
  ve secenek_5, alanları da kendileri için kullanılan her bir oy için depolanıyor. 
  Bu durumda veritabanımız kısa sürede şişek, gereksiz yere aynı verileri depolamak 
  pek anlamdı olmaz. Bir de elimizdeki veritabanı tek bir tablodan oluşan küçük 
  bir model! Peki biz daha karmaşık bir veritabanını bu biçimde depolarsak hem 
  saklama alanı hem de işlem hızı konularında israf etmiş olmazmıyız?
  
Bu durumda çözüm 
  tabiki ilişkisel veri tabanı modeline göre veri tabanımızı tasarlamamızdır. 
  Bu tasarımda önemli noktalardan biri tabloları olabildiğince çok sayıda alttabloya 
  bölmek olacaktır. Şekil 2'deki tabloya tekrar bir bakalım. Bu tabloda solda 
  bulunan anket_soru alanı her kullanılan oy için tekrar ediyor. Bizim ise aslında 
  sedece her anket için sadece bir tane anket_soru alanına ihitiyacamız var. Aynı 
  şekilde seçenekler her oylandıklarında tekrar tekrar veritabanına yazılır. Yine 
  bizim her seçenek için sadece birer tane seçenek alanına ihtiyacımız olduğu 
  açıktır. 
  
Sonuç olarak Şekil 
  2'deki tablomuzu üç farklı tabloya bölebiliriz. Bu tablolar aşağıda Şekil 3'de 
  verilmiştir: 
   
    
  
Şekil 3'te gördüğümüz 
  gibi Anket tablosunda iki alan bulunmaktadır. Birincisi, anket_id, her anketin 
  özel numarasını içerir. Bu numara her anket için farklıdır. Diğeri anket_soru 
  alanıdır. Bu alanda ise anaketin sorusu yeralıyor. 
  
İkinci tablomuz 
  olan secenekler tablosunda en soldaki secenek_id alanı tamsayı değerlerini depolar. 
  Bu sayılar her seçenek için farklıdır ve seçeneğe özeldir. Tıpki Anket tablomuzda 
  yeralan anket_id alanı gibi. Ortadaki alan ise, secenek_metni, seçeneklerin 
  içerikleridir. Burada dikkat edilmesi gereken noktalardan birisi secenekler 
  tablosundaki anket_id alanıdır. Bu alan hangi seçeneğin hangi ankete ait olduğunu 
  gösterrir. 
  
Son tablomuz olan 
  oylar tablosunda yine 3 tane alan vardır. Bunlardan ilki secenek_id alanı her 
  kullanılan oyun hangi seçeneğin seçildiğidir. user_id, alanı ise kullanılan 
  oyu hangi kullanıcının oyladığını göserir. Son olarak en sağdaki OyId alanının 
  neden orda bulduğunu birazdan öğreneceğiz.  
  Dikkat ederseniz Anket ve secenekler tablolarının sol taraflarında bulunan artı 
  (+) işaretleri vardır. Bunun sebebi tablolar arasında kurduğumuz ilişkilerdir. 
  
  
Anket uygulaması 
  için hazırladığımız veritabanımızın ilişkilerini MS Access içerisinde şu şekilde 
  görünür:
  
   
  
  
Yukarıdaki şekil 
  4'te iki farklı ilişki kurlumuştur. Anket tablosunun anket_id alanı ile secenekler 
  tablosunun anket_id arasındaki birinci ilişkimizdir. Diğeri secenekler tablosunun 
  secenek_id alanı ile oylar tablosunun yine secenek_id alanları arasındadır. 
  Genelde ilişkili olacak alanların isimleri aynı olur. Ama bu zorunda bir kural 
  değildir. Alan isimlerinin aynı olması durumunda programlama ve veritabınını 
  yönetmek daha kolay olur.
  
Bir sonraki yazımızda 
  SQL sorgulama dilini detaylı olarak inceleyeceğiz. Herkese iyi çalışmalar..
  
                
                Makale: 
                ADO.NET için İlişkisel Veritabanı Tasarımı ADO.NET ve SQL Ahmet Faruk Nacaroğlu 
             | 
        
        
            | 
             | 
        
        
            | 
                 
             | 
        
        
            
                
                
                    
                        - 
                            
                        
 
                        - 
                            
Eklenen Son 10  
                         
                        - 
                            
Bu Konuda Geçmiş 10 
                         
                     
                    
                        
                            Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
                         
                        
                            Son Eklenen 10 Makale Yükleniyor
                         
                        
                            Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor
                         
                     
                 
                
                
             | 
        
        
            | 
                
             |