Veritabanı Yönetim Sistemi

advertisement
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
[email protected]
02324208994
23421124534
Hakan
Aşan
[email protected]
02324208923
23474367832
Talip
Arsu
[email protected]
05555308998
98324534244
Melih
Durmuş
[email protected]
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
[email protected]
02324208994
23421124534
Hakan
Aşan
[email protected]
02324208923
23474367832
Talip
Arsu
[email protected]
05555308998
98324534244
Melih
Durmuş
[email protected]
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
[email protected]
02324208994
23421124534
Hakan
Aşan
[email protected]
02324208923
23474367832
Talip
Arsu
[email protected]
05555308998
98324534244
Melih
Durmuş
[email protected]
05332274392
•Her satır bir kaydı temsil eder.
Değerler
Tc_Kimlik
Ad
Soyad
E_Posta
Telefon
12342378891
Ejder
Ayçin
[email protected]
02324208994
23421124534
Hakan
Aşan
[email protected]
02324208923
23474367832
Talip
Arsu
[email protected]
05555308998
98324534244
Melih
Durmuş
[email protected]
05332274392
•Girilen her bir veri değere karşılık gelir.
Anahtarlar
Tc_Kimlik
Ad
Soyad
E_Posta
Telefon
12342378891
Ejder
Ayçin
[email protected]
02324208994
23421124534
Hakan
Aşan
[email protected]
02324208923
23474367832
Talip
Arsu
[email protected]
05555308998
98324534244
Melih
Durmuş
[email protected]
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
[email protected]
02324208994
23421124534
Hakan
Aşan
[email protected]
02324208923
23474367832
Talip
Arsu
[email protected]
05555308998
98324534244
Melih
Durmuş
[email protected]
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
[email protected]
40
23421124534
Hakan
Aşan
[email protected]
35
23474367832
Talip
Arsu
[email protected]
24
98324534244
Melih
Durmuş
[email protected]
60
 Select * from calisanlar where ad=‘hakan’
Tc_Kimlik
Ad
Soyad
E_Posta
Calistigi_Saat
23421124534
Hakan
Aşan
[email protected]
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
[email protected]
40
98324534244
Melih
Durmuş
[email protected]
60
 Select * from calisanlar
where Calistigi_Saat >24 and Calistigi_Saat <40
Tc_Kimlik
Ad
Soyad
E_Posta
Calistigi_Saat
23421124534
Hakan
Aşan
[email protected]
35
23474367832
Talip
Arsu
[email protected]
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
[email protected]
35
98324534244
Melih
Durmuş
[email protected]
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
[email protected]
40
23421124534
Mehmet
Aşan
[email protected]
35
23474367832
Mehmet
Arsu
[email protected]
24
98324534244
Mehmet
Durmuş
[email protected]
60
 Update calisanlar set ad=‘Mehmet’
where Tc_Kimlik=12342378891
Tc_Kimlik
Ad
Soyad
E_Posta
Calistigi_Saat
12342378891
Mehmet
Ayçin
[email protected]
40
23421124534
Hakan
Aşan
[email protected]
35
23474367832
Talip
Arsu
[email protected]
24
98324534244
Melih
Durmuş
[email protected]
60
Sql Veritabanı Dili ( Örnek_4)
 INSERT KOMUTU
 Insert into calisanlar
values(12863403423,’Begüm’,’Demirer’,’[email protected]’,67)
Tc_Kimlik
Ad
Soyad
E_Posta
Calistigi_Saat
12342378891
Ejder
Ayçin
[email protected]
40
23421124534
Hakan
Aşan
[email protected]
35
23474367832
Talip
Arsu
[email protected]
24
98324534244
Melih
Durmuş
[email protected]
60
12863403423
Begüm
Demirer
[email protected]
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
[email protected]
35
23474367832
Talip
Arsu
[email protected]
24
Download