Upload
others
View
5
Download
0
Embed Size (px)
Citation preview
7. Hafta – VERİ TABANI
YÖNETİM SİSTEMLERİ
Dr. Öğr. Üyesi Nesibe YALÇIN
https://nesibeyalcin.wordpress.com/bsm102/
BARTIN ÜNİVERSİTESİ
MÜHENDİSLİK FAKÜLTESİ
BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ
Veri Tabanı
2
3
• 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ı kavramı ilk olarak 1980’li yıllar
Veri Tabanı
4
Neden Veri Tabanı??
5
• 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.
Neden Veri Tabanı??
6
• 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ı
Avantajları
7
• 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
Avantajları
8
• 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
Veri Tabanı Örnekleri
9
Veri Tabanı Yapısı
Veri tabanı
Tablo Tablo Tablo Tablo Tablo
Alan 1 Alan 2 Alan3 Alan4
1
2
3
• Tablo • Kayıt • Nitelik • Anahtar nitelik
10
• 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.
Tablo
11
• Öğ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.
Tablo - Örnek
Alan
Ogr_no Ad_soyad d_tarih d_yeri e-mail
1 Atiye Aydın 01.11.1999 Konya [email protected]
2 Asya Özdemir 05.12.1999 Giresun [email protected]
3 Sedat Pekin 16.02.2000 Ardahan [email protected]
4 Metin Ertürk 11.04.1998 Ankara [email protected]
5 Zeynep Nur Aker 02.01.2000 Malatya [email protected]
6 Resmiye Bahar 22.02.2001 Yozgat [email protected]
Alan
Kayıt
Tablo - Örnek
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
17
Veri Tabanı Yönetim
Sistemleri (VTYS)
18
• 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.
Veri Tabanı Yönetim Sistemleri (VTYS)
19
Veri Tabanı Yönetim Sistemleri (VTYS)
20
• 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.
Access
21
• 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.
MySQL
22
• IBM tarafından geliştirilmiştir.
• Windows/Unix/Linux,… işletim sistemlerinde çalışır.
• “Transaction logging” , “trigger” ve “stored procedure”
özelliklerine sahiptir.
IBM DB2
23
• 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.
Informix
24
• Bir orta ve büyük ölçekli VTYS’ dir.
• Unix, Windows, .. işletim sistemlerinde çalışır.
• SAP ile uyumlu.
• Ülkemizde daha çok bankacılık ve kamusal alanlarda tercih
edilmektedir.
Sybase
25
• 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.
SQL Server
26
• 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..!
Oracle
27
VTYS Bileşenleri
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
30
• 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.
MsSQL– Veri Türleri
31
• 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.
MsSQL– Veri Türleri
32
• 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.
33
• VTYS Yöneticisi (Admin)
• Sistem mühendisleri • Tasarımcı (Designer)
• Uygulama yazılımcısı
• Son kullanıcılar
VTYS Aktörleri
34
• Kullanıcı sayısına göre Tek kullanıcılı Çok kullanıcılı
• Veri modeline göre Düz-dosya Hiyerarşik Ağ İlişkisel Nesneye Yönelik
• Fiziksel konumuna göre Merkezi Dağıtık
VTYS’ nin Sınıflandırılması
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
44
kitapno ad yil yazar tur
Kitap tablosu
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