T.C. MUSTAFA KEMAL ÜNĠVERSĠTESĠ FEN BĠLĠMLERĠ ENSTĠTÜSÜ BĠLGĠSAYAR MÜHENDĠSLĠĞĠ ANABĠLĠM DALI ORACLE VTYS ve ÖRNEK VERĠTABANI UYGULAMASI BÜLENT SĠYAH LĠSANS TEZĠ Ġskenderun/HATAY OCAK-2012 MUSTAFA KEMAL ÜNĠVERSĠTESĠ FEN BĠLĠMLERĠ ENSTĠTÜSÜ ORACLE VTYS ve ÖRNEK VERĠTABANI UYGULAMASI BÜLENT SĠYAH LĠSANS TEZĠ BĠLGĠSAYAR MÜHENDĠSLĠĞĠ ANABĠLĠM DALI YaĢar DAġDEMĠR danıĢmanlığında hazırlanan bu tez / / tarihinde aĢağıdaki jüri üyeleri tarafından oybirliği/oyçokluğu ile kabul edilmiĢtir. Ġmza…………………. Ġmza………………… Ġmza……………… BaĢkan Üye Üye Bu tez Enstitümüz Bilgisayar Mühendisliği Anabilim Dalında hazırlanmıĢtır. Kod No: ………………….. Enstitü Müdürü Ġmza ve Mühür Bu çalıĢma …………………….. tarafından desteklenmiĢtir. Proje No: Not: Bu tezde kullanılan özgün ve baĢka kaynaktan yapılan bildiriĢlerin, çizelge, Ģekil ve fotoğrafların kaynak gösterilmeden kullanımı, 5846 sayılı Fikir ve Sanat Eserleri Kanunundaki hükümlere tabidir. ii ĠÇĠNDEKĠLER ÖZET ...................................................................................................... V KISALTMALAR DĠZĠNĠ ...................................................................VI ÇĠZELGELER DĠZĠNĠ ..................................................................... VII ġEKĠLLER DĠZĠNĠ ......................................................................... VIII 1. GĠRĠġ................................................................................................... 1 2. ORACLE VERĠTABANI YÖNETĠM SĠSTEMĠ............................ 2 2.1. ORACLE TEMELLERĠ ............................................................................. 2 2.1.1. Kullanılan Temel Terimler ................................................................... 2 2.1.2. Temel Veri Tipleri ................................................................................. 4 2.1.3. Kullanıcı Tanımları ............................................................................... 4 2.2. ORACLE VERĠTABANI YAPISI ............................................................... 4 2.2.1. Fiziksel Bölüm ........................................................................................ 5 2.2.2. Mantıksal Bölüm.................................................................................... 7 2.3. VERĠ TANIMLAMA DĠLĠ KOMUTLARI ................................................ 8 2.3.1. Veri Sözlüğü ........................................................................................... 8 2.3.2. Veritabanı Nesneleriyle Ġlgili Komutlar .............................................. 9 2.4. YEDEK ALMA VE GERĠ GETĠRME ..................................................... 15 2.4.1. Fiziksel Yedek Alma ............................................................................ 16 2.4.1. Mantıksal Yedek Alma ........................................................................ 16 3. VERĠTABANI MODELLERĠ VE TASARIMI ............................ 18 3.1. VERĠTABANI MODELLERĠ .................................................................. 18 3.1.1. Ağ Veritabanı Modeli .......................................................................... 18 3.1.2. HiyerarĢik Veritabanı Modeli ............................................................ 19 3.1.3. Nesne Yönelimli Veritabanı Modeli ................................................... 20 3.1.4. E-R Modeli ........................................................................................... 21 3.1.5. ĠliĢkisel Veri Modeli............................................................................. 24 3.1.6. Farklı Veritabanı Modellerinin Avantajları ve Dezavantajları ...... 25 3.2. ÖRNEK VERĠTABANI (ÖĞRENCĠ OTOMASYONU) TASARIMI ... 28 iii 3.2.1. Öğrenci Otomasyonu ĠĢlevleri ............................................................ 28 3.2.2. Varlık Kümeleri Arasındaki ĠliĢki ..................................................... 28 3.2.3. ĠliĢki ġemaları Çizeneği ....................................................................... 29 4. ORACLE’DA VERĠTABANI UYGULAMASI ............................ 30 4.1. ORTAMIN HAZIRLANMASI VE VERĠTABANI OLUġTURMA ....... 30 4.2. TABLOLARIN YARATILMASI .............................................................. 31 4.2.1. Öğrenciler Tablosu .............................................................................. 31 4.2.2. Öğretim Elemanları Tablosu .............................................................. 32 4.2.3. Bölümler Tablosu ................................................................................ 32 4.2.4. Fakülteler Tablosu ............................................................................... 33 4.2.5. Ünvanlar Tablosu ................................................................................ 33 4.2.6. Dönemler Tablosu ................................................................................ 34 4.2.7. Dersler Tablosu .................................................................................... 34 4.2.8. ÖğrenciDersler Tablosu ...................................................................... 35 4.3. TABLOLAR ARASI ĠLĠġKĠLER ............................................................. 35 4.3.1. Öğrenci Tablosu ĠliĢkileri ve Son Hali ............................................... 36 4.3.2. Öğretim Elemanları Tablosu ĠliĢkileri ve Son Hali .......................... 36 4.3.3. Bölüm Tablosu ĠliĢkileri ve Son Hali ................................................. 37 4.3.4. ÖğrenciDers Elemanları Tablosu ĠliĢkileri ve Son Hali................... 38 4.3.5. Fakülte Tablosunun Son Hali ............................................................. 39 4.3.6. Ünvan Tablosunun Son Hali ............................................................... 40 4.3.7. Ders Tablosunun Son Hali .................................................................. 40 4.3.8. Dönem Tablosunun Son Hali .............................................................. 41 5. SONUÇ .............................................................................................. 42 KAYNAKLAR...................................................................................... 43 TEġEKKÜR.......................................................................................... 44 ÖZGEÇMĠġ .......................................................................................... 45 iv ÖZET Bu çalıĢmada ĠliĢkisel Veritabanı Yönetim Sistemleri konusunda lider durumda olan Oracle ve tüm veritabanı modelleri hakkında genel bilgilere sahip olmak, örnek bir durum ile veritabanı modelleyip, bu modeli Oracle Veritabanı Yönetim Sisteminde uygulama amaçlanmıĢtır. Oracle VTYS temel anlamda veritabanı yapı biçimi anlaĢılmıĢ, en sık karĢılaĢılan terimlerle sistemin kolay anlaĢılması hedeflenmiĢ, Oracle‟da bulunan veri türleri Microsoft SQL Server‟daki veri türleri ile karĢılaĢtırmalar yapılmıĢ, Oracle‟da var olan kullanıcı profilleri ve farkları anlaĢılıp, Veri Tanımla Dili Komutlarıyla veri yaratma, listeleme, silme, düzenleme gibi iĢlemlerle veritabanı nesneleri yönetilmiĢ ve Oracle VTYS‟nin yedek alma ve alınan yedeği geri yerleĢtirme iĢlemleri incelenmiĢtir. Tüm Veritabanı Modelleri incelenip en yaygın olan ve diğer modellere göre daha belirgin iliĢkiler kuran ĠliĢkisel Model (Relational Model) ile örnek bir durum için veritabanı tasarlanmıĢtır. Tasarlanan veritabanı Oracle VTYS ile oluĢturulup tasarıma uygun yapı ve bu yapılar arasındaki iliĢkiler gerçekleĢtirilip, Veri Tanımla Dili Komutları uygulanmıĢtır. Sonuç olarak Oracle‟de diğer veritabanı yönetim sistemlerinde olduğu gibi, stored procedure‟lar, paketler, trigger‟ler gibi bileĢenler yer alır. Oracle‟da bulunan farklı yetkilere ve eriĢim haklarına sahip kullanıcılarla veritabanı güvenliğinde önemli bir yere sahiptir. Oracle çok sayıda araçtan oluĢur ve uygulama geliĢtiricilerinin kolay ve esnek uygulamalar geliĢtirmesine olanak sağlar. Anahtar Kelimeler: Oracle, Veritabanı, VTYS, Veri Modelleri, ĠliĢkisel Veritabanı Yönetim Sistemi v KISALTMA DĠZĠNĠ BLOB : Binary Large Object CLOB : Character Large Object DBA : Database Administrator DBMS : Database Management Systems DDL : Veri Modeli Tanımlama Dili (Data Definition Language) E-R Modeli : Entity-Relationship Model RDBMS : Relational Database Management Systems SQL : Yapısal Sorgulama Dili (Structured Query Language) VT : Veritabanı VTY : Veri Tabanı Yöneticisi VTYS : Veritabanı Yönetim Sistemi vi ÇĠZELGELER DĠZĠNĠ ÇĠZELGE 2.1. Veri Sözcüğü görüntüleri ................................................................. 9 ÇĠZELGE 2.2. Oracle Tarafından TanımlanmıĢ Roller .......................................... 13 ÇĠZELGE 3.1. ÇeĢitli Veritabanı Modellerinin Avantajları ve Dezavantajları ....... 25 ÇĠZELGE 4.1. Tablo iliĢkileri Sonrası Öğrenci Tablosu Son Hali ......................... 36 ÇĠZELGE 4.2. Tablo iliĢkileri Sonrası ÖğretimElemanı Tablosu Son Hali ............ 37 ÇĠZELGE 4.3. Tablo iliĢkileri Sonrası Bölüm Tablosu Son Hali ........................... 37 ÇĠZELGE 4.4. Tablo iliĢkileri Sonrası ÖğrenciDers Tablosu Son Hali .................. 38 ÇĠZELGE 4.5. Fakülte Tablosunun Son Hali .......................................................... 39 ÇĠZELGE 4.6. Ünvan Tablosunun Son Hali ........................................................... 40 ÇĠZELGE 4.7. Ders Tablosunun Son Hali .............................................................. 40 ÇĠZELGE 4.8. Dönem Tablosunun Son Hali .......................................................... 41 vii ġEKĠLLER DĠZĠNĠ ġEKĠL 3.1. Ağ Modeli Örneği .................................................................................. 19 ġEKĠL 3.2. HiyerarĢik Veri Modeli Örneği .............................................................. 20 ġEKĠL 3.3. Veri Modellemede Kullanılan Grafiksel Notasyonlar ........................... 24 ġEKĠL 4.1. Öğrenci Tablosu..................................................................................... 31 ġEKĠL 4.2. Öğretim Elemanı Tablosu ...................................................................... 32 ġEKĠL 4.3. Bölüm Tablosu....................................................................................... 33 ġEKĠL 4.4. Fakülte Tablosu ..................................................................................... 33 ġEKĠL 4.5. Ünvan Tablosu ....................................................................................... 34 ġEKĠL 4.6. Ders Tablosu .......................................................................................... 34 ġEKĠL 4.7. Dönem Tablosu ...................................................................................... 35 ġEKĠL 4.8. ÖğrenciDers Tablosu ............................................................................. 35 viii 1. GĠRĠġ Veri Tabanı Yönetim Sistemleri (VTYS) çok büyük veri tutan ve bu verileri yönetmek isteyen herkese hizmet etmek üzere geliĢtirilmiĢ programlardır. BaĢlıca kullanılan VTYS'ler Oracle, DB2, MS SQL Server, Sybase, Informix, MySQL, FireBird Postrage ve Access gibi sıralanabilir. Günümüzde yaygın olarak kullanılan ĠliĢkisel Veri Tabanı (Relational Database) yaklaĢımı, verileri normalizasyon kuralları çerçevesinde tablolara ayırmayı, bu tablolar arasında bir birincil anahtar ve bir yabancı anahtar üstünden iliĢki kurmayı öngörmektedir. ÇalıĢmada VTYS‟lerinden Oracle seçilmesinin nedeni, kullanılan veritabanları arasından lider durumda olması, çok sayıda araca sahip olan olmanın aslında aynı zamanda piyasadaki herhangi Oracle‟a hakim bir VTYS‟ye kısa sürede geliĢtirilebileceği anlamına gelmesidir. ÇalıĢmada temel bilgiler alındıktan sonra örnek olarak bir öğrenci otomasyonu için veritabanı geliĢtirildi. Öğrenci otomasyonunda hedef standart iĢlevlerin bulunduğu dar kapsamlı senaryo ile yaratıldı. Senaryo dar olsa bile yeterlilik düzeyine sahip ve uygulama bağlamında elde edilen temel bilgilerin tümünü kapsayacak düzeyde oluĢturuldu. ÇalıĢma bölümlerinden olan Veritabanı Modelleri ile tüm modeller arasından en yaygın olan iliĢkisel veritabanı model seçilip, bu model ile veritabanı tasarlanıp Oracle VTYS‟de uygulanarak geliĢtirildi. ÇalıĢmaların bölümleri Ģöyledir. Ġkinci bölümde; Oracle VTYS‟nin genel yapısına iliĢkin bilgilerle, Veri Tanımla Dili Komutları ile veritabanı nesnelerini yönetme iĢlemleri aktarılmıĢtır. Üçüncü bölümde; Veritabanı Modelleri ve bu modeller arasındaki farklar aktarılıp, ĠliĢkisel Veritabanı Modeli ile örnek bir veritabanı tasarlanmıĢtır. Dördüncü bölümde; ikinci bölümde elde edilen bilgilerle, üçüncü bölümde tasarlanan örnek bir veritabanı tasarımının Oracle VTYS‟de oluĢturulup, yönetilmiĢtir. 1 2. ORACLE VERĠTABANI YÖNETĠM SĠSTEMĠ Ġ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 sağlandığı, bilgilerin bütünlük içerisinde tutulabildiği ve birden fazla kullanıcıya aynı anda bilgiye eriĢim imkanının sağlandığı programlardır. Oracle veritabanı da bir iliĢkisel veri tabanı yönetim sistemidir. Oracle veritabanının özellikleri Ģunlardır [1]: Büyük miktarda veri tutabilmekte ve verilerin depolandığı alanları ayarlama imkanı vermektedir. Aynı anda çok sayıda kullanıcıya verilerin bütünlüğünü bozmadan hizmet verebilmektedir. Günün 24 saati ve haftalar boyu hiç kapatılmadan çalıĢabilmektedir. ĠĢletim sistemi, veri eriĢim dilleri ve ağ iletiĢim protokolleri standartlarıyla uyumludur. Yetkisiz eriĢimleri engelleme ve kontrol edebilme imkanı sağlamaktadır. Bütünlüğü veritabanı düzeyinde sağlayabilmektedir, böylece daha az kod yazılmaktadır. Ġstemci/Sunucu mimarisinin bütün avantajlarını kullanabilmektedir. 2.1. ORACLE TEMELLERĠ 2.1.1.Kullanılan Temel Terimler Ad-Hoc: Query Basit (bir kereliğine yazılan) sorgulara verilen addır. Sorgu olarak belli verilerin listelenmesi komutlarını örnek verebiliriz: SELECT * FROM MUSTERI gibi müĢteri tablosundaki bütün kayıtları listele komutu. Block (Küme): Oracle veritabanlarının depolanmasında kullanılan en küçük birime block (küme) denir. Bir blok 2 KB-16KB boyutları arasında büyüklüğe sahiptir. 2 Buffer (Ara Bellek): Verileri depolamak için kullanılan bellek miktarı. Bir ara bellek kullanılmıĢ (anlık) veriyi içerir. Birçok durumda, ara bellekler disk üzerindeki verilerin bellekteki kopyasıdır. Cache (Ön Bellek): Ön bellek, verilere hızlı eriĢim için kullanılan ara bellek alanlarıdır. Mantık olarak son eriĢilen bilgilerin durduğu ve aynı bilginin bir kere daha istendiğinde ana belleğe gitmeden ön bellekten alıdığı bir eriĢim mekanizmasıdır. Checkpoint: Bellekteki verilerin disk dosyalarına yazılması iĢlemi. Database (veritabanı): ĠliĢkili verilerin toplandığı veri kümesidir. Ana veri düzenleme sisteminde veritabanı temeldir. Data Dictionary: Tabloların oluĢturduğu bir veri sözlüğüdür. Veritabanı hakkında bilgi bu sözlükte yer alır. DBA (Database Administrator): Veritabanı yönetiminden sorumlu olan kiĢidir. Sistem yöneticisi ya da veritabanı yöneticisi de denir. Dynamic Performance Tables (Dinamik Performans Tabloları): BaĢlatılan kopyanın performansını saklamak için kullanılan dinamik tablolardır. Function (Fonksiyon): Belli bir iĢlemi yerine getirmek için kullanılan komut kümeleridir. Veritabanı programlamasında sunucu tarafında yazılan kodlar fonksiyon ve yordam olarak yazılır. Procedure (Yordam): Yapı ve anlam itibari ile fonksiyonlara benzerler fakat iĢlevleri ve etki alanları çok daha geniĢtir. Query (Sorgu): Bir veritabanı üzerinde çalıĢtırılan komut kümesidir. Örneğin SELECT deyimiyle baĢlayan komutlar. M. Schema (ġema) Bir veritabanı nesnelerinin Ģemasıdır (yani bir plandır). Transaction (ĠĢlem Bilgisi/Hareketi): Bir ya da birden çok SQL deyimi bir iĢlem bilgisi olarak tanımlanır. Transaction‟lar özel bir alanda depolanır ve verilerin bütünlüğünün sağlanması için kullanılır. Bir transaction içindeki iĢlemlerin tamamı (birkaç güncelleme komutu) yerine getirilir ve iĢlem onaylanır (commit). Aksi takdirde iĢlem geri çevrilir (roll back). Trigger (Tetikleyici): Yordam ve fonksiyonların otomatik olarak baĢlatılmasını sağlayan mekanizma ya da yordamın otomatik olarak çalıĢanıdır. Tetikleyiciler tipik 3 olarak, tablo üzerinde INSERT, UPDATE ya da DELETE deyimi iĢletildiğinde baĢlar. 2.1.2. Temel Veri Tipleri varchar2: 4000 taneye kadar karakter tutabilen veri tipidir. Microsoft SQL Server‟daki varchar veri tipi gibi düĢünülebilir. Eğer saklanacak verinin baĢında ya da sonunda boĢluk (space) karakteri varsa bunları silerek tutar. nvarchar2: 4000 taneye kadar Unicode karakter tutabilen veri tipidir. Microsoft SQL Server‟daki nvarchar veri tipi gibi düĢünülebilir. Eğer saklanacak verinin baĢında ya da sonunda boĢluk (space) karakteri varsa bunları silerek tutar. char: 2000 taneye kadar sabit uzunluklu karakter tutabilen veri tipidir. Microsoft SQL Server‟daki char veri tipi gibi düĢünülebilir. nchar: 2000 taneye kadar sabit uzunluklu Unicode karakter tutabilen veri tipidir. Microsoft SQL Server‟daki nchar veri tipi gibi düĢünülebilir. number: Her türlü sayısal verilerin tutulabileceği veri tipidir. Microsoft SQL Server‟daki int, float gibi veri tiplerine karĢılık olarak düĢünülebilir. Dikkat edilmesi gereken nokta Microsoft SQL Server‟daki decimal gibi tanımlanmasıdır. date: Saniye bazında tarih ve zaman verisi tutar. Geçerli tarih aralığı MÖ 1 Ocak 4712‟den MS 31 Aralık 9999‟a kadardır. Microsoft SQL Server‟daki smalldatetime veri tipi gibi düĢünülebilir. timestamp: date tipine çok benzeyen bir veri tipidir. date tipine göre daha detaylı zaman bilgisi tutar. Microsoft SQL Server‟daki datetime veri tipi gibi düĢünülebilir. clob (character large object): 4 GB‟a kadar karakter verisi tutar. varchar2‟nin büyütülmüĢ bir tipi olarak düĢünülebilir. Microsoft SQL Server 2005 ile birlikte gelen varchar(max) veri tipi gibi düĢünülebilir. blob (binary large object): clob‟a benzer bir veri tipi olmakla birlikte içinde tuttuğu veri tipi binary‟dir. Maksimum büyüklüğü 4 GB‟tır. Microsoft SQL Server‟daki text, image tiplerine benzerdir. 2.1.3. Oracle Kullanıcı Tanımları SYS: SYS kullanıcısı veri sözlüğünü oluĢturan tüm iç Oracle tablolarının sahibidir. SYS kullanıcısıyla hiçbir iĢlem yapılmaması için bu hesabın kilitlenmesi tercih 4 edilmelidir. SYS kullanıcısının sahibi olduğu nesnelerde de değiĢiklik yapılmamalıdır. SYS kullanıcının varsayılan Ģifresi change_on_install dir. SYSTEM: SYSTEM kullanıcısı birtakım yönetimsel tabloların ve view‟ların sahibidir. Yetkisiz kullanım ihtimaline karĢı kilitlenmesi ve kullanılmaması tercih edilmelidir. Bu kullanıcının varsayılan Ģifresi manager dir. SCOTT: Örnek tablolar içeren eğitim amaçlı hesaplar için kullanılan kullanıcı tipidir. Varsayılan Ģifresi tiger dir. SYSTEM kullanıcına benzer. DBSNMP: Veri tabanı hakkında performans istatistiklerini toplamak ve görüntülemek amacıyla Enterprise Manager tarafından kullanılan kullanıcıdır. SYSMAN: Enterprise Manager‟da SYS kullanıcısıyla aynı haklara sahiptir. 2.2. ORACLE VERĠTABANI YAPISI Oracle veritabanının, iĢletim sistemi tarafından bakıldığında, biri fiziksel diğeri mantıksal olmak üzere iki bölümü vardır [2]. Fiziksel bölüm, iĢletim sisteminden görünen kısımdır. Bunlar Data File(Veri Dosyası), Control File(Kontrol Dosyası) ve Log File(Log Dosyası) „dan oluĢmaktadır. Mantıksal Bölüm, bir ya da daha fazla tablo uzayı(Tablespace) ve tablolar(table), görüntüler(view), sıralar(sequence), eĢanlamlar(synonym), indeksler(index), kümeler(cluster), veritabanı bağlantıları (database link), prosedürler(procedure), fonksiyonlar(function), ve paketlerden(package) oluĢan Ģema nesnelerinden oluĢmaktadır. Fiziksel bölüm iĢletim sistemi tarafından görülebilmesine rağmen, mantıksal bölüm ancak Oracle‟a bağlanıp, SQL komutları çalıĢtırılarak görülebilmektedir. Yani, Oracle kurulu herhangi bir makinede, SQL bilgisi olmayan bir insan, Oracle‟ın sadece fiziksel bölümünü görebilmektedir. 2.2.1. Fiziksel Bölüm Fiziksel bölüm veritabanını oluĢturan iĢletim sistemi dosyalarıdır. Bir Oracle veritabanı fiziksel olarak bir ya da daha fazla veri dosyası, iki ya da daha fazla log dosyası, bir ya da daha fazla kontrol dosyasından oluĢur. 5 2.2.1.1. Veri Dosyaları(Data Files) Veri dosyaları veri tabanındaki tüm verileri tutan dosyalardır. Bir veri dosyası sadece bir veritabanına ait olabilir. Tablo, indeks gibi mantıksal veritabanı yapılarının içerisindeki veriler fiziksel olarak veri dosyalarında tutulurlar. Bir veri dosyası kendisi için ayrılan alan dolduğunda, kendi sahip olduğu alanı artırabilecek özelliklere sahiptir. Bir ya da daha fazla veri dosyası mantıksal bir veritabanı depolama ünitesi olan bir tablo uzayını oluĢturular. Normal veritabanı iĢlemleri boyunca bir veri dosyası içerisindeki veriler okunur ve Oracle için ayrılan belleğe getirilirler. Örneğin bir kullanıcının veritabanındaki bir tablonun verilerine eriĢmek istediğini varsayalım. Eğer istenilen veriler bellekte yer almıyorsa, ancak o zaman uygun veri dosyasından okunur ve belleğe getirilirler. DeğiĢikliğe uğrayan veriler ya da yeni eklenen veriler veri dosyalarına hemen yazılmazlar. Sabit diske eriĢimi azaltmak ve böylece sistemin performansını artırmak için veriler bellek havuzunda tutulur ve gerektiğinde hepsi birden uygun veri dosyalarına kaydedilirler. Bunu Oracle artalan iĢlemleri belirler. 2.2.1.2. Kontrol Dosyaları(Control Files) Tüm Oracle veritabanları kontrol dosyasına sahiptir. Bir kontrol dosyası veritabanı adı, veri dosyaları ve log dosyalarının adı ve diskteki yeri, veritabanının oluĢturulma tarihi vb. veritabanı ile ilgili bilgileri tutar. Her veritabanı oturumu açıldığında Oracle bu dosyayı kontrol ederek gerekli bilgileri alır. Eğer veritabanında fiziksel bir değiĢme olursa(yeni bir log dosyası ya da veri dosyası oluĢturulması gibi), yapılan değiĢiklikler Oracle tarafından otomatik olarak kontrol dosyalarına yansıtılır. 2.2.1.3. Log Dosyaları(Log Files) Redo Log dosyaları olarak bilinen bu dosyaların amacı veriler üzerinde yapılan tüm değiĢiklikleri kaydetmektir. Eğer veri dosyalarına kalıcı olarak kaydedilmiĢ olan, değiĢikliğe uğramıĢ kayıtlarda bir bozukluk olursa yapılan değiĢiklikler redo log dosyalarından sağlanabilir ve iĢlemler kaybolmaz. Birden fazla tekrarlanan bozukluk durumlarında redo log dosyalarının da bozulmasını engellemek için Oracle farklı diskler üzerinde redo log dosyalarının birden fazla kopyasının alınmasına olanak 6 sağlar. Bir veritabanı iĢlemi sırasında elektrik kesilirse, bellekteki veriler veri dosyalarına kaydedilmeyecek ve verilerin kaybolması durumuyla karĢılaĢılacaktır. Oracle veritabanı tekrar açıldığında redo log dosyalarında yapılan son değiĢiklikler veri dosyalarına yansıtılarak verilerin kaybolması engellenir. 2.2.2. Mantıksal Bölüm Oracle veritabanı, tablo uzayları olarak bilinen bir veya birden fazla mantıksal depolama birimlerine bölünmüĢtür. Tablo uzayları‟da dilimler olarak bilinen mantıksal depolama birimlerine bölünmüĢtür. Uzanımlar ise Oracle sisteminde e küçük veri birimi olan Veri Blok‟larından oluĢmuĢtur [3]. 2.2.2.1.Veri Blokları (data blocks) Oracle verileri, Veri Blokları‟nda saklar. Veri Blokları‟na mantıksal bloklar, Oracle blokları veya sayfaları da denilmektedir. Bu blokların uzunluğu her yeni veritabanı oluĢrulduğunda belirlenir. 2.2.2.2.Uzanımlar (extends) Belirli sayıda veri bloklarından meydana gelen mantıksal veritabanı depolama birimidir. Bir veya birden fazla Uzanım bir araya gelerek Dilimler‟i oluĢturur. Dilimlerdeki boĢ alanlar tamamen dolduğu zaman, Oracle Dilimler için yeni Uzanım‟lar tahsis eder. 2.2.2.3. Dilimler (segments) Bir veya birden fazla Uzanım‟dan meydana gelen diğer bir mantıksal depolama birimi ise Dilimler‟dir. Oracle tablolardaki verileri sakladığı dilimler haricinde bir kaç farklı Dilim yapısı daha kullanmaktadır. Bunlardan indekslere ait olan veriler için Ġndeks Dilimleri, SQL komutları iĢletilirken duyulan ihtiyaçlar için Geçici Dilimler kullanılmaktadır. 7 2.3. VERĠ TANIMLAMA DĠLĠ KOMUTLARI Veri Tanımlama Dili Komutları SQL‟de veritabanı nesnelerini oluĢturma, silme, yapısını değiĢtirme iĢlemleri için kullanılan komutlara veri tanımlama dili komutları denir. Bu komutlar “create”, “alter”, “drop”, “grant”, “revoke”, “analyze”, “audit”, “comment” komutlarıdır [4]. 2.3.1. Veri Sözlüğü Veri sözlüğü, Oracle veritabanı ile ilgili bilgilerin yine Oracle veritabanında tablolar ve görüntüler halinde saklanmasıyla oluĢur. Veritabanı ile ilgili bu bilgiler kullanıcılar, haklar, veritabanı nesneleri, tablo kısıtlamaları vb. bilgilerinden oluĢur. Veri sözlüğü Oracle veritabanın en önemli bölümüdür. Veritabanı hakkındaki tüm bilgiler veri sözlüğünden SQL komutları yazarak öğrenilebilir. Veri sözlüğü, veritabanı kurulurken standart olarak oluĢturulur ve yapılan değiĢiklikler otomatik olarak veri sözlüğüne yansıtılır. Örneğin bir kullanıcı bir tabloya bir alan eklerse, veri sözlüğünde o tabloya iliĢkin yapı kullanıcı farketmeden değiĢtirilir böylece veri sözlüğünden veritabanı hakkında sürekli olarak güncel ve sağlıklı bilgi almak mümkün olur. Veri sözlüğü içerisindeki bilgiler SQL komutlarıyla sorgulanıp görülebilir. Fakat hiçbir kullanıcı veri sözlüğünü değiĢtiremez, ekleme yapamaz ve kayıt silemez. Veritabanı oluĢturulurken oluĢturulan veri sözlüğü tabloları SYS adlı kullanıcıya aittir. Veri sözlüğü tabloları için görüntüler oluĢturulmuĢtur. Tüm kullanıcılar hakları olduğu müddetçe bu görüntülerden bir ya da birkaçını sorgulayabilirler. Veri sözlüğü görüntüleri, baĢlarındaki ön eklerine göre üç gruba ayrılır: USER_xxx : Veritabanına o an bağlı olan kullanıcının sahip olduğu nesneler ile ilgili görüntülerdir. ALL_xxx : Veritabanına o an bağlı olan kullanıcının sahip olduğu ve baĢkalarına ait olan ve kendisine kullanma hakkı verilmiĢ olan tüm nesnelerle ilgili görüntülerdir. DBA_xxx : DBA(veritabanı yöneticisi) veya kullanıcıların görebileceği görüntülerdir. 8 DBA hakkına sahip ÇĠZELGE 2.1. Veri Sözcüğü görüntüleri Görüntü Ġsimleri USER_TABLES Açıklama Kullanıların sahip olduğu tabloların yapısını gösteren görüntüdür. USER_SEQUENCES Kullanıcılar sahip olduğu sıralar hakkında bilgi içeren görüntüdür. USER_VĠEWS Kullanıcılar sahip olduğu görüntüler hakkında bilgi içeren görüntüdür. ALL_OBJECTS Kullanıcının eriĢebileceği bütün nesneler hakkında bilgi içeren görüntüdür. Veritabanındaki bütün kullanıcılar hakkında bilgi içeren DBA_USERS görüntüdür. DBA_TABLESPACE Veritabanındaki bütün tablo uzayları hakkında bilgi içeren görüntüdür. SCOTT kullanıcısının bütün nesnelerini görmesi SELECT * FROM USER_OBJECTS Bir kullanıcın kendine ait bütün tabloların adlarını listelemesi SELECT TABLE_NAME FROM USER_TABLES Bir kullanıcının tüm indeks bilgilerini listelemesi SELECT INDEX_NAME,TABLE_NAME,TABLESPACE_NAME ALL_INDEXES 2.3.2. Veritabanı Nesneleriyle Ġlgili Komutlar 2.3.2.1. Create Table Tablo oluĢturma komutunu bir örnekle anlatılırsa. CREATE table tbl_ogr (OgrNum NUMBER(11) NOT NULL, Ad VARCHAR2(15), Soyad VARCHAR2(15), Dogyer NUMBER(2), 9 FROM CONSTRAINT cst_OgrNum PRIMARY KEY(OgrNum) CONSTRAINT cst_dogyer FOREING key(dogyer) REFERENCES il(ilkod)) Bu komut “tbl_ogr” adında bir tablo oluĢturuyor. Tablonun dört alanı var. Bunlardan biri özel anahtar(Primary Key) olarak tanımlanmıĢ. Bu alanın değeri boĢ olamaz ve tabloda aynı iki değer bulunamaz. Bir tablo ile baĢka bir tablo arasında iliĢki kurulacaksa bu ana tabloda PRIMARY KEY tanımıyla, diğer tabloda FOREIGN KEY tanımıyla yapılır. Yani doğum yeri alanı için buradaki tablomuz ana tablo değil. Çünkü aynı yerde doğmuĢ kiĢilerin kaydı tablomuzda olabilir. Böylece aynı il kodu birden fazla kayıtta yer alabilir. ĠliĢki kurulan diğer tablonun adını yukarıdan çıkarabiliriz. Bu tablo “il” isminde. Her il bu tabloda kayıtlı ve her birinin bir kodu var. Bu tabloda bir ilin kaydı iki sütunda yer alamaz. Bu yüzden “ilkodu” alanı “il” tablosu için PRIMARY KEY olarak tanımlanmıĢ. PRIMARY KEY, NOT NULL gibi bildirimler kısıtlamalar olarak tanımlanır. Bir tabloda farklı Ģekilde kısıtlamalar yapılabilir. Kısıtlama için kullanılan bildirimler 5 adettir. NOT NULL : Bu kısıtlamanın konulduğu bir alanın mutlaka bir değeri olmak zorundadır. UNIQUE : Bu kısıtlamanın konulduğu bir alan bir değerden sadece bir adet içerebilir. Bu kısıtlamaya sahip alan NOT NULL ile tanımlanmadıysa NULL değer alabilir. PRIMARY : Bu kısıtlama bu alanın özel anahtar olmasını sağlar. Bu alan boĢ geçilemez ve yine tablo içerisinde bir değer iki kayıtta bulunamaz. FOREIGN KEY : Bu kısıtlama baĢka bir tablonun PRIMARY KEY olan alanıyla iliĢki kurmak için gerekir. CHECK : Bu kısıtlama ile birlikte bir Ģart kullanılır. Tabloya kayıt girilirken değerlerin bu Ģarta uyması beklenir. 2.3.2.2. Alter Table Daha önceden oluĢturulmuĢ bir tablonun yapısını değiĢtirmek için ALTER TABLE komutu kullanılır. 10 ALTER TABLE tablo_adı ADD | MODIFY | DROP (<sütun ismi> veri tipi <sütun kısıtlaması>) ENABLE ifade1 DISABLE ifade2 ALTER komutuyla tablolara yeni bir alan ve kısıtlama eklenebilir, var olan alan ve kısıtlamaların durumu değiĢtirilebilir veya tablodan ksıtlamalar düĢürülebilir. Fakat ALTER komutuyla var olan sütunlar düĢürülemez. Bir alanın değeri büyültülebilir, fakat küçültülemez. ALTER TABLE tbl_ogr ADD CONSTRAINT cst_Bolum FOREIGN KEY(Bolum) REFERENCES usr_gazi.tbl_bol(BolKod); Yukarıdaki örnekte tbl_ogr adlı tablonun yapısı değiĢtiriliyor. Bir baĢka kullanıcının bir tablosu ile iliĢki kuruluyor. ALTER TABLE tbl_ders MODIFY dersad varchar2(40); Bu örnekte de tbl_ders tablosunun bir alanının uzunluğu değiĢtiriliyor. 2.3.2.3. Drop Table Daha önceden oluĢturulmuĢ bir tablonun düĢürülmesi için kullanılan komuttur. Kullanımı: DROP TABLE <tablo_ismi> [CASCADE CONSTRAINTS] KöĢeli parantez içerisindeki tanım kullanılırsa master-detay iliĢkili tablolarda master tablo düĢürülünce detay tabloların da otomatik olarak düĢürülmesi sağlanır. Eğer bu seçenek kullanılmazsa diğer tablolarla iliĢkisi bulunan bir tablo silinemez. Ancak bu iliĢkiler kaldırıldıktan sonra tablo silinebilir. DROP TABLE tbl_ogr CASCADE CONSTRAINT 2.3.2.4. Create View Görüntü oluĢturmak için bir SELECT cümlesi kullanmak gerekir. Bir görüntü bir ya da daha fazla tablodan oluĢturulabileceği gibi, bir baĢka görüntüden de 11 oluĢturulabilir.AĢağıdaki örnekte üç farklı kullanıcnın aynı yapıdaki tabloları birleĢtirilip bir görüntü oluĢturuluyor. CREATE VIEW vi_ogr AS SELECT * from usr_esef.tbl_ogr UNION ALL SELECT * FROM usr_tef.tbl_ogr UNION ALL SELECT * FROM usr_gef.tbl_ogr; 2.3.2.5. Create Tablespace Tablo uzayı kullanıcılara ait olan nesnelerin veritabanında mantıksal olarak tutulduğu yere denmektedir. Bir tablo uzayı oluĢtururken, bu tablo uzayının verilerinin hangi veri dosyasına konulacağı ve bu dosyanın dizini ile büyüklüğü bildirilmelidir. CREATE TABLESPACE tbs_esef DATAFILE 'c:\orasql\tbs_esef.dat' SIZE 10M DEFAULT STORAGE (INITIAL 10K NEXT 50K MINEXTENTS 1 MAXEXTENTS 999) ONLINE; SIZE bildirisi veri dosyasının diskte kaplayacağı yeri belirler. Burada 10M, 5K gibi değerler girilebilir. INITIAL bildirisi tablo uzayı oluĢturulduğunda, ilk alacağı geniĢleme‟nin büyüklüğünü belirler. Next tablo uzayı oluĢturulduktan sonra alacağı geniĢlemelerin büyüklüğünü belirler. MINEXTENTS tablo uzayı oluĢturulduğunda ilk olarak alacağı minimum geniĢleme sayısının belirtildiği bölümdür. MAXEXTENTS bir tablo uzayının ilk olarak aldığı geniĢleme de dahil olmak üzere alabileceği maksimum geniĢleme sayısının belirtildiği bölümdür. 2.3.2.6. Create User Kullanıcı veritabanı nesnelerinin sahibidir. Kullanıcılar, nesneleri oluĢturur, kullanır ve silerler. Oracle veritabanı ilk kurulduğunda standart olarak üç kullanıcı tanımlanır. Bunlardan bir SYS kullanıcısıdır. SYS kullanıcısı veri sözlüğünün sahibi olan kullanıcıdır. Tüm nesneleri oluĢturma hakkına sahiptir ve diğer bütün kullanıcların nesnelerine eriĢebilir. SYS kullanıcısının ilk Ģifresi “change_on_install” olarak 12 belirlenmiĢtir. Ġkinci kullanıcı SYSTEM kullanıcısıdır. SYSTEM kullanıcısı veri sözlüğünü kullanma hakkına sahiptir. Önemli nesneleri oluĢturma hakkına da sahiptir. Ġlk Ģifresi “manager” olarak belirlenmiĢtir. Diğer kullanıcıların nesnelerine eriĢme hakkına da sahiptir. Üçüncü kullanıcı SCOTT kullanıcısıdır. SCOTT kullanıcısı veritabanına baĢlangıçta yüklenen demo tabloların sahibidir. Bu kullanıcının nesneleri kullanılarak SQL denemeleri yapılabilir [7]. “CREATE USER” komutunu SYS ve SYSTEM kullanıcıları standart olarak kullanabilir. Bu hak diğer kullanıcılara da verilebilir. Her kullanıcının nesnelerini tutmak için bir tablo uzayı oluĢturmak sistemin performansı açısından gereklidir. Kullanıcı oluĢturulurken bu tablo uzayı o kullanıcıya atanır. CREATE USER usr_esef IDENTIFIED BY esef DEFAULT TABLESPACE tbs_esef QUOTA UNLIMITED ON tbs_esef Yukarıdaki örnekte usr_esef adında bir kullanıcı oluĢturuluyor. Kullanıcının Ģifresi IDENTIFIED BY ile “esef” olarak bildiriliyor. Kullanıcının kendi nesnelerini oluĢturacağı tablo uzayı için ise “tbs_esef” tablo uzayı bildiriliyor. Kullanıcının bu tablo uzayındaki tüm alanı kullanabileceği QUOTA UNLIMITED ile belirleniyor. 2.3.2.7. Create Rol Rol veritabanındaki hakların toplanmıĢ haline denir. Veritabanı yöneticisi rolleri kullanarak sistemin güvenliğini daha kolay sağlayabilir. Roller Oracle tarafından önceden tanımlanmıĢ roller ve kullanıcı tanımlı roller olarak iki Ģekilde düĢünülebilir. Oracle tarafından önceden tanımlanan roller beĢ tanedir: ÇĠZELGE 2.2. Oracle Tarafından TanımlanmıĢ Roller AtanmıĢ Haklar Rol CONNECT RESOURCE DBA ALTER SESSION, CREATE CLUSTER, CREATE DATABASE LINK, CREATE SEQUENCE, CREATE SESION, CREATE SYNONYM, CREATE TABLE, CREATE VIEW CREATE CLUSTER, CREATE PROCEDURE, CREATE SEQUENCE, CREATE TABLE, CREATE TRIGGER “WITH ADMIN OPTION” ile birlikte bütün sistem hakları 13 ÇĠZELGE 2.2. (Devam) Oracle Tarafından TanımlanmıĢ Roller AtanmıĢ Haklar Rol EXP_FULL_DATABASE SELECT ANY TABLE, BACKUP ANY TABLE, SYS.INCVID, SYS.INCFIL ve SYS.INCEXP tablolarına INSERT, UPDATE veDELETE hakkı IMP_FULL_DATABASE BECOME USER, WRITEDOWN CREATE ROLE tabloma_bak GRANT SELECT ON tbl_ogr TO tabloma_bak Yukarıdaki örnekte tabloma_bak adında bir rol oluĢturuluyor. Daha sonra bu role tbl_ogr tablosu üzerinde listeleme iĢlemi yapma hakkı veriliyor. Böylece bu rolün atandığı kullanıcı tbl_ogr tablosu üzerinde “SELECT” komutunu çalıĢtırabilecek. 2.3.2.8. Create Index Ġndeks tablodaki kayıtlara daha hızlı eriĢim için kullanılan nesnelerdir. Bir indeks oluĢturabilmek için “CREATE ANY INDEX” sistem hakkına sahip olmak gerekir. Ġndeks bir tablonun bir alanı üzerinde tanımlanabileceği gibi birden fazla alan üzerinde de tanımlanabilir. CREATE INDEX indeks1 ON tbl_ogr(ogrnum,ad) 2.3.2.9. Create Sequnce Sıra, sıralı olarak artan alanlar için veritabanında tutulan nesnedir. Örneğin birden baĢlayan ve birer birer artan bir sıra yaratmak için: CREATE SEQUENCE sira1 START WITH 1 INCREMENT BY 1 2.3.2.10. Create Rollback Segment Geri alma parçaları SELECT, INSERT, DELETE, UPDATE gibi komutlarla yapılan iĢlemlerin gerektiğinde geri alınabilmesi için veritabanında ayrılan alanlara denir. “tbsp_esef” tablo uzayını kullanan, kayıt parametrelerinden ilk parçanın büyüklüğü 10M, sonraki geniĢlemelerin büyüklüğü 1M, minimum geniĢleme sayısı 2, 14 maksimum geniĢleme sayısı 121 ve ortalama değeri 30M olan ve ismi “rol_seg” olan bir geri alma parçası Ģöyle oluĢturulabilir [5]: CREATE ROLLBACK SEGMENT rol_seg TABLESPCE “tbsp_esef” STORAGE( INITIAL 10M NEXT 1M MINEXTENTS 2 MAXEXTENTS 121 OPTIMAL 30M) 2.3.2.11. Grant Sistem ya da nesne haklarının kullanıcılara veya rollere atanması için kullanılan komuttur. GRANT DELETE ON tbl_ogr TO usr_gef Yukarıdaki örnekte usr_gef kullanıcısına tbl_ogr tablosunda silme yapma yetkisi verilir. 2.3.2.12. Revoke Sistem ya da nesne haklarının kullanıcılardan veya rollerden geri alınnması için kullanılan komuttur. REVOKE DELETE ON tbl_ogr FROM usr_gef Yukarıdaki örnekte usr_gef kullanıcısından tbl_ogr tablosunda silme yapma yetkisi geri alınır. 2.4. YEDEK ALMA VE GERĠ GETĠRME Oracle, verileri her ne kadar güvenli tutsa da, fiziksel sebeplerden(disk hataları), kullanıcı hatalarından veya benzer durumlardan dolayı yedeklere ihtiyaç duyulmaktadır. Yedek alma, veritabanı yöneticisinin yapacağı önemli iĢlerden birisidir. Oracle‟da, yedek almayla ilgili değiĢik yöntemler vardır. Veritabanı yöneticisi, kendi veritabanının durumuna göre, yedek almayla ilgili bir veya birden fazla yöntemi 15 kullanmaya karar vermelidir. Bu kararı vermede, yönetici, yedeği kimin alacağı, hangi tür depolama ünitesine alınacağı, ne kadar sıklıkla alınacağı, alınan yedeklerin büyüklüğü, veritabanında küçük de olsa bir kayıba tahammül olup olmadığı gibi çok değiĢik sebepleri gözönünde bulundurmak zorundadır [8]. 2.4.1. Fiziksel Yedek Alma Fiziksel yedek alma veri dosyalarının, redo log dosyalarının ve kontrol dosyalarının yedeklerinin alınması iĢlemidir. Bir veritabanı ARCHIVELOG ve NOARCHIVELOG olmak üzere iki farklı modda çalıĢabilir. ARCHIVELOG modunda yapılan tüm iĢlemler redo log dosyalarına otomatik olarak kaydedilir. Bunun anlamı veritabanındaki değiĢikliklerin sürekli dosyalara kaydedilmesidir. Kaydedilen bu dosyaların hangileri olduğu ve nerede bulundukları gibi bilgiler init<SID>.ora dosyası içerisinde yer alır. ARCHIVELOG modda çalıĢan bir veritabanında veri kaybı söz konusu değildir. Eğer veritabanı NOARCHIVELOG modda çalıĢıyorsa yapılan değiĢiklikler bir yere kaydedilmeyecektir. Bu yüzden sistemin bozulması durumunda ancak son alınan yedekler geri getirilebilir. Yani son alınan yedekten sonra yapılan değiĢiklikler kaybolur. ĠĢletim sistemi yedeği alma olarak ta bilinen fiziksel yedek alma iĢleminin dezavantajı, yedek alma iĢlemi boyunca veritabanının kapatılması gereğidir. 2.4.2. Mantıksal Yedek Alma Oracle‟da mantıksal yedek alma denince Export ve Import anlaĢılır. Bunlar Oracle firmasının geliĢtirdiği komut modunda çalıĢan yardımcı programlardır. Bu tür yedek alma veritabanı nesnelerinin yedeklenmesi olduğu için mantıksal yedek olarak adlandırılır. Yani export ile log dosyalarının ya da kontrol dosyalarının yedeği alınmaz. Mantıksal yedek almanın avantajları sunlardır: Tarihlere göre yedek almak daha kolaydır. Günlük dıĢarı veri aktarımları (export) VT‟nın durumunu ve geliĢmesini günlük olarak takip etmede en kolay yöntemdir. 16 VT‟nın yapısının verileri olmaksızın yedeği alınabilmektedir. Bu imkânla, herhangi bir uygulamaya ait tablo, indis, kısıtlama ve sıra gibi nesneler baĢka bir ortama kolayca alınabilir. Veri tabanları arasında veri kopyalama iĢlemi için kullanılabilmektedir. Oracle‟ın değiĢik sürümleri arasında veri taĢımak için kullanılabilmektedir [5]. 2.4.2.1.Export Export Oracle‟ın mantıksal yedek alma iĢlemleri için geliĢtirdiği bir üründür. Mantıksal yedek alma veritabanının kapatılmaması gerektiği zaman kullanılan bir yedek alma türüdür. Bu yöntemle farklı modlarda yedek alınabilir. Export ile alınan yedekler ancak Import ile geri yüklenebilir. Export kullanılarak bir veritabanının yapısı veriler olmadan yedeklenebilir, belli tablolar verilerle birlikte ya da sadece yapıları ile yedeklenebilir, yani yedeklenecek veritabanı nesnelerinin seçimi yapılabilir. Export almada 4 mod vardır: Birincisi Tablo Modu(Table Mode)‟dur. Bu modda kullanıcılar kendi tablolarının yedeklerini alabilirler ya da hakkı olan kullanıcı bir baĢka kullanıcnın tablolarının yedeklerini alabilir. Ġkincisi Kullanıcı Modu(User Mode)‟dur. Bu modda bir kullanıcının nesnelerinin yedeği alınabilir. Üçüncüsü Tam Veritabanı Modu‟dur(Full Database Mode). Bu modda tüm veri tabanının yedeği alınabilir. Bu modu gerçekleĢtirmek için kullanıcının bazı özel haklara sahip olması gerekir. EXP_FULL_DATABASE rolüne sahip olan kullanıcı ya da DBA rolüne sahip olan kullanıcılar bu modu kullanabilir. Dördüncüsü Tablo Uzayı Modu‟dur. Bu modda da tablo uzaylarının yedeği alınır [9]. 2.4.2.2. Import Export ile yedeklenen veriler Import yardımcı programıyla geri getirilebilir. YedeklenmiĢ dosyanın tamamı ya da bir kısmı yedekleyen kullanıcı için geri getirilebildiği gibi bir baĢka kullanıcıya da aktarılabilir. 17 3. VERĠTABANI MODELLERĠ VE TASARIMI 3.1. VERĠTABANI MODELLERĠ Veri tanımı için kullanılan kavramsal düzeydeki yapıya veri modeli denir. Veritabanı oluĢturulmadan önce bu veritabanına ait veriler, veriler arasındaki iliĢkiler, veri kısıtlamaları gibi konular kavramsal düzeyde herhangi bir veri modelinde hazırlanır. Veri modeli bu kavramsal yapıları bazı notasyonlar kullanarak diagramlar üzerinde gösterir. Bu iĢlemler bir veritabanı tasarımının ilk adımıdır ve bu iĢlemler için kullanılan bir çok veri modeli vardır. Bu veri modelleri [3]; Ağ Modeli HiyerarĢik Model Nesne Yönelimli Model E-R Modeli ĠliĢkisel Model 3.1.1. Ağ Veritabanı Modeli Ağ (Network) veritabanı modeli, karmaĢık veri iliĢkilerini hiyerarĢik modelin yapabildiğinden daha etkin bir Ģekilde gösterebilmek, veritabanı performansını arttırmak ve bir veritabanı standardı koymak için geliĢtirilmiĢtir. Birçok açıdan ağ modeli hiyerarĢik modele benzemektedir. Örnek olarak hiyerarĢik modelde olduğu gibi kullanıcı ağ veritabanı modelini 1:M iliĢkilerine sahip kayıtlar topluluğu olarak algılar. Ancak, hiyerarĢik modelin tersine ağ modeli bir kayıtın birden fazla ebeveyni olmasına izin verir. Bu yüzden Ģekilde gösterilen iliĢkiler ağ veritabanı modeli ile kolaylıkla kullanılabilir [10]. 18 ġEKĠL 3.1. Ağ Modeli Örneği Ağ veritabanı terminolojisi kullanılırken bir iliĢki küme (set) olarak adlandırılır. Her küme en az iki kayıt tipinden oluĢur: hiyerarĢik modelde ebeveyne karĢılık olabilecek bir sahip (ovmer) kayıt ve hiyerarĢik modelde çocuğa (child) karĢılık olan bir üye (member) kayıt. HiyerarĢik model ile ağ modeli arasındaki fark ise bir üye kaydın birden fazla kümede görülebilmesidir. Diğer bir deyiĢle bir üyenin birden fazla sahibi olabilir. 3.1.2. HiyerarĢik Veritabanı Modeli HiyerarĢik veritabanı modelinin var olan veritabanı pazarında çok önemli bir rolü olmamasına rağmen aĢağıdaki nedenlerle bu modelin bazı karakteristikleri anlaĢılmalıdır. Bu modelin temel kavramları sonraki veritabanı geliĢtirilme sürecinin temellerini oluĢturur. Modelin sınırlılıkları veritabanı tasarımına farklı bakıĢ açısına yol açar. HiyerarĢik modelin bazı temel kavramları günümüzdeki veritabanı modellerinde görülmektedir. HiyerarĢi içerisinde en üst seviye (kök) kendisinin altındaki segmentin ebeveyni olarak görülür. Örnek olarak Ģekilde kök segmenti birinci seviye segmentlerin ebeveynidir. Birinci seviye segmentler ise ikinci seviye segmentlerin ebeveynidir ve bu yapı bu Ģekilde devam eder. HiyerarĢik veritabanı modeli iki tip iliĢkiye izin verir, bire-bir (1:1) iliĢki ve bire-çok (1:M) iliĢki. HiyerarĢik modelde 1:M iliĢkileri kolaylıkla izlemek mümkündür, ancak bu veritabanı modeline M:M iliĢkileri uyarlamak zordur. Ancak gerçek yaĢamda karĢılaĢılabilecek bu tür yapılar çoklu ebeveynli çocuk (child with multiple parents) iliĢki yapısı ile gösterilmektedir. 19 ġEKĠL 3.2. HiyerarĢik Veri Modeli Örneği 3.1.3. Nesne Yönelimli Veritabanı Modeli Günümüzde birçok sistem geliĢtirici nesne temelli veritabanı tasarımını, nesne temelli analiz sürecinin doğal bir uzantısı olarak kullanmaktadırlar. Bazı BT profesyonelleri nesne temelli veritabanlarının daha güçlü bir etkisinin olacağına ve sonuç olarak da iliĢkisel yaklaĢımın yerini alacağına inanmaktadırlar [10]. Nesne temelli veritabanı modeli varlıkların tanımlanması ve kullanılmasında çok farklı bir yolu yansıtmaktadır. ĠliĢkisel veritabanı modelindeki varlık gibi, bir nesne kendisinin olgulara dayanan içeriği ile tanımlanır. Fakat varlıktan farklı olarak, bir nesne, diğer nesnelerle olan iliĢkilerine ait bilgilerle birlikte, nesnenin kendi içinde yer alan olgular arasındaki iliĢkiler hakkında da bilgiler içerir. Bu yüzden nesne içerisindeki olgular daha büyük anlama sahiptir. Bir nesne temelli veri modeli en azından aĢağıdaki bileĢenlere sahip olmalıdır: Veri modelinin nesneleri gerçek yaĢam varlıkları veya olaylarının çıkarımları olmalıdır. Özellikler bir nesnenin niteliklerini tanımlamalıdır. Örnek olarak ÖĞRENCĠ nesnesi AD, SOYAD, ÖĞRENCĠ_NO ve ANABĠLĠMDALI gibi özellikleri içermelidir. 20 Benzer karakteristikleri paylaĢan nesneler sınıflar (class) içerisinde gruplandırılmalıdır. Bir sınıf, paylaĢılan yapı (özellikler) ve davranıĢları (metodlar) olan benzer nesneler topluluğudur. Genel bir bakıĢla sınıf, varlıkiliĢki modelinin varlık setine benzemektedir. Ancak bir sınıf içerdiği iĢlemler kümesi ( metodlar) ile bir varlık setinden farklılık göstermektedir. Sınıflar bir sınıf hiyerarĢisi içerisinde organize edilmiĢtir. Sınıf hiyerarĢisi her sınıfın sadece bir ebeveyninin olabileceği baĢ aĢağı bir ağaç yapısına benzer. Örnek olarak bir MÜġTERĠ sınıfı ile bir ÇALIġAN sınıfı ebeveyn KĠġĠ sınıfını paylaĢır. Bu açıdan hiyerarĢik veritabanı modeli ile benzerlik gösterdiği söylenebilir. Bir nesne sınıf hiyerarĢisi içerisinde kendisinin üstündeki sınıfların özelliklerini ve davranıĢlarım miras olarak alabilme yeteneğine sahiptir. Örnek olarak KĠġĠ sınıfının altında yaratılacak MÜġTERĠ ve ÇALIġAN sınıfları KĠġĠ sınıfının bütün özellik ve davranıĢlarını alacaktır. 3.1.4. E-R Modeli Varlık-iliĢki modeli, ya da kısaca E-R modeli (Entity-Relationship model) 1976 yılında P.P. Chen tarafından geliĢtirilen bir modeldir. E-R Modeli bir veritabanını, temel nesneler ve bu nesneler arasındaki iliĢkiler cinsinden ifade eder. Bu model bize veritabanımızın tablolarını, tablolarda kullanılan alanları ve tablolar arasındaki iliĢkiyi verir. Tüm bunlar bir VTYS‟den bağımsız olarak kavramsal düzeyde yapılır. Daha sonra bu kavramsal yapı, kullanılacak VTYS‟nin veri modeline uygun veritabanı Ģemalarına dönüĢtürülür [3]. E-R Model diyagramları tasarlanırken kullanılan temel kavramlar Ģunlardır. Varlık (Entity): Diğer nesnelerden ayırt edilebilen tekil (unique) mini-dünya nesnesidir. Özellik (Attribute): Veritabanındaki varlıklar özellikler kümesiyle (attribute set) tanımlanır. Her bir varlığın, özellikleri için aldığı bir değer vardır. Veri Kümesi (Domain): Bir özelliğin alabileceği değerler. Veri Türü (Data Type): Bir özelliğin içerebileceği verinin hangi türden olacağını belirler. 21 Güçlü Varlık (Strong Entity): Herhangi diğer varlık türlerinden bağımsız mevcut olabilen varlık türü. Zayıf Varlık (Weak Entity): Tekil olarak belirlenebilmesi, baĢka bir varlığın (owner) birincil anahtar özelliğine bağlı olan varlık. o Zayıf varlığın anahtar özelliği yoktur. o Zayıf varlık, kendisini belirleyen (owner) varlık ile belirleyici bir iliĢki içinde olmalıdır. TüretilmiĢ Özellik (Derived Attribute): Bir varlığa ait özellikler kullanılarak yeni bir özellik türetilebilir. Çok değerli özellik (Multi-valued attribute): Birden fazla değer ile eĢleĢebilen özellik. BirleĢik Özellik (Composite Attribute): Birden fazla özelliğin birleĢmesiyle oluĢan özellik. Aday Anahtar (Candidate Key): Varlık kümesinde yer alan her varlığı kesin olarak tanımlamaya yarayan özelliklere aday anahtar adı verilir. PERSONEL varlık türünde SĠCĠLNO ve TC_KĠMLĠK_NO özellikleri aday anahtar olabilir. Fakat PERSONEL_ADI özelliği olamaz, çünkü aynı ada sahip birden fazla personel olabilir. BirleĢik (Composite) Anahtar: Ġki veya daha fazla özellikten oluĢan aday anahtar. ALINAN_UNVANLAR varlık türünde SĠCĠLNO ve ÜNVAN alanları birleĢik anahtar olabilir. Birincil Anahtar (Primary Key): Aday anahtarlar arasından seçilmiĢ anahtar. Bu anahtar sadece bir özellikten oluĢabileceği gibi birden fazla özelliğin birleĢiminden de oluĢabilir. PERSONEL varlık türünde SĠCĠLNO veya TC_KĠMLĠK_NO özellikleri birincil anahtar olarak seçilebilir. Yabancı anahtar (Foreign Key): Bir varlık türünün, baĢka bir varlık türünün anahtarı ile eĢleĢen özellik veya özellikler kümesi. Rol: Aralarında iliĢki kurulan varlıklardan her birinin iliĢkideki iĢlevine varlığın rolü denir. Farklı varlık kümeleri arasındaki iliĢkilerde roller dolaylı yoldan anlaĢılabildiği için çoğunlukla açıkça belirtilmez. Örneğin, öğrenci ve ders arasında kurulan “aldığı” iliĢkisinde varlıkların rolleri bellidir: öğrenci dersi alan, ders ise öğrenci tarafından alınandır. Oysa kiĢi1 ve kiĢi2 arasında kurulan evlilik iliĢkisinde 22 kiĢilerden hangisinin erkek hangisinin kadın olduğunun belirtilmesi gerekebilir (bazı isimler hem erkek hem kadınlar tarafından kullanıldığı için). Benzer biçimde bir kurumda çalıĢan personel1 ve personel2 arasında kurulan yönetici iliĢkisinde hangi personelin rolünün yönetici (üst), hangi personelin rolünün ise yönetilen (ast) olduğunun belirtilmesine gerek vardır. ĠliĢki: Ġki veya daha fazla varlık arasındaki belli bir anlamı olan bağlantı. (Örnek; 980500752 numaralı ÖĞRENCĠ 05 kodlu MATEMATĠK bölümüne KAYITLI‟dır) Aynı varlıklar arasında farklı iliĢkiler olabilir. (Örnek; ÖĞRETĠM ÜYESĠ Erdoğan Doğdu, Bilgisayar BÖLÜMÜ‟nü YÖNETĠR veya ÖĞRETĠM ÜYESĠ Fatih Demirci, Bilgisayar BÖLÜMÜ‟nde ÇALIġIR). Aynı türden iliĢkiler, aynı iliĢki türü (Relationship Type) adı altında gruplandırılır. Bunlar iliĢki kümesini oluĢtururlar. iliĢki Derecesi: iliĢkiye katılan varlıkların sayısı. (Örnek; YÖNETĠR ve ÇALIġIR iliĢkileri 2-li iliĢkidir.) ĠliĢki Kümesi: Benzer iliĢkiler kümesi. E1, .., En varlık kümesi arasında n-li R iliĢkisi bulunabilir. (E1ve E2varlık kümeleri arasında 2-li iliĢki kümesi) Yinelenen (Recursive) iliĢki: Aynı varlığın farklı rollerle katıldığı iliĢki. PERSONEL varlığı üzerinde tanımlı YÖNETĠCĠ iliĢkisi. iliĢkiye Has Özellikler : Bir iliĢkinin kendine has özellikleri olabilir. (Örn: PERSONEL ve PROJE varlıkları arasında tanımlanan ÇALIġMA iliĢkisi için HAFTALIK_SAAT adında özellik olabilir. ĠliĢki Türleri: A ve B varlık kümeleri arasında tanımlanan (A ve B varlık kümeleri aynı da olabilir), A‟dan B‟ye bir iliĢki kümesi, eĢleme sınırlamaları açısından aĢağıdaki dört türden birinde olabilir. o Birden-bire (one-to-one) o Birden-çoğa (one-to-many) o Çoktan-bire (many-to-one) o Çoktan-çoğa (many-to-many) Birden-bire (1-1): A varlık kümesindeki bir varlık, B varlık kümesindeki sadece bir varlık ile iliĢkili ise. Birden-çoğa (1-n) : A varlık kümesindeki bir varlık, B varlık kümesindeki birden fazla varlık ile iliĢkili ve B kümesindeki bir varlık A kümesindeki sadece bir varlık ile iliĢkili ise. 23 Çoktan-bire (n-1): Her a ile en çok bir b ve her b ile de sıfır, bir veya birçok a arasında iliĢki kurulabilir. Örnek: “Öğrenci” ve “Bölüm” varlık kümeleri arasındaki “Okuduğu” iliĢkisi, öğrenciden bölüme doğru çoktan-bire Ģeklindedir. Çoktan-çoğa (n-m): A varlık kümesindeki bir varlık, B varlık kümesindeki birden fazla varlık ile iliĢkili ve B kümesindeki bir varlık A kümesindeki birden çok varlık ile iliĢkili ise. ġEKĠL 3.3. Veri Modellemede Kullanılan Grafiksel Notasyonlar 3.1.5. ĠliĢkisel Veri Modeli ĠliĢkisel Veri Tabanları: E.F. Codd Tarafından GeliĢtirilmiĢtir. Bu sistemde veriler tablo Ģeklinde saklanır. Tablolar, satır ve sütunlardan oluĢur. ĠliĢkiler kurulurken birincil anahtar (Primary key) ve yabancı anahtarlar (Foreign Key) kullanılır. Anahtar alanlar sayesinde indeksleme (indexing) yapma olanağı sunan iliĢkisel veri 24 tabanlarında eriĢim ve iĢlemler daha hızlı yapılabilmektedir. Bu veri tabanı yönetim sisteminde; veri alıĢ veriĢi için özel iĢlemler kullanılır. Bu iĢlemlerde tablolar operandlar olarak kullanılır. ĠliĢkisel veri modellerinde kullanılan tek yapılandırma aracı iliĢkidir. ĠliĢkinin tanımı, veri tabanı iliĢkilerinin zamana bağlı olması dıĢında, matematiksel tanımı ile aynıdır. Yani, bir veri tabanı iliĢkisinde satırlar, eklenebilir, değiĢtirilebilir ya da düzeltilebilir [6]. 3.1.6. Farklı Veritabanı Modellerinin Avantajları ve Dezavantajları Veritabanı modelleri dosya sistemlerinin doğal zayıflıklarından yola çıkılarak geliĢtirilmiĢtir. Veriyi farklı dosyalarda tutmak yerine veritabanları veriyi tek bir veri deposunda tutarlar. Bu da veritabanı yönetim sistemlerine (VTYS-DBMS) veritabanı aktiviteleri üzerinde sıkı kontrol imkanı tanır. Üç temel veritabanı modeli (hiyerarĢik, ağ ve iliĢkisel) ticari baĢarı elde etmiĢlerdir. Her üçü de veritabanı yöneticilerine görevlerini daha etkin yapabilmelerine olanak tanıyan veritabanı yönetim sistemleri kullanırlar. Ancak veritabanı yönetim sistemleri faaliyetlerinin kapsamı ve bunların kullanıcı-dostu yazılımları çeĢitli veritabanı sistemlerinde farklılık göstermektedir. AĢağıdaki tabloda yukarıda geçen beĢ farklı veritabanı modelinin avantaj ve dezavantajları özetlenmiĢtir [5]. HiyerarĢik Evet AVANTAJLARI DEZAVANTAJLARI 1.Veri paylaĢımı 1.Yönsel sistem, karmaĢık yüksektir tasarım, uyarlama,uygulama 2.Ebeveyn/Çocuk geliĢtirme, kullanım ve iliĢkisi ile kavramsal yönetimi sonuç verir sadelik artar 2.Uygulama sınırlıdır (M:M 3.Ebeveyn/Çocuk veya çoklu ebeveyn iliĢkisi veritabanı iliĢkileri yok) 3.VTYS'de BAĞIMSIZLIK VERĠ MODELĠ YAPISAL VERĠTABANI BAĞIMSIZLIĞI ÇĠZELGE 3.1. ÇeĢitli Veritabanı Modellerinin Avantajları ve Dezavantajları Hayır 25 AVANTAJLARI DEZAVANTAJLARI bütünlüğünü arttırır veri tanımlama veya veri iĢlem 4.1:M sabit iliĢkilerle dili yok 4.Standart eksikliği BAĞIMSIZLIK VERĠ MODELĠ YAPISAL VERĠTABANI BAĞIMSIZLIĞI ÇĠZELGE 3.1. ÇeĢitli(Devam) Veritabanı Modellerinin Avantajları ve Dezavantajları HiyerarĢik etkindir. Ağ Evet Hayır 1.HiyerarĢik modele 1.Sistem karmaĢıklığı eĢit kavramsal basitlik. etkinliği sınırlandırır (hala 2.Daha fazla iliĢki yönsel sistem) tipini kullanır M:M 2.Yönsel sistem, karmaĢık veya çoklu ebeveyn tasarım, uyarlama, uygulama gibi 3.Sahip/Üye geliĢtirme, iliĢkileri veritabanı kullanım ve yönetimi bütünlüğü sağlar sonuç verir 4.Standartlara uygunluk 5.VTYS'de veri tanımlama ve veri iĢleme dilleri içerir ĠliĢkisel Evet Evet 1.Çizelge görünümü 1.Sistemin kullanımını kavramsal sadeliği kolaylaĢtıran ĠliĢkisel önemli ölçüde Veritabanı Yönetim arttırır,böylece Sistemi çok fazla donanım veritabanı tasarımı, ve sistem yazılımı gerektirir uygulaması, 2.Kavramsal sistem sadeliği nispeten az eğitimli insanların iyi bir sistemi etkin 26 ĠliĢkisel Evet Evet AVANTAJLARI DEZAVANTAJLARI 2.SQL'e dayalı ad kullanamamasına yol açar BAĞIMSIZLIK VERĠ MODELĠ YAPISAL VERĠTABANI BAĞIMSIZLIĞI ÇĠZELGE 3.1. ÇeĢitli(Devam) Veritabanı Modellerinin Avantajları ve Dezavantajları hoc sorgu yeteneği 3.Güçlü veritabanı yönetim sistemi uygulama ve yönetim sadeliğini geliĢtirir Varlık-ĠliĢki Evet Evet 1.Görsel modelleme 1.Sınırlı kısıt sunumu olağanüstü 2.Sınırlı iliĢki sunumu kavramsal sadelik 3.Veri iĢlem dili yok sağlar 2.Görsel 4.Bilgi içeriğinde kayıplar, sunum sistemi etkin çünkü özellikler genellikle bir iletiĢim aracı kalabalık görüntü haline getirir oluĢmaması için çıkarılır 3.Baskın iliĢkisel veritabanı modeli ile entegredir Nesne-Temelli Evet Evet 1.Semantik içerik 1.Standart eksikliği ekler 2.Görsel 2.KarmaĢık yönsel sistem sunum semantik 3.Dik öğrenme eğrisi içeriği de 4.Yüksek sistem yükü kapsamaktadır iĢlemleri yavaĢlatır 3.Miras alma veritabanı bütünlüğünü arttırır 27 3.2. ÖRNEK VERĠTABANI (ÖĞRENCĠ OTOMASYONU) TASARIMI 3.2.1. Öğrenci Otomasyonu ĠĢlevleri Öncelikle öğrenci otomasyonu için senaryo yaratıldır. Bu senaryoda öğrenci otomasyonu bir üniversite için hazırlanıcağı tasarlandı. Senaryoya göre öğrenci formundaki kullanıcı kendi kiĢisel bilgilerini, derslerini ve dersleri hakkındaki baĢarı notlarını, bölümü ile ilgili bilgileri görebileceği yapı tasarlandı. Ders ile ilgili bilgilerinde dönem olayına dikkat edildi. Dönem olaylarından kasıt bir dersin farklı dönemlerde de alınabilecek fakat aynı dönemde sadece bir defa alınabilicek yapıda olduğu bilinerek düzenlendi. Öğretim elemanında kendi kiĢisel bilgilerini görebileceği, bölümü ve bölümünün bağlı olduğu fakülte hakkındaki verilere ulaĢabileceği ve ünvanını gösterecek bir yapı seçildi. Aslında personel sınıfına da dahil olabilecek bu yapı ayrık gösterilerek anlaĢılması kolay bir tasarım oluĢturuldu. Öğrenci ve Öğretim elemanı kullanıcıları için görünecek bilgilerideki hassasiyete önem verilerek en uygun tasarım oluĢturuldu. 3.2.2. Varlık Kümeleri Arasındaki ĠliĢki Öğrenci Otomasyonunda öğrenci, öğretim elemanı, bölüm, fakülte, ünvan, ders, dönem ve öğrenciDers isimli varlık kümeleri düĢünülmüĢtür. Öğrenci numarası, kimlik numarası, adı, soyadı, bölüm numarası, adresi, telefonu, e-posta adresi bilgileri tutulduğu öğrenci varlık kümesi ile bölüm numarasını, bölüm adını, fakülte numarasını, bölüm baĢkanı, telefon ve e-posta verilerini tutulduğu bölüm varlık kümesi göz önüne alınmaktadır. Bu varlık kümelerinde her öğrenci belirli bir bölüme kayıtlıdır. Ancak bir bölüme birden çok öğrenci kayıtlı olabilir. Fakülte numarası, fakülte adı, dekan adını, dekan yardımcısını, ve iletiĢim verilerini tutulduğu bölüm fakülte varlık kümesi ile bölüm varlık kümeleri göz önüne alınmaktadır. Bu varlık kümelerinde her bölüm belli bir fakülteye bağlıdır. Ancak bir fakültede birden çok bölüm olabilir. Hocanın numarası, adı, soyadı, bölümü, adresi, telefon numarası, eposta adresi ve ünvan bilgileri tutulduğu öğretim elemanı varlık kümesi ile bölüm varlık kümesi göz önünüe alınmalıdır. Bu varlık kümelerinde her öğretim elemanı belli bir bölüme bağlıdır. Ancak bir bölümüme birden çok öğretim elemanı kayıtlıdır. 28 Ünvan no ve ünvan adı bilgileri tutulduğu ünvan varlık kümesi ile öğretim elemanı varlık kümesini göz önüne alalım. Bu varlık kümelerinden her öğretim elemanının unvanı olmak zorunda değildir. Fakat ünvanı var ise belirli bir tane ünvana sahip olur. Ancak bir ünvan birden fazla öğretim elemanına verilebilir. BaĢarı bilgilerinin tutulduğu öğrenciDers varlık kümesi ile öğrenci varlık kümesi göz önüne alınmalıdır. Bu varlık kümelerinden öğrenciDers kümesindeki baĢarı bilgisi her öğrencinin sahip olduğu ve diğer öğrencilerinde sahip olabileceğinden zayıf varlık kümesidir. Öğrenci olmazsa baĢarıda olmayacağından varolma bağımlıdır. Ders adı, kredi, teorik, uygulama bilgilerinin tutulduğu ders varlık kümesi ile ögrenciDers varlık kümeleri arasındaki iliĢki Ģöyledir. Bu varlık kümelerinden ders olmazsa baĢarıda olamaz. BaĢarı değeri diğer derslerde olabileceğinden zayıf varlık kümesidir. Dönem id‟si dönem yılı, dönem numarası ve açıklama bilgilerinin bulunduğu dönem varlık kümesi ile öğrenciDers kümesi arasında iliĢki Ģöyledir. Dönem bilgisi öğrenci için sorgulanır. Her öğrencinin dönem bilgisi olduğuna göre bunları birbirinden ayırmak gerekir. Bu yüzden öğrenciDers varlık kümesi zayıf varlık kümesidir. Dönem varlık kümesine var olma bağımlıdır. Çünkü listelenen derslerin belli bir dönemi vardır. 3.2.3. ĠliĢki ġemaları Çizeneği ÖĞRENCĠ(ögrNo , kimlikNo, ad, soyad, adres, telefon, eposta,bölümNo) BÖLÜM(bölümNo, bölümAdı, bölümBġK, telefon, eposta, fakülteNo ) FAKÜLTE(fakülteNo, fakülteAdı, dekanAdı, iletiĢim) ÖĞRETĠMELEMANI(hocaNo, ad, soyad, adres, telefon, eposta, bölümNo, ünvanNo) ÜNVAN(ünvanNo, ünvanAdı) ÖĞRENCĠDERS(ögrDersĠd, ögrNo , dersNo , donemId, baĢarı) DERS(dersNo, dersAdı, kredi, teorik, uygulama) DÖNEM(donemId,donemYil, donemNo, açıklama) 29 4. ORACLE’DA VERĠTABANI UYGULAMASI 4.1. ORTAMIN HAZIRLANMASI VE VERĠTABANI OLUġTURMA Öncelikle veritabanın yaratılıp, yönetilmesi için Oracle Database 11g Enterprise Edition sürümü kuruldu. Kurulum esnasındaki email isteyen alan boĢ bırakıldı. Daha sonra gelen ekrandaki birinci seçenek RDBMS software kurulumunu ve veritabanını oluĢturulacağını, ikincisi seçenek sadece RDBMS software‟i kurulacağını (Sonradan DBCA ile veritbanını oluĢturmamız gerekir). Üçüncüsü varolan veritabanını upgrade etmek için bulunan seçeneklerden birincisi seçerek kurulum devam etti. Kurulum bu aĢamasında hangi ortamda çalıĢacağı ile ilgili bilgiydi. Desktop Class ve Server Class seçeneklerinden bana uyan veritabanını kendi bilgisayarımda çalıĢtıracağımdan birinci seçenekti. Yeni pencerede Single instance database installation seçeneği seçildi. Konfigürasyon bilgilerinin bulunduğu ekranda Advanced seçeneği ile basit olmayan ayarlar seçildi. Bu ayarlardan Oracle base dizini seçildi, Software location seçildi, Storage tipi olarak “File System” seçildi, Veritabanı dosyalarının bulunacağı “database file location” dizini belirtildi, Database edition olarak “Enterprise Edition” seçildi, dba grubu olarak OSDBA Group seçildi, Global Database Name olarak veritabanımızın adı ogrenciOtomansyonDB olarak oluĢturuldu ve Son olarak bir yönetim Ģifresi belirlendi. Specify Configuration Options penceresinde karakter set olarak Turkish WEISO8859P9 seçeneği seçildi. SYS, SYSTEM, SYSMAN ve DBSNMP kullanıcıları için Ģifre belirleneceği pencerede hepsine aynı anda Ģifre verildi. Oracle SQL Developer, potansiyeli olan, platform bağımsız ve Java ile istenilirse XML ve SQL kullanarak eklentiler geliĢtirebilidiği ve sadece Oracle‟ı değil, Ms Access, Ms SQL Server, MySQL, TimesTen, Sybase ve DB2 ile çalıĢmayı sağlayan ücretsiz bir yazılımdır. SQL management yapısına benzediği ve Oracle üzerinde yapılan iĢlemler daha rahat yapılabildiğinden bu uygulama için tercih edildi. Uygulama sadece bu araçla geliĢtirilmedi, böyle kullanım kolaylığı sağlayan araçlarda incelendi. Böylece uygulamanın tabloların yaratılması aĢamasına geçildi. 30 4.2. TABLOLARIN YARATILMASI Tablolar oluĢturulurken özniteliklerin, eĢsiz anahtarların ve yabancı anahtarların veritabanın tasarım aĢamasında belirlendiğinden iĢlemler hızlı bir Ģekilde gerçekleĢtirildi. Tablolar oluĢturulurken iliĢki-Ģema çizelgesi sayesinde sql komutlarını uygulanarak ve Oracle çalıĢma alanında SQL Workshop bölümünde Object Browser ile tablolar yaratıldı. Tablolardaki öznitelikler seçilirken en kapsamlı olabilecek fakat gereksiz kullanımında önüne geçiçek düzeyde seçildi. Örneğin isim sütünları oracle veri türlerinden olan nvarchar türünde ve 20 karakter ile sınırlandırıldı. Burada nvarchar seçilmesinin nedeni Unicode karakter tutabilen veri tipi olması ve bu veriyi tutarken boyutu kadar tutmasından dolayıdır. Eğer veri türü nvarchar değilde nchar türünde tutulsaydı, veri için ön görülen kısıtlama miktarı kadar alan kaplayarak her veriyi saklayacaktı. Yani veri ne olursa olsun kısıtlama kadar yer ayrılacaktı. Fakat aynı durum nvarchar için geçerli değil çünkü verinin boyutu kadar yer kaplar tabi maksimum kısıtlama sınırına kadar. 4.2.1. Öğrenci Tablosu Öğrenci tablosu Oracle çalıĢma alanında Object Browser ile yaratılırken özniteliklerdeki kısıtlamalar belirlendi. Bu kısıtlamalar ve tablo Ģekilde görüldüğü gibidir. Burada Primary key olarak öğrenci no tanımlanmıĢtır. Kimlik no unique yani benzersizdir. Telefon, eposta ve adres bölümleri boĢ olabilrken diğer alanlar boĢ olamaz. ġEKĠL 4.1. Öğrenci Tablosu 31 4.2.2. Öğretim Elemanı Tablosu ÖğretimElemanı tablosu Oracle çalıĢma alanında Object Browser ile yaratılırken özniteliklerdeki kısıtlamalar belirlendi. Bu kısıtlamalar ve tablo Ģekilde görüldüğü gibidir. Burada Primary key olarak Hoca no tanımlanmıĢtır. Telefon, eposta, adres ve unvan bölümleri boĢ olabilrken diğer alanlar boĢ olamaz. Ünvanın boĢ olması hiçbir unvan taĢımayabileceği için boĢ bırakılabilir. Burada sistem Ģu Ģekilde de olabilirdi. Ünvan tablosunda boĢ unvanlar için satır oluĢturulur ve ÖğretimElamanı tablosunda boĢ girilmesi engellenebilirdi. ġEKĠL 4.2. Öğretim Elemanı Tablosu 4.2.3. Bölüm Tablosu Bölüm tablosu Oracle çalıĢma alanında Object Browser ile yaratılırken özniteliklerdeki kısıtlamalar belirlendi. Bu kısıtlamalar ve tablo Ģekilde görüldüğü gibidir. Burada Primary key olarak bölüm no tanımlanmıĢtır. Telefon ve eposta bölümleri boĢ olabilrken diğer alanlar boĢ olamaz. 32 ġEKĠL 4.3. Bölüm Tablosu 4.2.4. Fakülte Tablosu Fakülte tablosu Oracle çalıĢma alanında Object Browser ile yaratılırken özniteliklerdeki kısıtlamalar belirlendi. Bu kısıtlamalar ve tablo Ģekilde görüldüğü gibidir. Burada Primary key olarak fakülte no tanımlanmıĢtır. Sadece iletiĢim bölümü boĢ olabilrken diğer alanlar boĢ olamaz. ġEKĠL 4.4. Fakülte Tablosu 4.2.5. Ünvan Tablosu Ünvan tablosu Oracle çalıĢma alanında Object Browser ile yaratılırken özniteliklerdeki kısıtlamalar belirlendi. Bu kısıtlamalar ve tablo Ģekilde görüldüğü gibidir. Burada Primary key olarak ünvan no tanımlanmıĢtır. Hiçbir bölüm boĢ bırakılamaz. 33 ġEKĠL 4.5. Ünvan Tablosu 4.2.6. Ders Tablosu Ders tablosu Oracle çalıĢma alanında Object Browser ile yaratılırken özniteliklerdeki kısıtlamalar belirlendi. Bu kısıtlamalar ve tablo Ģekilde görüldüğü gibidir. Burada Primary key olarak ders no tanımlanmıĢtır. Hiçbir bölüm boĢ bırakılamaz. ġEKĠL 4.6. Ders Tablosu 4.2.7. Dönem Tablosu Dönem tablosu Oracle çalıĢma alanında Object Browser ile yaratılırken özniteliklerdeki kısıtlamalar belirlendi. Bu kısıtlamalar ve tablo Ģekilde görüldüğü gibidir. Burada Primary key olarak dönem Ġd tanımlanmıĢtır. Sadece açıklama alanı boĢ bırakılabilir. 34 ġEKĠL 4.7. Dönem Tablosu 4.2.8. ÖğrenciDers Tablosu Öğrenci Ders tablosu Oracle çalıĢma alanında Object Browser ile yaratılırken özniteliklerdeki kısıtlamalar belirlendi. Bu kısıtlamalar ve tablo Ģekilde görüldüğü gibidir. Burada Primary key olarak ögrenciders id tanımlanmıĢtır. Hiçbir bölüm boĢ bırakılamaz. ġEKĠL 4.8. ÖğrenciDers Tablosu 4.3. TABLOLAR ARASI ĠLĠġKĠLER Tablolar arası iliĢkiler yaratılırken Oracle sql developer yazılımı kullandı. Tablolar için gerekli olan yabancı anahtar (foreign key)‟lar bu aĢamada oluĢturuldu. Her tablonun en son halinin sql komutu Ģeklide görüntülenerek tablolar tamamlanmıĢ 35 oldu. Herhangi bir iliĢkisi bulanmayan tablolarında sql komutu ile oluĢturulabilecek son halleri tamamlanmıĢ oldu. 4.3.1. Öğrenci Tablosu ĠliĢkileri ve Son Hali Öğrenci tablosundaki bölüm no kolonu bölüm tablosuyla iliĢkisi Ģöyledir. Öğrenci tablosundaki bölüm no referans olarak bölüm tablosundaki bölüm no‟yu alır. Bölüm tablosunda olmayan bir değer öğrenci tablosunda olamaz. En son hali ile öğrenci tablosunun, sql komutu olarak Ģu Ģeklidedir: ÇĠZELGE 4.1. Tablo iliĢkileri Sonrası Öğrenci Tablosu Son Hali CREATE TABLE "OGRENCI" ( "OGRNO" NUMBER(15,0) NOT NULL ENABLE, "KIMLIKNO" NUMBER(11,0) NOT NULL ENABLE, "AD" NVARCHAR2(20) NOT NULL ENABLE, "SOYAD" NVARCHAR2(20) NOT NULL ENABLE, "TELEFON" NUMBER(14,0), "EPOSTA" NVARCHAR2(25), "BOLUMNO" NUMBER(15,0) NOT NULL ENABLE, "ADRES" NVARCHAR2(50), CONSTRAINT "OGRENCĠLER_PK" PRIMARY KEY ("OGRNO") ENABLE, CONSTRAINT "U_KIMLIKNO" UNIQUE ("KIMLIKNO") ENABLE ) ;ALTER TABLE "OGRENCI" ADD CONSTRAINT "FK_OGRENCI_BOLUM" FOREIGN KEY ("BOLUMNO") REFERENCES "BOLUM" ("BOLUMNO") ENABLE; 4.3.2. Öğretim Elemanları Tablosu ĠliĢkileri ve Son Hali Öğretim Elemanı tablosundaki bölüm no kolonu bölüm tablosuyla iliĢkisi Ģöyledir. Öğretim Elemanı tablosundaki bölüm no referans olarak bölüm tablosundaki bölüm no‟yu alır. Bölüm tablosunda olmayan bir değer öğretim elemanı tablosunda olamaz. Öğretim Elemanı tablosundaki ünvan no kolonu ünvan tablosuyla iliĢkisi Ģöyledir. 36 Öğretim Elemanı tablosundaki ünvan no referans olarak ünvan tablosundaki ünvan no‟yu alır. Ünvan tablosunda olmayan bir değer öğretim elemanı tablosunda olamaz. En son hali ile öğretim elemanı tablosunun, sql komutu olarak Ģu Ģeklidedir: ÇĠZELGE 4.2. Tablo iliĢkileri Sonrası ÖğretimElemanı Tablosu Son Hali CREATE TABLE "OGRETIMELEMANI" ( "HOCANO" NUMBER(15,0) NOT NULL ENABLE, "AD" NVARCHAR2(20) NOT NULL ENABLE, "SOYAD" NVARCHAR2(20) NOT NULL ENABLE, "ADRES" NVARCHAR2(50), "TELEFON" NUMBER(14,0), "EPOSTA" NVARCHAR2(25), "BOLUMNO" NUMBER(15,0) NOT NULL ENABLE, "UNVANNO" NUMBER(5,0), CONSTRAINT "OGRETIMELEMANI_PK" PRIMARY KEY ("HOCANO") ENABLE ) ;ALTER TABLE "OGRETIMELEMANI" ADD CONSTRAINT "FK_OGRETIM_BOLUM" FOREIGN KEY ("BOLUMNO") REFERENCES "BOLUM" ("BOLUMNO") ENABLE;ALTER TABLE "OGRETIMELEMANI" ADD CONSTRAINT "FK_OGRETIM_UNVAN" FOREIGN KEY ("UNVANNO") REFERENCES "UNVAN" ("UNVANNO") ENABLE; 4.3.3. Bölüm Tablosu ĠliĢkileri ve Son Hali Bölüm tablosundaki fakülte no kolonu fakülte tablosuyla iliĢkisi Ģöyledir. Bölüm tablosundaki fakülte no referans olarak fakülte tablosundaki fakülte no‟yu alır. Fakülte tablosunda olmayan bir değer bölüm tablosunda olamaz. En son hali ile bölüm tablosunun, sql komutu olarak Ģu Ģeklidedir: ÇĠZELGE 4.3. Tablo iliĢkileri Sonrası Bölüm Tablosu Son Hali CREATE TABLE "BOLUM" ( "BOLUMNO" NUMBER(15,0) NOT NULL ENABLE, "BOLUMADI" NVARCHAR2(30) NOT NULL ENABLE, 37 ÇĠZELGE 4.3. (Devam)Tablo iliĢkileri Sonrası Bölüm Tablosu Son Hali "BOLUMBSK" NVARCHAR2(40) NOT NULL ENABLE, "TELEFON" NUMBER(14,0), "EPOSTA" NVARCHAR2(25), "FAKULTENO" NUMBER(15,0) NOT NULL ENABLE, CONSTRAINT "BOLUM_PK" PRIMARY KEY ("BOLUMNO") ENABLE ) ;ALTER TABLE "BOLUM" ADD CONSTRAINT "FK_BOLUM_FAKULTE" FOREIGN KEY ("FAKULTENO") REFERENCES "FAKULTE" ("FAKULTENO") ENABLE; 4.3.4. ÖğrenciDers Elemanları Tablosu ĠliĢkileri ve Son Hali Öğrenci Ders tablosundaki öğrenci no kolonu öğrenci tablosuyla iliĢkisi Ģöyledir. Öğrenci Ders tablosundaki öğrenci no referans olarak öğrenci tablosundaki öğrenci no‟yu alır. Öğrenci tablosunda olmayan bir değer öğrenciDers elemanı tablosunda olamaz. Öğrenci Ders tablosundaki ders no kolonu ders tablosuyla iliĢkisi Ģöyledir. Öğrenci Ders tablosundaki ders no referans olarak ders tablosundaki ders no‟yu alır. Ders tablosunda olmayan bir değer öğrenciDers elemanı tablosunda olamaz. Öğrenci Ders tablosundaki donem id kolonu donem tablosuyla iliĢkisi Ģöyledir. Öğrenci Ders tablosundaki donem id referans olarak donem tablosundaki donem id‟yi alır. Dönem tablosunda olmayan bir değer öğrenciDers elemanı tablosunda olamaz. En son hali ile öğrenciDers tablosunun, sql komutu olarak Ģu Ģeklidedir: ÇĠZELGE 4.4. Tablo iliĢkileri Sonrası ÖğrenciDers Tablosu Son Hali CREATE TABLE "OGRENCIDERS" ( "OGRNO" NUMBER(15,0) NOT NULL ENABLE, "DERSNO" NUMBER(5,0) NOT NULL ENABLE, "DONEMID" NUMBER(4,0) NOT NULL ENABLE, "BASARI" NCHAR(1) NOT NULL ENABLE, 38 ÇĠZELGE 4.4. (Devam) Tablo iliĢkileri Sonrası ÖğrenciDers Tablosu Son Hali "OGRDERSID" NUMBER(5,0) NOT NULL ENABLE, CONSTRAINT "OGRENCIDERS_PK_ID" PRIMARY KEY ("OGRDERSID") ENABLE ) ;ALTER TABLE "OGRENCIDERS" ADD CONSTRAINT "FK_OGRDERS_ORG" FOREIGN KEY ("OGRNO") REFERENCES "OGRENCI" ("OGRNO") ENABLE;ALTER TABLE "OGRENCIDERS" ADD CONSTRAINT "FK_ORGDERS_DERS" FOREIGN KEY ("DERSNO") REFERENCES "DERS" ("DERSNO") ENABLE;ALTER TABLE "OGRENCIDERS" ADD CONSTRAINT "FK_ORGDERS_DONEM" FOREIGN KEY ("DONEMID") REFERENCES "DONEM" ("DONEMID") ENABLE; 4.3.5. Fakülte Tablosunun Son Hali Fakülte tablosu bölüm tablosundaki fakulte no ya referans olan fakulte no isimli sütuna sahiptir. Kendisi referans konumda olduğundan tablo yaratılırken kodlarında değiĢikliğe gidilmemiĢ olsada sql komutu Ģeklinde oluĢturulması aĢağıdaki gibidir. ÇĠZELGE 4.5. Fakülte Tablosunun Son Hali CREATE TABLE "FAKULTE" ( "FAKULTENO" NUMBER(15,0) NOT NULL ENABLE, "FAKULTEADI" NVARCHAR2(30) NOT NULL ENABLE, "DEKANADI" NVARCHAR2(40) NOT NULL ENABLE, "ILETIġIM" NUMBER(14,0), CONSTRAINT "FAKULTE_PK" PRIMARY KEY ("FAKULTENO") ENABLE ); 39 4.3.6. Ünvan Tablosunun Son Hali Ünvan tablosu öğretim elemanı tablosundaki ünvan no ya referans olan ünvan no isimli sütuna sahiptir. Kendisi referans konumda olduğundan tablo yaratılırken kodlarında değiĢikliğe gidilmemiĢ olsada sql komutu Ģeklinde oluĢturulması aĢağıdaki gibidir. ÇĠZELGE 4.6. Ünvan Tablosunun Son Hali CREATE TABLE "UNVAN" ( "UNVANNO" NUMBER(15,0) NOT NULL ENABLE, "UNVANADI" NVARCHAR2(20) NOT NULL ENABLE, CONSTRAINT "UNVAN_PK" PRIMARY KEY ("UNVANNO") ENABLE ); 4.3.7. Ders Tablosunun Son Hali Ders tablosu öğrenciDers tablosundaki ders no ya referans olan ders no isimli sütuna sahiptir. Kendisi referans konumda olduğundan tablo yaratılırken kodlarında değiĢikliğe gidilmemiĢ olsada sql komutu Ģeklinde oluĢturulması aĢağıdaki gibidir. ÇĠZELGE 4.7. Ders Tablosunun Son Hali CREATE TABLE "DERS" ( "DERSNO" NUMBER(5,0) NOT NULL ENABLE, "DERSADI" NVARCHAR2(20) NOT NULL ENABLE, "KREDI" NUMBER(2,0) NOT NULL ENABLE, "TEORIK" NUMBER(2,0) NOT NULL ENABLE, "UYGULAMA" NUMBER(2,0) NOT NULL ENABLE, CONSTRAINT "DERS_PK" PRIMARY KEY ("DERSNO") ENABLE ); ); 40 4.3.8. Dönem Tablosunun Son Hali Dönem tablosu öğrenciDers tablosundaki dönem no ya referans olan dönem no isimli sütuna sahiptir. Kendisi referans konumda olduğundan tablo yaratılırken kodlarında değiĢikliğe gidilmemiĢ olsada sql komutu Ģeklinde oluĢturulması aĢağıdaki gibidir. ÇĠZELGE 4.8. Dönem Tablosunun Son Hali CREATE TABLE "DONEM" ( "DONEMYIL" NUMBER(4,0) NOT NULL ENABLE, "AÇIKLAMA" NVARCHAR2(50), "DONEMNO" NUMBER(2,0) NOT NULL ENABLE, "DONEMID" NUMBER(5,0) NOT NULL ENABLE, CONSTRAINT "DONEM_PK_DONEMID" PRIMARY KEY ("DONEMID") ENABLE, CONSTRAINT "UK_DONEMYIL_DONEMNO" ("DONEMYIL", "DONEMNO") ENABLE ); 41 UNIQUE 5. SONUÇ BeĢ bölümden oluĢan bu tez çalıĢması, VTYS olan Oracle'ın temel bilgileri hakkında araĢtırmaların yapılmasını ve elde edilen bilgilerle bir veritabanın projesinin geliĢtirilmesini içermektedir. Ġkinci bölümde Oracle Veritabanı hakkında bilinmesi gereken en temel bilgiler sunulmuĢtur. Veri Tanımla Dili Komutları ile veritabanı nesnelerinin yönetilmesini sağlayacak bilgiler verilmiĢtir. Üçüncü bölümde tüm Veri Modelleri araĢtırılması yapılıp, en çok kullanılan model olan ĠliĢkisel Veritabanı Modeli ile öğrenci otomasyonu ismindeki örnek veritabanı tasarlanmıĢtır. Dördüncü bölümde ikinci bölümde elde edilen bilgilerle, üçüncü bölümde tasarlanan örnek bir veritabanı tasarımının Oracle VTYS‟de oluĢtulmuĢtur. Yapılan analizler sonucunda Oracle Veritabanlarının çok büyük veri miktarlarını destekleyen mimarisiyle pazarda lider konumda olsa da yüksek maliyetleri en büyük olumsuzluk olarak göze çarpıyor. Özellikle güvenlik anlamında kırılmaz sloganını taĢısa bile Oracle Veritabanına sadece sahip olmak yüzde yüz güvenli olucağı anlamına gelmez özellikle masum görünen yetki açıklıkları ile büyük veri kayıpları yaĢanabilir. Bunları engellemenin yolları da uzmanlaĢmaktan geçer. Bu çalıĢmada teorik olarak Oracle bilgisinin oluĢması ve uygulama ile pratiklik kazanılsa da ilerleyen aĢamalarda daha geniĢ anlamlarda bilgiler ve uygulamalar hedeflenmektedir. Bu hedefler, Oracle araçlarının çoğunu kapsayan bilgi birikime sahip olmak, güvenlik açığını sıfıra indirgen yapılar oluĢturabilmek ve çeĢitli zarar ve felaket senaryolarına karĢı veritabanı yedekleme gibi temel veritabanı yönetim biçimleridir. Uygulama anlamında hedef, gerçek zamanlı veritabanları yönetip, gerçek zamanlı olmasının vermiĢ olduğu sorumluluk ve hata yapma Ģansının olmadığı durumlarda elde edilen bilginin pratiğe dönüĢtürülmesidir. 42 KAYNAKLAR [1] "Oracle Temel Özellikleri" eriĢim adresi: http://www.halidkalkan.com/?tag=oracle-temel-ozellikleri [ Ziyaret Tarihi: 5 Kasım 2011] [2] Oracle Corparation, Oracle Veri Tabanı Yönetim Sistemine GiriĢ, 2008 [3] DaĢdemir, YaĢar., 2004. Veritabanı Yönetim Sistemleri. Türkmen Kitabevi, 856 s, Ġstanbul. [4] Kaya, Yalçın., 2008. C# ve T-SQL GeliĢtiriciler için Java ve Oracle, 228 s. Ġstanbul [5] Kiliçkaya Alpaslan, Oracle Ġçin Veri Tabani Yönetim Araci ve Performans Analizi, Yüksek Lisans, TOBB Ekonomi ve Teknoloji Üniversitesi Fen Bilimleri Enstitüsü, 2008 [6] “Veri Modelleri” eriĢim adresi: http://www.webbilgileri.com/Makaleler/68iliskisel-veri-modelleri.aspx [ Ziyaret Tarihi: 15 Aralık 2011] [7] Kandemir C. Murat, Oracle Veritabanı ile Web Uygulamasının GeliĢtirilmesi, Yüksek Lisans, Osmangazi Üniversitesi Fen Bilimleri Enstitüsü, 2002 [8] Kütükçü, Arzu, Mekansal Veritabanlarında Hızlı Sorgulama, Yüksek Lisans, TOBB Ekonomi ve Teknoloji Üniversitesi Üniversitesi Fen Bilimleri Enstitüsü, 2009 [9] Türköz Tahsin, Oracle Veri Güvenliği Klavuzu, Kocaeli, Haziran 2009 [10] Irmak Segin, ĠliĢkisel Veritabanı Sistemleri ve Akdeniz Üniversitesi Sosyal Bilimler Enstitüsü Öğrenci ĠĢleri Otomasyon Uygulaması, Yüksek Lisans, Akdeniz Üniversitesi ĠĢletme Anabilim Dalı, 2004 43 TEġEKKÜR Tez çalıĢmam boyunca değerli yardım ve katkılarıyla beni yönlendiren, sabır ve özveriyle bana destek olan, kıymetli tecrübelerinden faydalandığım hocam YaĢar DAġDEMĠR‟e sonsuz teĢekkürlerimi sunarım. Ayrıca eğitimim süresince bana her konuda tam destek veren aileme ve bana hayatlarıyla örnek olan tüm hocalarıma saygı ve sevgilerimi sunarım. 44 ÖZGEÇMĠġ 1986 yılında Diyarbakır‟da doğdum. Diyarbakır‟da bulunan Fatih Ġlköğretim Okulunu, Birlik Lisesini bitirdim. 2006 yılında girdiğim Dicle Üniversitesi Eğitim Fakültesi Fizik Öğretmenliği bölümünü 2 yıl okuduktan sonra , 2008 yılında Mustafa Kemal Ünivetsitesi Mühendislik Fakültesi Bilgisayar Mühendisliğine yerleĢtim. 2005 yılından beri B sınıfı sürücü ehliyetim var. 45