Ma'lumotlar bazasini normallashtirishda to'liq funktsional qaramlik

To'liq funktsional qaramlik - bu Ikkinchi Normal Formaning (2NF) me'yoriylashtirish me'yoriga teng bo'lgan ma'lumotlar bazasi normallashuvining holati. Qisqacha aytganda, bu birinchi Oddiy shakl (1NF) talablariga javob beradi va barcha kalit bo'lmagan atributlar to'liq funktsional ravishda asosiy kalitga bog'liq.

Bu, ovoz chiqarib aytadigan darajada murakkab emas. Buni batafsil ko'rib chiqaylik.

Birinchi Oddiy shakl qisqacha bayoni

Ma'lumotlar bazasi to'liq funktsional jihatdan qaram bo'lmasdan avval birinchi Oddiy shaklga mos kelishi kerak.

Bularning barchasi, har bir fazilat bitta, atom qiymatiga ega bo'lishi kerak degan ma'noni anglatadi.

Misol uchun, quyidagi jadval 1NFga mos kelmaydi, chunki Tina xodimining ikkita punkti, ikkalasi ham bitta xonada joylashgan:

Birinchi Oddiy shaklni mos emasligi
Xodim Manzil
Jon Los Anjeles
Tina Los Anjeles, Chikago

Ushbu dizaynga ruxsat berish ma'lumotlar yangilanishlari yoki yozuvlarga salbiy ta'sir ko'rsatishi mumkin. 1NF muvofiqligini ta'minlash uchun jadvalni barcha attributlar (yoki ustunlar xujayralari) bitta qiymatga ega bo'lishiga qayta joylashtiring:

Birinchi Oddiy formasi mosligi
Xodim Manzil
Jon Los Anjeles
Tina Los Anjeles
Tina Chikago

Ammo 1NF ma'lumotlar bilan bog'liq muammolardan qochish uchun hali ham etarli emas.

To'liq qaramlikni ta'minlash uchun 2NF qanday ishlaydi

To'liq qaram bo'lish uchun, barcha nomzod bo'lmagan asosiy kalitlarga asosiy kalitga bog'liq bo'lishi kerak. (Esda tuting, nomzod kalit xususiyati bazasi yozuvini noyob tarzda identifikatsiya qilish uchun foydalaniladigan har qanday kalit (masalan, asosiy yoki chet el kalit).

Ma'lumotlar bazasi dizaynerlari atributlar o'rtasidagi qaram munosabatlarni tavsiflash uchun bir eslatmadan foydalanadi:

Agar A funktsiyasi A qiymatini belgilasa, biz bu A -> B ni yozamiz. Bu B funktsional ravishda Aga bog'liq. Bu munosabatlarda A A ning qiymatini belgilaydi, B esa A ga bog'liq.

Masalan, quyidagi xodimlar bo'limida , EmployeeID va DeptID ikkala nomzod tugmachalari ham mavjud: EmployeeID - bu jadvalning asosiy kaliti, lekin DepitID chet el kalitidir.

Boshqa har qanday atribut - bu holda, EmployeeName va DeptName - uning qiymatini olish uchun asosiy kalitga bog'liq bo'lishi kerak.

Xodimlar bo'limlari
EmployeeID EmployeeName Depozit DeptName
Emp1 Jon Dept001 Moliya
Emp2 Tina Dept003 Savdo
Emp3 Karlos Dept001 Moliya

Bunday holda, jadvalga to'liq bog'liq emas, chunki EmployeeName EmployeeID asosiy kalitiga bog'liq bo'lsa, DeptName o'rniga DeptID-ga bog'liq. Bunga qisman qaramlik deyiladi.

Ushbu jadval 2NFga mos kelish uchun, ma'lumotlarni ikki jadvalga ajratishimiz kerak:

Xodimlar
EmployeeID EmployeeName Depozit
Emp1 Jon Dept001
Emp2 Tina Dept003
Emp3 Karlos Dept001

DeptName xususiyatini Employees jadvalidan olib tashlaymiz va yangi jadvallarni yaratamiz:

Bo'limlar
Depozit DeptName
Dept001 Moliya
Dept002 Kadrlar bo'limi
Dept003 Savdo

Endi jadvallar o'rtasidagi munosabatlar butunlay qaram, yoki 2NFda.

Nima uchun to'la qaramlik muhim

Ma'lumotlar bazasi atributlari o'rtasidagi to'liq bog'liqlik ma'lumotlar yaxlitligini ta'minlashga va ma'lumotlar uzilishidan qochishga yordam beradi.

Masalan, faqat 1NF ga mos keladigan yuqoridagi bo'limni ko'rib chiqing. Mana, yana:

Birinchi Oddiy formasi mosligi
Xodim Manzil
Jon Los Anjeles
Tina Los Anjeles
Tina Chikago

Tina ikkita yozuvga ega. Agar ikkitasi mavjudligini tushunmasdan birini yangilab olsak, natija barqaror ma'lumotlar bo'lmaydi.

Yoki, agar biz ushbu jadvalga xodimni qo'shishni xohlasak nima bo'ladi, ammo biz Manzilni hali bilmaymizmi? Agar Joylashuv xususiyati NULL qiymatlariga ruxsat bermasa, hatto yangi xodimni qo'shishga ruxsat berilishi mumkin.

To'liq qaramlik, normalizatsiya to'g'risida gap ketganda, butun rasm emas. Ma'lumotlar bazangiz uchinchi Oddiy formada (3NF) ekanligiga ishonch hosil qilishingiz kerak.