normalleştirme
Bu sayfada
İlk normal form (1NF)
Belirli bir veritabanındaki bir ilişki (veya ilişki şeması), o ilişkinin tüm “niteliklerinin” etki alanı atomik ise, “ilk normal formda” olur. Bir alan, o alanın tüm öğeleri bölünmez birimler olarak kabul edilirse atomiktir. “Çalışan”* ilişkisinin “ad” özniteliğine sahip olduğunu varsayalım, bu durumda ilişki “ilk normal formda” değildir, çünkü “nitelik adı” etki alanının öğeleri “ad” ve “soyadı” olarak bölünebilir. `.
Özetle, bir ilişkinin bileşik nitelikler varsa, o zaman ilk normal biçimde değildir. Aşağıdaki ilişkiye sahip olduğumuzu varsayalım:
EmpId | ilk isim | soyadı | maaş | pozisyon |
---|---|---|---|---|
Bölüm-101 | John | demirci | 12000 | ara |
Bölüm-201 | Caroline | Williams | 18900 | yönetici |
İlk satırın ‘EmpId’i şu bölümlere ayrılabilir: ‘Deptx’ (departmanı tanımlamak için kullanılır) ve ‘101’, organizasyon içinde atanan benzersiz bir numaradır. Açıkça, “EmpId” özniteliğinin etki alanı atomik değildir ve bu nedenle ilişkimiz “birinci normal formda” değildir.
Karşılaşılan dezavantajlar:
- Bu tür çalışan kimlikleri kullanıldığında, ‘EmpId’ yapısını parçalayan kod yazarak ‘Deptx’ ve ‘101’ ekstra programlama gerektiren bir çalışanın departmanı bulunabilir. Ayrıca bilgiler veritabanında değil programda kodlanır.
- Belirli bir çalışanın departmanını değiştirmesi gerektiğini varsayalım, o zaman ‘EmpId’ özelliğinin kullanıldığı her yerde güncellenmesi gerekir.
İlişkimizi aşağıdaki iki ilişkiye bölerek “birinci normal biçimi” tatmin edebiliriz:
İlişki 1
EmpId | ilk isim | soyadı | bölüm |
---|---|---|---|
101 | John | demirci | Bölüm |
201 | Caroline | Williams | Departman |
İlişki 2
EmpId | maaş | pozisyon |
---|---|---|
101 | 12000 | ara |
201 | 18900 | yönetici |
Şimdi departman değiştirmek zorunda kalırsak, bunu ilişki 1’de sadece bir kez yapmamız gerekiyor, ayrıca departman belirlemek artık daha kolay.
İkinci Normal Form (2NF)
Veritabanını ikinci formda normalleştirmek için herhangi bir sütunun birincil anahtara kısmi bağımlılığı olmamalıdır.
Aşağıdaki örneği ele alalım:
kimlik | isim | dob | konu |
---|---|---|---|
1 | işaret | 1-1-1981 | Fizik |
2 | Jack | 2-2-1982 | Matematik |
2 | Jack | 2-2-1982 | Biyoloji |
3 | John | 3-3-1983 | Matematik |
Bu tablonun bileşik bir birincil anahtara (id ve subject) sahip olduğu kabul edilir, ancak *name ve dob sütunları konu‘ya değil, yalnızca id’e bağlıdır, bu nedenle kısmi bağımlılığa sahiptirler. birincil anahtar. Sonuç olarak, tablodaki bilgilerin fazlalığını görebiliriz. Veritabanını ikinci formda normalleştirmek için bu tabloyu aşağıdaki gibi iki tabloya bölmeliyiz:
Öğrenci masası
kimlik | isim | dob |
---|---|---|
1 | işaret | 1-1-1981 |
2 | Jack | 2-2-1982 |
3 | John | 3-3-1983 |
Konular tablosu
öğrenci_kimliği | konu |
---|---|
1 | Fizik |
2 | Matematik |
2 | Biyoloji |
3 | Matematik |
Subjects tablosunun student_id sütunu, Students tablosunun id birincil anahtarına başvuran bir yabancı anahtardır.