BARTIN ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ 7. Hafta VERİ TABANI YÖNETİM SİSTEMLERİ Dr. Öğr. Üyesi Nesibe YALÇIN https://nesibeyalcin.wordpress.com/bsm102/
Veri Tabanı 2
Birbiriyle ilişkisi olan verilerin tutulduğu, Kullanım amacına uygun olarak düzenlenmiş veriler topluluğunun, Mantıksal ve fiziksel olarak tanımlarının bulunduğu Bilgi depolarıdır. Veri Tabanı Veri tabanı kavramı ilk olarak 1980 li yıllar 3
Neden Veri Tabanı?? 4
Neden Veri Tabanı?? Verilerin tutulması, saklanması ve erişilmesinde geleneksel yaklaşım (dosya/liste yönetimi) verilerin ayrı ayrı dosyalarda gruplanması yaklaşımını kullanmaktadır. Sıralı, Rastgele erişimli dosya Verilerin artması, verilere aynı anda erişme ve düzenlenme ihtiyacı ile geleneksel yaklaşım yetersiz kalmıştır. Veri tekrarını önler. Verilerin tutarlı olmasını sağlar. 5
Avantajları Ortak verilerin tekrarının önlenmesi Verilerin merkezi denetiminin ve tutarlılığının sağlanması Veri paylaşımının sağlanması Her kullanıcıya yalnız ilgilendiği verilerin, alışık olduğu kolay, anlaşılır yapılarda sunulması 6
Avantajları Sunulan çözümleme, tasarım ve geliştirme araçları ile uygulama yazılımı geliştirmenin kolaylaşması Veri bütünlüğünün sağlanması Güvenlik ve gizliliğin istenilen düzeyde sağlanması Yedekleme, yeniden başlatma, onarma gibi işletim sorunlarına çözüm getirilmesi 7
Veri Tabanı Örnekleri Basit bir web uygulamasından uluslararası kuruluşların büyük ve karışık verilerine kadar pek çok alanda veri tabanı uygulamalarına ihtiyaç durulmaktadır. Üniversite Öğrenci işleri bilgi sistemi Hastane Hasta, doktor, tedavi, araç-gereç, mali bilgiler Ticari bir şirket Müşteri, ürün, satış, ödeme, teslimat bilgileri Banka Müşteri, mevduat, kredi kartı, kredi bilgileri 8
Veri Tabanı Yapısı Tablo Kayıt Nitelik Anahtar nitelik Veri tabanı Tablo Tablo Tablo Tablo Tablo 1 2 3 Alan 1 Alan 2 Alan3 Alan4 9
Tablo Veriler tablolarda saklanmaktadır. Tablolar verilerin satırlar ve sütunlar halinde düzenlenmesiyle oluşan veri grubudur. Satır ve sütunlar farklı işleve sahiptir: Sütunların her birinde bir özellik/alan bilgisi yer alır. Satırlarda ise sütunlara ait kayıt bilgileri saklanmaktadır. Tablolardaki veriler sorgu sonucunda seçilir ve belli bir düzen içinde sunulur. 10
Tablo - Örnek Öğrenci bilgilerini veritabanında saklamak için: ogrenci_bilgileri Öğrenci bilgileri tablosunda: Öğrenci numarası, adı soyadı, doğum tarihi, doğum yeri, e-mail adresi bilgileri yer alsın. 11
Tablo - Örnek Alan Ogr_no Ad_soyad d_tarih d_yeri e-mail 1 Atiye Aydın 01.11.1999 Konya atiye@ogr.bartin.edu.tr 2 Asya Özdemir 05.12.1999 Giresun asya@ogr.bartin.edu.tr Alan 3 Sedat Pekin 16.02.2000 Ardahan sedat@ogr.bartin.edu.tr 4 Metin Ertürk 11.04.1998 Ankara metin_e@ogr.bartin.edu.tr 5 Zeynep Nur Aker 02.01.2000 Malatya zeynepn@ogr.bartin.edu.tr 6 Resmiye Bahar 22.02.2001 Yozgat resmiye@ogr.bartin.edu.tr Kayıt 12
Anahtar (Key) Anahtar bir veya birden fazla alanın bir satır için niteleyici olarak girilmesi için zorlanan bir çeşit zorlayıcıdır. 2 çeşit anahtar vardır: Birincil Anahtar (Primary Key) Yabancı Anahtar (Foreign Key) 13
Birincil Anahtar (Primary Key) Bir kayıta ulaşmayı sağlayacak anahtar veridir. Örneğin, öğrenciler arasında iki Ahmet var. Arama yaparken istediğimiz Ahmet i bulmak için her bir öğrenciye özel bir numara olmalıdır: öğrenci numarası Birden fazla alanda birlikte birincil anahtar olabilir. 14
Yabancı Anahtar (Foreign Key) Bir tabloya girilebilecek kayıtları başka bir tablonun belli alanındaki verilerle sınırlandırmaya ve ilişkilendirmeye yarar. Örneğin, öğrencilerin not verilerinin girildikleri tablodaki her satıra öğrenci bilgileri tablosundaki öğrenci no ile eşleşmeyen bir değer girilmez gibi. 15
Birleşik Anahtar (Composite Key) Birden fazla alanın birleşmesi ile oluşan anahtar nitelik Örneğin, öğrencilerin not verilerinin girildikleri notlar tablosunda her bir öğrenciye ilişkin birincil olarak tanımlanabilecek öğrenci no ve dersno alanları birlikte anahtar nitelik olabilir. 16
Veri Tabanı Yönetim Sistemleri (VTYS) 17
Veri Tabanı Yönetim Sistemleri (VTYS) Yeni bir veri tabanı oluşturmak, Veri tabanını düzenlemek, Kullanmak, Geliştirmek, Bakımını yapmak için Çeşitli karmaşık işlemlerin gerçekleştirildiği bir yazılım paketi ya da sistemidir. 18
Veri Tabanı Yönetim Sistemleri (VTYS) 19
Access Microsoft Office ürünüdür. Küçük ölçekli uygulamalar içindir. Tablo başına 2 GB a kadar veri depolayabilir. Aynı anda 255 bağlantıya izin verebilir. Windows işletim sistemleri dışında kullanılamaz. 20
MySQL Açık kaynak kodludur. Windows/Unix/Linux, işletim sistemlerinde çalışır. (platform bağımsız) Tablo başına 4 TB veri depolayabilir. Web uygulamalarında PHP ile çok sık kullanılır. 21
IBM tarafından geliştirilmiştir. IBM DB2 Windows/Unix/Linux, işletim sistemlerinde çalışır. Transaction logging, trigger ve stored procedure özelliklerine sahiptir. 22
Informix Illustra firması tarafından geliştirildi. 2001 yılında IBM Informix i satın aldı. Ücretli ve güçlü bir veritabanı. Orta ölçekli işletmelerin yükünü kaldırabilecek kapasitedir. 23
Bir orta ve büyük ölçekli VTYS dir. Unix, Windows,.. işletim sistemlerinde çalışır. SAP ile uyumlu. Sybase Ülkemizde daha çok bankacılık ve kamusal alanlarda tercih edilmektedir. 24
SQL Server Microsoft firmasına ait veritabanı sunucu yazılımıdır. Orta ve büyük ölçekli işlemler için kullanılır. Kullanım kolaylığı, güvenilirliği, işlem gücü Tablo başına 4 TB veri depolama. Sadece Windows üzerinde çalışır (platform bağımlı). Transaction logging, trigger ve stored procedure özelliklerine sahip. 25
Oracle Oracle firması tarafından geliştirildi. Dünyanın en güçlü ve en güvenilir veritabanı olarak gösterilir. Birçok işletim sistemi üzerinde kullanılabilir. Çok yüksek ölçekli uygulamalar için tercih edilir. Oluşturulabilecek tablo sayısı sınırsızdır. Çok yüksek maliyet..! 26
VTYS Bileşenleri 27
Veri Türleri Veri tabanında tutulan kayıtların yapısı hakkında bilgi sahibi olmak için alanların bazı özelliklerinin önceden tanımlanması gerekir. Örneğin; personel sicil numarası mutlaka tam sayı, Adı soyadı harflerden oluşması gibi Özellikle çok fazla verinin tutulduğu veritabanlarında performans kaybını azaltmak, veritabanı ve yedeklerin kapladığı disk alanını en aza indirmek için veri tipleri dikkatle seçilmelidir. 28
MsSQL Veri Türleri char: Sabit uzunlukta karakter verisi saklamak için kullanılır. En fazla 8000 karakter veri saklayabilir. varchar: Değişken uzunlukta karakter verisi saklamak için kullanılır. Belirlenmiş veri kapasitesi 8000 karakter olmasına rağmen (max) parametresi ile bu değer 2^31 byte a kadar genişletilebilir. nchar: Sabit uzunlukta 4000 karakter verisi saklamak için kullanılır. Boyutu değişken olmakla birlikte kısa olan değerler atanan uzunluğa tamamlanır. nvarchar: Değişken uzunlukta karakter verisi saklamak için kullanılır. Belirlenmiş maksimum uzunluk 4000 karakter olmasına rağmen (max) parametresiyle 2^31 byte a kadar veri depolanabilir. 29
MsSQL Veri Türleri int: 4 byte büyüklüğünde yaklaşık -2 milyar ile +2 milyar arasında değer alabilen tamsayı veri tipidir. bigint: 8 byte yüyüklüğünde -2^63 ile +2^63 arasında değer alabilen tamsayı veri tipidir. float: Boyutu ve doğruluğu (ondalık kısım duyarlılığı) aldığı parametreye göre değişen kayan noktalı sayılar için kullanılır. smallmoney: 4 byte uzunluğunda yaklaşık -214 000 ile 214 000 arasında parasal değerleri tutmak için kullanılır. Ondalık kısım duyarlılığı 4 basamaktır. money: 8 byte uzunluğunda yaklaşık -922 milyar ile 922 milyar arasındaki parasal değerleri tutmak için kullanılır. Ondalık kısım duyarlılığı 4 basamaktır. 30
MsSQL Veri Türleri date: Tarihleri YYYY-MM-DD şeklinde saklayan 3 byte uzunluğunda veri tipidir. smalldatetime: Tarih ve zaman verilerini YYYY-MM-DD hh:mm:ss şeklinde saklayan 4 byte uzunluğunda veri tipidir. datetime: YYYY-MM-DD hh:mm:ss:mmm şeklinde tarih ve zaman verilerini tutan 8 byte uzunluğunda veri tipidir. time: Sadece saat verilerini hh:mm:ss:nnnnnnn şeklinde saklayan veri tipidir. Dateteime2 gibi salise hassasiyeti maksimum 7 basamaktır ve kullanıcı tarafından değiştirilebilir. (3-5 byte) datetimeoffset: Ülkelere göre değişen zaman farkını tutmak için kullanılır. 31
MsSQL Veri Türleri binary: Maksimum 8000 byte boyutunda, sabit uzunlukta binary veri saklamak için kullanılır. varbinary: Değişken uzunlukta 8000 byte boyutunda binary değer saklamak için kullanılır. (max) parametresiyle tutacağı maksimum değer 2^31 byte a kadar yükseltilebilir. image: Önceki sql versiyonlarını desteklemek amacıyla kullanılmaktadır. Bu tip yerine varbinary (max) veri tipi tercih edilmelidir. xml: XML türünde hiyerarşik verileri saklamak için kullanılır. Bellekteki boyutu saklanan xml verisine göre değişir. 32
VTYS Yöneticisi (Admin) Sistem mühendisleri Tasarımcı (Designer) Uygulama yazılımcısı Son kullanıcılar VTYS Aktörleri 33
VTYS nin Sınıflandırılması Kullanıcı sayısına göre Tek kullanıcılı Çok kullanıcılı Fiziksel konumuna göre Merkezi Dağıtık Veri modeline göre Düz-dosya Hiyerarşik Ağ İlişkisel Nesneye Yönelik 34
Düz-Dosya Veri Tabanları Tek tablodan oluşan veritabanıdır. Tüm veriler bu tablo üzerinde tutulur. Tek bir tablo olduğu için 1 dosya içinde barındırılır. Tüm veriler tek tabloda tutulduğu için tutulacak veriye göre hem sütun sayısı çok fazla olur hem de aynı veriyi birçok kayıtta tekrar etmek (data duplication) gerekecektir. Bu sebeple veri boyutu çok fazla olabilir. Word, Excel bu tür programlara örnektir. 35
Hiyerarşik Veri Tabanları 1960 lar ve 1970 ler - Veri tabanları için kullanılan ilk modeldir. IBM IMS (Information Management System) Hiyerarşik veritabanları bilgileri bir ağaç yağısında saklarlar. 36
Hiyerarşik Veri Tabanları 37
Ağ Veri Tabanları Hiyerarşik veritabanları yetersiz kalınca 1960 ların sonunda verilerin ağaçların daha gelişmiş hali olan graflar şeklinde saklandığı yapı ortaya çıkmıştır. 38
İlişkisel Veri Tabanları 1970 li yıllarda IBM tarafından geliştirilmeye başlanmıştır. Edgar Frank Codd tarafından önerilmiştir. Veriler tablo şeklinde saklanır, birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur. Bir ilişki, bir tabloya, başka bir tablodaki kaydı bağlamamızı sağlar. Bu şekilde veriler daha az yer kaplar ve işlemlerimizi kolaylaştırır. Günümüzdeki hemen hemen tüm veri tabanı programları bu yapıdadır. 39
İlişkisel Veri Tabanları 40
Nesneye Yönelik Veri Tabanları 1990 lar Veriler nesne olarak modellenir ve oluşturulur. Nesneye yönelik veritabanı C++ gibi nesneye yönelik bir dille oluşturulan ve yine bu tarz bir dille kullanılan veri tabanı anlamına gelir. Günümüzde hem ilişkisel hem de nesneye-yönelik yaklaşımı birlikte kullanan VTYS nin yaygınlaştığı görülmektedir (ORDBMS). 41
Veri Tabanı Tasarlama 1. Nesneler tanımlanır: Kütüphane sistemi: kitap, üyeler, türler, ödünç alma işlemleri 2. Her nesne için bir tablo oluşturulur: kitap uyeler turler odunc_islemleri 42
Veri Tabanı Tasarlama 3. Her tablo için bir anahtar alan seçilir: Kitap tablosu: kitapno Üyeler tablosu: uyeno Türler tablosu: turno Ödünç İşlemleri tablosu: oduncno 43
Veri Tabanı Tasarlama 4. Nesnelerin her bir özelliği için tabloya sütun eklenir: Kitap tablosu: kitapno, ad, yil, yazar, ad, tur Üyeler tablosu: uyeno, adsoyad, dogumtarihi, eposta,tel Türler tablosu: turno, turadi Ödünç İşlemleri tablosu: oduncno, uyeno, kitapno, odunctarih, teslimtarih Kitap tablosu kitapno ad yil yazar tur 44
Veri Tabanı Tasarlama 5. Tablolar arasındaki ilişkiler tanımlanmalıdır. Örneğin; Üyeler tablosundaki uyeno - Ödünç İşlemleri tablosundaki uyeno Kitap tablosu: kitapno - Ödünç İşlemleri tablosundaki kitapno Türler tablosu turno ile Kitap tablosundaki tur 45
Structured Query Language - SQL (Yapısal Sorgu Dili) IBM, bir ilişkisel veritabanı yönetim sistemi geliştirmek amacıyla System/R adlı bir proje başlatır. Bu sistem için SEQUEL (Structured English Query Language) adında bir sorgu dili geliştirilmeye başlanmıştır. 1979 da tamamlanan bu proje sırasında geliştirilen dilin adı SQL (Structured Query Language) olarak değiştirilmiştir. 46
SQL Örnek SQL dilinde oluşturulmuş bir sorgu örneği; SELECT ADI, SOYADI, ADRES FROM PERSONEL WHERE BOLUMNO = 17 AND GOREV = 'Sekreter *** 17 numaralı bölümde çalışan sekreterlerin ad, soyad ve adres bilgilerinin istendiği sorgu 47
SQL Örnek SQL dilinde veri tabanındaki bir tabloya kayıt ekleme ve silme için oluşturulmuş sorgu örnekleri; INSERT INTO PERSONEL (ADI, SOYADI, ADRES, GOREV, BOLUMNO) VALUES ( Mustafa, KARA, Manisa, Müdür,18) DELETE PERSONEL WHERE ADI= Sare 48