IS 503 Database Systems and Applications

advertisement
BBY 309
Veri Tabanı Yönetim
Sistemleri
Güven KÖSE
E-posta :
gkose@hacettepe.edu.tr
Web
.../~gkose
:
Değerlendirme Kriterleri
• Ara sınav
: %35
• Final sınavı : %60
• Devam
: %5
Ders Kitabı ve Yardımcı Kaynak
Database Processing: Fundamentals,
Design, and Implementation, 10/E,
David Kroenke
Fundamentals of Database Systems,
5/E, Ramez Elmasri, Shamkant B.
Navathe
Ders İçeriği
•
Giriş : VT, VTYS nedir, neden ihitiyaç var, ne
getiriyor, nerelerde kullanılır, nasıl oluşturulur.
•
Varlık-İlişki Veri Model (ER Model)
•
Veri Tabanı Tasarımı
•
SQL (Structured Query Language)
•
VT Standartları: ODBC, OLE DB, ADO, XML
•
VTYS kullanan bir uygulama geliştirilmesi.
VTYS Giriş
Veriden, verinin bilgisayarda saklanmasına giden yol
Veri (Data)
Giriş (Input)
Bilgi (Information)
İşleme (Process)
Veri / Bilgi
Saklama (Storage)
Çıkış (Output)
Veri hiyerarşisi
Bit (0,1)
Byte / Karakter
(01001100)
Alanlar (Fields)
Kayıtlar
(Records)
Ad, Soyad, Numara…..
Güven KÖSE 1234
Dosyalar
(Files)
Güven KÖSE 1234
Ali
KAYA 4356
…..
…..
….
Bilgisayarda Dosya Organizasyonu
FAT (File Allocation Table)
İşletim Sistemi
(Operating System)
dosya1
dosya2
……..
dosyaN
adres1
adres2
……..
adresN
Sabit Disk (Hard Disc)
Dosyalar (Files)
Kullanıcı (User)
Uygulama Programları
(Applications)
Dosya Organizasyonu İle İlgili Problemler
•
Lakeview firması yüklenici firmalarla bazı işler yapıyor ve onlara bazı ekipmanlar kiralıyor.
•
İş yapılan firma bilgileri ve herbir kiralama ile ilgili olarak işin adı, yüklenici firma, telefon,
ekipman türü, ekipman numarası, günlük kira bedeli, başlangıç ve bitiş tarihleri, toplam süre ve
toplam ücret bilgileri saklanmak isteniyor.
Dosya Organizasyonu İle İlgili Problemler
•
Eğer yüklenici firma telefon numarasını değiştirirse ne olur?
•
Listenin doğru bilgileri yansıtması için tüm kayıtların değiştirilmesi gerekir.
•
Eğer sadece ilk kayıt güncellenirse liste tutarsız (inconsistent) olur.
•
Eğer liste bütün bir yıla ait olsaydı binlerce kayıt olabilirdi, bu durumda ne yapılacak?
•
Bütün listenin teker teker güncellenmesi hem zaman alıcı hem de hata yapmaya açık
bir iş olurdu.
Dosya Organizasyonu İle İlgili Problemler
•
Benzer bir problem listeden bir kayıt silineceği zaman da yaşanır.
•
Örneğin RB Partnership firması kiralamadan vazgeçti, ne olacak?
•
İlgili kayıt listeden silinecek.
•
Kiralama bilgileri ile beraber firmanın bütün bilgileri de kayboldu (yüklenicinin çalıştığı
proje, telefon cs.).
Dosya Organizasyonu İle İlgili Problemler
•
Firmadan hiçbir şey kiralamayan ancak firmayla iş yapacak bir şirket için iş ve telefon gibi
bilgiler kaydedilmek istenirse ne olacak?
•
KH yerine yanlışlıkla KA yazılırsa ne olacak, bu yeni bir firma mı yok sa bir yazım yanlışı mı?
•
4. ve 8. kayıtlarda kira bedelleri $650 ve $750 bu bir hata mı yoksa aynı ürün için farklı firmalara
farklı bedeller mi belirleniyor?
•
Eğer farklı firmalara farklı bedeller belirleniyorsa bütün kiralama işlemlerinde aynısının yapılması
gerekir.
Dosya Organizasyonu İle İlgili Problemler
•
Lakeview firması aynı listeye pek çok çalışanın erişip düzenleme yapabilmesini isterse ne
olacak?
•
Liste merkezi tek bir yerde mi tutulacak kullanıcılara kopyası mı dağıtılacak?
•
Kullanıcılardan birisi bir alanı değiştirirse ne olacak?
•
Aynı alan bütün kullanıcılar tarafından güncellenmek zorunda, eş güdüm nasıl olacak?
•
Liste merkezi bir yerde tutulursa listeye erişim hakları nasıl belirlenecek? Her kullanıcının her
işlemi yapmasına izin verilemez.
•
Bu tür listelerle (ya da dosyalarla) ilgili daha pek çok problem sayılabilir.
Uygun Çözüm Nedir?
•
Uygun çözüm listenin, işin mantığına uygun bir biçimde, alanlara
bölünerek yeniden organize edilmesidir.
•
Elimizdeki listede en büyük problem farklı konuların (iş bilgileri,
yüklenici bilgileri, teçhizat bilgiler, kiralama bilgiler) aynı yerde
gösterilmiş olmasıydı.
•
Herbir konu için bir liste (tablo) oluşturularak bu problemi çözebiliriz.
Uygun Çözüm Nedir?
•
Eğer bir telefon değişirse sadece Contractor tablosundaki ilgili alan güncellenir.
•
Eğer bir kiralama işi silinecekse sadece Rental tablosundan bir kayıt silinir.
•
Eğer yeni bir müşteri eklenecekse Contractor tablosuna yeni bir kayıt eklenir.
•
Aynı ekipman için farklı günlük kiralama bedelleri ne olacak?
JOB
RENTAL
CONTRACTOR
Start Date
NAME
Contractor
Sea View Bldg
Village Square
6/19/2002
3
6/24/2002
6/24/2002
1
232.492.3383
6/17/2002
7/3/2002
17
508.555.3233
7/1/2002
7/3/2002
3
213.444.1181
Comstock, Inc.
RB Partnership
6/15/2002
EQUIPMENT
Equipment Type
Equipment Number
Daily Rate
Back Hoe
10400
750
Medium Crane
335
350
Back Hoe
10020
650
Scaffolding
Days
6/17/2002
KH Services
Highland Center
Long Plaza
End Date
Phone
135
0
7/1/2002
7/8/2002
8
7/8/2002
7/11/2002
4
Bu çözümde bütün tablolar birbirinden bağımsız aralarındaki ilişki nasıl kurulacak?
JOB
ID
CONTRACTOR
NAME
ID
Phone
City
KH Services
213.444.1181
New York
2
Comstock, Inc.
232.492.3383
New York
3
RB Partnership
508.555.3233
Highlands
1
Sea View Bldg
2
Highland Center
1
3
Long Plaza
4
Village Square
Contractor
RENTAL
EQUIPMENT
ID
Equipment
Type
Equipment
Number
Daily
Rate
ID
JobID
ContID
EqpID
Start Date
End Date
Days
1
1
1
1
6/17/2002
6/19/2002
3
2
2
2
1
6/24/2002
6/24/2002
1
1
Back Hoe
10400
750
3
1
1
2
6/17/2002
7/3/2002
17
2
Medium
Crane
335
350
4
3
1
3
7/1/2002
7/3/2002
3
5
1
1
4
6/15/2002
3
Back Hoe
10020
650
6
2
2
2
7/1/2002
7/8/2002
8
4
Scaffolding
7
4
3
3
7/8/2002
7/11/2002
4
135
0
Foreign Key
Key
Veri Tabanı (Database) nedir?
Bir veri tabanı, mantıksal olarak ilişkili verilerin tutulduğu
derlemdir.
• Gerçek dünyaya ait bazı görüntüleri yansıtır.
• Veri tabanı içerisinde tutulan veriler mantıksal olarak
uyumludur.
• Özel bir amaç için tasarlanır ve oluşturulurlar.
• Herhangi bir boyutta ve değişen karmaşıklıkta olabilirler.
Veri Tabanı Yönetim Sistemi (VTYS)
Nedir?
Bir VTYS (Database Management Systems - DBMS), veri tabanı
tanımlamak, yaratmak, yaşatmak ve veri tabanına denetimli
erişim sağlamak için kullanılan yazılım sistemidir.
• Bir veri tabanı, ilgili veriler için veri türlerinin, yapılarının ve
kısıtlamalarının belirlenmesi ile tanımlanır.
• Bir veri tabanına veriler girilerek yaratılır.
• Veri tabanı yaratıldıktan sonra sorgulama, veriye erişim,
güncelleme ve rapor yaratma gibi işlevler gerçekleştirilebilir.
Dosya Sistemlerindeki Sorunlar
• Veriler birbirinden ayrı ve izole edilmiş
• Çoğunlukla veri tekrarı var
• Uygulama programına bağımlı
• Birbirine uymayan (incompatible) veri dosyaları
• Anlaşılması zor
Niçin Veri Tabanı Kullanalım?
• Bir veri tabanının amacı kişilere ve örgütlere nesnelerle ilgili
kayıt tutmada yardımcı olmaktır.
• Veri depolamak için liste kullanmanın getirdiği sorunlar
–Veri tutarsızlıkları
–Veri mahremiyeti/gizliliği:Bölümler bazı verilerini paylaşmak
isteyebilirler, ama tümünü değil
• Veri tabanları tek konulu tablolarda verileri depolar
• Tablolar ana ve yabancı anahtarlar aracılığıyla ilişkilendirilir
• VTYS’de veri bütünleşik, tekrar azaltılmış, programdan
bağımsız ve verinin anlaşılması kolay.
Veri Tabanı kendi kendini tanımlar
• Bir veri tabanı veri sözlüğü içerir
• Veri sözlüğü veri hakkında veridir (metadata)
• Veri sözlüğü veri tabanında depolanan bilginin yapısını ve
biçimini tanımlar
Veri Tabanı Sistemi
Users/Programs
DATABASE
SYSTEM
Application Programs /Queries
DBMS Software
Software to Process
Queries/Programs
Software to Access Stored Data
Stored Database
Definition (Meta Data)
Stored Database
Veri Tabanı Sistemi
Veri Tabanı Uygulaması (Database Application)
İşlevler:
–Form yaratmak ve işlemek
–Soru yaratmak ve iletmek
–Rapor yaratmak ve işlemek
–Uygulama mantığınıyürütmek
–Uygulamayıdenetlemek
Veri Tabanı Yönetim Sistemi (DBMS)
İşlevler:
–Veri tabanını, tabloları ve destek yapıları yaratmak
–Veri tabanı verilerini okumak ve güncellemek
–Veri tabanı yapılarını yaşatmak
–Kuralları uygulamaya zorlamak
–Tutarlılığı denetlemek
–Güvenliği sağlamak
–Veri tabanını yedeklemek ve gerektiğinde eski haline döndürmek
Örnek: Oracle, DB2, Microsoft Access, SQL Server
Veri Tabanı (Database)
Bileşenler:
–Kullanıcı verileri
–Metadata: veri tabanının yapısı hakkında veriler
–Dizinler ve ilgili yapılar
–Depolanmış yordamlar (stored procedures):veri tabanında
depolanmış program modülleri
–Tetikleyiciler (triggers):belli bir veri etkinliği meydana geldiğinde
yürütülen yordamlar
–Uygulama metadatası:formlar yada raporlar gibi uygulama ögelerini
tanımlayan veriler
Güncellenmiş Veri Hiyerarşisi
Bit (0,1)
Byte / Karakter
(01001100)
Alanlar (Fields)
Veri Tabanı
(Meta Data, Tablolar,
Dizinler, ...)
Kayıtlar
(Records)
Dosyalar
(Files)
Veri Tabanı Türleri
Kişisel veri tabanı
–1 kullanıcı; 10 MB civarı
Örneğin, bağımsız olarak şirketlere program yazan bir kullanıcı verileri.
Çalışma grubu veri tabanı
– 25 kullanıcı; 100 MB civarı
Örneğin, alt yüklenici olarak büyük şirketlere iş yapan küçük çaplı bir şirket.
Örgütsel veri tabanı
–Yüzbinlerce kullanıcı
–1 Trilyonbayt, muhtemelen birçok veri tabanı
Örneğin, büyük çaplı projeler geliştiren bir şirket.
Veri Tabanı Sistemi Geliştirme
Uygulama programına paralel olarak 3 aşama
• Gereksinim Aşaması
• Tasarım Aşaması
• Gerçekleştirim Aşaması
• Güncelleme
Veri Tabanı Sistemi Geliştirme
Gereksinim Aşaması: Bir veri modeli geliştirilir
- Veri modeli veri tabanı yapısının mantıksal gösterimidir
- Gerekli alanlar ve alanlar için veri türleri (phone / 11 karakter,
start date / tarih v.b)
- Alanlar için max uzunlular (name / max 50 karakter v.b.)
- Alanlar için kısıtlamalar (sayısal bir alana karakter girilemez
gibi)
- Tablolar arasındaki ilişkiler belirlenir.
- Sonraki aşamaların hepsi veri modeline bağımlı olduğu için
modellemedeki yanlış tüm aşamaları etkileri
- Modelleme genellikle ER (Entity Relationship) şemaları ile
gerçekleştirilir.
Veri Tabanı Sistemi Geliştirme
Gereksinim Aşaması: Örnek bir ER şeması
Veri Tabanı Sistemi Geliştirme
Tasarım Aşaması: Veri modeli tablolara ve ilişkilere dönüştürülür
Veri Tabanı Sistemi Geliştirme
Gerçekleştirim Aşaması:
–Tablolar, ilişkiler ve sınırlılıklar yaratılır
–Depolanmış yordamlar ve tetikleyiciler yazılır
–Veri tabanına veri girilir ve sistem denenir
–Bu aşamadan sonra gerçekleştirilen veri tabanı sistemi ile
uygulama programı arasındaki gerekli bağlantılar gerçekleştirilir.
• Uygulama programında VT’ye bağlantı (ODBC, ADO v.b.)
• VT’nin uygulama programı içerisinden kontrolü (SQL)
Download