Veritabanı Kavramı

Programlamanın ana hatlarıyla ilgili yazılarımdan sonra, şimdi biraz da veritabanları ve sql konusuna girelim. Çünkü bir programcı, her zaman verilerle çalışmaya ihtiyaç duyacaktır. Verilerle çalışmanın en hızlı ve kolay yolu ise veritabanlarıdır. Programcılıkla ilgili fikir sahibi olduğumuz bu aşamada, biraz da veritabanı kavramını incelemekte fayda var.

Bir programcısınız. Bu blogda bol bol örneğini verdiğimiz öğrenci notları üzerine bir program hazırlamanız gerekiyor. Peki bunu nasıl yaparsınız?

Hatırlarsanız Değişken Kavramı yazımızda öğrenci notları ile ilgili küçük bir örnek yapmıştık. Bir kişi, her öğrencinin notunu giriyor ve ortalamasını program hesaplayıp ona veriyordu. Alt Bloklar, Koşullar, Döngüler yazımızda ise yine bir kişi bir öğrencinin notunu giriyor ve yazılı olarak sonucunu görüyordu.

Peki bu küçük programcıkların daha ötesinde bir şey talep edilse mesela bizden? “Ben her seferinde tekrar tekrar notları girmeyim. Bilgisayar bunu saklasın, ihtiyacım olduğunda ben girmeden bu bilgileri bana versin.” dese; ne yapacağız?

Veritabanları olmasaydı eğer; bilgisayarın harddiskinde bir dosya açıp, bu notları o dosyanın içine metin olarak kaydedip, daha sonra bu notları ihtiyaca göre okumak gerekecekti.

Daha önceki Değişken Kavramı yazımızda yaptığımız örneği hatırlayalım. Her notu girdikten sonra bellekte notları saklıyorduk. O örneği harddiskteki bir dosyada da verileri saklayacak şekilde düzenleyelim.

System.IO.File.WriteAllLines(@”C:\WriteLines.txt”, lines); satırıyla elimizdeki verileri bir dosyaya da yazdırdık aynı zamanda. Daha sonra bu verileri kullanabilmemiz için girilen tüm notlar Harddisk’imizde duruyor artık.

Peki daha sonra bunları nasıl çağıracağız. “Mevcut Notları Oku” diye bir düğme koydum ekrana. Kullanıcı bu düğmeye tıkladığı anda, eski girdiği değerleri tekrar girmeyecek; hepsi hafızaya yüklenecek.

Evet artık elimizdeki verileri hard diskimizde saklayabiliyor ve daha sonra kullanabiliyoruz. Formumuzun tasarımı da şöyle:

Kodların tamamını buraya tıklayarak görebilirsiniz.

Yukarıdaki program tamamen çalışan bir program. Peki bizim öğrencilerin adlarını, numaralarını, notlarını, doğum günlerini, baba adlarını vs de saklamamız gerekiyor. Hatta derslerimizi, derslerin her birinin notlarını, sınıflarımızın adlarını, büyüklüklerini, sıra sayılarını vs de saklamamız gerekiyor. Saklayacağımız her bilgi için yeni bir dosya mı oluşturacağız? Evet; veritabanları hayatımıza girmeden öyle yapılıyordu. Bir program yanında yüzlerce data dosyasıyla geliyordu. Peki 45 öğrencili bir sınıfla değil de; 45.000 öğrencili bir üniversiteyle ilgileniyorsak? Öğrenciyle ilgili her dosyada 45 bin satır bilgi mi saklayacaktık? Dosyayı okumak ne kadar da uzun sürerdi.

Bu gibi sorular ve dezavantajlar; ortaya “veritabanı” dediğimiz kavramları çıkardı. Verileri programcıların saklaması yerine; verileri saklayan, sıkıştıran, hızlı şekilde geri veren özel yazılımlar ortaya çıktı. Veriler text olarak değil de; hızlı saklanabilecek, okunabilecek ve az yer kaplayacak formatlarda saklanmaya başlandı. İşte verilerin bu saklandığı ortamlara “veritabanı“, bu veritabanlarına yazan ve okuyan programlara da “Veritabanı Yönetim Sistemi (VTYS)” dendi. VTYS programları bir sınıfın veya okulun bütün verilerini, bizim belirlediğimiz yapılarda kendi oluşturdukları formatta dosya(lar)da saklarlar, aralarındaki bizim verdiğimiz kurallara göre bağlantılarını yaparlar ve bizim istediğimiz zaman hızlıca okumamızı sağlarlar.

Yani biz artık verileri tek tek dosyalarda saklamaya çalışmayız. Aralarındaki ilişkiler için (not dosyasındaki hangi not, ogrenci dosyasındaki hangi öğrenciye ait gibi) özel bir çaba sarfetmeyiz. Tek bir notu görmek için binlerce satırlık bir dosyayı açmaya çalışmayız. Bu konularda programcılara VTYS yazılımları yardımcı olur.

Bugün MS SQL, MYSQL, Oracle, Firebird, Sybase gibi bir çok veritabanı yönetim yazılımı piyasada aktif olarak satılmakta ve kullanılmakta. Programcı hangi veritabanını kullanmak istiyorsa, birini seçiyor ve kullanabilmesi için gerekli yazılımları bilgisayara yüklüyor. Ardından kendi programından gerekli bağlantı prosedürlerini yerine getirip bir veritabanına bağlanıyor. Ve veritabanında okuma ve işlem yapmak için veritabanının anlayabileceği başka bir dil kullanıyor. Bu dillere “veritabanı dili” ismi veriliyor. Programlama dillerine çok benzemesine rağmen, bu dillerde program yazamazsınız. Bu dillerde, bir veritabanında okuma, yazma vb işlemleri yapabilirsiniz. Bu dillerin en yaygını SQL dili ve onun türevleridir. Standart bir SQL dili olmasına rağmen, her VTYS sisteminde SQL’in kendine has bir versiyonu kullanılır.

SQL; İnglizce “Structured Query Language” ifadesinin kısaltılmışıdır. Yapılandırılmış Sorgu Dili olarak çevrilebilir. Veritabanı oluşturmamıza, yapılandırmamıza, verileri tanımlamamıza, okumamıza ve yazmamıza imkan sağlar. SQL, bilinenin aksine bir programlama dili değil, adı üzerinde bir sorgulama dilidir. SQL ile bir program yazamayız. SQL sadece bir VTYS yazılımı üzerinde çalışabilir.

Veritabanları ile ilgili bilmemiz gereken diğer kavramlara geçersek, bunları aşağıda bulabilirsiniz. Örnekleri Microsoft Sql Server (MS-SQL) üzerinden anlatacağım. Ancak hemen hemen bütün VTYS sistemlerinde benzer bir mantık var:

DB SERVER: Veritabanı hizmeti aldığımız bilgisayarda bulunan VTYS programıdır. Kendi bilgisayarımızda kurulu VTYS sunucusuna bağlanmak için genelde “localhost” sunucusuna bağlanırız. Örneğin bir okuldaki bütün bilgisayarlar, aynı verilerle çalışmak için okulun kendi serverına bağlanırlar.

DATABASE: Bağlanabileceğimiz veritabanıdır. Bir sunucuda bir çok veritabanı bulunabilir. Okulumuzda üç bölüm varsa, ILKOKUL, ORTAOKUL ve LISE diye üç ayrı veritabanı açıp üçünün bilgilerini birbirinden tamamen yalıtabiliriz. Bu durum ayrı ayrı yetkilendirilebilmelerini, ayrı ayrı yedeklenebilmelerini vs kolaylaştırır.

TABLE: Verilerimizi direkt üzerinde sakladığımız tablolardır. Örneğin LISE database’imizdeki Ogrenciler bizim için bir tablo olabilir. Bu tablonun içinde öğrenci listemizi ve öğrenciyle ilişkili bilgileri tutabiliriz.

FIELD: Bir tablonun içindeki bütün farklı alanlara bu ismi veriyoruz. Örneğin Ogrenciler tablosu içindeki OgrenciNo bir field (alan) ismidir. Yine OgrenciAdi ve DogumTarihi de bir alan ismidir. Columns (sütun) da denir.

RECORD: Tablomuzdaki alt alta her satır bizim için bir record (kayıt) olmakta. Ogrenci tablosuna bilgileri kaydedilen her bir öğrenci bizim için bir kayıttır. Row (satır) da denilir.

Bunlar dışında veritabanlarında içine sorgu yazıp veri çekebildiğimiz VIEW’lar, yine SQL ile çeşitli işlemler yapabildiğimiz PROCEDURE’ler, SQL ile çeşitli sonuçlar döndürebildiğimiz FUNCTION’lar bulunabilir. Bunların tamamı için SQL bilgisine sahip olunmalı. O konuya ayrıca değineceğiz.

2 thoughts on “Veritabanı Kavramı

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir