İlişkisel Veritabanı Yaklaşımı: İngilizce'de Relational Database Management System (RDBMS) olarak ifade edilir. İlişkisel veri tabanı yönetim sistemi verilerin tablolarda satır ve sutunlar halinde tutulduğu ve yüksek bir veri tutarlılığına sahip veri depolama sistemidir. ilişkisel veri tabanını çeşitli tablolar arasında organize edilmiş verilerden oluşan veri tabanı olarak açıklayabiliriz. Bu farklı tablolar arasındaki veriler, çeşitli anahtarlar vasıtası ile birbirlerine bağlanırlar. İlgili tablolarda, sütunlar arasında bir anahtar sütun yeralır. Bu anahtar sütun aracılığı ile birden çok tablo verileri birbiriyle bağlantı sağlayabilir ve herhangi bir sorgulamada birlikte görüntülenebilir. Bu tür veri tabanları arasında Ms Access, Ms Sql Server. Mysql, Oracle, dBase, Progress, Informix, Ingres,...vb. gelmektedir. Örnek vermek gerekirse Büyük bir firma diyelim ki internette ticaret yapama karar verdi. Bu nedenle ürünlerin listesini bir tabloda tutup Web sitesi aracılığı ile güncellenebilir yapacaksınız. Öncelikle iki adet liste yapmamız lazım, birincisi ürünler listesi ikincisi üyeler listesi. Üyeler alışveriş yaptıklarında hangi ürün veya ürünleri aldıklarını gösteren 3. bir liste lazımdır. Bu listeye de sipariş listesi diyebiliriz. Ürün bilgilerini kaydedeceğimiz ÜRÜNLER tablosu MÜŞERİ bilgilerini kaydedeceğimiz MÜŞTERİLER tablosu, Web programlamada genelde üye listesi olarak oluşturulur. Ve sipariş durumunda sipariş bilgilerini tutacağımız SİPARİŞLER tablosu Bir ilişkinin olabilmesi için en az iki tablonun olması lazım. Ve bu iki tablodaki verilerin bir şekilde birbirleri ile ilişkilendirilmesi gerekir. Ürünler ve siparişler tablomuza bakacak olursak. Siparişin verilebilmesi için ürünün ürünler tablosunda kayıtlı olması lazım. Ürünler tablosunda karşılığı olmayan ürünü sipariş vermesiniz. Olaya tersinden bakacak olursak, sipariş verilen bir ürünün ayrıntılarına bakmak istediğimizde sipariş tablosunda barkod numarası alınırız daha sonra aynı barkod numarasına karşılık gelen ürünü bulmak için ürünler tablosuna bakarız. Ürün tablosu bize ürünler ilgili bütün ayrıntıları verir. Ürünler tablosundaki barkod no birincil anahtardır „parimary key‟. Sipariş tablosundaki sipariş verdiği ürün alanı yabancı anahtar „foregin key‟ alandır. Access veritabanında oluşturulmuş tabloların ilişkisel diyagramı aşağıdaki gibidir. Bir veri tabanı olması gereken özellikler. 1- Veri Tabanı Güvenliği Güvenlik veri tabanına göre değişiklik göstermektedir. Paradox ve Dbase gibi veri tabanları sadece alan bazında güvenlik sağlayabilmektedir. Tablolar şifrelenerek korumalı erişim sağlanabilmektedir. Veri tabanı yönetim sistemlerine daha çok güvenlik yönetimi bölümünden, güvenlik sağlanmaktadır. 2- Hareketler(Transaction) Transaction, bir veya birkaç tablo üzerinde yapılan değişikliklerin, eklemelerin, veri tabanına kalıcı olarak işlenmesi(commit) yapılmadan önce, kayıt işleminin başarılı olup olmadığını denetleyebilen bir grup harekete (SQL ifadelerine) denmektedir. Eğer bu hareket herhangi bir şekilde başarısız olursa tüm yapılan değişiklikler geri alınır(rollback). Donanım hatalarına(elektrik kesintileri sistem çökmesi gibi), karşı veritabanı üzerinden sağlamak amacıyla hareket kullanılır. Yukarıda verdiğim Ürünler, Sipariş, Müşteriler tablolarına kayıt işlemi ilişkisel bağlantı sayesinde aynı anda gerçekleşmektedir. Diyelim ki bir sipariş geldi, siparişin kimden geldiği ile ilgili müşteri bilgileri müşteri tablosuna, ürünler ile ilgili stok durum bilgileri vb ürünler tablosuna, ve sipariş bilgileri siparişler tablosuna kaydolur. Bu üç tablo arasında daima bir tutarlılık olmalıdır. SQL ifadelerinin bu şeklinde çalışma biçimine atomik olarak çalışması denmektedir. BEGIN TRANSACTION INSERT INTO SIPARIS(SIPNO,MUSNO,URUNKODU,MIKTAR) VALUES(23,5,1001,4) UPDATE MUSTERI SET BORC=BORC+TOPLAMBORC WHERE MUSNO=5 UPDATE URUNLER SET MIKTAR=MIKTAR-4 WHERE URUNKODU=1001 COMMIT Yukarıdaki üç hareket işleme yapsındaki SQL ifadeleri 3 tabloda da değişiklik meydana getirmektedir. Bu harekerin başarıyla tamalanması ekleme(insert) güncelleme(update), ve güncelleme(update) SQL ifadelerinin hepsinin eksiksiz olarak gerçekleştirilmesini sağlar. İlişkisel Bütünlük,Saklı Prosedürler ve Tetikleyiciler: İlişkisel Bütünlük (relational İntegrity) Null değerler (Nulls) Özelliğin, verilmiş satır için uygulana bilmeyen veya şuan belli olmayan değerini ifade eder Varlık bütünlüğü (Entity İntegrity) Taban ilişkide birincil anahtar özelliği null değer alamaz Erişimsel Bütünlük (Referential İntegrity) İlişkide yabancı anahtar varsa, bu anahtarın değeri, ana ilişkinin aday anahtarının her hangi satırındaki değerine eşit olmalı veya null değer almalıdır Şirket sınırlamaları Kullanıcılar veya veri tabanı yöneticisi tarafından belirlenmiş kurallar Saklı Prosedürler(Stored procedures) : Bir veritabanı sunucusu üzerinde kayıtlı bulunan SQL komutlarından oluşan bir prosedür kümesi. Bu prosedürler genellikle sunucu üzerinden veritabanı ile ilgili görevleri yerine getirirler. Tetikleyiciler(Tiggers):Belirli komutların otomatik olarak çalıştırılmasını sağlayan SQL komutları kümesidir. Bu komutlar yerine saklı prosedürlerde kullanılmaktadır. Veritabanı çeşitleri 1. Microsoft Access Microsoft firmasının Office paketi içinden çıkan Access, paralı veritabanları arasında nispeten ucuz olarak göze çarpar. Küçük ölçekli uygulamalardaki gereksinimlerinizi karşılayabilir. Eğer bir web sitesinde veri miktarı ve aynı anda yapılan işlem sayıları az ise, Access kullanabilirsiniz. Tek bir veri tablosunda 2 GB a kadar veri depolayabilir ve aynı anda 255 bağlantıya izin verebilirsiniz. Access, MS Windows sistemlerinde kullanılamamakta, bu da yaygınlaşmasını engellemektedir. “Transaction locking” özelliğine sahiptir, ancak “trigger” ve “stored procedure” özelliklerine sahip değildir. 2. MySQL MySQL Inc. Tarafından kodlanan MySQL, Access ile karşılaştırıldığında daha güvenlidir. Windows‟un yanı sıra Linux, OS/2, Solaris, AIX ve birçok işletim sistemini desteklemesi nedeniyle çok yaygındır.. Ev kullanıcıları tarafından, kolay kurulumu ve gelen kurulum paketleri nedeniyle sıkca tercih edilmektedir. Tablo başına 8 TB veri depolayabilmektedir. MySQL‟ in en büyük dezavantajlarından biri ücretsiz olmasından kaynaklanan destek eksikliğidir. Özellikle web uygulamaları için cok hızlıdır. Transaction‟ ları desteklemediği için alabildiğine yalındır ve transaction desteği olmadan gerçekleştirilebilecek web uygulamaları için çok hızlı bir alternatiftir. Oldukça fazla yazılım desteği bulunmaktadır. 3. IBM DB2 IBM firmasının ürünü olan DB2, Access ve MySQL e göre daha performanslı, ancak küçük işletmelere göre daha yüksek maliyete sahiptir. Windows ve lunix sistemlerinde çalışabilir. “Transaction locking”, “trigger” ve “stored procedure” özelliklerine sahiptir. 1. Informix Ücretli ve güçlü bir veritabanıdır. Orta ölçekli işletmelerin yükünü kaldırabilecek kapasitededir. 1994‟deki Postgres kodundan geliştirilmeye başlanmıştır. 1. Microsoft SQL Server Yine Microsoft firmasının bir ürünü olan Microsoft SQL Server (MSSQL), iyi bir performansa sahiptir. En büyük dezavantajı, sadece Windows üzerinde çalışabilmesidir. Kullanım kolaylığı, güvenilirliği ve işlem gücüyle dikkat çekmektedir. Maliyeti diğer veritabanlarına göre yüksektir. Tablo başına 4 TB veri depolayabilmektedir. “Transaction locking”, “trigger” ve “stored procedure” özelliklerine sahiptir. 1. PostgreSQL PostgreSQL, veritabanları için yukarıda bahsedilmiş olan ilişkisel modeli kullanan ve SQL standart sorgu dilini destekleyen bir veritabanı yönetim sistemidir. PostgreSQL aynı zamanda iyi performans veren, güvenli ve geniş özellikleri olan bir DBMS‟tir. Hemen hemen tüm UNIX ya da Unix türevi (Linux, FreeBSD gibi) işletim sistemlerinde çalışır. Ayrıca NT çekirdekli tüm Windows sistemlerde de çalıştırılabilir. Ücretsiz ve açık kodludur. PostgreSQL diğer ticari ya da açık kodlu veritabanlarında bulabileceğiniz özelliklerin hemen hemen hepsini (ya da daha fazlasını) kapsar. PostgreSQL özellikleri (PostgreSQL FAQ‟da listelendiği gibi): Transactions Subselects Views Foreign key referential integrity Inheritance User-defined types Rules 1. Oracle Oracle, dünyanın en güçlü ve güvenilir veritabanı olarak gösterilmektedir, ancak çok yüksek maliyeti nedeniyle sadece büyük kurumların tercih edebilecekleri bir veritabanıdır. Windows ye Unix sistemlerinde kullanılabilmektedir. Oracle, sınırsız sayıda tabloları desteklemektedir. Çok büyük yazılım desteği vardır. 1. Interbase Linux platformu üzerinde çalışan, ücretsiz bir veritabanı sunucusudur. Yaygın değildir. Ücretsizdir. 1. Progress Linux ve Windows platformu üzerinde çalışan çok kuvvetli bir veritabanı sunucusudur. İstemci sunucu (clint/server) veri tabanları Tek katmanlı, iki katmanlı ve çok katmanlı database yapıları Tek katmanlı(single-tier): Genel olarak local veritabanları tek katmanlıdır. Tek katmanlı yapıda program veritabanına direk ulaşır ve yapılan işlemler (kayıt ekleme, kayıt silme, değiştirme) anında gerçekleştirilir. İki katmanlı(two-tier): Burada program client tarafında çalışır. Client tarafında çalışan program gerekli sürücüleri kullanarak serverdaki veritabanına ulaşır. Çok katmanlı(multi-tier): Burada program yine client tarafında çalışır. Program database server'la direk bağlantı kurmaz. Server tarafında çalışan bir application server ile bağlantı kurar. Bu yapı genellikle güvenlik ve hız amacıyla kullanılır.