Өгөгдлийн санд нэгээс олон харилцааг бий болгоно . Хүснэгт А дэх бичлэг бүр B хүснэгтэнд олон холбоостой байж болох боловч Хүснэгт Б дэх тэмдэглэл бүр нь зөвхөн Хүснэгт А-д харгалзах ганц бичлэгтэй байж болно. Мэдээллийн сан нь харилцан уялдаатай өгөгдлийн сангийн загвар бөгөөд сайн дизайнын зүрх сэтгэлд байдаг.
Багш болон тэдний заадаг хичээлүүдийн хоорондын харилцааг авч үзье. Багш олон хичээлийг зааж болох боловч хичээл нь багштайгаа ижил харилцаатай байх ёсгүй.
Тиймээс Багшийн хүснэгтэнд тэмдэглэл тус бүрийн хувьд Курсын хүснэгтэнд олон бичлэг байж болно. Энэ бол нэгээс олон харилцааг хэлдэг.
Яагаад ганц биетэйгээ харьцах нь чухал вэ?
Нэгээс олон харилцааг төлөөлөхийн тулд дор хаяж хоёр хүснэгт хэрэгтэй. Яагаад гэдгийг харъя.
Магадгүй бид багшийн нэрийг зааж өгөхийг хүссэн Багшийн хүснэгтийг бүтээсэн байж магадгүй юм. Бид иймэрхүү дизайнтай болно:
Багш нар | Багшийн нэр | Курс |
---|---|---|
Багш_001 | Кармен | Биологи |
Багш_002 | Вероника | Математик |
Багш_003 | Жорж | Англи хэл |
Хэрэв Кармен хоёр буюу түүнээс дээш курс заадаг бол яах вэ? Энэ дизайнтай хоёр сонголт бидэнд байна. Бид үүнийг Карменийн одоогийн бичлэгт нэмж бичиж болно:
Багш нар | Багш _Name | Курс |
---|---|---|
Багш_001 | Кармен | Биологи, Математик |
Багш_002 | Вероника | Математик |
Багш_003 | Жорж | Англи хэл |
Дээрх загвар нь уян хатан бус бөгөөд өгөгдлийг оруулах, засах эсвэл устгах үед асуудалтай тулгардаг.
Энэ нь өгөгдлийг хайхад хэцүү болгодог. Энэ загвар нь өгөгдлийн сангийн хэвийн, эхний хэвийн хэлбэр (1NF) -ын анхны зарчмыг зөрчдөг бөгөөд энэ нь хүснэгтийн нүд бүрт нэг, салангид өгөгдлийг агуулсан байх ёстой гэж заасан байдаг.
Карменийн хувьд хоёрдахь рекордыг нэмэхийн тулд өөр нэг загварыг ашиглаж болно:
Багш нар | Багш _Name | Курс |
---|---|---|
Багш_001 | Кармен | Биологи |
Багш_001 | Кармен | Математик |
Багш_002 | Вероника | Математик |
Багш_003 | Жорж | Англи хэл |
Энэ нь 1NF-тэй нийцэж байгаа боловч мэдээллийн сан дутагдалтай хэвээр байгаа бөгөөд энэ нь ихээхэн хэмжээний мэдээллийн санг үүсгэхээс гадна маш их хэмжээний өгөгдлийн санг шаардлагагүй болгож чаддаг. Хамгийн чухал нь, өгөгдөл нь харилцан адилгүй болно. Жишээ нь, хэрэв Кармен нэр өөрчлөгдсөн бол яах вэ? Өгөгдөлтэй хэн нэгэн нь түүний нэрийг нэг бичлэгээр шинэчилдэг бөгөөд хоёр дахь бичлэгт шинэчлэгдэхгүй байж болно. Энэ загвар нь 2NF-ийг зөрчсөн 2NF-ийг зөрчдөг бөгөөд 1NF-ийг дагаж мөрддөг ба тэдгээрийн хоорондын уялдаа холбоог үүсгэхийн тулд олон тооны хүснэгтүүдийг өгөгдлүүдийн дэд хэсгүүдийг салгах замаар олон тооны бүртгэлээс зайлсхийх ёстой.
Олон тооны харьцаатай мэдээллийн санг хэрхэн боловсруулах вэ?
Багш, хичээлийн хүснэгтэнд нэгээс олон харилцааг хэрэгжүүлэхийн тулд бид хүснэгтүүдийг хоёр хувааж тэдгээрийг гадаад түлхүүрээр холбодог.
Энд бид Багшийн хүснэгт дэх Курсын баганыг хасав:
Багш нар | Багш _Name |
---|---|
Багш_001 | Кармен |
Багш_002 | Вероника |
Багш_003 | Жорж |
Сургуулийн ширээ энд байна. Гадаадын түлхүүр, Teacher_ID нь Багш нарын хүснэгтэд багшийн курсийг холбохыг анхаарна уу:
Курс_ID | Course_Name | Багш нар |
---|---|---|
Course_001 | Биологи | Багш_001 |
Course_002 | Математик | Багш_001 |
Course_003 | Англи хэл | Багш_003 |
Багш, Сургалтын хүснэгтүүдийн хоорондох гадаад түлхүүрийг ашиглан харилцан хамаарал бий болгосон.
Энэ нь Биологийн болон Математик хоёул Карменийн заадаг, мөн Жорж англи хэл заадаг гэдгийг хэлдэг.
Энэ загвар нь ямар нэг давтагдашгүй нөөцөөс зайлсхийж, багш нар олон хичээл заах боломжийг олгодог бөгөөд нэгээс олон харилцааг хэрэгжүүлдэг.
Өгөгдлийн сангууд нь нэгээс нөгөөтэйгээ харилцах, олон тооны харилцааг хэрэгжүүлж чадна.