Нэг хүснэгт нь нөгөө хүснэгтийн үндсэн түлхүүрийг иш татсан гадаад түлхүүрийг ашиглах үед мэдээллийн сангийн хоёр хүснэгтийн хооронд хамаарал үүсдэг. Энэ нь харилцааны мэдээллийн сан гэсэн нэр томъёоны үндсэн ойлголт юм.
Харилцаа тогтооход гадаад түлхүүр хэрхэн ажилладаг вэ
Анхдагч түлхүүр нь хүснэгтийн бичлэг бүрийг өвөрмөц байдлаар тодорхойлдог. Энэ нь ихэвчлэн хүснэгтийн эхний багана болох нэр дэвшигчийн түлхүүрийн төрөл бөгөөд мэдээллийн бааз үүнийг автоматаар үүсгэж, өвөрмөц гэдгийг баталгаажуулах боломжтой. Гадаад түлхүүр нь бичлэгийг өөр хүснэгтийн өгөгдөлтэй холбоход ашигладаг өөр нэр дэвшигч түлхүүр (үндсэн түлхүүр биш) юм.
Жишээ нь аль багш ямар хичээл заадгийг тодорхойлох эдгээр хоёр хүснэгтийг авч үзье. Энд Courses хүснэгтийн үндсэн түлхүүр нь Course_ID юм. Үүний гадаад түлхүүр нь Багшийн ID:
Хичээлийн_ID | Хичээлийн_нэр | Багшийн_ID |
---|---|---|
Хичээл_001 | Биологи | Багш_001 |
Хичээл_002 | Математик | Багш_002 |
Хичээл_003 | Англи | Багш_003 |
Та Курсын гадаад түлхүүр нь Багш нарын үндсэн түлхүүртэй таарч байгааг харж болно:
Багшийн_ID | Багшийн_Нэр |
---|---|
Багш_001 | Кармен |
Багш_002 | Вероника |
Багш_003 | Жорге |
Багшийн_ID гадаад түлхүүр нь Курсууд болон Багш нарын хүснэгтүүдийн хоорондын харилцааг тогтооход тусалсан гэж бид хэлж чадна.
Мэдээллийн сангийн харилцааны төрөл
Гадаад түлхүүр эсвэл бусад нэр дэвшигчийн түлхүүрийг ашигласнаар та хүснэгтүүдийн хооронд гурван төрлийн харилцааг хэрэгжүүлэх боломжтой:
Нэг-Нэгээр
Энэ төрлийн харилцаа нь харилцааны тал бүр дээр зөвхөн нэг бичлэг хийхийг зөвшөөрдөг. Үндсэн түлхүүр нь өөр хүснэгтийн зөвхөн нэг бичлэгтэй (эсвэл аль нь ч биш) хамааралтай. Жишээлбэл, гэрлэлтийн хувьд эхнэр, нөхөр бүр өөр нэг эхнэр нөхөртэй байдаг. Энэ төрлийн харилцааг нэг хүснэгтэд хийж болох тул гадаад түлхүүр ашиглахгүй.
Нэгээс олон
Нэгээс олон гэсэн хамаарал нь нэг хүснэгтийн нэг бичлэгийг өөр хүснэгтийн олон бичлэгтэй холбох боломжийг олгодог. Хэрэглэгч болон Захиалгын хүснэгт бүхий мэдээллийн сантай бизнесийг авч үзье.
Нэг үйлчлүүлэгч олон захиалга авах боломжтой боловч нэг захиалгыг олон харилцагчтай холбох боломжгүй. Тиймээс Захиалгын хүснэгт нь Хэрэглэгчийн хүснэгтийн үндсэн түлхүүртэй тохирох гадаад түлхүүрийг агуулж байх ба харин Хэрэглэгчийн хүснэгтэд Захиалгын хүснэгтийг зааж буй гадаад түлхүүр байхгүй болно.
Олон-Олон
Энэ нь хүснэгтийн олон бичлэгийг өөр хүснэгтийн олон бичлэгтэй холбож болох нарийн төвөгтэй харилцаа юм. Жишээлбэл, манай бизнест Хэрэглэгчийн болон Захиалгын хүснэгт хэрэгтэй, мөн Бүтээгдэхүүний хүснэгт хэрэгтэй байж магадгүй.
Дахин хэлэхэд Хэрэглэгч ба Захиалгын хүснэгтийн хоорондын хамаарал нь нэгээс олон гэсэн боловч Захиалга ба Бүтээгдэхүүний хүснэгтийн хоорондын хамаарлыг анхаарч үзээрэй. Захиалга нь олон бүтээгдэхүүн агуулж болох ба хэд хэдэн үйлчлүүлэгч ижил төрлийн бүтээгдэхүүн агуулсан захиалга илгээж болох тул тухайн бүтээгдэхүүнийг олон захиалгатай холбож болно. Ийм харилцаанд хамгийн багадаа гурван хүснэгт шаардлагатай.
Өгөгдлийн сангийн харилцаа яагаад чухал вэ?
Өгөгдлийн сангийн хүснэгтүүдийн хооронд тогтвортой харилцаа тогтоох нь өгөгдлийн бүрэн бүтэн байдлыг хангаж, мэдээллийн санг хэвийн болгоход хувь нэмэр оруулдаг. Жишээлбэл, хэрэв бид ямар ч хүснэгтийг гадаад түлхүүрээр холбоогүй, оронд нь Курс болон Багшийн хүснэгтийн өгөгдлийг нэгтгэвэл яах вэ, жишээ нь:
Багшийн_ID | Багшийн_Нэр | Хичээл |
---|---|---|
Багш_001 | Кармен | Биологи, Математик |
Багш_002 | Вероника | Математик |
Багш_003 | Жорге | Англи |
Энэ загвар нь уян хатан биш бөгөөд өгөгдлийн санг хэвийн болгох эхний зарчмыг зөрчиж байгаа бөгөөд энэ нь хүснэгтийн нүд бүр нэг, салангид өгөгдөл агуулсан байх ёстой гэсэн анхны хэвийн хэлбэр юм.
Эсвэл бид 1NF:-г хэрэгжүүлэхийн тулд Карменд хоёр дахь бичлэг нэмэхээр шийдсэн байж магадгүй.
Багшийн_ID | Багшийн_Нэр | Хичээл |
---|---|---|
Багш_001 | Кармен | Биологи |
Багш_001 | Кармен | Математик |
Багш_002 | Вероника | Математик |
Багш_003 | Жорге | Англи |
Энэ нь сул загвар хэвээр байгаа бөгөөд шаардлагагүй давхардал болон өгөгдөл оруулах гажиг гэж нэрлэгддэг бөгөөд энэ нь зөрчилтэй өгөгдөлд хувь нэмэр оруулж болзошгүй гэсэн үг юм. Жишээлбэл, хэрэв багш олон бичлэгтэй бол зарим өгөгдлийг засварлах шаардлагатай бол өгөгдлийг засварлаж байгаа хүн олон бичлэг байгааг ойлгохгүй байвал яах вэ? Хүснэгт нь нэг хүний хувьд өөр өөр өгөгдлийг агуулж байх бөгөөд үүнийг тодорхойлох, зайлсхийх тодорхой арга байхгүй.
Энэ хүснэгтийг Багш болон Курс гэсэн хоёр хүснэгт болгон хуваах нь өгөгдлийн хоорондын зөв харилцааг бий болгож, мэдээллийн тууштай, үнэн зөв байдлыг хангахад тусалдаг.