bugün

(bkz: database)
(bkz: mysql)
Kısaltması DB. Örnek veritabanları; ORACLE, MYSQL, SQL Server, Access, Paradox, vb.
Excel'in kullanıcılar arasında görevi en çok karıştırılan yazılım olduğunu biliyoruz. Şu an birçok şirket çeşitli verilerini Excel ile tutuyor. Küçük veri kümelerinde bir sorun çıkmazken çok büyük veri kümeleri söz konusu olduğunda Excel ya da diğer bir hesap tablosu programı yetersiz kalabilir. Mesela okullarda kullanılan yönetim programlarının verileri Excel'de sakladığını hiç görmedim.

Yüzlerce öğrencinin notları, devamsızlık bilgileri ve kimlik bilgileri gibi verileri saklamak ve farklı zamanlarda farklı işlemler için çağırmak Excel ile oldukça zordur. Üstelik Excel'de her sayfada 65,000 kayıt ile sınırlısınız ama veritabanının sınırları çalıştığınız bilgisayara göre değişir. Örnekleri artırabiliriz ama işin özü şudur: Mutlaka düzenli şekilde saklamak ve çeşitli şekilde tekrar ulaşmak istediğimiz verilerimiz vardır.

Mutlak güvenlik hiçbir zaman mümkün olmasa da veritabanları uygun programlarla beraber kullanılınca etkin yedekleme teknikleri sayesinde çok daha güvenli hale gelirler. Buna ek olarak veritabanı üzerindeki farklı veri kümeleri için farklı kullanıcılara ya da kullanıcı gruplarına yetkiler atayarak istediğiniz kişilerin erişimini kısıtlayabilirsiniz.
Hangi veritabanı?

Microsoft'un Office paketi ile beraber gelen Access yazılımı şu an kullanılan en popüler veritabanı yönetim programıdır. Gerek Office paketine ödediğiniz dışında başka bir para ödeme zorunluluğunuzun olmaması gerekse kolay kullanımı Access'e başarıyı getiren etmenler olmuştur. Birçok küçük ve orta ölçekli işletmeler, web siteleri ve programlar Access ile oluşturulmuş veritabanı yapısı ile çalışmaktadır. iyi yönlerine rağmen Access'in çok büyük ölçekli projelerle başa çıkacak özelliklere sahip olmaması onun bu işlerde tercih edilmemesinin sebebidir. Fakat başlangıç için en iyi seçim Access olacaktır.

Bir diğer çok ileri seviye olmayan veritabanı sistemi de MySql'dir. MySql aslında Microsoft'un Access'ine karşı olarak piyasaya sunulmuştur. Özellikle web tasarımında nasıl Access ile ASP kullanılıyorsa, MySql ile de PHP kullanılarak etkin sonuçlar elde edilebilir. MySql bazı eksilerine rağmen Linux ile beraber ve ücretsiz olarak temin edilebilmesi ile popülerlik kazanmıştır.

Şimdi gelelim "babayiğit" veritabanı yönetim sistemlerine. Tabi ki burada da ilk söze Microsoft başlıyor ve bizi SQL Server yazılımı ile tanıştırıyor. SQL Server en küçükten en büyüğe kadar bütün kurumsal tabanlı isteklere yanıt verebilecek başarılı bir veritabanı yöneticisi. Farklı sürümleri ile farklı bütçelere hitap ediyor. Şu an piyasada en sık rastlanan program olması sanırım Microsoft tabanlı olmasında yatıyor.

SQL Server'dan sonra sahneye hemen Oracle'ı alıyoruz. Oracle güçlü yapısı ile en ileri veritabanı taleplerini bile karşılayabiliyor. Özellikle "Grid Computing" ile yönetim sayesinde veritabanının yükü farklı sunucu bilgisayarlarına yayılabiliyor.

Peki, bunların hangisi en iyi? Bu soruya kimse yanıt veremez. Hepsinin farklı kullanım alanları var ve hepsi alanlarında çok iyi. Benim önerim Access ile başlamanız. Böylece hem bütçeniz bir veritabanı yüzünden sarsılmaz hem de işlerinizi Access ile halledebilirsiniz.
Veritabanı Yapısı

Veritabanı aslında tek başına bir şey ifade etmez. Veritabanı, içerisindeki parçalar sayesinde işe yarar bir kavramı oluşturur. Bu kavramların en başında da "tablo" gelir. Access ile Excel'in karıştırılmasının yegane sebebi de zaten budur. Her iki program da tablolarla uğraşır.

Tabloların içerisinde ise alanlar bulunur. Excel'deki sütunları veritabanının alanlarına benzetebiliriz. Alanlar tek tip veriyi kaydetmek için kullanılır. Alanlar bir veritabanında verileri süzmek için en etkili araçlardır. Mesela kişilerin kimlik bilgilerinin tutulduğu bir tabloyu açtığımızda herhangi bir kişinin doğum tarihini öğrenmek için ilgili alana bakmamız yeterlidir. Böylece alanlar farklı veri tiplerinin karışmasını da engeller.
Gelelim Tasarıma

Buraya kadar biraz işin masal kısmını anlattık. Şimdi en çok soru gelen bölüme, etkin veritabanı tasarımına geçebiliriz. Veritabanı tasarımında da sizi başarıya götürecek altın kurallar var.

Normalleştirme: Veritabanı dilinde "normalization" olarak geçen kavram Türkçe için normalleştirme olarak çevrilebilir. Normalleştirmede temel amaç veritabanı ruhuna uygun tablolar tasarlamaktır. isterseniz daha detaylı anlatayım.

Çok çok basit bir örnek vereyim. Diyelim ki çalıştığınız yazılım şirketi bir ajanda programı geliştiriyor ve sizden kişi bilgilerini tutmak için bir veritabanı tasarlamanız istendi. Öncelikle sadece kendi işinize odaklanın. Verilerin veritabanından nasıl çekileceğini hiç düşünmeyin çünkü o programcıların işi. Siz sadece verilen saklanabileceği bir veritabanı oluşturacaksınız.

Oluşturmanız istenen veritabanında kişiler için adı, soyadı, doğum tarihi ve e-posta adresleri saklanacak olsun. Burada önemli yapılacakları sayarken hangi verileri çoğul eki kullanarak saydığınızdır. Dikkat ettiyseniz ben yukarıda adı, soyadı, doğum tarihi ve e-posta "adresleri" dedim. Kişinin adı, soyadı ve doğum tarihi tek olabilir ama e-posta adresi de tek olacak diye bir kural yok. Bu durumda ne yapacağız? Kişi tablosuna posta1, posta2, posta3 diye alanlar eklemek sadece geçici bir çözüm olur. Belki ileride 10 e-posta adresine sahip bir kişi eklemeniz gerekecek.

Burada normalleştirmenin ilk adımını atmalısınız. Tekrarlanabilecek veriler için ayrı bir tablo oluşturmak. Veritabanınıza KiSi_POSTA isimli yeni bir tablo koymalı ve kişilerin ID numaralarını buradaki posta adresleri ile ilişkilendirmelisiniz. Şimdi de iki yeni kavramla karşılaştık. ID ve ilişkilendirme.

Benzersiz Tanımlama: Veritabanı normalleştirme sürecinde en önemli duraklardan biri de "unique identification" yani benzersiz tanımlamadır. Bunu da bir örnekle açıklayayım.

Az önce bahsettiğim gibi bir veritabanınız var. Bu veritabanındaki Cankat Akdemir kişisinin doğum tarihini yanlış girdiğinizi fark ettiniz ve değiştirmeniz gerekti. Ama bir baktınız ki iki tane Cankat Akdemir var. Olamaz mı? Tabi sadece eş dost kaydettiğiniz bir veritabanı oluşturduysanız aradığınız kişiyi hemen bulabilirsiniz ama eğer ülkesel bazda çalışan bir kurumun adres defterini tutuyorsanız kimin kim olduğunu kestirmek zor olur.

Bu durumda herkese işin en başındayken benzersiz bir numara vermek çok iyi olur. Mesela T.C Kimlik Numarası aynı sebepten doğmuştur. Herkes kendini tek bir numara ile gösterebilmektedir.

Veri ilişkilendirme: Veri ilişkilendirme (data relation) de bir veritabanının normalleştirilmesi sürecinde atılan önemli bir adımdır.

Okul örneğine dönersek, bir sınıftaki öğrencileri başka bir sınıfa gönderdiğinizi varsayalım. Bilgisayar başına geçip sınıftaki tüm öğrencilerin kayıtlarını tek tek değiştirmek işkence olur. Bunun yerine SINIF_ODA isimli bir tablo yaratmalı ve hangi sınıfın hangi odada bulunduğunu buraya işlemelisiniz. Öğrenciler zaten oda olarak değil sınıf olarak kayıtlı olduğundan SINIF_ODA tablosunda istediğiniz sınıfın oda numarasını değiştirince öğrenciler de o odada görünürler.

Veri tabanı tasarlamak çok kolay olmasa da çok da zor değildir. Esas olan veritabanı tasarımınızı yıllar sonra çalışacak şekilde tasarlamaktır.

Bilgisayar programcılığı ve veritabanı tasarımcılığında işe asla bilgisayar ile başlanmaz. işin yüzde 60'ı kâğıt üzerinde halledilir. Özellikle veritabanı tasarlarken "X için Y" formülü normalleştirme kısmını kolaylaştırır. Mesela yukarı söz ettiğim, kişi listesi veritabanı için şöyle bir "X için Y" formülü uygulayabilirsiniz:

*Kişi için Ad
*Kişi için Soyad
*Kişi için Doğum Tarihi
*E-Posta için Kişi

Yapacağınız bu listede "için" sözcüğünden önceki sözcük değişince yeni tablo yaratacaksınız demektir. Bir diğer deyişle "için" sözcüğünden önceki kısım çok veri içerebilir fakat sonrası tektir. "E-Posta için Kişi" örneğine baktığımızda görüyoruz ki birden çok e-posta adresi olabilir ama bunlar tek kişiye aittir. Bunlara ek olarak aynı isimli kişiler de olabilir bunları ayırt etmek için benzersiz tanımlama kullanıyoruz.

Ben temel veritabanı kavramlarını en basit şekilde anlatmaya çalıştım. işler aslında bu kadar da kolay değil. ilişkisel veritabanında bir-çok, çok-çok gibi ilişkilendirmeler sağdan ve soldan eklemeli tablolar derken insanın kafası karışıyor. Düşünüyorum da, kendi yarattığımız şeyleri öğrenmek için ne kadar çok uğraşıyoruz.