Makale numarası: 100139 - Son Gözden Geçirme: 18 Ocak 2007 Perşembe - Gözden geçirme: 2.1

ACC: Veritabanı normalleştirme temelleri

Sistem İpucuBu makale, kullandığınızdan farklı bir işletim sistemine yöneliktir. Sizinle ilgili olmayabilecek makale içeriği devre dışı bırakıldı.
Acemi kullanıcı: tek kullanıcılı bilgisayarlarda kullanıcı arabirimi hakkında bilgi gerektirir.

Bu Sayfada

Hepsini aç | Hepsini kapa

Özet

Bu makalede, veritabanı normalleştirme terminolojisi temelleri açıklanı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 sunduğu Web yayını, veritabanı normalleştirme temelleri açıklanı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 (http://support.microsoft.com/?scid=http%3a%2f%2fsupport.microsoft.com%2fservicedesks%2fwebcasts%2fwc060600%2fwc060600.asp%3ffr%3d1)
Not: Bu bilgi için Microsoft Access 2000 için <a0></a0>, Microsoft Knowledge Base'de aşağıdaki makaleye bakın:
209534  (http://support.microsoft.com/kb/209534/EN-US/ ) ACC2000: Veritabanı normalleştirme temelleri

Daha fazla bilgi

Normalleştirme açıklaması

Normalleştirme, bir veritabanındaki verileri düzenleme işlemi ' dir. Bu tablo oluşturma ve verileri korumak için hem iki etmen ortadan kaldırarak veritabanını daha esnek yapmak için tasarlanmış kurallara uygun şekilde bu tablolar arasında ilişkiler oluşturma içerir: artıklığı ve tutarsız bağımlılığı.

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 veri erişimi zorlaştırabilir, 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.

Not: örnekler aşağıdaki açıklamalarını içerir.

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

Ancak, üçü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.

EXCEPTION: her üçüncü normal form için teorik olarak uygun, ancak ne zaman pratik 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. Kuramsal olarak, normalleştirme pursuing gerekir; ancak, çok sayıda küçük tablo performans düşmesine veya açık dosya ve bellek kapasitesi.

Üçü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) olarak da bilinir, dördüncü normal form ve beşinci normal form var, ancak nadiren kullanışlı tasarımında kabul edilir. Bu kuralları yoksaymak mükemmel veritabanı tasarımından uzaklaşılmasına neden olacaktır, ancak işlevselliği etkilememelidir.
               **********************************
                 Examples of Normalized Tables
               **********************************

 Normalization Examples:

 Unnormalized table:

    Student#   Advisor   Adv-Room  Class1   Class2   Class3
    -------------------------------------------------------
    1022       Jones      412      101-07   143-01   159-02
    4123       Smith      216      201-01   211-02   214-01
				
  1. Ilk normal form: HIÇBIR REPEATING GROUPS

    Tablolar yalnızca iki boyutlu olmalıdır. Aynı öğrenci birden çok ders alacağı için, bu dersler ayrı bir tabloda listelenmelidir. Fields Class1, Class2 ve yukarıdaki kayıttaki Class3 yüzdelerinin göstergelerine, tasarım sorun var.

    Elektronik tablolar genelde üçüncü boyutu kullanır, ancak tablolar kullanmamalıdır. Bu sorun aramak için başka bir yol:-çok ilişkisi olan bir tarafını ve çok tarafındaki aynı tabloya yerleştirmeyin. Bunun yerine başka bir tablonun ilk normal formda yinelenen grubu (Class #), ortadan kaldırarak a?a??da gösterildi?i gibi oluşturun:
           Student#   Advisor   Adv-Room    Class#
           ---------------------------------------
           1022      Jones      412       101-07
           1022      Jones      412       143-01
           1022      Jones      412       159-02
           4123      Smith      216       201-01
           4123      Smith      216       211-02
           4123      Smith      216       214-01
    					
  2. Ikinci normal form: GEREKSIZ VERILERI KALDıRıN.

    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:
        Students:   Student#    Advisor   Adv-Room
                    ------------------------------
                    1022        Jones       412
                    4123        Smith       216
    
        Registration:   Student#    Class#
                        ------------------
                        1022        101-07
                        1022        143-01
                        1022        159-02
                        4123        201-01
                        4123        211-02
                        4123        214-01
    					
  3. Üçüncü normal form: KEY NOT BAĞıMLı VERI ortadan KALDıRıR.

    Son örnekte, Oda No öğesi (danışmanın oda numarası) Danışman özniteliğine işlevsel olarak bağımlıdır. Çözüm özniteliğe Öğrenciler tablosundan bölümü tabloya, aşağıda gösterildiği gibi taşımaktır:
        Students:   Student#    Advisor
                    -------------------
                    1022        Jones
                    4123        Smith
    
        Faculty:    Name    Room    Dept
                    --------------------
                    Jones   412     42
                    Smith   216     42
    					

Referanslar

Veritabanı tasarlama hakkında daha fazla bilgi için Microsoft Knowledge Base'deki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
234208  (http://support.microsoft.com/kb/234208/EN-US/ ) ACC2000: "Relational Database Design anlama" Belge kullanılabilir Yükleme Merkezi'ndeki
"FoxPro 2 A Developer's Guide," Hamilton M. Ahlo Etikan et al. 1991 220-225, M & T defterleri, sayfalar

"Kullanarak Access for Windows," Roger Jennings, 799-800 Que Corporation 1993 sayfalar

Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Access 1.0 Standard Edition
  • Microsoft Access 1.1 Standard Edition
  • Microsoft Access 2.0 Standard Edition
  • Microsoft Access 95 Standard Edition
  • Microsoft Access 97 Standard Edition
Anahtar Kelimeler: 
kbmt kbinfo kbusage KB100139 KbMttr
Otomatik TercümeOtomatik Tercüme
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:100139  (http://support.microsoft.com/kb/100139/en-us/ )
Retired KB ArticleKullanım Dışı Bilgi Bankası İçeriği Yasal Uyarı
Bu makale, Microsoft'un artık destek sağlamadığı ürünler ile ilgili olarak yazılmıştır. Bu nedenle, bu makale "olduğu gibi" sağlanmıştır ve bundan sonra güncelleştirilmeyecektir.