Veritabanı Yönetim Sistemi
Doç. Dr. Yılmaz Gökşen
Hakan Aşan
Yönetim Bilişim Sistemleri
Veritabanın Tanımı
Veritabanı, sistem süreçlerinde oluşan verilerin daha
sonra ulaşılmak amacıyla elektronik ortamlarda, belli
kurallar ve birbirleriyle olan ilişkilerini koruyacak şekilde
saklanmasıyla oluşan kayıtlar topluluğudur.
Veritabanı, birbirleriyle ilişkili verilerin hızlı ve verimli bir
şekilde ulaşılmasına olanak verecek biçimde
saklanmasıyla oluşan kayıtlar topluluğudur.
Veritabanı Nedir?
www.m-w.com :
“a usually large collection of data
organized especially for rapid search
and retrieval (as by a computer.”
Veritabanı Nedir?
Belirli bir tarzda organize edilmiş bilgi
“koleksiyon”udur.
En az bir tablodan oluşmak zorundadır.
Veritabanı programını oluşturan tablolar
ise veri alanlarından oluşur (data field).
Veritabanı Nedir?
Kitaplıklar, uygulamalar ve yardımcı
programların birleşmesinden oluşur.
Verilerin saklanması ve yönetilmesi ile
ilgili konulardaki ayrıntılardan veritabanı
yöneticilerini kurtarır.
Kayıtların güncellenmesi ve kayıtlar
üzerinde araştırma yapılması da
mümkündür.
Veritabanı Tipleri
Hiyerarşik Veritabanı
İlişkisel Veritabanı (Relational Type)
Nesnesel Veritabanı
Hiyerarşik Veritabanı
VTP
Tablo 1
Tablo 2
Adı
Malzeme
Soyadı
Tutar
İlişkisel Veritabanı
1970: “A Relational Model of Data for
Large Shared Data Banks”
E. F. Codd
Relation mantığı
Tablolar -> Gerçek dünyadaki nesneler
İlişkisel Veritabanı
Birden fazla
tablodan
oluşabilir.
Birbirlerinin
yerine
kullanılabilir.
Tablolar satır ve
sütundan oluşur.
İlişkisel Veritabanı
Kullanıcının programı kullanırken ona
sık sık soracağı soruların neler olacağı
tespit edilir.
“Gerçekleştirilecek olan veritabanı
programından beklenilen neler ve bu
veritabanında hangi bilgilerin olması
gerekli?” sorusunun yanıtı bulunur.
İlişkisel Veritabanı
Tablolardaki kayıtlar matematiksel açıdan
tuple olarak tanımlanırlar.
Bir tuple, tanımlanmış bir veri tipi olan
bileşenlerden oluşan sıralı grup olarak
tanımlanır.
Tüm tuplelar aynı sayıda ve tipte
bileşenlerden oluşur.
{“10”, “Veritabanlarına Giriş”, “2002-06-12”}
{“11”, “Progress Veritabanı Sunucusu”, “2002-06-26”}
İlişkisel Veritabanı
Örnekteki her bir tuple da 3 bileşen
bulunmaktadır:
• Ankara’daki 2002 yılındaki kaçıncı
seminer olduğu (integer)
• Seminerin konusu (char)
• Seminerin tarihi (timestamp)
İlişkisel
veritabanlarında
bu
“kümeye” ya da tabloya eklenen tüm
kayıtlar aynı yapıda olmalıdırlar.
İlişkisel Veritabanı
{ “Veritabanlarına Giriş”, “2002-06-12”}
eksik bileşen
{“10”, “Veritabanlarına
“Devrim GÜNDÜZ”}
fazla bileşen
Giriş”,
“2002-06-12”
{“2002-06-12”, “Veritabanlarına Giriş”, “10”}
yanlış bileşen tipleri (yanlış sırada)
,
İlişkisel Veritabanı
tuple lardan oluşan bir tabloda aynı veriler
bulunmaz.(No duplicate record).
İlişkisel veritabanlarındaki herhangi bir tabloda birbiriyle
tamamen aynı iki kayıt (row or record) bulunamaz.
Gereksiz sınırlama?
Sorun : İki kez aynı ürünün siparişi
Çözüm : Tabloya eklenecek bir
bileşen
fazla
İlişkisel Veritabanı
Bir kayıttaki her bir bileşen “atomik”, yani
bir veri olmalıdır
Başka bir kayıt ya da diğer bileşenlerin listesi olamaz.
Tablodaki bileşenlerin veri tipleri de
üsttekilerle
ve
dolayısıyla
tablo
tanımlarındakilerle aynı olmalıdır.
Veritabanı
olmalıdır.
tarafından
desteklenen
veri
tiplerinden
biri
İlişkisel Veritabanı - Anahtarlar
key: Birbiriyle eş kayıtları ayırmak için
kullanılan bileşenlerdir.
primary key :Tablodaki bir kaydı diğer tüm
kayıtlardan ayırmak için kullanılan
bileşendir.
“unique” yapar.
Tüm ilişkisel veritabanlarında her bir tablo ya da relationda
mutlaka primary key olmalıdır.
Tablolar
Aynı konu ile ilgili olan bilgiler
belirlenmelidir.
Index olarak kullanılacak alanlar, zaman
icinde değiştirilebilecek şekilde belirlenir.
Olası olan en yüksek seviyede yapısal bir
şekilde tabloların oluşturulması
sağlanmalıdır.
Veri alanları
Aynı konu ile ilgili alanların kendi
tablolarında toplanması sağlanmalı
Veri tekrarı olmamalı
Gereksiz alanlar kullanılmamalı
Alanlar basite indirgenmelidir.
Veritabanından beklenenler
Her düzeyde rapor alınabilme özelliği
Doğru ve hızlı sonuç verebilme özelliği
Sorulabilecek bütün sorulara yanıt
verebilecek sorgulama dili
Bilgilerin ve sonuçların tutarlılığı
SQL Nedir?
SQL: Structured Query Language
Veritabanı dilidir.
Veri eklerken, silerken, güncellerken veya
sorgularken kullanılır.
ANSI ve ISO standardıdır.
Select, Delete, Update, Insert
Neden Veritabanı?
Gerçekten veritabanına gereksinmeniz var
mı?
Veritabanları, verilerin saklanması ve
yönetilmesi için kullanılmalıdır.
Küçük bilgiler için metin dosyaları yeterli
olabilir.
Amacınızın iyi belirlenmesi gerekir.
Neden Veritabanı?
Veri sadece bir konuyu içeren bir listenin
içinde mi?
Sorun karmaşık mı?
İstatiksel bir analiz mi yapmak
istiyorsunuz?
Neden Veritabanı?
Bir yönetim mi yapacaksınız?
Metinsel veritabanları
Kullanım kolaylığı
Neden Veritabanı?
Bilimsel formüllere gereksinmeniz olacak
mı?
Veriyi paylaşma gereksinmeniz olacak mı?
Veriyi webde sunacak mısınız?
Veritabanı Çeşitleri
Öncelikle ne yapılacağına karar
verilmelidir:
1 Bu veritabanı ile neler yapacaksınız? Küçük
bir şirket çalışanlarının özel bilgileri mi
tutulacak, yoksa büyük bir şirketin binlerce
müşterilerinin bilgileri mi?
2 Sitenizi günde kaç kişi ziyaret edecek?
Veritabanı Çeşitleri
3
Aynı anda kaç işlem yapılacak?
4
Güvenlik ne ölçüde olacak?
5
Verilerinizin güvenliği ne ölçüde olacak?
Veritabanı Çeşitleri
Yanlış bir kanı : “Paralı ürünler iyidir,
ücretsiz ürünler iyi değildir!”
Linux!
Bir veritabanının ücretsiz olup
olmamasından çok işinizi görüp
görmeyeceği önemlidir.
Veritabanı Çeşitleri
1 Microsoft
Access
2 MySQL
3 IBM DB2
4 Interbase
5 Informix
6
7
8
9
Progress
Microsoft SQL Server
PostgreSQL
Oracle
Veritabanı Yönetim Sistemleri
MySQL
PostgreSQL
Oracle
Sybase
MsSQL
Berkeley
Firebird
Ms access
MS 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.
MS Windows dışındaki sistemlerde
kullanılamaz.
“Transaction logging” özelliğine sahiptir,
ancak “trigger” ve “stored procedure”
özelliklerine sahip değildir.
MySQL
MySQL Inc.
Windows, Linux, OS/2,Solaris, AIX vb.
“trigger” ve “stored procedure”
özelliklerine sahiptir, ancak “Transaction
logging” özelliği bulunmamaktadır.
Tablo başına 4 TB veri depolayabilir.
IBM DB2
IBM
Access ve MySQL e göre daha
performanslı, ancak küçük işletmelere
göre daha yüksek maliyete sahiptir.
*nix ve Windows üzerinde çalışabilir.
Transaction logging”, “trigger” ve “stored
procedure” özelliklerine sahiptir.
Informix
Illustra
Ücretli ve güçlü bir veritabanıdır.
Orta ölçekli işletmelerin yükünü
kaldırabilecek kapasitededir.
1994’deki Postgres kodundan
geliştirilmeye başlanmıştır.
MS SQL Server
Microsoft
Dezavantajları:
Sadece Windows üzerinde çalışabilir.
Yüksek maliyet
Kullanım kolaylığı, güvenilirliği,işlem gücü
Tablo başına 4 TB veri.
“Transaction logging”, “trigger” ve “stored
procedure” özelliklerine sahiptir.
PostgreSQL
PostgreSQL Global Development Group
Linux, Unix, BSD, Windows, AIX vb.
Ücretsiz, akademik bir veritabanı
Çok güçlü işlem yapısı
Veri güvenliği ön planda
Tablo başına 64 TB veri tutabilme özelliği
“Transaction”, “Inheritance” “trigger” ve
“stored procedure” özelliklerine sahiptir.
Oracle
Oracle, Inc.
Dünyanın en güçlü ve güvenilir veritabanı
olarak gösterilmektedir.
Çok yüksek maliyet
Windows, Unix, Linux, ...
Oracle, sınırsız sayıda tabloları
desteklemektedir.
Hangi veritabanını seçmeli?
Küçük yoğunlukta trafik: Access
Web uygulamaları için: MySQL
Daha büyük ve orta ölçekli uygulamalar
içinse, Progress, MS SQL ya da Linux
üzerinde PostgreSQL .
Oracle ise çok yüksek güvenilirlik ve işlem
gücü gerektirdiğinde tercih edilen bir
veritabanı sunucusudur.
Veritabanı Kavramları
Tablolar
Sütunlar
Satırlar
Değerler
Anahtarlar
Şemalar
İlişkiler
Tablolar
Tc_Kimlik
Ad
Soyad
E_Posta
Telefon
12342378891
Ejder
Ayçin
ejder.aycin@deu.edu.tr
02324208994
23421124534
Hakan
Aşan
hakan.asan@hotmail.com
02324208923
23474367832
Talip
Arsu
talip.arsu@gmail.com
05555308998
98324534244
Melih
Durmuş
melih@boyamak.com.tr
05332274392
•Veritabanlarının temelini oluşturur.
•Satır ve sütunlardan oluşur.
Sütunlar
Tc_Kimlik
Ad
Soyad
E_Posta
Telefon
12342378891
Ejder
Ayçin
ejder.aycin@deu.edu.tr
02324208994
23421124534
Hakan
Aşan
hakan.asan@hotmail.com
02324208923
23474367832
Talip
Arsu
talip.arsu@gmail.com
05555308998
98324534244
Melih
Durmuş
melih@boyamak.com.tr
05332274392
•Tabloların her bir özelliğini tutar.
•Her sütunun belli bir tipi vardır.( Metin, Tarih,…)
Satırlar
Tc_Kimlik
Ad
Soyad
E_Posta
Telefon
12342378891
Ejder
Ayçin
ejder.aycin@deu.edu.tr
02324208994
23421124534
Hakan
Aşan
hakan.asan@hotmail.com
02324208923
23474367832
Talip
Arsu
talip.arsu@gmail.com
05555308998
98324534244
Melih
Durmuş
melih@boyamak.com.tr
05332274392
•Her satır bir kaydı temsil eder.
Değerler
Tc_Kimlik
Ad
Soyad
E_Posta
Telefon
12342378891
Ejder
Ayçin
ejder.aycin@deu.edu.tr
02324208994
23421124534
Hakan
Aşan
hakan.asan@hotmail.com
02324208923
23474367832
Talip
Arsu
talip.arsu@gmail.com
05555308998
98324534244
Melih
Durmuş
melih@boyamak.com.tr
05332274392
•Girilen her bir veri değere karşılık gelir.
Anahtarlar
Tc_Kimlik
Ad
Soyad
E_Posta
Telefon
12342378891
Ejder
Ayçin
ejder.aycin@deu.edu.tr
02324208994
23421124534
Hakan
Aşan
hakan.asan@hotmail.com
02324208923
23474367832
Talip
Arsu
talip.arsu@gmail.com
05555308998
98324534244
Melih
Durmuş
melih@boyamak.com.tr
05332274392
•Anahtarlar satırları (kayıtları) tanımlayan özel sütunlardır
(alanlardır).
Şemalar
•Veritabanında tablonun tasarımına şema adı verilir.
•Şema veri
kullanılabilir.
içermez;
veritabanının
taslağı
olarak
•Şema; tabloları, sütunları ve her tablonun birincil
anahtarları ile birlikte varsa yabancı anahtarları da gösterir.
İlişkiler
Tc_Kimlik
Ad
Soyad
E_Posta
Telefon
12342378891
Ejder
Ayçin
ejder.aycin@deu.edu.tr
02324208994
23421124534
Hakan
Aşan
hakan.asan@hotmail.com
02324208923
23474367832
Talip
Arsu
talip.arsu@gmail.com
05555308998
98324534244
Melih
Durmuş
melih@boyamak.com.tr
05332274392
Sinav_No
Tc_Kimlik
Sinav_Notu
1
12342378891
80
2
23421124534
90
3
23474367832
85
4
12342378891
75
İlişki Tipleri
•Üç temel ilişki tipi vardır:
• Bire – bir: İlişki içinde her şeyden bir tane olduğunu gösterir.
• Birden – çoğa: Bir tablodaki bir satır başka bir tablodaki birden
fazla satırla bağlantılıdır.
• Çoktan – çoğa: Bir tablodaki birden fazla satır başka bir
tablodaki birden fazla satırla bağlantılıdır.
Sql Veritabanı Dili
SELECT KOMUTU
Select * from tablo_adi
UPDATE KOMUTU
Update tablo_adi set tablo_sütun=değer
INSERT KOMUTU
Insert into tablo_adi value (değer)
DELETE KOMUTU
Delete from tablo_adi
Sql Veritabanı Dili ( Örnek)
SELECT KOMUTU
Select * from calisanlar
Tc_Kimlik
Ad
Soyad
E_Posta
Calistigi_Saat
12342378891
Ejder
Ayçin
ejder.aycin@deu.edu.tr
40
23421124534
Hakan
Aşan
hakan.asan@hotmail.com
35
23474367832
Talip
Arsu
talip.arsu@gmail.com
24
98324534244
Melih
Durmuş
melih@boyamak.com.tr
60
Select * from calisanlar where ad=‘hakan’
Tc_Kimlik
Ad
Soyad
E_Posta
Calistigi_Saat
23421124534
Hakan
Aşan
hakan.asan@hotmail.com
35
Sql Veritabanı Dili ( Örnek_2)
SELECT KOMUTU
Select * from calisanlar where Calistigi_Saat >=40
Tc_Kimlik
Ad
Soyad
E_Posta
Calistigi_Saat
12342378891
Ejder
Ayçin
ejder.aycin@deu.edu.tr
40
98324534244
Melih
Durmuş
melih@boyamak.com.tr
60
Select * from calisanlar
where Calistigi_Saat >24 and Calistigi_Saat <40
Tc_Kimlik
Ad
Soyad
E_Posta
Calistigi_Saat
23421124534
Hakan
Aşan
hakan.asan@hotmail.com
35
23474367832
Talip
Arsu
talip.arsu@gmail.com
24
Sql Veritabanı Dili ( Örnek_3)
SELECT KOMUTU
Select * from calisanlar
where ad=‘hakan’ or Calistigi_Saat >40
Tc_Kimlik
Ad
Soyad
E_Posta
Calistigi_Saat
23421124534
Hakan
Aşan
hakan.asan@hotmail.com
35
98324534244
Melih
Durmuş
melih@boyamak.com.tr
60
Select * from calisanlar
where soyad=‘Aşan’ and Calistigi_Saat >40
Tc_Kimlik
Ad
Soyad
E_Posta
Calistigi_Saat
Sql Veritabanı Dili ( Örnek_4)
UPDATE KOMUTU
Update calisanlar set ad=‘Mehmet’
Tc_Kimlik
Ad
Soyad
E_Posta
Calistigi_Saat
12342378891
Mehmet
Ayçin
ejder.aycin@deu.edu.tr
40
23421124534
Mehmet
Aşan
hakan.asan@hotmail.com
35
23474367832
Mehmet
Arsu
talip.arsu@gmail.com
24
98324534244
Mehmet
Durmuş
melih@boyamak.com.tr
60
Update calisanlar set ad=‘Mehmet’
where Tc_Kimlik=12342378891
Tc_Kimlik
Ad
Soyad
E_Posta
Calistigi_Saat
12342378891
Mehmet
Ayçin
ejder.aycin@deu.edu.tr
40
23421124534
Hakan
Aşan
hakan.asan@hotmail.com
35
23474367832
Talip
Arsu
talip.arsu@gmail.com
24
98324534244
Melih
Durmuş
melih@boyamak.com.tr
60
Sql Veritabanı Dili ( Örnek_4)
INSERT KOMUTU
Insert into calisanlar
values(12863403423,’Begüm’,’Demirer’,’b@hotmail.com’,67)
Tc_Kimlik
Ad
Soyad
E_Posta
Calistigi_Saat
12342378891
Ejder
Ayçin
ejder.aycin@deu.edu.tr
40
23421124534
Hakan
Aşan
hakan.asan@hotmail.com
35
23474367832
Talip
Arsu
talip.arsu@gmail.com
24
98324534244
Melih
Durmuş
melih@boyamak.com.tr
60
12863403423
Begüm
Demirer
b@hotmail.com
67
Sql Veritabanı Dili ( Örnek_4)
DELETE KOMUTU
Delete from calisanlar
Tc_Kimlik
Ad
Soyad
E_Posta
Calistigi_Saat
Delete from calisanlar
where Calistigi_Saat>35
Tc_Kimlik
Ad
Soyad
E_Posta
Calistigi_Saat
23421124534
Hakan
Aşan
hakan.asan@hotmail.com
35
23474367832
Talip
Arsu
talip.arsu@gmail.com
24