Гадаад түлхүүр ба үндсэн түлхүүрийн гол ялгаа нь гадаад түлхүүр нь үндсэн түлхүүр эсвэл өөр хүснэгтийн нэр дэвшигч түлхүүрийг заадаг багана эсвэл баганын багц бөгөөд үндсэн түлхүүр нь багана эсвэл баганын багц юм. Энэ нь хүснэгтийн мөрийг өвөрмөц байдлаар тодорхойлоход ашиглаж болно.
Өгөгдлийн сангийн мөр, мөрийн багцыг таних, хандахад ашиглаж болох багана эсвэл баганын багцыг түлхүүр гэнэ. Харилцааны өгөгдлийн сангийн үндсэн түлхүүр нь хүснэгтийн мөрийг өвөрмөц байдлаар тодорхойлох хүснэгтийн баганын хослол юм. Харилцааны мэдээллийн сан дахь гадаад түлхүүр нь өөр хүснэгтийн үндсэн түлхүүртэй тохирох хүснэгтийн талбар юм. Гадаад түлхүүрийг лавлагааны хүснэгтүүдийг хөндлөн гаргахад ашигладаг.
Гадаад түлхүүр гэж юу вэ?
Гадаад түлхүүр нь хоёр хүснэгтийн хоорондох лавлагааны хязгаарлалт юм. Энэ нь нэг хүснэгтийн багана эсвэл багц баганыг тодорхойлдог бөгөөд үүнийг лавлах хүснэгт гэж нэрлэдэг бөгөөд үүнийг лавлагаа хүснэгт гэж нэрлэдэг. Лавлагааны хүснэгтийн гадаад түлхүүр эсвэл баганууд нь лавлагааны хүснэгтийн үндсэн түлхүүр эсвэл нэр дэвшигч түлхүүр (үндсэн түлхүүр болгон ашиглаж болох түлхүүр) байх ёстой. Үүнээс гадна гадаад түлхүүрүүд нь хэд хэдэн хүснэгтэд өгөгдлийг холбох боломжийг олгодог. Тиймээс гадаад түлхүүр нь түүний харуулдаг хүснэгтэд байхгүй утгыг агуулж болохгүй. Дараа нь гадаад түлхүүрээр өгсөн лавлагаа нь хэд хэдэн хүснэгтэд байгаа мэдээллийг холбоход тусалдаг бөгөөд энэ нь хэвийн мэдээллийн санд зайлшгүй шаардлагатай болно. Лавлах хүснэгтийн олон мөр нь лавлагааны хүснэгтийн нэг мөрийг хэлж болно.
Зураг 01: Гадаад түлхүүрийн зураглал
ANSI SQL стандартад FOREIGN KEY хязгаарлалт нь гадаад түлхүүрүүдийг тодорхойлдог. Цаашилбал, хүснэгтийг өөрөө үүсгэх үед гадаад түлхүүрүүдийг тодорхойлох боломжтой. Хүснэгт нь олон гадаад түлхүүртэй байж болох ба тэдгээр нь өөр өөр хүснэгтүүдийг лавлаж болно.
Үндсэн түлхүүр гэж юу вэ?
Анхдагч түлхүүр нь хамаарлын өгөгдлийн сангийн хүснэгтийн мөрийг өвөрмөц байдлаар тодорхойлдог багана эсвэл баганын хослол юм. Хүснэгт хамгийн ихдээ нэг үндсэн түлхүүртэй байж болно. Үндсэн түлхүүр нь далд NOT NULL хязгаарлалтыг хэрэгжүүлдэг. Тиймээс үндсэн түлхүүр бүхий баганад NULL утгатай байж болохгүй. Үндсэн түлхүүр нь нийгмийн хамгааллын дугаар гэх мэт өвөрмөц байх баталгаатай хүснэгтийн ердийн шинж чанар эсвэл Microsoft SQL Server дахь Дэлхий дахинд өвөрмөц танигч (GUID) гэх мэт мэдээллийн сангийн удирдлагын системээр үүсгэгдсэн өвөрмөц утга байж болно.
Зураг 02: Үндсэн түлхүүр
Цаашилбал, ANSI SQL стандартын PRIMARY KEY хязгаарлалт нь үндсэн түлхүүрүүдийг тодорхойлдог. Мөн хүснэгт үүсгэх үед үндсэн түлхүүрийг тодорхойлох боломжтой. Нэмж дурдахад, SQL нь үндсэн түлхүүрийг нэг буюу хэд хэдэн баганаас бүрдүүлэх боломжийг олгодог бөгөөд үндсэн түлхүүрт багтсан багана бүр нь NULL биш гэж далд хэлбэрээр тодорхойлогддог. Гэхдээ зарим өгөгдлийн сангийн удирдлагын системүүд үндсэн түлхүүр баганыг NULL БУС болгохыг шаарддаг.
Гадаад түлхүүр болон үндсэн түлхүүр хоёрын ялгаа юу вэ?
Гадаад түлхүүр vs Үндсэн түлхүүр |
|
Гадаад түлхүүр нь хоёр хүснэгтийн өгөгдлийн хоорондын холбоог хангадаг өгөгдлийн сангийн хамаарлын хүснэгтийн багана эсвэл бүлэг багана юм. | Анхдагч түлхүүр нь хүснэгтийн бүх бичлэгийг онцгойлон таних боломжийг олгодог тусгай харилцааны өгөгдлийн сангийн хүснэгт багана эсвэл олон баганын хослол юм. |
NULL | |
Гадаад түлхүүр нь NULL утгыг хүлээн авна. | Үндсэн түлхүүрийн утга NULL байж болохгүй. |
Түлхүүрүүдийн тоо | |
Хүснэгт олон гадаад түлхүүртэй байж болно. | Хүснэгт зөвхөн нэг үндсэн түлхүүртэй байж болно. |
Давхардал | |
Tuple нь гадаад түлхүүр атрибутын хувьд давхардсан утгатай байж болно. | Харилцааны хоёр багц нь үндсэн түлхүүр атрибутын хувьд давхардсан утгатай байж болохгүй. |
Хураангуй – Гадаад түлхүүр ба Үндсэн түлхүүр
Гадаад түлхүүр болон үндсэн түлхүүрийн ялгаа нь гадаад түлхүүр нь үндсэн түлхүүр эсвэл өөр хүснэгтийн нэр дэвшигч түлхүүрийг заадаг багана эсвэл баганын багц бөгөөд үндсэн түлхүүр нь багана эсвэл баганын багц юм. хүснэгтийн мөрийг өвөрмөц байдлаар тодорхойлоход ашиглаж болно.