1NF normal formların en temelidir - tablodaki her hücre yalnızca bir bilgi parçası içermelidir ve yinelenen satır olamaz.
2NF ve 3NF tamamen birincil anahtara bağımlı olmakla ilgilidir. Birincil anahtarın birden çok sütundan oluşabileceğini hatırlayın. Chris'in yanıtında söylediği gibi:
Veriler [1NF] anahtarına, tüm anahtar [2NF] ve [3NF] anahtarından başka bir şeye bağlı değildir (bu yüzden bana yardım et Codd ).
2NF
Belirli bir dönemde alınan dersleri içeren bir tablonuz olduğunu ve aşağıdaki verilere sahip olduğunuzu varsayalım:
|-----Primary Key----| uh oh |
V
CourseID | SemesterID | #Places | Course Name |
------------------------------------------------|
IT101 | 2009-1 | 100 | Programming |
IT101 | 2009-2 | 100 | Programming |
IT102 | 2009-1 | 200 | Databases |
IT102 | 2010-1 | 150 | Databases |
IT103 | 2009-2 | 120 | Web Design |
Bu 2NF'de değildir , çünkü dördüncü sütun tüm anahtara değil, yalnızca bir kısmına dayanır . Kurs adı Kursun Kimliğine bağlıdır, ancak hangi yarıyılda alındığıyla ilgisi yoktur. Gördüğünüz gibi, yinelenen bilgilerimiz var - birkaç satır bize IT101'in programlandığını ve IT102'nin Veritabanları olduğunu söylüyor. Bu yüzden, kursun adını CourseID'in ENTIRE anahtarı olduğu başka bir tabloya taşıyarak düzeltiriz.
Primary Key |
CourseID | Course Name |
---------------------------|
IT101 | Programming |
IT102 | Databases |
IT103 | Web Design |
Artıklık yok!
3NF
Tamam, diyelim ki kursun öğretmeninin adını ve onlar hakkında bazı detayları RDBMS'ye ekliyoruz:
|-----Primary Key----| uh oh |
V
Course | Semester | #Places | TeacherID | TeacherName |
---------------------------------------------------------------|
IT101 | 2009-1 | 100 | 332 | Mr Jones |
IT101 | 2009-2 | 100 | 332 | Mr Jones |
IT102 | 2009-1 | 200 | 495 | Mr Bentley |
IT102 | 2010-1 | 150 | 332 | Mr Jones |
IT103 | 2009-2 | 120 | 242 | Mrs Smith |
Şimdi umarım TeacherName'in TeacherID'ye bağımlı olduğu açıktır - bu yüzden bu 3NF'de değildir . Bunu düzeltmek için, 2NF'de yaptığımızla aynı şeyi yapıyoruz - TeacherName alanını bu tablodan çıkarın ve anahtar olarak TeacherID olan kendi başına koyun.
Primary Key |
TeacherID | TeacherName |
---------------------------|
332 | Mr Jones |
495 | Mr Bentley |
242 | Mrs Smith |
Artıklık yok !!
Hatırlanması gereken önemli bir şey, eğer bir şey 1NF'de değilse, 2NF veya 3NF'de de olmadığıdır. Yani her ek Normal Form gerektirir şeyi alt normal formlar olduğunu, artı gereken bazı ekstra koşullar, tüm yerine getirilmesi.