btp 209 sistem analizi ve tasarımı

advertisement
BTP 209
SİSTEM ANALİZİ VE TASARIMI
VERİ TABANLARI VE VERİ TABANI
YÖNETİMİ
Dr. Önder EYECİOĞLU
2012
VERİ TABANI VE VT YÖNETİMİ
Veri Tabanı (DB), birbiriyle ilişkili verileri yönetmek ve sunmak için kullanılan
tablolar, formlar, veri erişim sayfaları, sorgular ve raporlardan oluşan
nesneler topluluğudur.
Veriler ve bunlar arasındaki ilişkileri de içerir. Veri hiyerarşisinin en üstündeki
yapıdır.
Veri yönetimi yaklaşımları
Verinin yönetilmesinde iki yaklaşımdan söz edilebilir.
i) Geleneksel Yaklaşım ii) Veritabanı (VT) Yaklaşımı
i.
Geleneksel yaklaşım:
Bu veri yönetimi yaklaşımı, dosya kökenlidir. Bu yaklaşımda her bir uygulama
kendi dosyalarıyla yürütülmektedir.
Veri yönetimi yaklaşımları
Geleneksel yaklaşımın dezavantajları. Veri tekrarlılığı, Dosyalar arası kopukluk,
Program/veri bağımlılığı
ii.) Veritabanı (VT) yaklaşımı:
Bu yaklaşımda, her bir uygulama, birleştirilmiş veri dosyalarını kullanmaktadır.
Yani veri dosyaları birleştirilmiştir. Bu yaklaşım, verinin birden fazla programca
kullanılmasına izin veren bir yaklaşımdır.
Veri yönetimi yaklaşımları
Veri yönetiminde, VT yaklaşımın kullanmak için ilave bir yazılım yani Veri
Tabanı Yönetim Sistemi gerekir.
VTYS, bir organizasyonun, veriyi merkezileştirmesine, onları etkin bir şekilde
idare etmesine ve saklanmış veriye uygulama programlarınca erişilmesine
olanak tanıyan bir yazılımdır. VTYS, uygulama programları ile fiziksel veri
tabanı arasında bir arayüz olarak görev yapmaktadır.
• Filemaker
• MySQL
• PostgreSQL
• Oracle
• Sybase
• MsSQL
• Berkeley
• Firebird
• Ms access
VERİ TABANLARI (DB)
VT Faydaları
• Verileri tekrarını ortadan kaldırır
• Kaynakların daha verimli kullanılmasını sağlar.
• Sorgulamaya olanak sağlar
• Veri bütünlüğü sağlar ve veriler arası ilişkiyi gösterir.
VT uygulamaları iki temel türe ayrılır.
• Düz-dosya VT
• İlişkisel (Relational- RDBMS)
1. Düz - Dosya VT
2. İlişkisel VT
İlişkisel veri tabanı, birbirinden farkı tablolara yerleştirilmiş olan verilerin
birbirleri ile belirli alanlara göre ilişkilendirilerek düzenlenen veri tabanlarıdır.
İlişkisel veri tabanı günümüzde en yaygın olarak kullanılan veri tabanı türüdür.
İlişkisel veri tabanlarında veriler tablolarda birbirleri ile ilişkili bir şekilde
saklanmaktadır.
İlişkisel VT ;
• Tablolar
• Formlar
• Veri Erişim sayfaları
• Sorgular
• Raporlar dan oluşur
İlişkisel veri tabanları birden fazla tablodan oluşabilir. Tablolar ise satır ve
sütunlardan oluşur. Tablolarda satır ve sütunların kesiştiği noktaya ise “hücre”
adı verilir. Tablo içerisindeki satırlar tablonun kayıtlarını oluşturur. Anahtar
alan ise tablonun tanımlayıcısı niteliğindedir.
2. İlişkisel VT
Tabloların özellikleri.
• Tablolar satır ve sütunlardan oluşur.
• Her sütunun alacağı isim birbirinden farklı olmalıdır.
• Her satır birbirinden farklı olmalıdır yani birbiri ile tamamen ayni olan iki
kayıt kullanılmamalıdır.
• Satırların ve sütunların sırasının nasıl olacağı önemli değildir.
• Hücrelerdeki veriler atomik olmalıdır.
2. İlişkisel VT
İlişkiler:
Varlıklar arasındaki bağlantıdır. Bir yada daha fazla varlık arasında olabilir.
2. İlişkisel VT
İlişkilerin Türleri:
• Birden - Bire
• Birden - Çoğa
• Çoktan - Bire
• Çoktan - Çoğa
1. Birden – bire İlişki:
2. İlişkisel VT
2. Birden – Çoğa İlişki:
3. Çoktan – Bire İlişki
4. Çoktan – Çoğa İlişki:
2. İlişkisel VT
Kısıtlamalar
Bir veri tabanında depolanan bilgiler arasında bir bütünlük olması yani
verilerin birbirleri ile uyumlu olması gerekmektedir. Böylelikle veriler arasında
kopukluk olmayacak, geçerli bir veritabanı oluşturulmuş olacaktır.
Bütünlük kısıtlamaları, veri tabanında depolanacak verileri kısıtlayan koşullar
olarak adlandırılır. Bir veritabanına kısıtlamalar uygulanarak sadece geçerli
verilerin depolanmasını sağlayabiliriz.
1.3.2.1. Anahtar Kısıtlamaları
Birincil anahtar(primary key) veya yabancı anahtar(foreign key) türlerinden
birisi seçilerek kısıtlamaların gerçekleştirilmesi sağlanmaktadır.
2. İlişkisel VT
İlişkisel yapıyı kullanan veritabanlarının diğer temel özellikleri:
• Sorgulama özelliği bir uygulama programı kullanılmaksızın bir üst düzey
dilin özel komutları ile veri tabanından bilgi çekilmesini sağlar.
• Raporlama özelliği sorgulama sonuçlarının sorgulama sonuçlarının ekran
görünüşlerini ya da rapor formatının düzenlenmesini sağlar.
NORMALİZASYON
• İlişkisel veri tabanları tasarlanırken verilerin gereksiz tekrarını, bilgilerin
kaybını önlemek amacıyla normalizasyon işlemi uygulanması gerekir.
Normalizasyon işlemi uygulanarak da ilişkilerin normal forma getirilmesi
sağlanır.
• İyi tasarlanmamış olan bir veri tabanında güncelleme, ekleme veya
silmeden kaynaklanan sapmalar nedeniyle birtakım kullanım zorlukları
meydana gelmektedir. Normalizasyon, veri tabanı tasarımında bu tür
sapmaların da ortadan kaldırılmasını sağlayan bir süreç olarak da
adlandırılabilir.
• Normalizasyon genel anlamda, veri tekrarını önlemek ve veri tutarlılığını
yükseltmek için verilerin tek bir tabloda toplanması yerine mantıksal
bütünlüğe sahip verilerden oluşan bir alt tablolar oluşturup bunları
anahtar sütunlar ile birbirleri ile ilişkilendirmektir.
• Normal formların 1NF, 2NF 3NF …. Gibi safhaları vardır. Her normal form
daha güçlü yani daha az veri tekrarı içerir.
• Temel ilişkisel VT da hedef 3NF dir.
NORMALİZASYON
Veri Fazlalığı:
Veri fazlalığı, mutlak veri fazlalığı ve gereksiz veri tekrarı olarak ortaya çıkar..
1. Mutlak Veri Fazlalığı:
NORMALİZASYON
İşlevsel Bağımlılık
• R bir ilişki şeması, X ve Y nitelik kümeleri ise R’nin alt kümeleri olsun (X ⊆
R, Y ⊆ R).
• Eğer X nitelik kümesinin değerleri Y nitelik kümesinin değerlerini
belirliyorsa (X’in her farklı değeri Y’nin belirli bir değerine karşılık
geliyorsa); “Y niteliği X niteliğine işlevsel bağımlıdır” denir ve “X → Y”
şeklinde gösterilir.
• X’ten bir nitelik çıkarıldığı halde bu bağımlılık hâlâ geçerli ise kısmi
bağımlılık (partial dependency) söz konusudur.
NORMALİZASYON
1NF
Normalleşmemiş Tablo
• Aynı tablodaki yinelenen grupları kaldırın.
• Her bir ilgili veri kümesi için ayrı bir tablo oluşturun.
• Her bir ilgili veri kümesini bir birincil anahtarla tanımlayın.
müşteri_no
şehir_kodu
şehir_adı
gönderi_no
miktar
1
34
İstanbul
1,2,3,4,6
300,200,400,200,100
2
6
Ankara
1,2
300,400
3
6
Ankara
2
200
4
34
İstanbul
2,4,5
200,300,400
şehir_kodu
şehir_adı
gönderi_no
miktar
1
34
İstanbul
1
300
1
34
İstanbul
2
200
1
34
İstanbul
3
400
1
34
İstanbul
4
200
1
34
İstanbul
6
100
2
6
Ankara
1
300
2
6
Ankara
2
400
3
6
Ankara
2
200
4
34
İstanbul
2
200
4
34
İstanbul
4
300
4
34
İstanbul
5
400
1NF Tablo
müşteri_no
NORMALİZASYON
1NF
1NF Özellikleri
• Tüm anahtar özellikler tanımlanmıştır
• Tabloda tekrarlanan gruplar yoktur Yani her satır ve sütunun kesiştiği
noktada sadece bir değer bulunmaktadır.
• Tüm özellikler birincil anahtara bağımlıdır
1NF Sorunları
• Satır ekleme sorunu:
• Satır Silme Sorunu:
• Güncelleştirme sorunu:
NORMALİZASYON
2NF
Veri tabanı tasarımı sırasında birinci normal formun neden olduğu birtakım
sorunları çözmek için 1NF daki tabloyu başka normal tablolara bölmemiz
gerekir. Tablolar bölünürken fonksiyonel bağımlılık göz önünde
bulundurulmalıdır.
• Birden çok kayıt için geçerli olan değer kümeleri için ayrı tablolar
oluşturun.
• Bu tabloları bir yabancı anahtarla ilişkilendirin.
• Kayıtlar bir tablonun birincil anahtarı (gerekirse bir bileşik anahtar) dışında
bir öğeye bağımlı olmamalıdır.
• İlişkisel tablonun her bir anahtar olmayan sütunu birincil anahtara kısmi
bağımlı değil, tam işlevsel bağımlı olmalıdır.
NORMALİZASYON
2NF
müşteri_no
şehir_kodu
şehir_adı
1
34
İstanbul
2
6
3
4
müşteri_no
gönderi_no
miktar
1
1
300
Ankara
1
2
200
6
Ankara
1
3
400
34
İstanbul
1
4
200
1
6
100
2
1
300
2
2
400
3
2
200
4
2
200
4
4
300
4
5
400
müşteriler
miktarlar
DAĞITIM(müşteri_no, şehir_kodu, şehir_adı, gönderi_no, miktar)
MÜŞTERİLER(müşteri_no, şehir_kodu, şehir_adı)
MİKTARLAR(müşteri_no, gönderi_no, miktar)
NORMALİZASYON
2NF
NORMALİZASYON
2NF
2NF Özellikleri
2NF’de,1NF’den farklı olarak tablolar tekrarlı verilerden arındırılmış olup,
anahtar olmayan tüm sütunlar, birincil anahtara tam işlevsel bağımlıdır.
2NF Sorunları
İkinci normal formda ekleme ve silme işlemleri sırasında birtakım sorunlarla
karşılaşılabilmektedir. Birinci normal formdaki güncelleme sorunu 2NF’ye
dönüştürme işlemi ile çözülmüştür.
• Satır ekleme sorunu:
Satır Silme Sorunu
NORMALİZASYON
3NF
• Kısmi işlevsel bağımlılıklar ortadan kaldırılarak birinci normal formdaki
sıkıntıları çözmüştük. İkinci normal form ile ortaya çıkan sıkıntıları
çözebilmek için ise nitelikler arasındaki geçişli fonksiyonel bağımlılıkları
ortadan kaldırmamız gerekmektedir. .
• Bir tablodaki veriden başka bir tabloda bulunan aynı veri üzerinden ilişkili
diğer bir veriye ulaşıp, ulaştığımız veriyi kullanarak üçüncü bir tabloda
farklı bir veriye erişebiliyorsak bu işlemi geçişli fonksiyonel bağımlılık
olarak adlandırırız.
NORMALİZASYON
3NF
miktarlar
şehirler
şehir_kodu
şehir_adı
müşteri_no
gönderi_no
miktar
6
Ankara
1
1
300
34
İstanbul
1
2
200
35
İzmir
1
3
400
1
4
200
1
6
100
müşteriler
müşteri_no
şehir_kodu
2
1
300
1
34
2
2
400
2
6
3
2
200
3
6
4
2
200
4
34
4
4
300
5
35
4
5
400
NORMALİZASYON
3NF
NORMALİZASYON
3NF
3NF Özellikleri
3NF özelliğindeki tablolar hem 2NF’nin özelliklerine sahip olmalı hem de
geçişli fonksiyonel bağımlılığı bulunmamalıdır.
ÖZEL DURUM: Üçüncü normal form teorik olarak istense de her zaman
uygulanabilir değildir. Bir Müşteriler tablonuz varsa ve tüm olası alanlar arası
bağımlılıkları kaldırmak isterseniz şehirler, posta kodları, satış temsilcileri,
müşteri sınıfları ve birden çok kayıtta yinelenebilecek tüm diğer öğeler için
ayrı tablolar oluşturmalısınız. Teorik olarak, normalleştirme yapılması
doğrudur. Ancak çok sayıda küçük tablo nedeniyle performans düşebilir veya
açık dosya ve bellek özellikleri yetersiz kalabilir.
Üçüncü normal formun yalnızca sık sık değişen verilere uygulanması daha
uygun olabilir. Bazı bağımlı alanlar kalacaksa, uygulamanızı kullanıcıdan
herhangi bir alan değiştiğinde tüm ilgili alanları doğrulamasını isteyecek
biçimde tasarlayın.
NORMALİZASYON
3NF
3NF Sorunları
• Tablodaki ilişki 3NF şeklinde olup birtakım sorunları mevcuttur. Bir öğrenci
birden çok ders alabileceği gibi, bir derse birden fazla öğretmen
girebilmektedir. Öğrenci birden çok ders alabileceği için, ÖğrNo anahtarı
Dersi belirleyemeyecektir. Aynı şekilde ÖğrNo anahtarı da Ders
Öğretmenini belirleyemeyecektir.
• 3 NF’de karşılaşılan sorunları önlemek için Boyce-Codd normal formunu
(BCNF) elde etmeye çalışmamız gerekir.
NORMALİZASYON
Boyce-Codd Normal Formu
• Her belirleyicinin bir anahtar oluşu halidir.
• Örnek olarak aşağıdaki ilişkiyi düşünelim:
ÖĞRENCİ(ÖğrNo, Bölüm, Danışman)
öğrenci
ÖğrNo
Bölüm
Danışman
123
Fizik
A. ERCAN
123
Kimya
M. AKINCI
456
Biyoloji
K. SÖNMEZ
789
Fizik
A. ERCAN
999
Kimya
B. ÖZKAN
NORMALİZASYON
1NF ?
2NF ?
3NF ?
Boyce-Codd Normal Formu
ÖğrNo
Bölüm
Danışman
123
Fizik
A. ERCAN
123
Kimya
M. AKINCI
456
Biyoloji
K. SÖNMEZ
789
Fizik
A. ERCAN
999
Kimya
B. ÖZKAN
EVET (bütün niteliklerin aldığı değerler atomik)
EVET (kısmi bağımlılık yok)
EVET (geçişli bağımlılık yok)
NORMALİZASYON
•
•
1.
2.
Boyce-Codd Normal Formu
ÖğrNo
Bölüm
Danışman
123
Fizik
A. ERCAN
123
Kimya
M. AKINCI
456
Biyoloji
K. SÖNMEZ
789
Fizik
A. ERCAN
999
Kimya
B. ÖZKAN
Her üç normal formu da sağlıyor. Sorun var mı?
EVET
456 numaralı öğrenci silinirse Biyoloji ve K.SÖNMEZ yok olacak
Bir öğrenci Matematik bölümüne kayıt olana kadar bu bölüm var
olmayacak.
NORMALİZASYON
Boyce-Codd Normal Formu
Çözüm: Belirleyicileri anahtar yap
• Birincil Anahtar:
– (ÖğrNo, Bölüm)
• Aday Anahtar:
– (ÖğrNo, Danışman)
• İşlevsel Bağımlılıklar:
– (ÖğrNo, Bölüm) → Danışman
– Danışman → Bölüm
Belirleyiciler
ÖğrNo
Bölüm
Danışman
123
Fizik
A. ERCAN
123
Kimya
M. AKINCI
456
Biyoloji
K. SÖNMEZ
789
Fizik
A. ERCAN
999
Kimya
B. ÖZKAN
NORMALİZASYON
Boyce-Codd Normal Formu
öğrenci_danışman
öğrenci
ÖğrNo
Bölüm
Danışman
123
Fizik
A. ERCAN
123
Kimya
M. AKINCI
456
Biyoloji
K. SÖNMEZ
789
Fizik
A. ERCAN
999
Kimya
B. ÖZKAN
ÖğrNo
Danışman
123
A. ERCAN
123
M. AKINCI
456
K. SÖNMEZ
789
A. ERCAN
999
B. ÖZKAN
danışman_bölüm
Danışman
Bölüm
A. ERCAN
Fizik
M. AKINCI
Kimya
K. SÖNMEZ
Biyoloji
B. ÖZKAN
Kimya
NORMALİZASYON
ÖZET
• NF: Normal olmayan form
• 1NF: Bütün alan değerleri atomik ise R 1NF’de
• 2NF: R 1NF’de ise ve anahtar olmayan tüm nitelikler anahtara tam bağımlı
ise R 2NF’de
• 3NF: R 2NF’de ise ve anahtar olmayan tüm nitelikler anahtara geçişsiz
bağımlı ise R 3NF’de
• BCNF: Her belirleyici bir aday anahtar ise R BCNF’de
Belirleyici: Başka bir niteliğin tam işlevsel bağımlı olduğu nitelik
NORMALİZASYON
Örnek
Ö.NO
Ö.AD
Ö.SOYAD
DERS_NO
DERS_ADI
VIZE
FINAL
H.NO
H.AD
H.SOYAD
2001001
Ahmet
Solmaz
202
Matematik 2
70
60
11
Özlem
UÇAR
2001001
Ahmet
Solmaz
203
Fizik 2
80
40
11
Özlem
UÇAR
2001001
Ahmet
Solmaz
204
Bilgisayar Mühendisliğine
Giriş 2
60
45
3
Aydın
CARUS
2001001
Ahmet
Solmaz
205
Atatürk İlkeleri ve İnkılap
Tarihi 2
90
95
9
Zeki
DURMUŞ
2001001
Ahmet
Solmaz
206
Türk Dili 2
70
75
12
Nebahat
YILDIZ
2001005
Seyhan
Gülmez
202
Matematik 2
80
95
11
Özlem
UÇAR
2001005
Seyhan
Gülmez
203
Fizik 2
80
70
11
Özlem
UÇAR
2001005
Seyhan
Gülmez
204
Bilgisayar Mühendisliğine
Giriş 2
60
70
3
Aydın
CARUS
2001002
Selim
Solmaz
702
Veri Tabanı Yönetimi
60
50
6
Altan
MESUT
2001003
Ahmet
Vardar
702
Veri Tabanı Yönetimi
60
60
6
Altan
MESUT
2001004
Sezai
Kantar
702
Veri Tabanı Yönetimi
65
55
6
Altan
MESUT
NORMALİZASYON
Örnek
• Verilen şema 1. Normal Formda (atomik değerler)
– OKUL (Ö.No, Ö.Ad, Ö.Soyad, Ders_No, Ders_Adı, Vize, Final, H.No,
H.Ad, H.Soyad)
• 2. NF’ye geçerken kısmi bağımlılıklar ortadan kaldırılır
– NOTLAR(Ö.No, Ders_No, Vize, Final)
– ÖĞRENCİLER(Ö.No, Ö.Ad, Ö.Soyad)
– DERSLER(Ders_No, Ders_Adı, H.No, H.Ad, H.Soyad)
• 3. NF’ye geçerken geçişli bağımlılıklar ortadan kaldırılır
– NOTLAR(Ö.No, Ders_No, Vize, Final)
– ÖĞRENCİLER(Ö.No, Ö.Ad, Ö.Soyad)
– DERSLER(Ders_No, Ders_Adı, H.No)
– HOCALAR(H.No, H.Ad, H.Soyad)
Download