Tam işlevsel bağımlılık, İkinci Normal Formun (2NF) normalizasyon standardına eşit olan bir veritabanı normalleştirmesidir . Kısaca, ilk Normal Form (1NF) gereksinimlerini karşıladığı ve tüm anahtar olmayan niteliklerin tamamen işlevsel olarak birincil anahtara bağlı olduğu anlamına gelir.
Bu, duyulabileceği kadar karmaşık değildir. Buna daha ayrıntılı olarak bakalım.
İlk Normal Form Özeti
Bir veritabanı tamamen işlevsel olarak bağımlı olmadan önce, İlk Normal Form ile uyumlu olmalıdır.
Tüm bunlar, her bir özelliğin bir atomik değere sahip olması gerektiği anlamına gelir.
Örneğin, aşağıdaki tablo 1NF ile uyumlu değildir , çünkü çalışan Tina iki noktaya bağlanmıştır, her ikisi de tek bir hücrede:
işçi | yer |
---|---|
John | Los Angeles |
Tina | Los Angeles, Şikago |
Bu tasarımın izin vermesi veri güncellemelerini veya girişlerini olumsuz yönde etkileyebilir. 1NF uyumluluğunu sağlamak için, tüm özniteliklerin (veya sütun hücrelerinin) tek bir değer tutacak şekilde tabloyu yeniden düzenleyin:
işçi | yer |
---|---|
John | Los Angeles |
Tina | Los Angeles |
Tina | Chicago |
Ancak verilerle ilgili problemlerden kaçınmak için 1NF hala yeterli değil.
Tam Bağımlılığın Sağlanması İçin 2NF Nasıl Çalışır?
Tamamen bağımlı olmak için, tüm aday olmayan anahtar nitelikleri birincil anahtara bağlı olmalıdır. (Unutmayın, bir aday anahtar özniteliği, bir veritabanı kaydını benzersiz şekilde tanımlamak için kullanılan herhangi bir anahtar (örneğin, bir birincil veya yabancı anahtar).
Veritabanı tasarımcıları, öznitelikler arasındaki bağımlı ilişkileri tanımlamak için bir notasyon kullanır:
Eğer A niteliği B'nin değerini belirlerse, bu A -> B'yi yazarız - yani B'nin işlevsel olarak A'ya bağımlı olduğu anlamına gelir. Bu ilişkide, A B'nin B değerini belirler, B ise B'ye bağlıdır.
Örneğin, aşağıdaki Çalışan Bölümleri tablosunda, EmployeeID ve DeptID her ikisi de aday anahtardır: DeptID bir yabancı anahtar iken ÇalışanNo tablonun birincil anahtarıdır.
Başka bir öznitelik - bu durumda, ÇalışanName ve DeptName - değerini elde etmek için birincil anahtara bağlı olmalıdır.
Çalışan kimliği | Çalışan Adı | DeptID | DeptName |
---|---|---|---|
Emp1 | John | Dept001 | maliye |
Emp2 | Tina | Dept003 | Satış |
Emp3 | Carlos | Dept001 | maliye |
Bu durumda, tablo tam olarak bağımlı değildir, çünkü ÇalışanAdı birincil anahtar çalışanın bağımlı olduğu, DeptName yerine DeptID bağlıdır. Buna kısmi bağımlılık denir.
Bu tabloyu 2NF'ye uygun hale getirmek için, verileri iki tabloya ayırmamız gerekiyor:
Çalışan kimliği | Çalışan Adı | DeptID |
---|---|---|
Emp1 | John | Dept001 |
Emp2 | Tina | Dept003 |
Emp3 | Carlos | Dept001 |
DeptName özniteliğini Çalışanlar tablosundan kaldırır ve yeni bir tablo bölümü oluştururuz :
DeptID | DeptName |
---|---|
Dept001 | maliye |
Dept002 | İnsan kaynakları |
Dept003 | Satış |
Şimdi tablolar arasındaki ilişkiler tamamen bağımlı veya 2NF'dir.
Tam Bağımlılık Neden Önemlidir?
Veritabanı öznitelikleri arasındaki tam bağımlılık, veri bütünlüğünün sağlanmasına yardımcı olur ve veri anormalliklerinden kaçınır.
Örneğin, yukarıdaki bölümde yalnızca 1NF'ye yapışan tabloyu düşünün. İşte yine:
işçi | yer |
---|---|
John | Los Angeles |
Tina | Los Angeles |
Tina | Chicago |
Tina'nın iki kaydı var. Biri olduğunu fark etmeden birini güncellersek, sonuç tutarsız veriler olur.
Ya da, bu masaya bir çalışan eklemek istersek, ama henüz Konum'u bilmiyorsak ne olur? Konum özniteliği NULL değerlerine izin vermiyorsa, yeni bir çalışan eklemek bile yasaktır.
Normalleşmeye gelince tam bağımlılık resmin tamamı değildir. Veritabanınızın Üçüncü Normal Form'da (3NF) olduğundan emin olmalısınız.