O'tish davriga bog'liq qaramliklardan saqlanish Normalizatsiyani ta'minlash
Ma'lumotlar bazasidagi o'tishga bog'liqlik bir xil jadvaldagi funktsional qaramlikka olib keladigan qiymatlar o'rtasidagi bevosita aloqadir . Uchinchi Oddiy formada (3NF) me'yorga erishish uchun har qanday o'tish davriga bog'liqlikni yo'qotishingiz kerak.
O'zining tabiatiga ko'ra, tranzitga bog'liqlik uch yoki undan ko'p atributlar (yoki ma'lumotlar bazasi ustunlari) bilan ularning o'rtasidagi funktsional bog'liqlikni talab qiladi, ya'ni jadvaldagi A ustuni B ustuniga oraliq S ustunidan kelib chiqadi.
Keling, bu qanday ishlashi mumkinligini ko'rib chiqaylik.
O'tish davriga bog'liqlik masalasi
AUTHORLAR
Muallif_ID | Muallif | Kitob | MuallifNationality |
---|---|---|---|
Auth_001 | Orson Scott Card | Enderning o'yini | Qo'shma Shtatlar |
Auth_001 | Orson Scott Card | Enderning o'yini | Qo'shma Shtatlar |
Auth_002 | Margaret Atvud | Handmaidning hikoyasi | Kanada |
Yuqoridagi AUTHORS misolida:
- Kitob → Muallif : Bu erda, Kitobning atributi Muallif xususiyatini belgilaydi. Agar siz kitob nomini bilsangiz, muallifning ismini bilib olishingiz mumkin. Biroq, Muallif kitobni aniqlamaydi, chunki muallif bir nechta kitob yozishi mumkin. Misol uchun, muallifning ismini Orson Scott Card bilganimiz uchun, biz hali ham kitob nomini bilmaymiz.
- Muallif → Author_Nationality : Shuningdek, Muallifning atributi MuallifNationality ni belgilaydi , lekin boshqa usul emas; Biz bilamizki, fuqarolik biz muallifni aniqlashimiz mumkin degani emas.
Biroq, bu jadval o'tish davriga bog'liqlikni keltirib chiqaradi:
- Kitob → Author_Nationality: Agar biz kitob nomini bilsak, muallifni ustun orqali aniqlashimiz mumkin.
O'tishdagi qaramliklardan qochish
Uchinchi Oddiy shaklni ta'minlash uchun, o'tuvchi bog'liqlikni olib tashlaylik.
Kitob ustunini Mualliflar jadvalidan olib tashlash va alohida jadvallar jadvalini yaratish orqali boshlashimiz mumkin:
KITOBLAR
Book_ID | Kitob | Muallif_ID |
---|---|---|
Kitob_001 | Enderning o'yini | Auth_001 |
Kitob_001 | Ongli bolalar | Auth_001 |
Book_002 | Handmaidning hikoyasi | Auth_002 |
AUTHORLAR
Muallif_ID | Muallif | MuallifNationality |
---|---|---|
Auth_001 | Orson Scott Card | Qo'shma Shtatlar |
Auth_002 | Margaret Atvud | Kanada |
Buni tuzatdimi? Endi bizning bog'liqliklarimizni ko'rib chiqamiz:
Kitoblar jadvali :
- Book_ID → Book: Kitob Book_ID-ga bog'liq.
- Ushbu jadvalda boshqa hech qanday bog'liqliklar mavjud emas, shuning uchun biz yaxshimiz. Muallif_ID chet el kalitini ushbu jadvalni AUTHORS jadvaliga uning asosiy kaliti Author_ID orqali ulang . O'tishimizga bog'liq bo'lgan qaramlikning oldini olish uchun, munosabatlarni yaratadigan ma'lumotlar bazalarining asosiy loyihasini yaratdik.
AUTHORS jadvali :
- Author_ID → Muallif: Muallif Muallif_ID-ga bog'liq.
- Muallif : → MuallifNationality: Milliyat muallif tomonidan aniqlanishi mumkin.
- Author_ID → Author_Nationality: Mualliflik huquqidan muallifning attributi orqali aniqlanishi mumkin. Hali ham o'tkinchi bog'liq.
Ushbu ma'lumotlarni normallashtirish uchun uchinchi jadvalni kiritishimiz kerak:
MAMLAKATLAR
Country_ID | Davlat |
---|---|
Coun_001 | Qo'shma Shtatlar |
Coun_002 | Kanada |
AUTHORLAR
Muallif_ID | Muallif | Country_ID |
---|---|---|
Auth_001 | Orson Scott Card | Coun_001 |
Auth_002 | Margaret Atvud | Coun_002 |
Keling, jadvallar orasidagi bog'lanish uchun xorijiy kalitlardan foydalangan holda uchta jadval mavjud:
- BOOK jadvalining xorijiy kaliti Author_ID AUTHORS jadvalidagi muallifga kitob yozadi.
- AUTHORS jadvalining chet el kaliti Country_ID muallifni COUNTRIES jadvalidagi mamlakatga bog'laydi.
- COUNTRIES jadvali chet el kalitiga ega emas, chunki u bu dizayndagi boshqa jadvalga ulanishga hojat yo'q.
Nima uchun kechikishli bog'liqliklar yomon ma'lumotlar bazasi dizayni
3NFni ta'minlashga yordam berish uchun o'tuvchi bog'liqliklardan qochishning qiymati qanday? Keling, bizning birinchi stolimizni ko'rib chiqamiz va yaratgan masalalarni ko'rib chiqamiz:
AUTHORLAR
Muallif_ID | Muallif | Kitob | MuallifNationality |
---|---|---|---|
Auth_001 | Orson Scott Card | Enderning o'yini | Qo'shma Shtatlar |
Auth_001 | Orson Scott Card | Ongli bolalar | Qo'shma Shtatlar |
Auth_002 | Margaret Atvud | Handmaidning hikoyasi | Kanada |
Ushbu turdagi dizayn ma'lumotlar anomaliyalari va nomuvofiqliklarga yordam berishi mumkin, masalan:
- Agar "Bolalar of the mind" va "Ender's Game" ikkita kitobni o'chirsangiz, "Orson Scott Card" muallifini va uning millatidan ma'lumotlar bazasidan butunlay o'chirib yuborasiz.
- Agar siz kitob qo'shmasangiz, ma'lumotlar bazasiga yangi yozuvchi qo'sha olmaysiz; Agar muallif hali nashr etilmagan bo'lsa yoki mualliflik qilgan kitobning nomini bilmasangiz nima bo'ladi?
- "Orson Scott Card" o'z fuqaroligini o'zgartirgan bo'lsa, uni u ko'rgan barcha yozuvlarda o'zgartirishingiz kerak bo'ladi. Xuddi shu muallif bilan bir nechta qaydlar mavjudligi noto'g'ri ma'lumotlarga olib kelishi mumkin: agar ma'lumot kiritish a'zosi uning uchun bir nechta yozuvlar mavjudligini bilmasa va ma'lumotlarni faqat bitta yozuvda o'zgartirsa nima bo'ladi?
- Muallifni butunlay yo'q qilmasdan "Handmaid's Tale" kabi bir kitobni o'chira olmaysiz.
Bu faqat normalizatsiya qilish va tranzit bog'liqliklardan qochishning ba'zi sabablari, ma'lumotlarni himoya qilish va mustahkamlikni ta'minlashdir.