normalleştirme ve uygulaması normalleştirme neden...

14
Normalleştirme ve Uygulaması 1 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.

Upload: others

Post on 16-Sep-2019

8 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Normalleştirme ve Uygulaması Normalleştirme Neden Uygulanıryunus.hacettepe.edu.tr/~uras02/Hacettepe/3.sinif/Bilgisayar/access/MIS... · göz önünde bulundurularak tablolar bölünmelidir

Normalleştirme ve Uygulaması

1

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.

Page 2: Normalleştirme ve Uygulaması Normalleştirme Neden Uygulanıryunus.hacettepe.edu.tr/~uras02/Hacettepe/3.sinif/Bilgisayar/access/MIS... · göz önünde bulundurularak tablolar bölünmelidir

Normalleştirme ve Uygulaması

2

Satır Silme Sorunu: 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.

Page 3: Normalleştirme ve Uygulaması Normalleştirme Neden Uygulanıryunus.hacettepe.edu.tr/~uras02/Hacettepe/3.sinif/Bilgisayar/access/MIS... · göz önünde bulundurularak tablolar bölünmelidir

Normalleştirme ve Uygulaması

3

Satır Silme Sorunu: 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.

Page 4: Normalleştirme ve Uygulaması Normalleştirme Neden Uygulanıryunus.hacettepe.edu.tr/~uras02/Hacettepe/3.sinif/Bilgisayar/access/MIS... · göz önünde bulundurularak tablolar bölünmelidir

Master Details Formlar Oluşturmak

4

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 InputMask: \(999") "000\ 00\ 00;;_ Eposta Text 50

Şekil 2. Müşteri Tablosu

Page 5: Normalleştirme ve Uygulaması Normalleştirme Neden Uygulanıryunus.hacettepe.edu.tr/~uras02/Hacettepe/3.sinif/Bilgisayar/access/MIS... · göz önünde bulundurularak tablolar bölünmelidir

Master Details Formlar Oluşturmak

5

Ş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

Page 6: Normalleştirme ve Uygulaması Normalleştirme Neden Uygulanıryunus.hacettepe.edu.tr/~uras02/Hacettepe/3.sinif/Bilgisayar/access/MIS... · göz önünde bulundurularak tablolar bölünmelidir

Master Details Formlar Oluşturmak

6

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 FaturaDetayID Long 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).

Page 7: Normalleştirme ve Uygulaması Normalleştirme Neden Uygulanıryunus.hacettepe.edu.tr/~uras02/Hacettepe/3.sinif/Bilgisayar/access/MIS... · göz önünde bulundurularak tablolar bölünmelidir

Master Details Formlar Oluşturmak

7

Ş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.

Page 8: Normalleştirme ve Uygulaması Normalleştirme Neden Uygulanıryunus.hacettepe.edu.tr/~uras02/Hacettepe/3.sinif/Bilgisayar/access/MIS... · göz önünde bulundurularak tablolar bölünmelidir

Master Details Formlar Oluşturmak

8

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

Şekil 8. Bound Column

Page 9: Normalleştirme ve Uygulaması Normalleştirme Neden Uygulanıryunus.hacettepe.edu.tr/~uras02/Hacettepe/3.sinif/Bilgisayar/access/MIS... · göz önünde bulundurularak tablolar bölünmelidir

Master Details Formlar Oluşturmak

9

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

Page 10: Normalleştirme ve Uygulaması Normalleştirme Neden Uygulanıryunus.hacettepe.edu.tr/~uras02/Hacettepe/3.sinif/Bilgisayar/access/MIS... · göz önünde bulundurularak tablolar bölünmelidir

Master Details Formlar Oluşturmak

10

Ş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

Page 11: Normalleştirme ve Uygulaması Normalleştirme Neden Uygulanıryunus.hacettepe.edu.tr/~uras02/Hacettepe/3.sinif/Bilgisayar/access/MIS... · göz önünde bulundurularak tablolar bölünmelidir

Master Details Formlar Oluşturmak

11

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.

Page 12: Normalleştirme ve Uygulaması Normalleştirme Neden Uygulanıryunus.hacettepe.edu.tr/~uras02/Hacettepe/3.sinif/Bilgisayar/access/MIS... · göz önünde bulundurularak tablolar bölünmelidir

Master Details Formlar Oluşturmak

12

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.

Page 13: Normalleştirme ve Uygulaması Normalleştirme Neden Uygulanıryunus.hacettepe.edu.tr/~uras02/Hacettepe/3.sinif/Bilgisayar/access/MIS... · göz önünde bulundurularak tablolar bölünmelidir

Master Details Formlar Oluşturmak

13

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.

Page 14: Normalleştirme ve Uygulaması Normalleştirme Neden Uygulanıryunus.hacettepe.edu.tr/~uras02/Hacettepe/3.sinif/Bilgisayar/access/MIS... · göz önünde bulundurularak tablolar bölünmelidir

Master Details Formlar Oluşturmak

14

Şonuç aşağıdaki gibidir.