Veritabanı Mantığına Giriş
Selam yazılımcı arkadaşlar,
Gerçi yazılımcılar dedim ama bu konu veritabanı yöneticilerini de ilgilendiren bir makale olacak :)
Bugün dünyada aslında birçok veri bilindik bilgisayarda tutulan dosyalarda değil veritabanları tutulmaktadır.En basitinden şu anda bu yazıyı okuduğunuz sayfa bulunduğu web hostingde değil bir veritabanında tutuluyor ve ordan bu gördüğün sayfaya yansıtılmaktadır.
Zaten internet dünyasının büyük çoğunluğu bu mantıkta ilerlemektedir çünkü veritabanı mantık olarak hız ve esnekliği mümkün kılmaktadır dolayısıyla herkesin hızlı internet bağlantısına sahip olamadığını düşünürsek internet servis sağlayıcılarının band yatırımı yerine internetin kendisini hızlandırmak daha ucuza ve daha akılcı olur sanırım :)
Neyse lafı uzatmadan konuya girelim,veritabanı demek verilerin saklandığı özel bir havuz demektir,bu havuzda veriler karmaşık olarak değil aksine çok iyi kurallarla ve mükemmel bir sırayla yer almaktadır.Aynı zamanda bir yere yazılan veri bir başka yerde rahatlıkla kullanılabilmektedir.
Eğer veritabanı sistemleri olmasaydı ve veriler bilgisayarımızdaki metin dosyalarında tutulsaydı aynı veriye ulaşan ve veri içeriğini değiştirmeye farklı zamanlarda değiştirmeye çalışsalardı kesinlikle en son kaydı yapan kullanıcının son girdiği veri o metin dosyasında saklanacak ve diğer kullanıcıların yaptıkları işlem çöpe gidecekti.İşte bu mantıktan yola çıkıldı ve herkes veriye farklı zamanlarda en yüksek hızda ulaşsın ve hiçbir emek boşa gitmesin diye veritabanı yönetim sistemleri ortaya çıktı.
Aslında bakılırsa bunun genel adı SQL (structure query language) yani yapısal sorgu dili anlamına gelmektedir ve nedense bu yapıyı ortaya çıkaran yazılım firması Microsoft olarak bilinmektedir.Ancak SQL çok genel bir kavramdır ve veritabanında sorgulama dili sadece SQL değil,MySQL ve Oracle gibi farklı sorgulama dilleri ve veritabanı yapıları varolmaktadır.
Peki nedir bu veritabanı sorgulama olayı?
Burada sorgulamadan kasıt veritabanı deposuna veri ekleme,güncelleme,görüntüleme ve silme (kısaca CRUD olarak bilinir) işlemlerinin kendisidir.
Gerçek manada bir veritabanına bilgi girilirken aslında görsel birşey kullanılmaz (sql için yazılan ara programları saymazsak),sadece yazacağımız SQL cümleleri ile bu işlemler gerçekleşir.Yani bilgisayardaki dosyaları kopyalayıp yapıştırmaktan farklı bir kavramdır.
Tabi ki iş sadece sorgu cümleleri ile bitmiyor,asıl önemli olan veritabanı tasarımını yapabilmektir ve birçok yazılım veritabanının tasarımına göre yazılır.
Peki veritabanı tasarımı nasıl yapılır?
Teorik olarak bahsetmek gerekirse veritabanı tasarımın bazı püf noktaları vardır,bunlardan birincisi esnekliktir.
Esneklik kavramından kasıt veritabanı ihtiyaçları karşılamada yetersiz kalırsa varolan tasarıma ek modüller ekleyebilme şansının yüksek olmasıdır ve esnek şekilde tasarım yapılmayan veritabanının sonu çöplüktür.
İkinci önemli nokta ise yüksek hızlı olmasıdır çünkü veritabanının varoluş nedenlerinden birisi de hızlı olduğu için tercih edilemesidir.Bunun için doğru veritabanı tasarımı şarttır.
Üçüncü kural ise en önemlisi olanıdır,yani bir veriyi diğer birçok yerde kullanabilme imkanı verebilmesidir.Buradaki veriden kastım "bir yılda yapılan net satışların sayısı" olabildiği gibi "geçmiş yıllarda yapılan şirketin şu şubesinin şu departmanındaki şu personelin yaptığı 100 TL'den fazla satışların genel toplamı" gibi çok spesifik ve odak noktası derin olabilecek verilerdir.
Tüm bu kuralların geneline ise veritabanında normalizasyon kuralları denilmektedir.Eğer bu kurallara uyulmazsa ve yapılan projede bu veritabanına dayanan kodlarınız bulunuyorsa yanlış tasarım tüm kodlarınızı silmenize sebep olacak ve daha kötüsü yazılımcıların çok değerli olan zamanlarını heba edecektir.Bu yüzden mutlaka ama mutlaka doğru veritabanı tasarımı yapmalısınız.
Bu kadar veritabanı hakkında ön bilgi yeterlidir sanırım,bir sonraki makalemde nasıl veritabanı tasarımı yapılır ve neye göre yapılır gibi konulara giriş yapacağız.
Şimdilik kendinize iyi bakın der,iyi günler dilerim ;)
Gerçi yazılımcılar dedim ama bu konu veritabanı yöneticilerini de ilgilendiren bir makale olacak :)
Bugün dünyada aslında birçok veri bilindik bilgisayarda tutulan dosyalarda değil veritabanları tutulmaktadır.En basitinden şu anda bu yazıyı okuduğunuz sayfa bulunduğu web hostingde değil bir veritabanında tutuluyor ve ordan bu gördüğün sayfaya yansıtılmaktadır.
Zaten internet dünyasının büyük çoğunluğu bu mantıkta ilerlemektedir çünkü veritabanı mantık olarak hız ve esnekliği mümkün kılmaktadır dolayısıyla herkesin hızlı internet bağlantısına sahip olamadığını düşünürsek internet servis sağlayıcılarının band yatırımı yerine internetin kendisini hızlandırmak daha ucuza ve daha akılcı olur sanırım :)
Neyse lafı uzatmadan konuya girelim,veritabanı demek verilerin saklandığı özel bir havuz demektir,bu havuzda veriler karmaşık olarak değil aksine çok iyi kurallarla ve mükemmel bir sırayla yer almaktadır.Aynı zamanda bir yere yazılan veri bir başka yerde rahatlıkla kullanılabilmektedir.
Eğer veritabanı sistemleri olmasaydı ve veriler bilgisayarımızdaki metin dosyalarında tutulsaydı aynı veriye ulaşan ve veri içeriğini değiştirmeye farklı zamanlarda değiştirmeye çalışsalardı kesinlikle en son kaydı yapan kullanıcının son girdiği veri o metin dosyasında saklanacak ve diğer kullanıcıların yaptıkları işlem çöpe gidecekti.İşte bu mantıktan yola çıkıldı ve herkes veriye farklı zamanlarda en yüksek hızda ulaşsın ve hiçbir emek boşa gitmesin diye veritabanı yönetim sistemleri ortaya çıktı.
Aslında bakılırsa bunun genel adı SQL (structure query language) yani yapısal sorgu dili anlamına gelmektedir ve nedense bu yapıyı ortaya çıkaran yazılım firması Microsoft olarak bilinmektedir.Ancak SQL çok genel bir kavramdır ve veritabanında sorgulama dili sadece SQL değil,MySQL ve Oracle gibi farklı sorgulama dilleri ve veritabanı yapıları varolmaktadır.
Peki nedir bu veritabanı sorgulama olayı?
Burada sorgulamadan kasıt veritabanı deposuna veri ekleme,güncelleme,görüntüleme ve silme (kısaca CRUD olarak bilinir) işlemlerinin kendisidir.
Gerçek manada bir veritabanına bilgi girilirken aslında görsel birşey kullanılmaz (sql için yazılan ara programları saymazsak),sadece yazacağımız SQL cümleleri ile bu işlemler gerçekleşir.Yani bilgisayardaki dosyaları kopyalayıp yapıştırmaktan farklı bir kavramdır.
Tabi ki iş sadece sorgu cümleleri ile bitmiyor,asıl önemli olan veritabanı tasarımını yapabilmektir ve birçok yazılım veritabanının tasarımına göre yazılır.
Peki veritabanı tasarımı nasıl yapılır?
Teorik olarak bahsetmek gerekirse veritabanı tasarımın bazı püf noktaları vardır,bunlardan birincisi esnekliktir.
Esneklik kavramından kasıt veritabanı ihtiyaçları karşılamada yetersiz kalırsa varolan tasarıma ek modüller ekleyebilme şansının yüksek olmasıdır ve esnek şekilde tasarım yapılmayan veritabanının sonu çöplüktür.
İkinci önemli nokta ise yüksek hızlı olmasıdır çünkü veritabanının varoluş nedenlerinden birisi de hızlı olduğu için tercih edilemesidir.Bunun için doğru veritabanı tasarımı şarttır.
Üçüncü kural ise en önemlisi olanıdır,yani bir veriyi diğer birçok yerde kullanabilme imkanı verebilmesidir.Buradaki veriden kastım "bir yılda yapılan net satışların sayısı" olabildiği gibi "geçmiş yıllarda yapılan şirketin şu şubesinin şu departmanındaki şu personelin yaptığı 100 TL'den fazla satışların genel toplamı" gibi çok spesifik ve odak noktası derin olabilecek verilerdir.
Tüm bu kuralların geneline ise veritabanında normalizasyon kuralları denilmektedir.Eğer bu kurallara uyulmazsa ve yapılan projede bu veritabanına dayanan kodlarınız bulunuyorsa yanlış tasarım tüm kodlarınızı silmenize sebep olacak ve daha kötüsü yazılımcıların çok değerli olan zamanlarını heba edecektir.Bu yüzden mutlaka ama mutlaka doğru veritabanı tasarımı yapmalısınız.
Bu kadar veritabanı hakkında ön bilgi yeterlidir sanırım,bir sonraki makalemde nasıl veritabanı tasarımı yapılır ve neye göre yapılır gibi konulara giriş yapacağız.
Şimdilik kendinize iyi bakın der,iyi günler dilerim ;)