Bir Database(Veritabanı) nedir? • Bir database(veritabanı), information(bilgiler) topluluğudur. Bu bilgi çok yapısallaştırılmış bir şekilde muhafaza edilir. Bilinen bu yapıyı çok iyi değerlendirerek bilgiye hızlı ve doğru bir biçimde erişebilir ve değiştirebiliriz. • İçinde bulunduğumuz bilgi çağında database‘ler hemen her yerdedir: ¾ Kitapçıya gittiğinizde ve bilgisayarda belirli bir kitabı aradığınızda kitapçının kitap database’ine erişiyorsunuz demektir. ¾ Eğer internet üzerinden bir ürünü “on-line” olarak satın alıyorsanız, Web Sitesi sahibi satıcının ürün database’ine ulaşıyorsunuz demektir. ¾ Bankanız bütün parasal kayıtlarınızı kendi database’i üzerinde tutmaktadır. Aylık hesap eksterlerinizi size gönderen bankanız aslında database report/veritabanı raporu bastırıp size göndermektedir. ¾ Doktorunuza telefon edip randevu istediğinizde, sekreter, müsait zaman için aslında kendi database’ine bakmaktadır. ¾ Arabanızı tamire götürdüğünüzde, servis teknisyeni, arabanız üzerinde eski tarihlerde ne türde işler yapıldığını görmek için kendi database’ine bakmaktadır. ¾ Bir süper markete gittiğinizde kasiyer, her ürünü bar-kod okuyucusu ile okuttuğunda, süper marketin database’inden o ürünün fiyatını aldığı gibi, stok kontrolünü de aynı zamanda birlikte yapmaktadır. • Database’in hayatımıza girdiği pek çok alanı eminim sizler de bulabilirsiniz. Bilmeniz gereken şey onun her yerde olduğudur. Her database sakladığı bilgiler konusunda kullanıcısı ile etkileşime girmek için bazı yollara ihtiyaç duyar. Böylesi etkileşimler (interaction) bir database management system-veri tabanı yönetim sistemi (DBMS) sayesinde olur. • Bir DBMS’in kullanım amaçları gerçekten basittir. Kavram olarak bir database ile yapabileceğiniz şeyler: 1. Veriyi görmek (izlemek) 2. İlgilenilen bazı verileri bulmak (seçmek ve ayırmak) 3. Veriyi değiştirmek (edit etmek) 4. Bazı veriler eklemek 5. Bazı verileri silmek Pek çok ticari “database management systems-veritabanı yönetim sistemleri” bu işleri yapabilir. Access ve Oracle dünya çapında kullanılmaktadır. Bu derslerde Visual Basic’i bir DBMS olarak inceleyeceğiz. • Visual Basic’i bir DBMS olarak kullanabileceğiniz yerlere örnekler: ¾ Bir veritabanı yönetimi gerektiren yeni bir uygulama oluşturmak ¾ Var olan bir database’e bağlanma ¾ Bir database ile internet yolu ile etkileşime girme • Bir database bilgisayarınızda (veya kullanıcının bilgisayarında) local (yerel) olarak müsait olabilir veya bir LAN (local area network-yerel alan ağı) içinde çoklu kullanıcılar tarafından paylaşılabilir veya sadece Web Server üzerinde kullanılabilir durumda olup, internet yolu ile ulaşılabilir veya kullanılabilir. Visual Basic Programlama bilgisayarın icadıyla başlamış günümüzde çok daha yaygınlaşmış ve giderek de yaygınlaşacaktır. Yakın geçmişe bakacak olursak DOS tabanlı programları, oyunları hatırlarız. Ancak Windows 3.1 ile visual (görsel) ortama geçilince bu programların tahtı sallandı ve visual programlama dilleri piyasaya sürüldü. Windows 95 ile visual programlama dilleri'nin sayısı arttı ve günümüzde her ihtiyaca yanıt verebilecek şekilde çoğaldı ve çeşitlendi. Microsoft Visual Basic 6.0 ise şu anda en çok tercih edilen programlama dilleri arasında yer almaktadır. Windows işletim sistemlerinin yaratıcısı olan Microsoft firması tarafından piyasaya sürülen bu programlama dili ile Windows'un tüm olanaklarına hakim olabilir, ticari programlar hazırlayabilir, İnternet uygulamaları geliştirebilir; hatta Windows'da eksik gördüğünüz her hangi bir noktayı giderebilir veya eklemeler yapabilirsiniz. Kısacası Microsoft Visual Basic ile yapabilecekleriniz hayal gücünüz ile sınırlı. Visual Basic Hakkında Ön Bilgi Bill Gates ve Paul Allen 1970'lerin hemen öncesi, yani okul yıllarında bir programlama dili yazdılar. Bu programlama dilinde birkaç oyun hazırladılar. Yazdıkları programlama diline BASIC adı verdiler. Beginner's All-Purpose Symbolic Instruction Code kelimelerinin baş harflerinden oluşan BASIC, 70'lerde bilgisayarın küçülmesi ve daha işlevsel hale gelmesiyle Bill Gates ve Paul Alien tarafından 350 dolara kasetlere kaydedilerek çoğaltıldı ve satıldı. Böylece Microsoft kurulmuş oldu. Microsoft bir yandan gelişirken diğer yandan da BASIC geliştiriliyordu. GWBasic, QBasic ve en sonunda Windows ile Visual Basic versiyonu piyasaya sürüldü. Visual Basic şu an kullanımı ve öğrenimi en kolay programlama dilidir fakat diğerlerine göre daha iyi performansa sahip donanıma ihtiyaç duymaktadır. En çok kullanılan nesneye yönelik görsel programlama dilleri arasında Karşılaştırma yaparsak aşağıdaki sonuçları gözlemleriz: C++ Builder Yazılan programlar çok hızlı, öğrenimi ve kullanımı çok zor. Delphi Yazılan programlar hızlı, öğrenimi zor. Visual Basic Yazılan programlar yavaş, öğrenimi ve kullanımı çok kolay. Visual Basic nesneye yönelik bir programlama dilidir. Projenize nesneyi eklersiniz ve nesneyle ilgili kod yazarsınız. Bu nesneler tamamıyla programcının hakimiyeti altındadır. İlgili özellikler ve olaylar programcı arafından belirlenir. Bu nesneleri programlarken ise belirli bir mantık gütmeniz gerekir. Bu mantık, daha önce hiçbirşey bilmeyen bir çocuğa marketten alışveriş yaptırmaya benzer. Çocuğa neler yapacağını tam olarak söylemelisiniz ve bazen de neler yapmayacağını izah etmeniz gerekir. Bu çocuğa vereceğiniz yönergeler şöyle olmalıdır: 1) Market, kapıdan çıkıp sağ taraftaki 4.sokağa girildiğinde sol taraftaki 4. bina! 2) Alacakların:Domates=kırmızı-yuvarlak-sulu, meyve suyu=kutu içerisinde- sıvı, limon= sarı-orta boy-sulu 3) Alınacak miktar:4 domates, 1 meyve suyu, 8 limon 4) Toplam tutar:1,2Ytl 5) Oturduğun yerden kalk! 6) Markete git! -Market kapalıysa sağ taraftan ilerle, sokağın solunda sola dön, sol taraftaki 3. sokaktan sonra 2. kapıdan gir ve kapalı olduğunu söyle! -Market açıksa emirleri işlemeye devam et. 7) 4 domates al. 8) 1 meyve suyu al. 9) 8 limon al. 10) Limon tezgahının arka tarafındaki giyecek reyonunun tam önündeki kasaya git. 11) Toplam tutarı öde. 12) Fişini al, kasadan ayrıl. 13) Binadan çık, sağ taraftan ilerle, sokağın solundan sola dön, sol taraftaki 3. sokaktan sonra 2. kapıdan gir. 14) Aldıklarını teslim et. 15) Bunları bir daha yapmak için hazır ol. Yukarıdaki mantık biraz komik fakat tam anlamıyla programlama mantığıdır. Programınızı nasıl programlarsanız virgülüne kadar söylediklerinizi yapacaktır. Başka bir deyişle bilgisayara ne verirseniz onu alırsınız. Visual Basic’ te Neler Yapabilirsiniz? Visual basic, bir programlama dili olduğundan, • Kayıt depolamaya yönelik ticari programlar, • İşletim sistemi için yardımcı programlar, • Oyunlar, • Ekran koruyucular, • Chat programları, • Sunucu-istemci sistemiyle çalışan etkileşimli programlar, • İnternet programları, • Resim işleme programları, • Donanım yönetim programları, yazılabilir. Unutmayın; Visual Basic’te yapabilecekleriniz hayal gücünüzle sınırlıdır. Visual Basic nerede uygulanabilir? • Database management (veritabanı yönetimi) olarak, Visual Basic uygulamamızın, database’e, bir front-end (ön-uç) olarak davrandığını söyleyebiliriz. Bunun anlamı, Visual Basic uygulamasının, bir interface (arabirim)’i kullanıcı ile database arasında sağladığıdır. Bu interface (arabirim), kullanıcıya, kulacının database’den ne istediğini söylemesine ve database’nin bir şekilde istenilen bilgiyi cevap olarak göstermesine izin verir. • Bir Visual Basic Uygulaması direkt olarak bir database ile etkileşime giremez. Database ve uygulama arasında iki ara bileşen bulunmaktadır: data control (veri kontrolü) ve database engine (veritabanı motoru): Kullanıcı Visual Basic Uygulaması Data Control Jet Database Engine Database • Data control (veri kontrolü) bir Visual Basic nesnesi olup, uygulamayı database engine (veritabanı motoru) yolu ile database’e bağlar. Uygulama ile “engine” arasında bir bağdır ve bilgiyi ikisi arasında ileri ve geri olmak üzere (iki yönlü) iletir. • Database engine (veritabanı motoru), “Visual Basic Database Management System (Visual Basic Veritabanı Yönetim Sistemi)’nin kalbidir. Yönetim’i(management) sağlayan gerçek bir yazılımdır. Bu “engine” ‘e sahip olmak, programcıyı pek çok zahmetten kurtarır. Database engine (veritabanı motoru) Visual Basic’in yapısından (kendiliğinden) bir parçasıdır ve “Jet Engine” olarak bilinir. Veritabanı yönetimi için kullanılan Microsoft Access tarafından kullanılan ile aynıdır. Bundan dolayı Access Database’ler ile kullanılır, fakat diğerleri ile de çalışmaktadır. • Belirtildiği gibi, “Jet Engine” bizi pek çok zahmetten kurtarır. Veritabanı yönetim sistemleri için Visual Basic’in bir “front-end” olarak kullanımının gücünü anlamak üzere şunlara bakınız: Visual Basic ile kullanımı var olan bir database’e bağlanma açısından oldukça az kodlama gerektirmektedir. Bu, database içinde bulunan bütün bilgileri görmek veya bu bilgilerden herhangi birisini veya hepsini değiştirmek için kullanılır. Bütün database’lerin amaçları yukarıda belirtilmiştir, bir satır kod dahi yazmadan yapılabilir! Bu, “Jet Database Engine” nin gücüdür! • Eğer “Jet Engine” böylesine güçlü ve eğer Microsoft Access tarafından da kullanılıyorsa niçin Access’i, bilinen Visual Basic Uygulamaları yazmak yerine DBMS olarak kullanmayalım? Visual Basic’i DBMS olarak Access yerine kullanmanın iki temel avantajı bulunmaktadır: 1. Kullanıcılarınızın Access’i bilgisayarlarına kurmuş olmalarına ve Access ’in nasıl kullanılacağını bilmelerine gerek yoktur. 2. Bilinen bir “front-end” yapılandırarak database içinde bulunan bilgiler ile kullanıcınızın yapabileceklerini sınırlandırabilirsiniz. Normalde Access böylesine sınırlamalar sağlamaz. • Bu derste “front-end” ler oluşturacak, Visual Basic uygulamalarını nasıl yapılandıracağımızı öğreneceğiz. Araştırmalar göstermektedir ki Visual Basic uygulamalarının yarısından fazlası database’ler ile ilgili olarak çalışmaktadır. Uygulamalarımızı nasıl komple “database management system/veritabanı yönetim sistemleri” içinde kullanacağımıza, yeni database bilgilerini (informations) nasıl görebileceğimize, nasıl arayabileceğimize, değiştireceğimize, ekleyeceğimize ve/veya sileceğimize bakacağız. İlişkisel Veri Tabanı İlişkisel veri tabanı, ayrı tablolara yerleştirilmiş verilerin belirli alanlarına göre ilişkilendirilerek; ilişkisel modele göre düzenlenen veri tabanlarına verilen isimdir. Çeşitli türden veri tabanları olmasına rağmen, ilişkisel veri tabanları günümüzde en çok kullanılandır. Bir veri tabanının en önemli nesnesini tablo adı verilen kavram oluşturmaktadır. İlişkisel veri tabanlarında tüm veriler tablolar içinde saklanmaktadır. Bir tablo satır (row) ve sütunlardan (column) oluşmaktadır. Tablo içindeki satırlar tablonun bir anlamda kayıtlarıdır. Sütunlar ise tablonun dikey alanlarıdır. Her sütunun mutlaka bir ismi vardır ve işlemler bu isimlere göre yürütülür. Aşağıda bir tablonun satır ve sütunları görülmektedir. Sütun İsimleri Örgenci_No Adı Soyadı Doğum_Tarihi 100 Burak Özkan 7/09/1985 213 Dilay Dondurmacı 12/09/1990 245 Mehmet Öztürk 13/11/1982 Tablo Satırları İlişkisel veri tabanlarında genellikle SQL (Structured Query Language) yapısal sorgulama dili kullanılmaktadır. Bu dilin kendine özgü deyimleri vardır. SQL Deyimleri SQL, İngilizce "Structured Query Language" kelimelerinin baş harfleri ile oluşturulmuş, Türkçesiyle Yapısal Sorgulama Dilinin kısa adıdır. SQL kendisi bir programlama dili olmamasına rağmen birçok kişi tarafından programlama dili olarak bilinir. SQL herhangi bir veri tabanı ortamında kullanılan bir alt dildir. SQL ile yalnızca veri tabanı üzerinde işlem yapılabilir. SQL'ye özgü cümleler kullanarak veri tabanına kayıt eklenebilir, olan kayıtlar değiştirilebilir, silinebilir ve bu kayıtlardan listeler oluşturulabilir. Veri Tabanı Yaklaşımı ile birlikte bir veri sorgulama diline veya aracına ihtiyaç duyulmuştur. İlk başta matematiksel bir sözdizimine sahip olan SQUARE adlı bir dil geliştirilmiştir. Geniş kullanıcı kitleleri tarafında kolay kullanılabilmesi için matematiksel söz dizimli SQUARE dilinden vazgeçilerek, İngilizce'ye benzer sözdizimine sahip bir dil oluşturulmuş ve SEQUEL (Structured English Query Language) olarak adlandırılmıştır. Daha sonra da bu SEQUEL dili, İngilizce söylenişine paralel olarak SQL olarak adlandırılmıştır. SQL dili ilişkisel alanda büyük ilgi görmüş ve İlişkisel Veri Tabanı Yönetim Sistemlerinin (VTYS) tümünde yer alan standart dil görünümü kazanmıştır. Bu nedenle Veri Tabanı konusunda çalışan tüm bilişim teknik personeli tarafından bilinmesi gereken bir dil konumundadır. İlişkisel veri tabanının dili olan SQL’de sorgulama işlemleri, SELECT deyimi yardımıyla yerine getirilir. SELECT deyimi temel olarak üç farklı işlemi yerine getirmek için kullanılır: 1. Bir tablodaki satırları seçme işlemi yapılabilir. 2. Bir tablodaki belirli sütunlar seçilebilir. 3. Birden fazla tablonun belirlenen sütunları arasındaki ilişkileri kullanılarak birleştirilebilir. SELECT Deyiminin Yapısı SELECT deyiminin en basit biçimi şu şekilde ifade edilmektedir: SELECT {*\ sütun, . . .} FROM tablo Tanım içinde bazı SQL anahtar kelimelere yer verilmektedir. Bu anahtar kelimeler, SQL’in kendi özel kelimeleridir ve aynen bu şekilde ifade edilmelidir. SELECT SQL’in sorgulama deyimidir. FROM Hangi tablonun sorgulanacağını ifade eder. Tablonun Tüm Sütunlarını Seçmek Bir tablonun tüm sütunları seçmek söz konusu ise, SELECT deyimi içinde sütun isimleri yerine * işareti kullanılır. SELECT * FROM tablo Örnek Bölüm isimli tablo sütunlarının şu şekilde olduğunu varsayalım. Bu tablo bir firmanın bölüm isimlerini içermektedir. Sütun Adı Açıklama Bölüm_No Bölüm numarasıdır. Bölüm_Adı Bölümün adı. Bu tablonun içerdiği tüm verileri görüntülemek istiyoruz. Bunun için aşağıda belirtilen SELECT deyimi düzenlenir: SELECT * FROM Bölüm; Belirli Sütunların Seçilmesi Tablo içinde belirlenen sütunların elde edilmesi söz konusu ise, SELECT deyimi içinde bu sütun isimlerine yer verilir. Sadece bir sütun ismi kullanılabileceği gibi, çok sayıda sütun ismi virgüllerle birbirinden ayrılmak suretiyle de kullanılabilir. Örnek Bölüm tablosunun sadece bölüm numaraları ve bölüm isimlerini içeren sütunlarını, yani Bölüm_No ve Bölüm_Adı sütunlarını seçerek görüntülemek istiyoruz. Amacımıza uygun SELECT deyimi şu şekilde düzenlenebilir: SELECT Bölüm_No, Bölüm_Adı FROM Bölüm; Sütun isimleri tablo isimleriyle birlikte ifade edilebilir. Özellikle birden fazla tablo varsa bu yola başvurulur. Bunun için, tablo ismi her bir alanın başına eklenir ve araya bir nokta işareti konur. Sonuç yukarıdaki ile aynı olacaktır. SELECT Bölüm.Bölüm_No, Bölüm.Bölüm_Adı FROM Bölüm; Veri İşleme Olanakları SELECT deyimi SELECT ilçe, postakodu from tabloİlçeler WHERE plakaKodu = '06' Ankara'nın ilçeleri ile posta kodları gösterir UPDATE deyimi UPDATE tabloİlçeler Bala'nın posta kodu değiştirir set postakodu = '06720' WHERE ilçe = 'Bala' INSERT deyimi INSERT INTO tabloİlçeler VALUES (, 'Yenişehir', , , '82') Yeni veriler ekler DELETE deyimi DELETE FROM tabloİlçeler plakaKodu 82 olan bütün veri siler WHERE plakaKodu = '82'