VERİTABANI TASARIMI VERİTABANI TASARIMI KAVRAMI Sistem analizi ve tasarımı sırasında sistemde görülen bir varlık, sınıf, nesne veya bunlara ait bir özellik bile veritabanı tasarımını etkileyen bir işlem olmaktadır. Veritabanı tasarımının gerçekleşebilmesi için gereksinim belirlemesi, ve gereksinimlerin toplanması, sistemin yapısının ve mimarisinin analiz edilmesi vb. eylemlerin gerçekleşmesi gerekmektedir. Verilerin saklanması, işlenmesi ve düzenlenmesi gibi işlemler veritabanı yazılımlerı tarafından gerçekleştirilmektedir. VERİTABANI TASARIMI KAVRAMI Sisteme alınan veriler bir takım modellemelerden geçirilir. Bu modellemelerin uygunluğu ve sistem içinde işleyebilirliği kullanım durumları ile netleştirilir. Netleşen modeller sistem içinde test edilir. Diğer taraftan UML yardımıyla sınıf tasarımları yapılabilir. VERİTABANI TASARIMI KAVRAMI Veritabanı tasarımı, sistemin özelliklerine, kullanıcıların gereksinim ve isteklerine göre birkaç değişik yöntemle gerçekleştirilebilir. Bu yöntemler; ilişkili veritabanı, nesne-ilişkili veritabanı ve nesne yönelimli şemalarıdır. Veritabanı tasarımında yapılması gereken ilk işlem veri kayıtlarının tutulması için en uygun biçemin seçilmesidir. Bu işlemi mantıksal veri modelinden fiziksel veri modeline geçiş takip eder. Daha sonra tasarlanan veritabanı yapısının iyileştirilmesi gerekmektedir. VERİ KAYIT BİÇİMLERİ Veri kayıtları için kullanılan temel biçimler dosyalar ve veritabanlarıdır. Dosyalar; verilerin listelendiği elektronik ortamlardır. Gerçekleştirilecek işlemler çok kapsamlı ve büyük değilse dosya kullanımı uygun olabilir. Maliyetleri düşük olup ve işlemleri gerçekleştirmekte oldukça hızlıdırlar. Veritabanları; dosyalara göre daha geniş kapsamlı ve işlevsel biçimlerdir. Dosyalarda yapılması uygun olmayan sınıflama ve sıralama gibi işlemler veritabanları tarafından daha kolay yapılır. VERİ KAYIT BİÇİMLERİ Veritabanları; veritabanlarının oluşturulması ve üstünlüklerinin kullanılması “Veritabanı Yönetim Sistemleri (DBMS)” yazılımları tarafından sağlanır. Bu yazılımlar veritabanında bulunan tablolar/veriler ve sistem kullanıcılarının arasındaki arayüz köprüsünü temsil eder. MS Access, MSSQL server, MYSQL server, ORACLE günümüzde kullanılan veritabanı yönetim sistemlerine birkaç örnektir. Dosyalar Dosyalarin genel kullanım amacı verilerin listeler şeklinde elektronik ortamlarda saklanabilmesine ve üzerinde işlemler yapılabilmesine olanak verir. İşlemleri gerçekleştirmek için kullanılabilecek farklı dosya türleri bulunmaktadır. Veri Dosyaları Veri dosyalarının verileri saklama ve bu dosyalarda veri kayıtları oldukça basit yöntemlerle gerçekleşmektedir. Bu dosyalarda veriler genellikle sıralı bir şekilde, bir varlığa ait bilgiler bir diğerinin ardından gelecek şekilde tutulmaktadır. Varlıklara ait veriler genellikle “,” virgül işareti veya “tab” sekme boşlukları ile birbirlerinden ayrılırlar. Veri değiştirme ve silme işlemlerinde çok kullanışlı değildir. Veri ekleme yapıldığında yeni veriler dosyanın en sonuna eklenmektedir. Veri Dosyaları Veri dosyaları kullanım amaçlarına göre özelleşmektedirler. Temel (master) dosyalar, tarama (look-up) dosyalar, işlem (transaction) dosyalar, denetim (audit) dosyalar ve kayıt (history) dosyaları başlıca veri dosya çeşitleridir. Temel dosyalar; sistemle ilgili temel ve işlevsel bilgilerinin tutulduğu dosyalardır. Tarama dosyaları; sistemle ilgili doğrulama bilgilerinin tutulduğu dosyalardır. (Or. Username-password) Veri Dosyaları İşlem dosyaları; işlemlerin yapıldığı sırada yaratılan ve sonuç temel dosyalara kaydedildikten sonra silinen geçici dosyalardır. Denetim dosyaları; sistem içinde gerçekleşen değişikliklerin kimler tarafından ne zaman ve nasıl gerçekleştiğinin tutulduğu dosyalardır. Kayıt dosyaları; bu dosyalar eski verilerin depolandığı ve işlem için kullanılmayan arşiv amaçlı dosyalardır. Veritabanları Sistem analizi ve tasarımı açısından sınıflamanın, veritabanlarının veriyi tutma ve işleme şekillerine göre yapılması daha uygun görülmektedir. Miras (legacy), ilişkisel (relational), nesne (object) ve çok boyutlu (multidimensional) veritabanları temel veritabanı türleri olarak kabul edilirler. Miras Veritabanları Bilgi sistemlerinde donanıma en alt düzeyde ve programcılığa en üst düzeyde yüklenme gereksinimini karşılayabilecek bir veritabanı sistemi olarak miras veritabanı kullanılmaktaydı. Miras veritabanları verileri saklama ve veriler üzerinde işlemleri gerçekleştirme şekillerine göre iki temel gruba ayrılabilmekteydi; Hiyerarşik veritabanları Ağ veritabanları İlişkisel Veritabanları İlişkisel veritabanları birçok tablodan oluşan bir küme gibidirler. Küme içindeki her tablonun diğer bir tablo ile ilişkisi bulunmaktadır. Her tabloda satırlar ve sütunlar bulunmaktadır. Sütunların ilki genellikle birincil anahtar (primary key) adı ile anılan alandır. Birincil anahtarın başka tablolar içinde kullanımına yabancı anahtar (foreign key) denilmektedir. İlişkisel Veritabanları İlişkisel veritabanları sistemlerinde bir nesne ile ilgili elde edilmek istenen bir takım bilgilerin sorgulanması işlemi SQL (Structure Query Language) sorgulama dili ile gerçekleştirilir. İlişkilendirilmiş tablolar üzerinde işlemler gerçekleşir. Bazı sorgulamalar birden fazla tablodaki bilgiyi içerebilmektedir. Bu durumda ilgili tablolar içlerindeki birincil ve yabancı anahtarlar aracılığı ile birleştirilir ve sankı tek bir tabloymuş gibi davranırlar. Nesne Veritabanları Nesne veritabanları nesne yönelimli yaklaşımla ortaya çıkmış veritabanı sistemleridir. Nesne veritabanlarında sistem içindeki her şey bir nesne olarak kabul edilir. Her nesne bir sınıftan türemiş ve her sınıfın alt sınıfları olabilmektedir. Her nesneye ait tutulan veriler ve davranışlar bulunmaktadır. Jasmine bu tür veritabanlarına bir örnektir. Nesne-İlişkisel Veritabanları Bir çok firma kullanım alanına göre nesne tabanlı ile ilişkisel veritabanlarını bir arada kullanıyorlar. Bu tür karma veritabanlarına en iyi örnek ORACLE’dır. Çok Boyutlu Veritabanları Büyük mağazalar gibi veri akışının çok yoğun ve büyük miktarlarda olduğu sistemlerde bütün veriler veri ambarında tutulur. Çok boyutlu veritabanları bu verileri işleyerek, bir takım gruplamalarla verileri daha küçük birimlere ayırarak, verilerin daha kullanışlı olmasına yardımcı olurlar. Elde edilen veri depoları sistemin gerçekleştirdiği işlemlerin biriyle veya bir grubuyla ilgili olabilmektedir. Çok Boyutlu Veritabanları Çok boyutlu veritabanları daha çok, birden fazla veri üzerinden genellemeler ve istatistiksel bilgiler elde ederek karar mekanizmalarına yardımcı olurlar. MANTIKSAL VERİ MODELİNDEN FİZİKSEL VERİ MODELİNE GEÇİŞ Gereksinimlerin belirlenmesi sürecinde kullanılan varlık ilişkili şemaları mantıksal veri modelleme kapsamındayken, sistemin tasarlanması ve yeni sistemin geliştirilmesi fiziksel veri modelleme olarak tanımlanıyor. Fiziksel varlık ilişki şemaları, mantıksal veri ilişki şemalarına göre daha ayrıntılı ve belirleyici bilgiler bulundururlar. MANTIKSAL VERİ MODELİNDEN FİZİKSEL VERİ MODELİNE GEÇİŞ Mantıksal şemalar varlıkları, varlıklar arasındaki ilişkiyi ve varlıkların niteliklerini gösterirken, hangi verinin nereden nasıl alınacağı, nerede, nasıl tutulacağı ve nerede, nasıl işleneceğı fiziksel modellemede temsil edilir. MANTIKSAL VERİ MODELİNDEN FİZİKSEL VERİ MODELİNE GEÇİŞ Mantıksal varlık ilişki şemalarından fiziksel varlık ilişki şemalarına geçmek için gerçekleştirilmesi gerekenler; Varlıkların tablo veya dosyalara dönüştürülmesi, Niteliklerin alanlara dönüştürülmesi, Birincil anahtarların belirlenmesi, Yabancı anahtarların eklenmesi, Sisteme ilişkili bileşenlerin eklenmesidir. VERİ KAYIT İYİLEŞTİRMESİ Sistemin veritabanı açısından verimli bir işleyişe sahip olması için yapılması gereken bir takım iyileştirmeler (optimization) yapılmalıdır. Veritabanı tasarımı kapsamında yapılabilecek iyileştirmeler temelde iki çeşittir. Biri veritabanında tutulan verilere erişim hızını iyileştirme, diğeri ise verilerin sistemde ne kadar yer tutacağıdır yani kayıt-verimliliği iyileştirmesidir. Kayıt Verimliliği İyileştirmesi Kayıt verimliğinin iyileştirilebilmesi için yapılması gereken ilk iş veritabanında tekrar eden verilerin bulunmaması ve bir veri için gereğinden fazla yer ayrılmamasıdır. Yabancı anahtar dışında birden fazla tabloda tekrar edilen her veri fazladan tutulan ve sistemi birçok açıdan zayıflatan bir veridir. Veritabanında alanlar oluşturulurken bir takım tanımlamalar yapılır (int(7), string(10) gibi). Bunlar tutulacak veri türünü ve bu tür için kaç bitlik yer ayrılacağını belirler. Erişim Hızı İyileştirmesi Verilerin olası en düşük sürede istenen şekilde elde edilmesi bir sistem için istenen bir durumdur. Kayıt verimliliği sonucu meydana gelen bir çok küçük tablolar bulunmakta, bu da veri boyutunu arttırmaktadır. Kayıt verimliliğiyle ortaya çıkan bu zayıflığı gidermenin bir kaç yolu bulunmaktadır; Anormalleştirme (Denormalization) Bir işlem için birden fazla tablonun tek bir tabloya dönüştürülmesidir. Küçük tablolardan her defasında ayrı işlem yapılması verimli değildir. Bu tür küçük tabloların bir tabloda birleştirilmeleri veri erişim verimliliği açısından olumlu sonuçlar yaratacaktır. Kümeleme (Clustering) İnternet üzerinde gerçekleştirilen bilgi erişim işlemleri kümeleme işlemlerine benzerdir. İnternet üzerinden erişebilecek bilgi miktarı sonsuz denebilecek kadar çoktur. Bu bağlamda bilgilerin iyi gruplanması gerekir. Kümeleme işlemi bir veri ambarı, veri deposu veya veritabanında yer alan benzer ve ilişkili verilerin erişim açısından kolaylık sağlanması amacıyla bir arada tutulması ile sağlanmaktadır. Dizinleme (Indexing) Dizinleme işlemi bir maket veya yönlendirici panonun işlevine benzemektedir. Erişebilecek veri miktarı fazla olunca, bütün veritabanındaki verilerin taranması verimli bir yöntem değildir ve oldukça fazla bir zaman almaktadır. Bir dizin üzerinden arama yapmak – bir bilgilendirme panosuna göz gezdirmek gibi – veri erişim hızı açısından çok daha verimli bir yöntem olacaktır. Tahmini Veri Boyutu Veritabanı tasarımını etkileyen bir diğer faktör de donanımdır. Yani veritabanı için yapılan iyileştirmeler donanımla uyumlu olmayabilir. Dolayısıyla donanımın desteklediği bir veri miktarı hedefi konmalı ve tüm iyileştirme çalışmaları bu hedefe göre yapılmalıdır. Böylece veritabanı tasarımları, veri kayıt verimliliği açısından orta düzeyde, veri erişim verimliliği açısından orta düzeyde, fakat sistemin genel verimliliği açısından en üst düzeyde sağlanabilmektedir.