NORMAL*ZASYON

advertisement
VERİ TABANI
TASARIMI ve
NORMALİZASYONU
Veri Tabanı Tasarımı
1. Nesneler Tanımlanır: Nesne, çeşitli özellikleri bulunan bir varlıktır.
Herhangi bir proje de öncelikle nesneler tanımlanır. Birkaç proje için nesnelere örnek
verilecek olunursa,
Kütüphane sistemi : Kitap, üyeler, türler, ödünç hareketleri
E-ticaret sistemi : Ürünler, müşteriler, siparişler, teslimat, fatura bilgileri, üreticiler,
tedarikçiler, dağıtıcılar...
Futbol Ligi : Takımlar, sahalar, oyuncular, fikstür, hakemler, antrenörler
Okul Sistemi : Öğrenciler, öğretmenler, dersler, derslikler
Personel Sistemi : Çalışanlar, meslekler, çalışılan birimler, maaşlar, izinler
Sözlük : kelimeler, anlamlar, diller
Not : Tablolara isim verilirken mümkünse tekil isimler kullanılmalıdır. Böyle yapılırsa;
hem daha anlaşılır bir tasarım yapılmış olur hem de daha sonra kodlama
aşamasında karışıklığın önüne geçilmiş olur. Örneğin içinde Kitap ile ilgili bilgiler
bulunduran tablonun adını Kitap koymak oldukça mantıklıdır.
Veri Tabanı Tasarımı
2. Her nesne için bir tablo oluşturulur:
Her nesne için bir tablo oluşturulur ve her bir tabloya içereceği
veriyi en iyi anlatan bir isim verilir. Tablo oluşturma işi, bir
kağıt üstünde sembolik olarak gösterilebilir veya doğrudan MS
Access, SQL Server, MySQL, Oracle ... gibi kullanılmakta olunan
VTYS üstünden de oluşturulabilir. Tüm proje bitirilinceye kadar
bu tablolar üzerinde muhtemel değişiklikler yapılabilir.
Veri Tabanı Tasarımı
3. Her bir tablo için bir anahtar alan seçilir:
Veritabanındaki herhangi bir veriye erişilmeden önce tabloya
erişilir. Bir veritabanında üzerinde en çok işlem
yapılan nesne grubu genellikle tablolardır. Bu aşamaya kadar
hangi tabloların
oluşturulacağına karar verildi. Her bir tablonun içinde hangi
bilgilerin saklanılacağı
kabaca tasarlanır. Bu aşamada, tabloda yer alacak her bir kaydı
bir diğerinden
ayırabilecek bir sütuna ihtiyaç duyulur.
Veri Tabanı Tasarımı
4. Nesnelerin gerekli her bir özelliği için tabloya bir sütun
eklenir:
Tablo adları tanımlandıktan ve anahtar adları belirlendikten
sonra, tablolara sırasıyla adını veren nesnelerin her bir özelliği
için bir alan (sütun) eklenir.
Örneğin,
kitap için; Kitap no, ISBN no, kitap adı, yazarı, türü, sayfa sayısı,
özeti, fiyatı, baskı yılı...
İPUCU :
1. En başa birincil anahtar olarak belirlenen alanı eklemek bir kural
değildir, ancak tablonun anlaşılırlığı ve göze hoş görünmesi açısından
tercih edilmesi faydalı olacak bir tekniktir.
2. Genellikle, yapay birincil anahtar alanlar tablo adı ile başlar ve
sonunda ID vardır. Ogrenci tablosu için ogrenciID, Personel tablosu için
personelID gibi.
Veri Tabanı Tasarımı
5. Tekrarlayan nesne özellikleri (çoka çok ilişki) için ek tablolar
oluşturulur :
Akılda hep şu soru olmalıdır: veri tekrarı olacak mı? Veri tekrarı
olacaksa bir yerlerde hata yapılıyor demektir. Bu durumda eldeki
tablonun en az bir tabloya daha ayrılması gerekiyor demektir.
Bazı durumlarda veri tekrarı gerekli olabilir. Örneğin, bir öğrencinin vize
notundan bütünlemeye girmesi gibi. Bu durumda, eski notun da
silinmemesi için veri tekrar girilmiş olur. Ancak sorgu esnasında son
kayıt çağrılır.
Veri Tabanı Tasarımı
6. Anahtar Alan Belirlenir :
İlişkisel veritabanında, tablodan herhangi bir tek kayda erişmek için
mutlaka bir farklı özellik sağlanmalıdır ve bu özellik de anahtar alan
tarafından sağlanır.
Veri Tabanı Tasarımı
7.Tablolar arasındaki ilişkiler tanımlanır :
Her biri bir nesneye dair özellikleri barındıran tabloların tümü göz
önüne alınır ve birbirleri ile olan ilişkileri tanımlanmaya çalışılır.
Örneğin kitabı ödünç verebiliriz. Bu durumda, ödünç tablosu ile Kitap
tablosu ilişkili olacaktır. Kitap üyelere ödünç verilir. Bu durumda, ödünç
ile üyeler arasında da bir ilişki vardır. Türler ile Kitap arasında bir ilişki
vardır, bir kitabın en az bir türe dahil olması gerekir.
Normalizasyon
veri tabanı tasarım aşamasında veri tekrarını, veri kaybını veya
veri yetersizliğini önlemek için gerçekleştirilen işlemlerdir.
Normalizasyon(Ayrıştırma), tanım olarak ise ; veritabanlarında
çok fazla sütun ve satırdan oluşan bir tabloyu tekrarlardan
arındırmak için daha az satır ve sütun içeren alt kümelerine
ayrıştırma işlemidir
Normalizasyon yapılırken uyulması gereken kuralların
her birine normal form adı verilir.
Birinci Normal Form (1NF)
İkinci Normal Form (2NF)
Üçüncü Normal Form (3NF)
Daha yüksek düzey formlar var ama çok fazla kullanılmıyor.
Normalizasyon Amaçları
Veri Bütünlüğünün Sağlanması
Gereksiz veri tekrarını önleyerek verilerdeki bozulmaları
önlemek
Uygulamadan Bağımsızlık
Uygulama değişse bile veritabanı tutarlı olarak çalışmalı
Performansı Arttırmak
Veri tekrarı en aza iner ve arama hızlı olur
1NF
• Bir satırdaki bir alan yalnızca bir tek bilgi içerebilir.
Örnek
uyeno
ad
eposta
1
Ayşe
ayse@gazi.edu.tr
2
Zerrin
zerrin@gmail.com,zerrin1992@yahoo.com
3
Mehmet
mehmet@gmail.com,mehmet@hotmail.com
Örnek
uyeno
ad
uyeno
eposta
1
Ayşe
1
ayse@gazi.edu.tr
2
Zerrin
2
zerrin@gmail.com
3
Mehmet
2
zerrin1992@yahoo.com
3
mehmet@gmail.com,
3
mehmet@hotmail.com
Örnek:2
Örnek:2
Örnek:2
Örnek:3
Normal Olmayan Form
• İlişkisel veri tabanı modelinin temel kuralına göre bütün niteliklerin
aldığı değerler atomik (tek ve basit) olmalıdır.
• Aşağıdaki DAĞITIM tablosu bu kurala uymamaktadır, bu yüzden
normal değildir.
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
Birinci Normal Form
Uygulandığında:
müşteri_no ş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
Birinci Normal Formun
Sorunları
• Birinci normal formdaki bir tablo bazı alanlarda tekrarlı verilere
sahiptir. Örneğimizde şehir_kodu ve şehir_adı alanlarında her
müşteri için tekrarlı veriler vardır.
• Bu tekrarlar ekleme, silme ve güncelleme işlemlerinde
sorunlara neden olacaktır.
Satır Ekleme Sorunu
• Başka bir müşterinin bilgilerinin (müşteri_no,
şehir_kodu, şehir_adı) girilmesi için mutlaka o
müşteriye bir dağıtım işleminin yapılması
(gönderi_no ve miktar değerlerinin girilmiş olması)
gerekiyor.
müşteri_no şehir_kodu
şehir_adı
gönderi_no
miktar
1
34
İstanbul
1
300
…
…
…
…
…
4
34
İstanbul
5
400
5
35
İzmir
Satır Silme Sorunu
• Bir müşteriye tek bir dağıtım yapıldıysa (örn. 3 no’lu
müşteri), o dağıtım işlemi iptal edildiğinde, sadece
gönderi_no ve miktarı değil, o dağıtımın yapıldığı
müşteri hakkındaki diğer bilgiler de (müşteri_no,
şehir_kodu, şehir_adı) yok olur.
müşteri_no şehir_kodu
şehir_adı
gönderi_no
miktar
1
34
İstanbul
1
300
1
34
İstanbul
2
200
…
…
…
…
…
3
6
Ankara
2
200
…
…
…
…
…
Güncelleme Sorunu
• 1 numaralı müşteri Ankara’ya taşınırsa, bu müşteri ile
ilgili tüm satırların güncelleştirilmesi gerekecektir.
Eğer tablo çok büyük ise, sadece bir müşteri ile ilgili
küçük bir değişiklik bile binlerce kaydın
güncelleştirilmesini gerektirebilir.
müşteri_no ş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
…
…
…
…
…
2NF
İkinci normal formda, ilişkisel tablonun her bir anahtar olmayan sütunu
birincil anahtara kısmi bağımlı değil, tam işlevsel bağımlı olmalıdır.
VEYA
1. Tabloda bir birincil anahtar olmalı ve anahtar olmayan sütunlar
birincil anahtara bağımlı olmalı.
2. Birincil anahtar birden fazla sütundan oluşuyorsa
tablodaki veriler her iki sütuna da bağımlı olmalıdır
Örnek
Turnuva
Yıl
kazanan
Kazanan
doğum
tarihi
Doğum yeri
X
2000
Ayşe
24.01.1992
Ankara
Y
2001
Ahmet
03.12.1990
İzmir
X
2001
Ayşe
24.01.1992
Ankara
Örnek
Turnuva
Yıl
kazanan
X
2000
Ayşe
Y
2001
Ahmet
X
2001
Ayşe
kazanan
Kazanan doğum tarihi
Doğum yeri
Ayşe
24.01.1992
Ankara
Ahmet
03.12.1990
İzmir
Örnek:2
Örnek:2
Birinci Normal Form
Uygulandığında (Önceki örnek):
müşteri_no ş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
İkinci Normal Form
• Birinci normal formdaki sorunlardan (en azından
güncelleme sorunundan) kurtulmak için nitelikler
arasındaki işlevsel bağımlılıktan yararlanılarak
birinci normal form (1NF) tablolarının birden
fazla tabloya dönüştürülmesi sonucunda ikinci
normal forma (2NF) ulaşılır.
• İkinci normal formda, ilişkisel tablonun her bir
anahtar olmayan sütunu birincil anahtara kısmi
bağımlı değil, tam işlevsel bağımlı olmalıdır.
İkinci Normal Form
• şehir_kodu ve şehir_adı nitelikleri (müşteri_no,
gönderi_no) birleşik anahtarının sadece
müşteri_no niteliği üzerinde tam işlevsel
bağımlıdır.
• O halde şehir_kodu ve şehir_adı nitelikleri
müşteri_no ile beraber ayrı bir tablo
oluşturmalıdır.
• 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)
İkinci Normal Form Uygulandığında:
müşteri_no şehir_kodu şehir_adı
müşteri_no gönderi_no miktar
1
34
İstanbul
1
1
300
2
6
Ankara
1
2
200
3
6
Ankara
1
3
400
4
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ÜŞTERİLER
MİKTARLAR
İkinci Normal Formun
Sorunları
• Birinci normal formdaki güncelleme sorununu ikinci normal
forma dönüştürme ile ortadan kaldırmış olsak ta, ikinci normal
formda da ekleme ve silme sorunları olabilmektedir.
Satır Ekleme Sorunu
• MÜŞTERİLER tablosuna yeni bir müşteri kaydı
girilmediği sürece yeni bir şehir tanımı yapılamaz.
İzmir ilini tabloya dahil edebilmek için İzmir’de
bulunan bir müşteriye ihtiyaç vardır.
müşteri_no şehir_kodu
şehir_adı
1
34
İstanbul
2
6
Ankara
3
6
Ankara
4
34
İstanbul
35
İzmir
Satır Silme Sorunu
• Tablodan bir müşteri silindiğinde, eğer o şehirdeki tek müşteri ise,
şehir_kodu ve şehir_adı bilgileri de yok olacaktır.
müşteri_no şehir_kodu
şehir_adı
1
34
İstanbul
2
6
Ankara
3
6
Ankara
4
34
İstanbul
5
35
İzmir
3NF
• Bir tablo için, anahtar olmayan tüm nitelikler anahtara
geçişsiz bağımlı
BAŞKA BİR İFADEYLE
• Anahtar olmayan sütunlar anahtar sütuna tam bağımlı olmalı
Anahtar olmayan sütuna bağımlı olmamalı.
Örnek 2
Örnek 2
Önceki Örnek:
müşteri_no şehir_kodu şehir_adı
müşteri_no gönderi_no miktar
1
34
İstanbul
1
1
300
2
6
Ankara
1
2
200
3
6
Ankara
1
3
400
4
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ÜŞTERİLER
MİKTARLAR
Üçüncü Normal Form
• Birinci normal formdaki sorunlardan kurtulmak
için nitelikler arasındaki kısmi işlevsel
bağımlılıkları ortadan kaldırmıştık.
• İkinci normal formdaki sorunlardan kurtulmak
için de nitelikler arasındaki geçişli işlevsel
bağımlılıkları ortadan kaldırmamız gerekir.
• Örneğimizde “şehir_kodu  şehir_adı” işlevsel
bağımlılığının geçişli olduğunu belirtmiştik . Bir
anahtara bağlı olmayan bu bağımlılığı ayrı bir
tabloya dönüştürerek üçüncü normal formu
(3NF) elde edebiliriz.
Üçüncü Normal Form Uygulandığında:
ŞEHİRLER
MİKTARLAR
şehir_kodu
şehir_adı
6
Ankara
1
1
300
34
İstanbul
1
2
200
35
İzmir
1
3
400
1
4
200
MÜŞTERİLER
1
6
100
müşteri_no şehir_kodu
2
1
300
müşteri_no gönderi_no miktar
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
4NF
• Birincil anahtar alanlar ile anahtarı olmayan
alanlar arasında, birden fazla bağımsız bire-çok
ilişkisine izin verilmez.
• Her bağımsız bire çok ilişki için ayrı bir tablo
oluşturulması gerekir.
Örnek
ogrno
bolum
spor
123
Fizik
Kayak
123
Kimya
Kayak
123
Fizik
Tenis
Örnek
ogrno
bolum
spor
123
Fizik
Kayak
123
Kimya
Kayak
123
Fizik
Tenis
ogrno
bolum
ogrno
spor
123
Fizik
123
Kayak
123
Kimya
123
Tenis
Dördüncü Normal Form
• Burada bir öğrenci birden çok bölüme kayıt olabilmekte ve
birden çok spor etkinliğine katılabilmektedir.
• Bu nedenle ÖğrNo ile Bölüm ve ÖğrNo ile Spor arasındaki
ilişkiler birer işlevsel bağımlılık değil çok-değerli bağımlılık
(multivalued dependency) halindedir.
ÖĞRENCİ
ÖğrNo
Bölüm
Spor
123
Fizik
Kayak
123
Kimya
Kayak
123
Fizik
Tenis
123
Kimya
Tenis
999
Kimya
Tenis
ÖğrNo  Bölüm
ÖğrNo  Spor
çok-değerli bağımlılık
Dördüncü Normal Form
• 123 numaralı öğrencinin bir bölüme daha kayıt
olması yada bir spor etkinliğine daha katılması
halinde iki kayıt daha ilave edilmelidir.
• Bu gibi yineleme sorunlarını ortadan kaldırmak için
ÖĞRENCİ ilişkisi ikiye ayrılırak dördüncü normal form
(4NF) oluşturulur.
ÖĞRENCİ_BÖLÜM
ÖĞRENCİ_SPOR
ÖğrNo
Bölüm
ÖğrNo
Spor
123
Fizik
123
Kayak
123
Kimya
123
Tenis
999
Biyoloji
999
Yüzme
5NF
• Veri tekrarlarını önlemek için her bir tabloyu mümkün
olduğunca küçük parçalara bölmek gerekir.
Örnek
• ogrenci (no, adi, soyadi, turu) Doktora/Y.lisans/Lisans
• ogrenciturleri (no, turu)
Örnek
Örnek
Örnek
Örnek 1
Ö.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
• 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)
Örnek 2
UrunNo
UrunAd
ParcaNo
ParcaAd
Miktar
UreticiNo
UreticiAd
UreticiSehir
UreticiTel
10026201
Pavilion
DV2620ET
1
Intel Core 2 Duo
T5450
1
100
HP
Seattle
123456789
10026201
Pavilion
DV2620ET
2
Kingston 512MB
DDR2
1
100
HP
Seattle
123456789
10026201
Pavilion
DV2620ET
3
Samsung 160GB
HDD
1
100
HP
Seattle
123456789
10026201
Pavilion
DV2620ET
4
Nvidia GeForce
8400M
1
100
HP
Seattle
123456789
10026501
Pavilion
DV2650ET
1
Intel Core 2 Duo
T7500
1
100
HP
Seattle
123456789
10026501
Pavilion
DV2650ET
2
Kingston 1024MB
DDR2
2
100
HP
Seattle
123456789
10026501
Pavilion
DV2650ET
3
Samsung 160GB
HDD
1
100
HP
Seattle
123456789
10026501
Pavilion
DV2650ET
4
Nvidia GeForce
8400M
1
100
HP
Seattle
123456789
10220012
Satellite A2001N2
1
Intel Core 2 Duo
T5250
1
102
Toshiba
Tokyo
335678912
10220012
Satellite A2001N2
2
Samsung 1024MB
DDR2
2
102
Toshiba
Tokyo
335678912
10220012
Satellite A2001N2
3
Maxtor 120GB
HDD
1
102
Toshiba
Tokyo
335678912
10220012
Satellite A2001N2
4
Intel GMA X3100
1
102
Toshiba
Tokyo
335678912
• Verilen şema 1. Normal Formda (atomik değerler)
• Urun_Parca (UrunNo, UrunAd, ParcaNo, ParcaAd, Miktar, UreticiNo,
UreticiAd, UreticiSehir, UreticiTel)
• 1NF → 2NF (kısmi bağımlılıklar giderilir)
• Urun_Parca (UrunNo, ParcaNo, ParcaAd, Miktar)
• Urunler (UrunNo, UrunAd, UreticiNo, UreticiAd, UreticiSehir, UreticiTel)
• 2NF → 3NF (geçişli bağımlılıklar giderilir)
• Urun_Parca (UrunNo, ParcaNo, ParcaAd, Miktar)
• Urunler (UrunNo, UrunAd, UreticiNo)
• Ureticiler (UreticiNo, UreticiAd, UreticiSehir, UreticiTel)
Örnek 3
SiparisNo
Tarih
UrunAd
UrunNo
Adet
MusNo
MusAd
MusSoyad
1
23.11.2007
Nokia 6300
57463
1
875
Ali
Korkmaz
1
23.11.2007
Kingston 2 GB USB
73624
2
875
Ali
Korkmaz
2
23.11.2007
Samsung D600
72352
1
932
Selin
Atasoy
3
24.11.2007
Nokia 5070
71224
1
123
Kamil
Sönmez
4
24.11.2007
Philips DVP 5160/12
90876
1
452
Metin
Kaplan
5
25.11.2007
Samsung Digimax S850
98123
1
786
Kemal
Durukan
6
25.11.2007
Sinbo SBS-4414 Baskül
35465
2
932
Selin
Atasoy
7
25.11.2007
Canon Powershot A560
95293
1
875
Ali
Korkmaz
7
25.11.2007
Kingston 2 GB SD
37285
1
875
Ali
Korkmaz
8
26.11.2007
Nokia 6300
57463
1
321
Ece
Çağlayan
• Verilen şema 1. Normal Formda (atomik değerler)
• SIPARIS (SiparisNo, Tarih, UrunAd, UrunNo, Adet, MusNo, MusAd,
MusSoyad)
• 1NF → 2NF (kısmi bağımlılıklar giderilir)
• SIPARIS_URUN (SiparisNo, UrunNo, Adet)
• SIPARIS_MUSTERI (SiparisNo, Tarih, MusNo, MusAd, MusSoyad)
• URUN (UrunNo, UrunAd)
• 2NF → 3NF (geçişli bağımlılıklar giderilir)
•
•
•
•
SIPARIS_URUN (SiparisNo, UrunNo, Adet)
SIPARIS_ MUSTERI (SiparisNo, Tarih, MusNo)
MUSTERILER (MusNo, MusAd, MusSoyad)
URUN (UrunNo, UrunAd)
Örnek 4
FilmNo
FilmAdı
Yılı
110912
Pulp Fiction
1994
110912
Pulp Fiction
114369
Yönetmeni
Senaristi
ŞirketID
ŞirketAdı
Quentin Tarantino Quentin Tarantino
MF
Miramax Films
1994
Quentin Tarantino
Roger Avary
MF
Miramax Films
Se7en
1995
David Fincher
A. Kevin Walker
NL
New Line Cinema
416496
Bandidas
2006
Joachim Rønning
Luc Besson
EC
Europa Corp.
416496
Bandidas
2006
Joachim Rønning
R. Mark Kamen
EC
Europa Corp.
416496
Bandidas
2006
Espen Sandberg
Luc Besson
EC
Europa Corp.
416496
Bandidas
2006
Espen Sandberg
R. Mark Kamen
EC
Europa Corp.
1375666
Inception
2010
WB
Warner Bros Pic.
Christopher Nolan Christopher Nolan
• Verilen şema 1. Normal Formda (atomik değerler). Anahtar alanlar
Film_No, Yönetmeni ve Senaristi.
• Filmler (FilmNo, Film_Adı, Yılı, Yönetmeni, Senaristi, ŞirketID, ŞirketAdı)
• 1NF → 2NF (Yönetmeni ve Senaristi dışındaki tüm nitelikler FilmNo
niteliğine kısmi olarak bağımlı)
• FilmYönetmenSenarist (FilmNo, Yönetmeni, Senaristi)
• Filmler (FilmNo, FilmAdı, Yılı, ŞirketID, ŞirketAdı)
• 2NF → 3NF (ŞirketAdı niteliği ŞirketID niteliğine geçişli olarak bağımlı)
• FilmYönetmenSenarist (FilmNo, Yönetmeni, Senaristi)
• Filmler (FilmNo, FilmAdı, Yılı, ŞirketID)
• Şirketler (ŞirketID, ŞirketAdı)
• 3NF → 4NF (Çok-değerli bağımlılık var: Yönetmen ve Senaristin aynı
tabloda olması gereksiz tekrarlara neden oluyor)
•
•
•
•
FilmYönetmen (FilmNo, Yönetmeni)
FilmSenarist (FilmNo, Senaristi)
Filmler (FilmNo, FilmAdı, Yılı, ŞirketID)
Şirketler (ŞirketID, ŞirketAdı)
NOT: 4NF anlatırken
verdiğimiz ÖĞRENCİ(ÖğrNo,
Bölüm, Spor) örneğine
benziyor
Örnek 5
KitapNo
KitapAdı
Yazarı
YayıneviAdı
YayıneviYeri
TürID
TürAdı
100
Kar
Orhan Pamuk
İletişim Yayınları
İstanbul
1
Roman
101
Benim Adım Kırmızı
Orhan Pamuk
YK Kültür Sanat
İstanbul
1
Roman
102
Kar Kokusu
Ahmet Ümit
Doğan Kitap
İstanbul
1
Roman
103
Aşk Köpekliktir
Ahmet Ümit
Doğan Kitap
İstanbul
2
Öykü
104
Hırsız Köpek
Muzaffer İzgü
Bilgi Yayınevi
Ankara
2
Öykü
105
Oracle 11g
Teoman Dinçel
KODLAB
İstanbul
4
Bilgisayar
106
Visual Basic 10
Memik Yanık
Seçkin Yayınları
Ankara
4
Bilgisayar
107
Taş Meclisi
Jean C.
Grange
Doğan Kitap
İstanbul
1
Roman
108
Anna Karenina
Lev Tolstoy
İletişim Yayınları
İstanbul
3
Klasik
109
İstatistiğe Giriş
Vasfi N. Tekin
Seçkin Yayınları
Ankara
5
Akademik
• Verilen şema atomik değerlere sahip olduğu için 1NF'de. Aynı
zamanda KitapNo alanı tek başına PK olabildiği için kısmi bağımlılık
araştırması yapmaya gerek yok (2NF'de).
• PK haricindeki alanlar içinde geçişli bağımlılık var (TürID  TürAdı &
YayıneviAdı
 YayıneviYeri).
• KİTAPLAR(KitapNo, KitapAdı, Yazarı, YayıneviAdı, TürID)
• TÜRLER(TürID, TürAdı)
• YAYINEVLERİ(YayıneviAdı, YayıneviYeri)
3NF
• Eğer şemada YazarID ve YayıneviID alanları bulunsaydı:
•
•
•
•
KİTAPLAR(KitapNo, KitapAdı, YazarID, YayıneviID, TürID)
TÜRLER(TürID, TürAdı)
YAYINEVLERİ(YayıneviID, YayıneviAdı, YayıneviYeri)
YAZARLAR(YazarID, YazarAdı)
3NF
• Eğer bir kitabın birden çok yazarı olabilseydi:
• Bu durumda KitapNo tek başına PK olamaz, "KitapNo,
YazarID" ikilisi PK olurdu.
• Tablo 2NF'de olmazdı. YazarAdı niteliği YazarID niteliğine
kısmi bağımlı olur, YAZARLAR(YazarID, YazarAdı) tablosu 1NF
 2NF geçişte oluşurdu.
• Bir kitabın birden çok türü de olabilseydi:
• "KitapNo, YazarID, TürID" üçlüsü PK olurdu.
• TÜRLER(TürID, TürAdı) tablosu da 1NF  2NF geçişte
oluşurdu.
• Çok değerli bağımlılık ta oluşurdu:
•
•
•
•
•
•
KİTAPLAR(KitapNo, KitapAdı, YayıneviID)
YAZARLAR(YazarID, YazarAdı)
TÜRLER(TürID, TürAdı)
YAYINEVLERİ(YayıneviID, YayıneviAdı, YayıneviYeri)
KİTAP_YAZAR(KitapNo, YazarID)
KİTAP_TÜR(KitapNo, TürID)
1NF  2NF
2NF  3NF
3NF  4NF
Genel Kavramlar
Anahtar (Key) Anahtar, bir kaydı tanımlamak için kullanılan veri
öğesidir. Genel olarak iki tür anahtar kullanılmaktadır: Süper
Anahtar (superkey) ve Aday Anahtar ( candidate key). Süper
anahtarlar bir varlığı tek olarak tanımlar ve bir veya birden fazla
veri öğesinden oluşabilir. Süper anahtar olmayan ancak anahtar
olabilecek durumdaki veri öğelerine aday anahtar denir. Örneğin
“Ad”, “Okulno”, “tlf” gibi veri öğeleri birer aday anahtardır. Ancak
“ad” veri öğesi birincil anahtar için iyi bir seçim değildir. Çünkü ad
bilgisi birçok kişide aynı olabileceğinden varlığı tek olarak
tanımlamaz.
Veritabanı neden kullanılır?
• İlişkiler
Müşteri
No
Firma
No
Fiyat
1
1
1000 YTL
2
2
250 YTL
Firma
No
Firma
1
A
Çanakkale Cad.
43/5
700 YTL
2
B
Kayabaşı mah. A
Blok 8/4
2
1200 YTL
3
C
Gazi Mah 6/7
6
4
100 YTL
4
D
Gazi Mah 6/7
7
1
150 YTL
Müşteri
No
Müsteri
adı
Mesleği
1
Ahmet
mimar
3
3
350 YTL
2
Sema
öğretmen
4
2
3
Serdar
mühendis
5
4
Zerrin
emekli
5
Mehmet
Öğretim
elemanı
6
Defne
Doktor
7
Elif
avukat
Adres
Genel Kavramlar
Anahtarlar ile iki varlık arasında bir ilişki kurulabilmektedir. İlişki
kurmak için iki anahtar tipi kullanılmaktadır: birincil(primary) ve ikincil
(secondary) anahtar.
Genel Kavramlar
Birincil (primary) anahtar, bir kaydı tek olarak tanımlamak için
kullanılan bir veri öğesidir.
Örneğin bir eğitim kurumundaki öğrenci kaydı için ogrenci_no bilgisi
tek olacağından bu öğe bir birincil anahtar yapılabilir. İkincil
(secondary) anahtar, normalde bir kaydı tek olarak tanımlamaz fakat
aynı özellikleri taşıyan bir kaydın numarasını veya genelde ilişkilerde
kullanılan kayıt numarasını tanımlar.
Genel Kavramlar
Birincil (primary) anahtar tanımlanması zorunlu değildir ancak tavsiye
edilmektedir.
Birincil anahtar olan sütun boş değerleri (null) veya birbirinin aynı olan
değerleri içeremez.
Genel Kavramlar
İkincil (secondary) anahtar, normalde bir kaydı tek olarak tanımlamaz
fakat aynı özellikleri taşıyan bir kaydın numarasını veya genelde
ilişkilerde kullanılan kayıt numarasını tanımlar.
Genel Kavramlar
Yabancı anahtar, başka bir tablodaki anahtar alanı gösteren alanlara
denilir.
Yabancı anahtar genelde diğer tablolarla ilişki kurmak için kullanılır.
Genel Kavramlar
Joining (ilişkilendirme)
• İki veya daha fazla tabloyu birlikte sorgulama işlemine join ismi
verilir. İlişkisel veritabanının en temelinde birden fazla tablo üstünde
birlikte işlem yapabilmek yatar.
• Bu sayede verilerin tekrarlanması önlenmiş olur ve sonuçta veri
yönetimi kolaylaşır.
Örneğin, Kitap tablosunda, Kitabın bir tekil numara ile listesini tutmak
ve ödünç listesinde de bu Kitabın kim tarafından alındığının, geri
getirilip getirilmediğinin kaydı tutulmaktadır. Bazen, bu iki tablodaki
bilgilere de bir tek sorgu sonucu olarak ihtiyaç duyulabilir.
Genel Kavramlar
Zorlayıcı (Constraint)
Herhangi bir alan için girilebilecek verileri kısıtlayıcı kurallara zorlayıcılar denir.
İlgili alana girilebilecek değerleri sınırlayan bir deyim yazılır. Yanlış bilgi girişini
engeller ve verilerin doğru girilmesini zorunlu hale getirir.
Genel Kavramlar
View (Görüntü)
Bazen, tabloları olduklarından farklı gösterecek filtrelere ihtiyaç duyulur. Bu
türden işlevler için VIEW kullanılır. VIEW ’ler, saklanmış sorgulardan ibarettirler.
Aslında tablo gibi kullanılsa da halihazırda böyle bir tablo veritabanında
bulunmaz, sadece view(görüntüsü) bulunur. VIEW ’ler şu görevler için kullanılır:
• Kullanıcıların bazı kritik tabloların sadece belli sütunlarını veya satırlarını
görmesi istenildiğinde,
• Kullanıcıların, çeşitli birim dönüşümlerinden geçmiş değerler görmeleri
gerektiğinde,
• Halihazırdaki tablolarda var olan verilerin başka bir tablo formatında
sunulması gerektiğinde
• Çok kompleks sorguları basitleştirmek için
Not : MSAccess ’de VIEW oluşturulamaz.
Kaynaklar
http://ali.pau.edu.tr/2012bahar/veritabani/hafta_2_1%20norm
alizasyon.pdf
http://sibelsomyurek.com/veritabani/ders_notlari.html
http://altanmesut.trakya.edu.tr/vt/
Download