Bölüm 1: Veritabanı Yönetim Sistemlerine Giriş -1- Dr. Serkan DİŞLİTAŞ 1.1. Veri ve Bilgi (Data & Information) Hesaplama, saklama gibi çeşitli işlemler amacıyla bilgisayara verilen sayı, yazı, resim, ses, ölçüm vb. değerlerden oluşan her türlü sayısal, alfasayısal bilgiler veri olarak adlandırılmaktadır. Şekil 1.1’de veri-işlem-bilgi arasındaki ilişki görülmektedir. Veri (Data) İşlem (Process) Bilgi (Information) Şekil 1.1. Veri-İşlem-Bilgi arasındaki ilişki Verinin bilgisayar tarafından işlenmesiyle bilgi elde edilmektedir. Ayrıca bir işlem sonucu elde edilen bilgi başka bir işlem için veri olarak kullanılabilmektedir. 1.2. Veritabanı (Database) Veritabanı, uygulama programları tarafından kullanılan verilerin tutulduğu ortamdır. Örneğin bir okula ait öğrenci, akademisyen, ders bilgilerinin tümü veritabanında tutulabilmektedir. Burada öğrencilerin kimlik bilgileri, ders kayıtları, aldığı notlar, akademisyen kimlik bilgileri, alınan dersler, sınav tarihleri gibi daha birçok veri örnek olarak sayılabilir. 1.3. Veritabanı Yönetim Sistemleri ( Database Management Systems - VTYS - DBMS ) Veritabanlarının oluşturulması, düzenlenmesi ve kullanılması amacıyla mevcut kitaplıklar, uygulamalar ve yardımcı programların oluşturduğu sistemlere Veritabanı Yönetim Sistemleri (VTYS) adı verilmektedir. VTYS’ler sayesinde, veritabanı yöneticileri verilerin yönetilmesi ile ilgili ayrıntılı işlerden kurtulmaktadır. -2- Bölüm 1: Veritabanı Yönetim Sistemlerine Giriş 1.4. Veritabanı Çeşitleri Kullanılacak veritabanının seçiminde güvenlik, kullanıcı sayısı, aynı zamanda işlem sayısı ve verilerin toplam miktarı önemli rol oynamaktadır. Bu isteklere bağlı olarak uygun bir veritabanı seçimi yapılabilir. İlişkisel VTYS’lere Oracle, MSSQL Server, MySQL, DB/2 ve Access örnek olarak verilebilmektedir. DB/2 IBM firması tarafından büyük sitemler için geliştirilen bir veritabanı yönetim sistemidir. Oracle Oracle en gelişmiş veritabanlarından biridir ve kullanımı oldukça yaygındır. Windows ve Unix işletim sistemleri tarafından desteklenmekte olup, geniş bir yazılım desteği vardır. Oracle en güçlü yapıya sahip, güvenilirliği çok yüksek bir veritabanıdır. Oracle ile bir tabloda sınırsız sayıda (Bilgisayar kapasitesine bağlı) veri tutulabilmektedir. Oracle veritabanı diğer veritabanlarına göre daha pahalıdır. Microsoft SQL Server Microsoft firması tarafından geliştirilen Microsoft SQL Server (MSSQL) iyi bir performansa sahiptir. Kullanım kolaylığı ve güvenilirliğinin yüksek olması gibi iyi yönleri mevcut olmasına rağmen sadece Windows işletim sistemlerinde çalışıyor olması dezavantajıdır. Şu anda diğer işletim sistemlerine yönelik uyumluluk üzerinde çalışmalar mevcuttur. Microsoft MSSQL ile bir tabloda yaklaşık 4 Tbyte veri tutulabilmektedir. MSSQL Server veritabanı “Transaction”, “Trigger” ve “Stored Procedure” gibi özelliklere sahiptir. MySQL MySQL veritabanı MySQL Inc. tarafından geliştirilmiştir. Windows, Linux, OS/2 gibi birçok işletim sistemi tarafından desteklenmektedir. Web uygulamaları için hızlıdır ve kullanımı oldukça yaygındır. MySQL veritabanı ile bir tabloda 8 TByte veri tutulabilmektedir. ‘Transaction’ özelliğine sahip değildir. Microsoft Access Microsoft Office uygulamalarından Access, küçük uygulamalar için ucuz maliyetli bir seçimdir. Access veritabanı veri miktarı ve aynı zamandaki işlem sayısı az olan Web sayfalarında kullanılabilir. Access ile aynı anda 255 bağlantı yapılabilmekte ve bir tabloda 2 GB’a kadar veri tutulabilmektedir. Access “Transaction” özelliğine sahip olmasına rağmen “Trigger-Tetikleyici” ve “Stored Procedure-Saklı Prosedür” özelliklerine sahip değildir. -3- Dr. Serkan DİŞLİTAŞ 1.5. Veritabanı Yönetim Sistemlerinin Yararları Klasik dosyalama sistemlerinin aşağıda belirtilen özelliklerin birçoğunu sağlayamaması ve zorluğu nedeniyle VTYS’lere olan ilgi artmış ve kullanım alanları genişlemiştir. Aşağıda VTYS’lerinin yararları maddeler halinde kısaca anlatılmaya çalışılmıştır : Minimum Veri Tekrarı (Minimum Data Redundancy): Mevcut veriler kullanıcı veya bilgisayarlara bağlı olarak birden fazla tutulmamaktadır. Bu sayede aynı verinin birkaç yerde tutulması engellenmiş olmaktadır. Veri Tutarlılığı (Data Consistency): Verinin merkezi bir yerde tutulması nedeniyle güncelleme, yedekleme, yeniden başlatma, onarma gibi işlemlerden kaynaklanabilecek sorunlar da giderilmiş olmaktadır. Veri Paylaşımı (Data Share): Veritabanındaki verilerin tutarlılığını ve bütünlüğünü bozmadan birden çok (veritabanına bağlı olarak 255, 1000, 5000 …) bağlantıya eşzamanlı olarak izin verilebilmektedir. Veri Bütünlüğü (Data Integrity) : Birbiriyle ilişkili tablolarda; bir kayıt silme veya güncelleme durumunda o kayıta bağlı olarak diğer tablolarda da değişiklikler kolaylıkla yapılabilmektedir. Bu sayede veriler bir bütün olarak düzenlenebilmektedir. Veri Güvenliği (Data Security) : VTYS’ler ile güvenlik ve gizlilik istenen düzeyde sağlanabilmektedir. Veritabanlarına erişimde güvenlik amacıyla şifreler kullanılabilmektedir. Ayrıca tablolarda yapılacak işlemlerde yetkiler belirlenebilmekte ve bu yetkilere bağlı olarak gerekli yönetimsel ve tanımlama işlemleri yapılabilmektedir. Tabloların tamamının ya da bir kısmının (belirli sütunlarının) izlenip güncellenebilmesi sağlanabilmektedir. Veri Bağımsızlığı (Data Independence) : VTYS’lerde veriler bağımsız olarak kullanılabilmektedir. Verinin yapısı ve organizasyonu ile programcı ilgilenmek zorunda değildir. 1.6. Veritabanı Türleri Veritabanında bulunan verilerin değişik şekillerde (modellerde) organize edilmesi mümkündür. Geliştirilen veritabanı modelleri aşağıdaki gibi 3 türde incelenmektedir : İlişkisel Veritabanı Modeli Hiyerarşik Veritabanı Modeli Nesnesel Veritabanı Modeli Bunlar içerisinde en çok ilişkisel veritabanları kullanılmaktadır. -4- Bölüm 1: Veritabanı Yönetim Sistemlerine Giriş 1.7. İlişkisel Veritabanı ( Relational Database ) Modeli İlişkisel Veritabanı modeli, günümüzde en çok tercih edilen veritabanı modelidir. İlişkisel Veritabanı modellerinde veriler kendi içerisinde ilişkilendirilerek basit tablolar halinde tutulurlar. Burada tablo kümelendirilmiş veri topluluğu anlamına gelmekte olup, satır ve sütunlardan oluşmakta ve veriler bu tablolara kayıt yapısında kaydedilmektedir. Bir tabloda mevcut sütun bilgilerinin oluşturduğu her satır kayıt olarak adlandırılmaktadır. İlişkisel veritabanları için en az iki tablonun birbirleri ile ilişkilendirilmiş olması gerekmektedir. Örneğin öğrenci takibi amacıyla oluşturulacak bir ilişkisel veritabanında kimlik bilgileri, not bilgileri, ders bilgileri ayrı ayrı tablolarda tutulmaktadır. İlişkisel veritabanlarında sorgular yapılarak aşağıdaki işlemler yapılabilir : Kayıt Süzme Sütun Süzme Tablo Birleştirme Hesaplama Yeni Alanlar : Tüm kayıtlar ya da istenen kayıtların elde edilmesi. : Tüm alanların ya da istenen alanların elde edilmesi. : İki ya da daha çok tablonun birleştirilerek elde edilmesi. : Alanlar üzerinde hesaplamaların yapılması. : Yeni alanların oluşturulabilmesi. 1.8. Normalizasyon Kuralları Tablo tasarımında birtakım kurallara uyulması veritabanının performansını ve güvenilirliğini artırmaktadır. Tablolarda sütün sayılarının, veri tekrarlarının ve Null değerlerin en az sayıda olması istenir. Ayrıca veri bütünlüğünün sağlanması ve veriler arasında ilişkilerin tanımlanması yapılabilmelidir. Tablo oluşturmada uyulması gereken normalizasyon kuralları şunlardır : 1. Tablolar, en az sayıda alan ile oluşturulmalıdır. Bu sayede gereksiz satır ve sütun tekrarları engellenir. 2. Tabloyu oluşturan alanlar bir bütünü oluşturmalı ve tablo diğer tablolardan bağımsız olmalıdır. 3. Tabloyu oluşturan her alan sadece bir bilgi içermelidir. 4. Her tablo için en az bir Birincil Anahtar (Primary Key) tanımı olmalıdır. 5. Tablodaki alanlar birincil anahtara bağlı diğer bilgileri içermelidir. Bir alan anahtar olmayan başka bir alana bağlı olmaz. -5- Dr. Serkan DİŞLİTAŞ 1.9. İlişkisel Veritabanı Tasarımı İlişkisel veritabanı tasarımında aşağıdaki kurallara uyulması son derece yararlı olmaktadır : 1. Proje kapsamında, veritabanı oluşturacak veriler belirlenir. 2. Veriler analiz edilerek bağımsız tablolar oluşturulur. 3. Tablolar için en az bir Birincil Anahtar (Primary Key) oluşturulur. 4. Birincil Anahtar (Primary Key) ve Yabancı Anahtar (Foreign Key) alanları kullanılarak tablolar arasında ilişkiler tanımlanır. Şekil 1.2’de Kimlik, Notlar ve Dersler adında oluşturulan tabloların mevcut alanları verilmiş ve bu tablolar arasındaki ilişki gösterilmiştir. Tablolar arasındaki ilişkilerin oluşturulmasında anahtar alanlar kullanılmaktadır. Şekil 1.3’te Kimlik, Notlar ve Dersler adlı tablolar için girilen örnek veriler ile bir tablodaki Anahtar (Key), Alan (Field) ve Kayıt (Record) yapıları görülmektedir. Kimlik Numara FK PK Notlar FK Numara PK Dersler DersKodu DersAdi Ad DersKodu Soyad Vize Teori Telefon Final Pratik Kredi Adres PK : Primary Key (Birincil Anahtar) FK : Foreign Key (Yabancı Anahtar) - Başvuran Tablo Alanı Başvurulan Tablo Alanı Şekil 1.2. İlişkisel veritabanında tabloların örneksel ilişkisi -6- Bölüm 1: Veritabanı Yönetim Sistemlerine Giriş a. ‘Notlar’ tablosunun tasarım yapısı Kayıt (Record ) Alan (Field) b. Öğrenci Kimlik bilgilerinin tutulduğu ‘Kimlik’ tablosu -7- Dr. Serkan DİŞLİTAŞ c. Not bilgilerinin tutulduğu ‘Notlar’ tablosu d. Ders bilgilerinin tutulduğu ‘Dersler’ tablosu Şekil 1.3. Tablo Yapıları ve Alanlar 1.10. Index (İndeks) ve Key (Anahtar) İndeks ve anahtarlar kayıtlara erişimin daha hızlı olmasını sağlamaktadır. İndeksiz bir tabloda kayıtlar sıra erişimli olarak getirilecek, bu da performansın düşmesine yol açacaktır. Tablolar için bir veya daha fazla sayıda indeks ya da anahtar belirlenebilmektedir. Anahtarlar tablodaki kayıtların fiziksel olarak sıralı bir biçimde elde edilmesini sağlarken, indeksler belirtilen indeks alanına göre sıralama kriterlerini tutmaktadırlar. Anahtar olarak belirlenen alan ya da alanlardaki veriler tek olmak zorundadır. -8- Bölüm 1: Veritabanı Yönetim Sistemlerine Giriş Örneğin Numara, Ad, Soyad, Telefon ve Adres alanlarından oluşan bir tabloda Numara alanı Key (Anahtar) olarak tanımlanırsa, bu tabloda Numara alanına göre kayıt girişleri sıralı olarak yapılacaktır. Yeni yapılan kayıtlara göre fiziksel olarak yer değişimleri yapılmaktadır. Ayrıca anahtar alanı aynı olan yeni kayıtların girişi engellenmektedir. Tabloda hem Ad hem de Soyad alanına birlikte Key özelliği verilirse, yeni girilen bir kayıt için daha önceki kayıtlara göre hem adın hem de soyadın aynı olması engellenmektedir. Daha önceden görüldüğü gibi Şekil 1.3.a’da Notlar tablosu için OgrNo, DersKodu ve DyilDonem alanlarına birlikte Key özelliği verilmiştir. Bu durumda Notlar tablosuna bu üç alan değeri aynı olan ikinci bir kayıt girmek imkansızdır. Çünkü bir öğrenci bir dersi ilgili dönemde sadece bir kez alma durumundadır. Aksi halde öğrencinin ders kayıtlarında sorunlar yaşanabilmektedir. Anahtar Alanların 3 temel görevi vardır: Anahtar alan(lar)a göre kayıtların fiziksel olarak sıralanması Anahtar alan(lar)a göre kayıt tekrarının engellenmesi (Anahtar alan(lar)a veri giriş mecburidir.) Anahtar alanlara göre tabloların ilişkilendirilmesi -9- Dr. Serkan DİŞLİTAŞ -10-