You are on page 1of 15

Normalleştirme ve Uygulaması

Normalleştirme Neden Uygulanır:

İlişkisel veritabanı oluşturmak için normalleştirmeyi bilmek çok önemlidir. Normalleştirme


işlemini anlayabilmek için ise fonksiyonel bağımlılık kavramını iyi öğrenmek gerekir.
Normalleştirme veri kayıplarını engellemek, verinin tekrarlanmamasını sağlamak ve
yetersizliği önlemek için veritbanına uygulanır.

Herhangi bir tablonun tekrarlı veriler içerdiği duruma birinci normal form denir. Birinci
normal formu Aşağıdaki tablo ile ele alacağız.

Dikkat edilecek olursa belirli alanlarda tekrarlar yer almaktadır.

Satır Ekleme Sorunu:


Böyle bir tabloda ancak yeni bir ürün satın alıdığında yeni bir müşteri eklenir eğer alış
veriş yoksa mantıksal olarak müşteri eklemek boş kayıt eklemekle aynı anlama gelir.

Satır Silme Sorunu:

1
Normalleştirme ve Uygulaması

Eğer Müşteri bir defa alışveriş yapmışsa yapılan alışveriş silindiğinde tüm müşteri kaydı
silineceğinden bu kayıttaki müşteri biliglerine birdaha ulaşılamaz.

Güncelleştirme Sorunu:

Eğer Müşterilerden birinin oturma adresi değişirse bu tablodaki bu müşteri ile ilgili tüm
kayıtlar güncellenmelidir örneğimizde 5 kayıt olmasına rağmen büyük bir veri tabanında
böyle küçük bir değişiklik için bile binlerce kayıdı güncellemek gerekir.

İkinci Normal Form:


Birinci normal formda tekrarların ne tür sorunlara neden olduğunu öğrendik şimdide bu
sorunları çözmek için birinci normal formdaki tabloyu başka normal tablolara bölmeliyiz.
Fonksiyonel bağımlılık göz önünde bulundurularak tablolar bölünmelidir. Bölünen
tablolardan birinin birincil anahtarı ile bölünen diğer tablodaki birncil olamayan bir alan
arasında bağımlık varsa buna tam bağımlılıkta denir; bu duruma ikinci normal form
denilir.

ikinci normal formda da satır ekleme ve silme sorunları ortaya çıkıyor.

Satır ekleme sorunu:

Müşteri tablosuna bir il eklemek istediğinizde mantıken bir müşteri eklemek gerekir.

Satır Silme Sorunu:

2
Normalleştirme ve Uygulaması

Müşteri silindiğinde (Örn: Gökmen İmamoğlu) müşterinin oturduğu şehir ve şehirle ilgili
plaka verisi de silinebilir

Bu sorunları Düzeltmek için Üçüncü Normal form uygulanır. Üçüncü Normal Form İkinci
Normal Form yapısındaki Tabloların Fonksiyonel bağımlılık içermese de alt tablolara
bölünmesinden elde edilir.

3
Master Details Formlar Oluşturmak

Master-Detail Form Oluşturmak:

Beyaz eşya satışı yapan bir firmanın sattığı ürünler için fatura kesme işleminde
kullanılacak bir veritabanı yapısı oluşturulmak istenmektedir aşağıdaki örnekte bu işe
yarayan bir veritabanının nasıl hazırlanacağı adım adım anlatılmaktadır.

İlgili veritabanının şematik yapısı ve ilişki diagramı Şekil 1. de gösterilmektedir.

Şekil 1. Veritabanının Şematik Yapısı.

Öncelikle veritabanında yer alan tabloları aşağıdaki bilgiler ışığında tanımlamamız gerekir

1) Müşteri Tablosu
tblMusteri
MusteriID Long Integer
Adi Text 25
Soyadi Text 25
Adresi Text 250
TelefonNumarası Text 15
InputMas \(999") "000\ 00\
k: 00;;_
Eposta Text 50

Şekil 2. Müşteri Tablosu

4
Master Details Formlar Oluşturmak

Şekil 3. Müşteri Verileri

2) Ürün Tablosu

tblUrun
UrunID Long Integer
Adi Text 50
Kodu Text 50
Fiyati Currency
Format: #,##0.00" TL";-#,##0.00"
TL"

Şekil 4. Ürün Tablosu

Şekil 5. Ürün Verileri

5
Master Details Formlar Oluşturmak

3) Fatura Tablosu

tblFatura
FaturaID Long Integer
MusteriID Long Integer
Adres Text 250
Tarih Date/Time
InputMask: 00/00/0000;0;_
FaturaNumarasi Text 10

Şekil 6. Fatura Tablosu

4) Fatura Detay Tablosu

tblFaturaDetay
FaturaDetay Long
ID Integer
FaturaID Long
Integer
UrunID Long
Integer
Adet Long
Integer

1) Birinci adımda master-detail türünde bir ilişkinin bulunduğu tblFatura’ya müdahale


edeceğiz. İlk değişikliği bu tablodaki MusteriID alanının, Caption (Başlık) ve Default
Value (İlk değer) özelliklerinde yapıyoruz. MusteriID Caption’ına Adı Soyadı
bilgisini giriyoruz ve Default Value “0”ı siliyoruz ve bu sayede bir ilk değer
görüntülenmesini engellemiş oluyoruz (Bknz: Şekil 7).

6
Master Details Formlar Oluşturmak

Şekil 7. Caption ve Default Value değişikliği

MusteriID Caption’ına Adı Soyadı bilgisinin girilmesi ile bundan sonra Tabloda
MusteriID ifadesinin Görünmesi Yerine Adı Soyadı Bilgisinin Görünmesini Sağlamış
oluyoruz ve Dolayısıyla bundan sonra yaratacağımız tüm Rapor, Form ve Sorgularda
Listeleme Anında başlık olarak girdiğimiz Başlık Metni görüntülencektir. (Önemli not:
Sorgularda başlıkta görülen değil Tablonun tanımında kullanılan hali ile alan ismi
kullanılmalıdır

Örneğin:

Yanlış : SELECT Adı Soyadı, Adresi,Tarih FROM tblFatura

Doğru: SELECT MusteriID, Adresi,Tarih FROM tblFatura )

2) İkinci Adım olarak MusteriID alanında iken Lookup (Arama) tabına geçiyoruz. Bu
alanda

öncelikle Display Kontrol kutucuğundaki Text Box tanımını Combo Box haline getirmemiz
gerekmektedir.

7
Master Details Formlar Oluşturmak

Daha sonra Row Source satırına SELECT Adi, Soyadi, MusteriID FROM tblMusteri
SQL komutunu giriyoruz

Yaptığımız bu işlemle Fatura tablosunda MusteriID alanına veri girmek istediğimizde


müşterilerinin ID lerini (örn : 1, 5, 200) yazmak yerine yaptığımız tanım sayesinde
Müşterinin İsmini açılan listeden Seçip bu isimle özdeş MüşteriID sayısal verisini
yazdığımız SQL Komutunun üçüncü (3) kolonundan

8
Master Details Formlar Oluşturmak

Şekil 8. Bound Column

alıyoruz ve Bound Column’a (İlişkili Sütun) bu nedenle 3 sayısını giriyoruz. Bound


Column’a 3 değerini girdiğimizde veritabanına şu komutu vermiş oluyoruz; tabloya veri
girerken ismini listeden seçtiğim kişinin ID’sini bul ve bu ID değerini fatura tablosundaki
MusteriID alanına sayısal olarak yaz. Ancak

listeleme durumu için Column Counta 2 değerini verdiğimizde bu SQL Cümlesinden dönen
sonuçlardan sadece ilk iki kolondaki verileri metin olarak yani Adı Soyadı olarak Listele
demiş oluyoruz.

Şekil 9. Veri Giriş ve Sonuç Listesi

Dikkat edilecek olursa yukarıdaki Şekil 9’da veri girerken listeden isim soyad seçilmiş
olmasına rağmen kayıt girildikten sonra tblonun genel listesinde sadece adı alanı
görüntülenmektedir bu durumu düzeltmek için Fatura tablosundaki MusteriID alanında
küçük bir değişiklik gerekmektedir. Bu değişiklik Şekil 10 da gösterilmektedir. Row source
kutucuğundaki SQL cümlesinde bir alan birleştirme işlemi

9
Master Details Formlar Oluşturmak

Şekil 10. Alan Birleştirme

uygulanmaktadır. Ancak bu işlem yapıdıktan sonra Adı ve Soyadı alanları tek bir alan
haline gelmiş oldukları için listlenen kolon sayısı değişmiştir bu nedenle MuşteriID nin
listelem sırası olan 2 Row Source alanına değer olarak verilmeli ve listelenecek kolon
sayısı bilgisi içinse sadece ilk kolonu listelemek için 1 değeri girilmelidir.Bu düzeltmeler
yapıldıktan sonra Fatura tablosu durumu aşağıdaki şekilde verilmiştir.

Şekil 11. Düzeltmeden Sonraki Durum

10
Master Details Formlar Oluşturmak

Form Oluşturmak:
Form oluşturmak için öncelikle Form Tabına geçmeliyiz.

Create Form by using wizard komutunu verin. Komutu verince aşağıdaki dialog kutusu
karşınıza çıkacaktır.

Table/Queries Listesinde tblFatura tablosu seçili iken Available Field Listesinden


MusteriID, Adres, Tarih ve FaturaNumarası alanlarını sağ tarafa aktarın FaturaID solda
kalsın.

11
Master Details Formlar Oluşturmak

işlemden sonra dialogun durumu yukaradaki gibidir. Bu işlemden sonra Tables/Queries


alanında tblFaturaDetay tablosunu seçin bu durumda dialog aşağıdaki gibi görünecektir.

Burda bilinmesi gereken ilk seçilen tblFatura’nın Master tblFaturaDetay’ın Detail


olduğudur. Ayrıca tblFaturaDetay dan alanları sağa atarken Master tablonun (bu örnekte
tblFatura) Primary Key alanıyla aynı isimli alanı sağ tarafa aktarmamalıyız. Master
tablonun Primary Key ile Detail Tablodaki Foreign Key arasında kurduğumuz ilişki nedeni
ile bir bağlantı vardır. Bu nedenle eklediğimiz her detay veriye aktif faturanın FaturaID’si
otomatik olarak eklenir. İşlemi uyguladıktan sonra dialog aşağıdaki gibi görünmelidir.

Ekran bu halde iken Next tuşuna basılır. Bu komut verildikten sonra dilaog aşağıdaki gibi
görünür.

12
Master Details Formlar Oluşturmak

Ekran görüntüsü böyle iken Next tuşuna basılır.

Ekran da seçenekler belirir datasheet bu işlem için uygun bir seçenektir. Bu durumda
Next tuşuna basılır.

Form için uygun bir stil seçilir ve Next tuşuna basılır. Aşağıdaki Dialog kutusunda Form
alanında İsmi frmFatura ve Subform alanına frmFaturaDetay Subform yazın ve Finish
tuşuna basın.

13
Master Details Formlar Oluşturmak

Şonuç aşağıdaki gibidir.

14
Master Details Formlar Oluşturmak

15

You might also like