Харилцааны өгөгдлийн санд нэг өгөгдлийн сангийн хүснэгтэд хадгалагдсан мэдээлэл нь тухайн хүснэгтэд хадгалагдсан бусад мэдээллийг өвөрмөц байдлаар тодорхойлох үед хамаарал үүсдэг. Хүснэгтэд нэг буюу хэд хэдэн мөр байгаа нь тухайн хүснэгтэд нэг буюу хэд хэдэн мөр байгааг илтгэх үед олон утгатай хамаарал үүсдэг. Өөрөөр хэлбэл, хүснэгтийн хоёр шинж чанар (эсвэл багана) нь бие биенээсээ хамааралгүй боловч хоёулаа гуравдагч шинж чанараас хамаардаг.
Олон утгат хамаарал нь дөрөв дэх хэвийн хэлбэрийг хэвийн болгохоос сэргийлдэг. Харилцааны мэдээллийн сан нь бичлэгийн дизайны удирдамжийг төлөөлдөг ердийн таван хэлбэрийг дагаж мөрддөг. Эдгээр нь өгөгдлийн шинэчлэлтийн гажуудал, зөрчилдөөнөөс сэргийлдэг. Дөрөв дэх ердийн хэлбэр нь өгөгдлийн сан дахь олон нэгтэй харилцах харилцааг харуулдаг.
Функциональ хамаарал ба олон утгат хамаарал
Олон утгат хамаарлыг ойлгохын тулд функциональ хамаарал гэж юу болохыг эргэн харах нь тустай.
Хэрэв X шинж чанар нь Y-г өвөрмөц байдлаар тодорхойлдог бол Y нь X-ээс функциональ хамааралтай байна. Үүнийг X -> Y гэж бичнэ. Жишээлбэл, доорх Оюутны хүснэгтэд Оюутны_Нэр нь үндсэн мэргэжлийг тодорхойлно:
Оюутны_Нэр | Хошууч |
---|---|
Ravi | Урлагийн түүх |
Бет | Хими |
Энэ функциональ хамаарлыг бичиж болно: Оюутны_Нэр -> Гол. Оюутны_Нэр бүр яг нэг мэргэжлийг тодорхойлдог бөгөөд үүнээс илүүгүй.
Хэрэв та мэдээллийн санд оюутнуудын хичээллэдэг спортыг хянахыг хүсвэл үүнийг хийх хамгийн хялбар арга бол Спорт гэсэн өөр багана нэмэх явдал гэж бодож магадгүй:
Оюутны_Нэр | Хошууч | Спорт |
---|---|---|
Ravi | Урлагийн түүх | Хөлбөмбөг |
Ravi | Урлагийн түүх | Воллейбол |
Ravi | Урлагийн түүх | Теннис |
Бет | Хими | Теннис |
Бет | Хими | Хөлбөмбөг |
Энд байгаа асуудал бол Рави, Бет хоёр хэд хэдэн спортоор хичээллэдэг. Нэмэлт спорт бүрт шинэ мөр нэмэх шаардлагатай.
Мэргэжлийн болон спорт нь бие биенээсээ хамааралгүй боловч хоёулаа суралцагчаас хамаардаг тул энэ хүснэгтэд олон утгат хамаарлыг оруулсан болно. Энэ бол энгийн жишээ бөгөөд тодорхойлоход хялбар боловч олон утгын хамаарал нь том, нарийн төвөгтэй мэдээллийн санд асуудал болж болзошгүй.
Олон утгат хамаарлыг X ->-> Y гэж бичнэ. Энэ тохиолдолд:
Оюутны_Нэр ->-> Хошууч
Оюутны_Нэр 5-6-4 > Спорт
Үүнийг "Оюутны_Нэр мэргэжлийг олон талт тодорхойлдог" ба "Оюутны_Нэр спортыг олон талт тодорхойлдог" гэж уншдаг.
Олон утгат хамаарал нь гуравны нэгээс хамааралтай дор хаяж хоёр шинж чанараас бүрддэг тул үргэлж дор хаяж гурван шинж чанарыг шаарддаг.
Олон утгат хамаарал ба хэвийн байдал
Олон утгат хамаарал бүхий хүснэгт нь 4 дэх хэвийн хэлбэрийн нормчлолын стандартыг зөрчиж байна, учир нь энэ нь шаардлагагүй илүүдэл үүсгэж, зөрчилтэй өгөгдөлд хувь нэмэр оруулах боломжтой. Үүнийг 4NF болгохын тулд энэ мэдээллийг хоёр хүснэгтэд хуваах шаардлагатай.
Доорх хүснэгтэд одоо Оюутны_Нэр -> Голын функциональ хамаарал байгаа бөгөөд олон утгат хамаарал байхгүй:
Оюутны_Нэр | Хошууч |
---|---|
Ravi | Урлагийн түүх |
Ravi | Урлагийн түүх |
Ravi | Урлагийн түүх |
Бет | Хими |
Бет | Хими |
Энэ хүснэгтэд мөн Оюутны_Нэр -> Спорт: гэсэн ганц функциональ хамааралтай байдаг.
Оюутны_Нэр | Спорт |
---|---|
Ravi | Хөлбөмбөг |
Ravi | Воллейбол |
Ravi | Теннис |
Бет | Теннис |
Бет | Хөлбөмбөг |
Нэг хүснэгтийг хэт их ялгаатай мэдээлэл агуулсан болгохыг оролдохын оронд нэг санаа эсвэл сэдэвтэй холбоотой мэдээллийг агуулсан байхаар нарийн төвөгтэй хүснэгтүүдийг хялбарчлах замаар нормчилдог.