Veritabanı normalleştirme esaslarının açıklaması

Makale çevirileri Makale çevirileri
Makale numarası: 283878 - Bu makalenin geçerli olduğu ürünleri görün.
Acemi: Tek kullanıcılı bilgisayarlarda kullanıcı arabirimi bilgisini gerektirir.

Bu makalenin Microsoft Access 2000 sürümü için bkz: 209534 (Bu bağlantı, bir kısmı veya tamamı İngilizce olan içeriğe işaret edebilir).
Bu makalenin Microsoft Access 95 veya Microsoft Access 97 sürümü için bkz: 100139 (Bu bağlantı, bir kısmı veya tamamı İngilizce olan içeriğe işaret edebilir).
Hepsini aç | Hepsini kapa

Bu Sayfada

™zet

Bu makalede, yeni başlayanlar için veritabanı normalleştirme terminolojisi açıklanmaktadır. İlişkisel veritabanının tasarımı üzerine bir tartışmada bu terminolojinin temel olarak anlaşılmış olması işinizi kolaylaştıracaktır.

NOT: Microsoft veritabanı normalleştirme esaslarının anlatıldığı bir Web Yayını da sunmaktadır. Bu Web Yayınını görüntülemek için, aşağıdaki Microsoft Web sitesini ziyaret edin:
http://support.microsoft.com/servicedesks/webcasts/wc060600/wc060600.asp?fr=1

Daha fazla bilgi

Normalleştirmenin Açıklaması

Normalleştirme, bir veritabanındaki verileri düzene koyma işlemidir. Buna, tablolar oluşturmak ve bu tablolar arasında hem verileri koruyacak hem de artıklığı ve tutarsız bağımlılığı ortadan kaldırarak veritabanını daha esnek duruma getirecek biçimde tasarlanmış kurallara göre ilişkiler oluşturmak da dahildir.

Artık veriler disk alanını boşa kullanır ve bakım sorunları oluşturur. Birden çok konumda bulunan verilerin değiştirilmesi gerekirse, bu veriler tüm konumlarda tam olarak aynı şekilde değiştirilmelidir. Müşteri adresi bilgileri yalnızca Müşteriler tablosunda saklanıyorsa ve veritabanında başka bir konumda yoksa, bir müşteri adresi değişikliği çok kolay gerçekleştirilebilir.

"Tutarsız bağımlılık" nedir? Bir kullanıcı belirli bir müşterinin adresi için Müşteriler tablosuna bakabilir, ancak bu müşteriyle görüşen çalışanın maaşını öğrenmek için bu tabloya bakması mantıklı değildir. Çalışanın maaşı, çalışanın kendisiyle ilişkili ya da buna bağımlıdır ve bu nedenle de Çalışanlar tablosuna taşınmalıdır. Tutarsız bağımlılıklar verilere erişimi zorlaştırabilir, çünkü verileri bulma yolu eksik veya bozuk olabilir.

Veritabanı normalleştirmesi için birkaç kural bulunmaktadır. Her kurala "normal form" adı verilir. İlk kural kullanılıyorsa, veritabanının "ilk normal formda" olduğu söylenir. İlk üç kural kullanılıyorsa, veritabanı "üçüncü normal formda" olarak nitelendirilir. Başka normalleştirme düzeyleri de kullanılabilmekle birlikte, çoğu uygulama için en yüksek düzey üçüncü normal formdur.

Çoğu kural ve belirtimde olduğu gibi, gerçek dünyada karşılaşılan senaryolarda her zaman mükemmel bir uyumluluk sağlanamaz. Genel olarak, normalleştirme için ek tablolar gerekir ve bazı müşteriler bunun ek yük getirdiğini düşünmektedir. Normalleştirmenin ilk üç kuralından birini ihlal etmeye karar verirseniz, uygulamanızın artık veriler ve tutarsız bağımlılıklar gibi oluşabilecek sorunlara karşı hazır olmasını sağlayın.

Aşağıdaki açıklamalarda örnekler yer almaktadır.

İlk Normal Form

  • 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.
Benzer verileri saklamak için aynı tabloda birden çok alan kullanmayın. Örneğin, iki olası kaynaktan alınabilecek bir stok öğesini izlemek için, stok kaydı, Satıcı Kodu 1 ve Satıcı Kodu 2 alanlarını içerebilir.

Üçüncü bir satıcı eklerseniz ne olur? Bir alan eklemek çözüm değildir; programda ve tabloda değişiklikler yapılmasını gerektirir ve satıcı sayısını dinamik hale getirmez. Bunun yerine, tüm sayıcı bilgilerini Satıcılar adlı ayrı bir tabloya yerleştirin, sonra da stoğu bir öğe numarası anahtarıyla satıcılara veya satıcıları bir satıcı kodu anahtarıyla stoğa bağlayın.

İkinci Normal Form

  • 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. Örneğin bir muhasebe sistemindeki müşteri adresini ele alalım. Adresin Müşteriler tablosunun yanı sıra Siparişler, Nakliye, Faturalar, Alacak Hesapları ve Topluluklar tablolarında da kullanılması gerekir. Müşterinin adresini bu tabloların her birinde ayrı bir girdi olarak saklamak yerine, Müşteriler tablosunda veya ayrı bir Adresler tablosunda olmak üzere tek bir konumda saklayın.

Üçüncü Normal Form

  • Anahtara bağımlı olmayan alanları kaldırın.
Bir kayıt anahtarının parçası olmayan kayıt değerleri tabloda bulunmak zorunda değildir. Genel olarak, bir alan grubu içeriğinin tabloda birden çok kayda uygulanabileceği durumlarda, bu alanları ayrı bir tabloya yerleştirebilirsiniz.

Örneğin bir Çalışan İşe Alma tablosunda, bir adayın bitirdiği üniversitenin adı ve adresi bulunabilir. Ancak grup postaları için tüm üniversitelerin listesi gerekir. Üniversite bilgileri Adaylar tablosunda saklanıyorsa, geçerli adaylar olmayan üniversiteler listelenemez. Ayrı bir Üniversiteler tablosu oluşturup bu tabloyu bir üniversite kodu anahtarıyla Adaylar tablosuna bağlayın.

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

Diğer Normalleştirme Formları

Boyce Codd Normal Form (BCNF) adı verilen dördüncü normal form ve beşinci normal form da vardır, ancak tasarım sırasında nadiren kullanılırlar. Bu kuralları yoksaymak mükemmel veritabanı tasarımından uzaklaşılmasına neden olacaktır, ancak işlevselliği etkilememelidir.

Örnek Bir Tabloyu Normalleştirme

Aşağıdaki adımlarda, kurgusal bir öğrenci tablosunu normalleştirme işlemi gösterilmektedir.
  1. Normalleştirilmemiş tablo:

    Bu tabloyu kapaBu tabloyu aç
    Öğrenci#DanışmanOda NoDers1Ders2Ders3
    1022Güneş412101-07143-01159-02
    4123Etikan216201-01211-02214-01
  2. İlk Normal Form: Yinelenen Grup Yok

    Tablolar yalnızca iki boyutlu olmalıdır. Aynı öğrenci birden çok ders alacağı için, bu dersler ayrı bir tabloda listelenmelidir. Yukarıdaki kayıtlardaki Ders1, Ders2 ve Ders3 alanları bir tasarım sorununun göstergesidir.

    Elektronik tablolar genelde üçüncü boyutu kullanır, ancak tablolar kullanmamalıdır. Bu sorun bir-çok ilişkide de görülür, bir tarafını ve çok tarafını aynı tabloya yerleştirmeyin. Bunun yerine, ilk normal formda yinelenen grubu (Ders#) aşağıdaki gösterildiği gibi kaldırarak başka bir tablo oluşturun:

    Bu tabloyu kapaBu tabloyu aç
    Öğrenci#DanışmanOda NoDers#
    1022Güneş412101-07
    1022Güneş412143-01
    1022Güneş412159-02
    4123Etikan216201-01
    4123Etikan216211-02
    4123Etikan216214-01
  3. İkinci Normal Form: Artık Verileri Kaldırma

    Yukarıdaki tabloda her Öğrenci# değeri için birden çok Ders# değerini not alın. Ders# öğesi işlevsel olarak Öğrenci# öğesine (birincil anahtar) bağımlı olmadığı için, bu ilişki ikinci normal formda değildir.

    Aşağıdaki iki tabloda ikinci normal form gösterilmektedir:

    Öğrenciler:

    Bu tabloyu kapaBu tabloyu aç
    Öğrenci#DanışmanOda No
    1022Güneş412
    4123Etikan216


    Kayıt:

    Bu tabloyu kapaBu tabloyu aç
    Öğrenci#Ders#
    1022101-07
    1022143-01
    1022159-02
    4123201-01
    4123211-02
    4123214-01
  4. Üçüncü Normal Form: Anahtara Bağımlı Olmayan Verileri Kaldırma

    Son örnekte, Oda No öğesi (danışmanın oda numarası) Danışman özniteliğine işlevsel olarak bağımlıdır. Çözüm, bu özniteliği aşağıda gösterildiği gibi Öğrenciler tablosundan Fakülte tablosuna taşımaktır:

    Öğrenciler:

    Bu tabloyu kapaBu tabloyu aç
    Öğrenci#Danışman
    1022Güneş
    4123Etikan


    Fakülte:

    Bu tabloyu kapaBu tabloyu aç
    AdOdaBölüm
    Güneş41242
    Etikan21642

Özellikler

Makale numarası: 283878 - Last Review: 20 Kasım 2007 Salı - Gözden geçirme: 6.2
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Office Access 2007
  • Microsoft Office Access 2003
  • Microsoft Access 2002 Standard Edition
Anahtar Kelimeler: 
kbinfo kbdesign kbdatabase kbhowto KB283878

Geri Bildirim Ver

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com