3NF vs BCNF
Нормчилол гэдэг нь харилцааны өгөгдлийн сан дахь өгөгдлүүд дэх илүүдлийг багасгахын тулд хийгддэг процесс юм. Энэ процесс нь голчлон том хүснэгтүүдийг илүү цөөн тооны жижиг хүснэгтүүдэд хуваах болно. Эдгээр жижиг хүснэгтүүд нь сайн тодорхойлсон харилцаа холбоогоор дамжуулан бие биетэйгээ холбоотой байх болно. Сайн хэвийн өгөгдлийн санд өгөгдлийн аливаа өөрчлөлт, өөрчлөлт нь зөвхөн нэг хүснэгтийг өөрчлөх шаардлагатай болно. Гурав дахь хэвийн хэлбэрийг (3NF) 1971 онд Эдгар Ф. Кодд нэвтрүүлсэн бөгөөд тэрээр мөн харилцааны загвар болон хэвийн байдлын үзэл баримтлалыг зохион бүтээгч юм. Boyce-Codd хэвийн хэлбэрийг (BCNF) 1974 онд Кодд, Рэймонд Ф нар нэвтрүүлсэн. Бойс.
3NF гэж юу вэ?
3NF нь харилцааны мэдээллийн санг хэвийн болгоход хэрэглэгддэг Гурав дахь хэвийн хэлбэр юм. Коддын тодорхойлолтын дагуу хүснэгтийг 3NF-д байгаа гэж хэлдэг, хэрэв хүснэгт нь хоёр дахь хэвийн хэлбэрт (2NF) байгаа бол хүснэгтийн нэр дэвшигчийн түлхүүрт хамааралгүй бүх шинж чанар нь шууд хамааралтай байх ёстой. тухайн хүснэгтийн нэр дэвшигч бүрийн түлхүүр. 1982 онд Карло Заниоло 3NF-ийн хувьд өөрөөр илэрхийлэгдсэн тодорхойлолтыг гаргасан. 3NF-д нийцсэн хүснэгтүүд нь ерөнхийдөө хүснэгтэд бичлэг оруулах, устгах, шинэчлэх үед гардаг гажигийг агуулдаггүй.
BCNF гэж юу вэ?
BCNF (мөн 3.5NF гэгддэг) нь харилцааны мэдээллийн санг хэвийн болгоход хэрэглэгддэг өөр нэг хэвийн хэлбэр юм. Энэ нь 3NF-ээр шийдэгдээгүй зарим гажигийг олж авах зорилгоор нэвтрүүлсэн. Хүснэгтийг BCNF-д байгаа гэж хэлдэг ба хэрэв А → В хэлбэрийн үл хамаарах хамаарал тус бүрийн хувьд А нь супер түлхүүр болно. BCNF-ийн хэвийн хэлбэрт ороогүй хүснэгтийг задлах нь BCNF хэлбэрээр хүснэгт үүсгэх баталгаа болохгүй (эхний хүснэгтэд байсан хамаарлыг хадгалахын зэрэгцээ).
3NF болон BCNF хоёрын ялгаа юу вэ?
3NF болон BCNF хоёулаа хүснэгтэн дэх илүүдлийг багасгахын тулд харилцааны мэдээллийн санд ашиглагддаг ердийн хэлбэрүүд юм. BCNF-ийн хэвийн хэлбэрт байгаа хүснэгтэд A → B хэлбэрийн жижиг бус функциональ хамаарал бүрийн хувьд A нь супер түлхүүр байдаг бол 3NF-д нийцсэн хүснэгт нь 2NF-д байх ёстой бөгөөд үндсэн бус бүх хүснэгтэд байх ёстой. шинж чанар нь тухайн хүснэгтийн нэр дэвшигч бүрийн түлхүүрээс шууд хамаарах ёстой. BCNF нь 3NF-ээс илүү хүчтэй хэвийн хэлбэр гэж тооцогддог бөгөөд 3NF-ээр барьж чадаагүй зарим гажигийг илрүүлэх зорилгоор бүтээгдсэн. BCNF маягттай нийцсэн хүснэгтийг авахын тулд 3NF-д байгаа хүснэгтийг задлах шаардлагатай болно. Энэхүү задрал нь асуулга гүйцэтгэх үед нэмэлт нэгдэх үйлдлүүдийг (эсвэл декартын бүтээгдэхүүн) үүсгэх болно. Энэ нь тооцоолох хугацааг нэмэгдүүлэх болно. Нөгөөтэйгүүр, BCNF-д нийцсэн хүснэгтүүд нь зөвхөн 3NF-тэй нийцдэг хүснэгтүүдээс цөөн тооны илүүдэлтэй байх болно. Цаашилбал, ихэнх тохиолдолд хамаарлыг хадгалах, алдагдалгүй холбоход саад учруулахгүйгээр 3NF-д нийцсэн хүснэгтийг олж авах боломжтой. Гэхдээ BCNF-д энэ нь үргэлж боломжгүй байдаг.