Veritabanı Nedir?
Veritabanı basit olarak bilgi depolayan bir yazılımdır. Bir çok yazılım bilgi depolayabilir ama aradaki fark, veritabanın bu bilgiyi verimli ve hizli bir şekilde yönetip degiştirebilmesidir. Veritabanı, bilgi sisteminin kalbidir ve etkili kullanmakla değer kazanır. Bilgiye gerekli oldugu zaman ulaşabilmek esastır. Indeksi olmayan bir kütüphane ve bütün kitapların ayni kapağa sahip oldugunu düşündüğünüzde kütüphane kullanıcılarının ne kadar çok işi olacağını tahmin edersiniz. Bir veritabani bir kütüphanenin mükemmel bir indeks sistemi oldugu gibi, aynı zamanda kütüphanenin kendisidir. İlişkisel veritabanı yönetim sistemleri relational database management systems - rdbms büyük miktarlardaki verilerin güvenli bir şekilde tutulabildiği, bilgilere hızlı erişim imkanlarının saglandığı, bilgilerin bütünlük içerisinde tutulabildigi ve birden fazla kullanıcıya aynı anda bilgiye erişim imkanının sağlandığı programlardır. Oracle veritabani da bir ilişkisel veri tabanı yönetim sistemidir.
Veritabanı Nedir?
En basit anlamda veritabanı, belirli bir amaca yönelik düzen verilmiş kayıt ve dosyaların tümüdür. Bilgisayar sisteminizde arkadaş ya da müşterilerinizin ad ve adreslerini toplamış olabilirsiniz. Belki, yazdığınız tüm mektupları topluyor ve alıcıya göre düzen veriyorsunuz. Ödeme ve tahsilat yapılacak hesaplarınız ya da çek defterinizin borçlan ve bakiyesi gibi finansal verilerinizi topladığınız bir grup dosyalarınız da olabilir. Konularına göre düzen verdiğiniz sözcük işlemci belgeler, en geniş anlamda, bir tür veritabanıdır. Kullanıma göre düzen verdiğiniz elektronik tablo dosyaları da ayrı bir tür veritabanıdır. Windows Başlat menüsündeki tüm program kısayolları da bir veritabanıdır. Sık Kullanılanlar klasöründe düzen verilmiş internet kısayolları bir veritabanıdır.
Çok düzenliyseniz, birkaç yüz elektronik tablo ya da kısayolunu klasör ve alt klasörleri kullanarak yönetebilirsiniz. Bunu yaptığınızda, veritabanı yöneticisi siz olursunuz. Çözmeye çalıştığınız sorunlar büyüdükçe ne yapacaksınız? Veriler çeşitli belgelerde ya da elektronik tablolarda saklanmışken, tüm müşterilerle ve onların siparişleriyle ilgili bilgileri nasıl kolayca toplayabilirsiniz? Yeni bilgiler girince dosyalar arasındaki bağlantıları nasıl koruyabilirsiniz? Verilerin doğru girildiğinden nasıl emin olursunuz? Bilgilerinizi birçok kişiyle paylaşma gereksiniminiz olup, aynı anda iki kişinin aynı verileri güncelleştirmeye çalışmasını istemediğinizde ne yapacaksınız? Bu tür güçlüklerle karşılaşmışsanız, bir veritabanı yönetim sistemine (DBMS) gereksiniminiz var demektir.
Veritabanlarının amacı büyük miktardaki kurumsal verileri işlemektir. Veriler düzenli bir biçimde elektronik ortamda kaydedilirler. Düzenli olarak yedeklenen ve kontrol edilen bu bilgiler çok sayıda uygulamanın ve kullanıcının hizmetine sunulur. Büyük miktarlardaki verilerin hızlı ve güvenli bir biçimde gereksinim duyulan bilgiye dönüştürülmesi veritabanlarının en önemli özelliklerinden birisidir.
- Veritabanı, belli bir alanda ve birbiriyle ilişkili olarak düzenlenmiş veriler topluluğudur.
- Veritabanı, bir çok kullanıcı tarafından kullanılan birbirleriyle ilişkili geniş bir veri kümesinin düzenlenmesi, depolanması ve sorgulanması için kurulan sistemdir.
- Veritabanı, bir çok uygulamaya hizmet vermek için zararlı ve gereksiz veriler hariç ilişkili verilerin saklandığı bir veri topluluğudur.
- Veritabanı, bilgisayar temelli bir kayıt tutma sistemidir. Sistemin amacı verileri kayıt etmek ve bakımını yapmaktır.
- Veritabanı, bir organizasyonda verilerin merkezi kontrolünü sağlar.
- Veritabanı sistemi, basitçe kompüterize edilmiş bir kayıt takip sistemidir.
Günümüzde herhangi bir veritabanı yönetim sisteminin kullanılmadığı uygulama programlarına pek rastlanmıyor. Bu talebe bağlı olarak çok sayıda veritabanı yönetim sistemi ortaya çıkmıştır. Bunlardan bazıları Microsoft Access, Microsoft SQL Server, Oracle, Sybase’dir. Bu veritabanlarının en önemli ortak özelliği ilişkisel veritabanı teknolojisini içermeleridir.
Veritabanı Türleri
1) Paylaşmalı Veritabanları (Distiributed Databases): Birden fazla fiziksel ortamda depolanan veritabanlarına paylaşımlı veritabanı denir. Bir veritabanının paylaşımının iki temel yolu vardır. Birinci yol, merkezi veritabanını kısımlara ayırmaktır. Böylece her uzak işlemci kendi yerel alanına hizmet etmek için gerekli veriye sahip olur. İkinci yolda ise merkezi veritabanı tüm uzak noktalara kopyalanır.
2) Nesne Ağırlıklı Veritabanları (Object-Oriented Databases): Çizimlerin, grafiklerin, imajların, fotoğrafların, seslerin ve tüm hareketli video gösterimlerini otomatik olarak canlandıracak ve paylaşılacak nesneler olarak depolayan veritabanıdır. Bu veritabanı finans ve pazarlama alanında kullanılıyor. Nedeni; finans ve pazarlamanın ekonomik koşullardaki değişimlerine en uygun cevap veren depolama sistemi nesne ağırlıklı veritabanıdır.
3) Hiper Medya Veritabanları (Hypermedia Databases): Kullanıcı, modülden modüle geçmek için, kendi yolunu kendi seçebilir. Bilgi şeması önceden belirlenmiş organizasyon şemasını gerektirmez. Her modül ekranda gösterilebilir ve gösterilen modülle diğer veritabanları modülleri arasındaki bağlantıları da gösterebilir.
4) Çok Boyutlu Veri Analizi: Bu analiz kullanıcıyı aynı veriyi çok farklı boyutlarıyla görme olanağına kavuşturulur. Örneğin Orta Anadolu, Ege, Marmara bölgelerinde somun, cıvata, sıhhi tesisat ve vida gibi dört farklı ürün satan bir işletme bunların fiili satışlarını görmek için kullanılabilir.
5) Veri Bankaları: İşletmedeki tüm personelin beklentilerine uygun, bütünleşik, güncel ve tarihi verileri depolayan veritabanı yazılımlarına Veri Bankaları denir. İç ve dış kaynaklardan duruma göre anlık, saatlik, günlük, haftalık veya aylık olarak derlenen veriler veri bankasında kopyalanır. Bu veriler girişimin değişik birimlerdeki yönetim açılımlarında kolayca kullanılabilecek şekilde standartlaştırılır ve bütünleştirilir. Girişimdeki herkes veri bankasına girebilir ama değişiklik yapamazlar.
Veritabanı Sorgulamaları
Fiziksel tasarım gerçek veri girişi ve denemelerle bitirilir. Veritabanı sistemleri teknolojik değişmelere ve kullanıcıların gereksinimlerindeki değişikliklere bağlı olarak sürekli olarak değişikliklere uğrarlar. Belli bir süre sonunda da her azılımda olduğu gibi, güncelliklerini kaybederek ömürlerini bitirirler. Veri tabanı sistemleri üzerinde yapılan en önemli işlem sorgulamadır. Sorgulamada tek bir tablo kullanılacağı gibi birden çok tablo da aralarındaki ilişkiye bağlı olarak, çapraz olarak sorgulanabilir. Sorgulama için QBE (Query By Example-Örnekle Sorgulama), veya SQL (Structured Query Laguage- Yapısal Sorgulama Dili) araçları kullanılmaktadır. Bu araçlar çoğu kez, yukarıda adı geçen veri tabanı işletim sisteminin bir parçası olarak sunulmaktadır.
Veritabanı Tasarımı
Bir veritabanı tasarımı iki aşmada gerçekleştirilir; bunların ilki Mantıksal Tasarım, ikincisi ise Fiziksel Tasarımdır. Mantıksal tasarım kullanacak veri tabanı işletim sisteminden bağımsız olarak yapılan çalışmalardan oluşurken, fiziksel tasarımda mantıksal tasarımda ortaya çıkan nesneler bir veri tabanı işletim sistemi kullanımı ile gerçekleşir.
Mantıksal Tasarımın Evreleri:
a) Problemin tanımlanması,
b) Kullanılmakta olan sistemin irdelenmesi, ve sistem içindeki hareketlerin bulunması,
c) Veritabanını kullanacak olanların gereksinimlerinin ortaya konulması,
d) Veritabanını oluşturacak varlıkların ve özelliklerinin belirlenmesi,
e) Yaratılması düşünülen raporların belirlenmesi,
f) Tabloların normalize edilmesi.
Fiziksel Tasarım Evreleri:
a) Varlıkların yaratılması,
b) Form tasarımının gerçekleştirilmesi ve veri girişinin sağlanması,
c) Rapor tasarımının uyarlanması,
d) Veritabanı kullanımını kolaylaştıracak destek programların ve kullanıcı ara biriminin yazılması
e) Veritabanı sisteminin denenmesi ve doküman hazırlanması.
İlişkisel Veritabanları
Neredeyse tüm modern veritabanı yönetim sistemleri, ilişkisel veritabanı yönetim modelini kullanarak bilgi saklar ve işler. İlişkisel terimi, veritabanındaki her kaydın bir tek konu hakkında ve yalnızca o konuyla ilişkili bilgileri içerdiği gerçeğinden ortaya çıkar. İlişkisel veritabanı yönetim modelini incelerseniz, ilişki teriminin yalnızca bir konuyla ilgili bir satır kümesine uygulandığını göreceksiniz. Ayrıca iki sınıf bilgiyle ilgili veriler (müşteriler ve siparişler gibi), ilişkili veri değerlerine bağlı bir bütün olarak yönetilebilir. Örneğin, müşterinin her verdiği siparişle birlikte müşteri ad ve adres bilgilerini saklamak gereksiz olur. Bir ilişkisel veritabanı sisteminde siparişlerle ilgili bilgiler, her siparişi uygun müşteri bilgisine bağlayacak, müşteri nosu gibi, veri saklayan bir alan vardır.
İlişkisel veritabanı yönetim sisteminde (Relational Database Management System-RDBMS), sistem tüm verileri tablolar içerisinde yönetir. Tablolar bir konuyla ilgili bilgileri (müşteri ve ürünler gibi) saklar. Bununla birlikte, konuyla ilgili başka bilgiler (örneğin müşterilerin adresleri ya da kitap başlıkları) içeren sütunlar ve konunun tek bir örneğinin tüm öz niteliklerini açıklayan (örneğin, belirli bir müşteri ya da kitap hakkındaki veriler) satırlar vardır. Veritabanını sorguladığımızda (bir ya da daha fazla tablodan bilgi getirtmek) bile, sonuç her zaman başka bir tabloya benzeyen bir şey olur.
Ayrıca, birden çok tablo ya da sorgudan alınan ilişkili değerleri birleştirebilirsiniz. Örneğin, hangi yazarların, hangi kitapları yazdığını öğrenmek için, yazar ve kitap bilgilerini birleştirebilirsiniz. Hangi satış elemanının prim hak ettiğini bulmak için, çalışan ve sözleşme bilgilerini birleştirebilirsiniz.
İlişkisel veritabanı yönetim sistemi veritabanlarının yapısını düzenler. Bu özellik sayesinde şu işlemleri yapmak olasıdır:
• Verilerin doğru ve etkin biçimde saklanmasını sağlar.
• İlişkisel bütünlük kuralı (database integrity) sağlanır.
• Değişiklik kayıtları sayesinde, sistem çöktüğünde verileri kurtarmayı sağlar.
İlişkisel veritabanı modelinin amacı, yüksek verimliliktir. Örneğin personel bilgilerini bir veritabanında tuttuğumuzda varsayalım. Personel adı, adresi, telefonu bilgileri personelin çalıştığı farklı bölümler için çoğaltılacaktır. Bu gereksiz fazlalık, önemli sayıda kayıtla uğraşan veritabanları sözkonusu olduğunda hem artan disk boşluğu ihtiyacı, hem de artan veri ulaşım zamanı sorunlarına yol açar.
İlişkisel modelde ise veri iki tabloya ayrılacaktır. Birinci tablo sigorta no, kimlik no, adres, telefon, yaş gibi kişisel bilgiler içerir. İkinci tablo ise bu bilgileri çoğaltmak yerine personelin çalıştığı bölüm bilgilerini içerir.
Veritabanı Becerileri
İlişkisel veritabanı yönetim sistemi (RDBMS), verilerinizi tanımlama, onlarla çalışma ve başkalarıyla paylaşma konularını tümüyle denetlemenizi sağlar. Sistem, birçok tablodaki çok sayıda veriyi kataloglama ve yönetmeyi kolaylaştıran gelişmiş özellikler sunar. RDBMS'nin üç ana becerisi vardır: verileri tanımlama, yönetme ve denetleme.
• Veri Tanımlama: Veritabanında hangi verilerin saklanacağını, veri türünü (örneğin, sayılar ya da karakterler) ve verilerin ilişkilenme biçimini tanımlayabilirsiniz. Bazı durumlarda, verilerin nasıl biçimlendirilmesi ve doğrulanması gerektiğini tanımlayabilirsiniz.
• Veri Yönetimi: Verilerle birçok biçimde çalışabilirsiniz. Hangi veri alanlarını istediğinizi seçebilir, verileri süzebilir ve sıralayabilirsiniz. Verileri ilişkili bilgilerle birleştirip, özetleyebilirsiniz (toplayabilirsiniz). Bir bilgi kümesi seçip, RDBMS'den onu güncelleştirmesini, silmesini, ayrı bir tabloya kopyalamasını ya da bu verileri içeren yeni bir tablo yaratmasını isteyebilirsiniz.
• Veri Denetimi: Kimlerin verileri okuyabileceğini, güncelleştirebileceğini ya da ekleyebileceğini tanımlayabilirsiniz. Çoğu durumda, birden çok kullanıcı tarafından verilerin paylaşılıp güncelleştirilme biçimini de tanımlayabilirsiniz.
Tüm bu işlevsellikler Microsoft Access'in güçlü özelliklerinde bulunur. Şimdi, Access'in bu becerileri nasıl gerçekleştirdiğine bakıp, elektronik tablo ya da sözcük işlemci programlarla yapabildiklerinizle karşılaştıralım.
Microsoft Access tümüyle işlevsel bir RDBMS'dir. Çok sayıda veriyi yönetmek için gereksiniminiz olan tüm veri tanımlama, yönetme ve denetleme özelliklerini sağlar.
Veri Tanımlama ve Depolama
Bir belge ya da elektronik tabloyla çalışırken, genelde, belgenin içeriğini ya da elektronik tablonun içindeki her hücreyi tanımlamada tümüyle özgürsünüzdür. Bir belgedeki belli bir sayfaya, metin paragrafları, tablo, grafik ya da birden çok yazı tipiyle görüntülenen birden çok sütun eklemiş olabilirsiniz. Bir elektronik tablodaki belli bir sütunda, yazdırmak ya da görüntülemek için bir sütun başlığı tanımlamak üzere metinsel verileri yukarıda bulundurabilir, satırın işlevine bağlı olarak, sütun içinde çeşitli sayısal biçimler uygulayabilirsiniz. Bu esnekliğe gerek duyarsınız, çünkü sözcük işlemci belgeniz, yazılı bir sayfa içeriğine iletinizi taşıyabilmeli ve elektronik tablonuzda çözümlediğiniz verileri depolamasının yanı sıra sonuçlan hesaplayıp onların bir sunumunu sağlamalıdır.
Bu esneklik, göreceli olarak küçük, iyi tanımlanmış iş sorunlarını çözmek için harikadır. Ancak, bir belge birkaç düzine sayfayı aşınca onu denetlemek ve bir elektronik tablo birkaç yüz satırlık bilgiyi aşınca onu yönetmek güçleşir. Veri miktarı arttıkça sözcük işlemci ya da elektronik tablo programınızın ya da bilgisayar sisteminizin veri depolama sınırlarını aştığınızı da görebilirsiniz. Başkalarınca kullanılacak bir belge ya da elektronik tablo tasarlıyorsanız, verileri nasıl kullandıklarını ya da yeni verileri nasıl girdiklerini denetlemek, olanaksız olmasa da, çok güçtür. Örneğin, bir elektronik tabloda anlamlı olması için bir hücreye tarih değeri, bir başkasına da para birimi değeri girilmeliyken, kullanıcı yanlışlıkla, karakter verisi girebilir.
Bazı elektronik tablo programlan, elektronik tablo içerisinde bir "veritabanı" alanı tanımlamanıza izin verir. Bunun nedeni, istenen sonuca ulaşmak için gereksiniminiz olan bilgileri yönetmenize yardımcı olmaktır. Ancak yine de elektronik tablo programının temel depolama sınırlarıyla engellenebilirsiniz ve veritabanı alanının sütun ve satırlarına nelerin girildiği üzerine yeterince denetiminiz yoktur. Aynı zamanda, sayı ve karakter verilerinin ötesinde işlemler yapmanız gerekirse, elektronik tablo programınızın resim ve ses benzeri şeyleri tanımadığını görebilirsiniz.
Bir RDBMS, elinizdeki veri türünü ve depolama biçimini tanımlamanıza izin verir. Genellikle, verilerinizin bütünselliğinden emin olmak için RDBMS'nin kullanabileceği kuralları da tanımlayabilirsiniz. En basit biçimiyle, bir geçerlilik kuralı, sayı içermesi gereken alana yanlışlıkla alfabetik karakter depolamamanızı sağlar. Başka kurallar, verileriniz için geçerli değerler ya da değer aralıkları tanımlayabilir. En karmaşık sistemlerde, veri toplulukları (genellikle tablo ya da dosyalar) arasındaki ilişkiyi tanımlayabilir ve RDBMS'den verilerin tutarlı kalmalarını sağlamasını isteyebilirsiniz. Örneğin, her siparişin geçerli bir müşteri için girilmiş olduğunu sistemin kendiliğinden denetlemesini sağlayabilirsiniz.
Access ile verinizi tanımlamada (metin, sayı, tarih, saat, para birimi, internet bağlantıları, resim, ses, belge ve elektronik tablo gibi); Access'in verilerinizi nasıl depolayacağını tanımlamada (dize uzunluğu, sayı duyarlı ve tarih/saat duyarlı) ve verileri görüntülediğiniz ya da yazdırdığınızda neye benzeyeceğini tanımlamada tümüyle özgürsünüz. Veritabanında yalnızca doğru değerlerin bulunduğundan emin olmak için, basit ya da karmaşık geçerlilik kuralları tanımlayabilirsiniz. Veritabanındaki dosya ya da tablolar arasında geçerli ilişkiler olduğunu Access’ten denetlemesini isteyebilirsiniz.
SQL (Structured Query Language)
SQL veritabanı yönetim sistemlerinin standart programlama dili olarak bilinir. SQL dilinin Microsoft Access programı içinde sorgu pencerelerinde veya Visual Basic programları içinde kullanılması olasıdır.
SQL komutları iki başlık altında toplanabilir:
1. DDL Komutları (Veritabanı tanımlama dili)
2. DML Komutları (Veri işleme dili)
DDL Komutları:
Create table: Yeni bir tablonun alanlarının ve indexlerinin oluşturulmasını sağlar.
Create index: Belirlkenen tablo için dizin oluşturur.
Drop table: Belirtilen tablo ve dizinlerini veritabanından siler.
Alter table: Tabloya yeni alanlar ilave eder, alan tanımlarının değiştirilmesini sağlar.
DML Komutları:
Select: Belirlenen kıstasa göre tablo içindeki kayıtların seçilmesini sağlar.
Insert: Tablo içine yeni bir kayıt ekler.
Update: Belirlenen kaydın alanlarını günceller.
Delete: Belirlenen kayıtların silinmesini sağlar.
Bu komutlar tek başlarına kullanılamaz. İşlevlerin yerine getirilebilmesi için bazı yardımcı deyimlere ihtiyaç vardır:
From: Sorgulamanın hangi tablodan yapılacağını tanımlar.
Where: Sorgulama anında kullanılacak kıstası tanımlar.
Group By: Kayıtları belirlenen alana göre gruplar.
Having: Her bir grubun uyması gereken kıstası tanımlar.
Order By: Seçilen kayıtların sıralanmasını sağlar.
Constraint: Dizin tanımlamasını ve bir diğer tablo ile ilişki kurulmasını sağlar.
Örnek: Create table Tablo adı (alan isimleri ve türleri);
Drop table tablo adı;
QBE (Query By Example)
QBE, değişik sorgulama dillerinin bir uzantısıdır. QBE’nin amacı kullanıcının profesyonelce bir sorgulama dili kullanmadan grafik bir ortamda kullanıcının sorgulamasını geliştirmesidir.
Başka bir anlatımla QBE bir sorgulama tekniğidir. Bir sorgulama dili değildir. QBE, kullanıcının sorulara yanıt verecek karmaşık bir sorguyu geliştirmesini sağlar.
QBE önce veritabanından ilgili tabloların seçilmesiyle başlar. Ardından sorgulamanın yapılacağı kolanlar belirlenir. Örneğin; bir veritabanında yer alan Personel adresi QBE satırlarında eşittir, eşit değildir, büyüktür vb. ifadeler kullanılır. Bunun dışında QBE satırlarında SQL komutları da kullanılabilir.
En Ünlü Veri Tabanı Sistemleri
- PostgreSQL
- MsSQL
- MySQL
- Oracle
- Sybase
- BerkeleyDB
- DB2
- Microsoft Access
- Informix
- Interbase
- Sysbase
Muhammet BARUTÇU