Үндсэн түлхүүр vs Өвөрмөц түлхүүр
Өгөгдлийн сангийн мөр эсвэл мөрийн багцыг таних, хандахад ашиглаж болох багана эсвэл баганын багцыг түлхүүр гэнэ. Өвөрмөц түлхүүр нь харилцааны өгөгдлийн сангийн контекст дэх хүснэгтийн мөрийг өвөрмөц байдлаар тодорхойлох түлхүүр юм. Өвөрмөц түлхүүр нь нэг багана эсвэл баганын багцаас бүрдэнэ. Анхдагч түлхүүр нь мөрийг өвөрмөц байдлаар тодорхойлдог хүснэгтийн баганын хослол юм. Гэхдээ энэ нь өвөрмөц түлхүүрийн онцгой тохиолдол гэж тооцогддог.
Өвөрмөц түлхүүр гэж юу вэ?
Өмнө дурьдсанчлан, өвөрмөц түлхүүр нь хүснэгтийн мөрийг өвөрмөц байдлаар тодорхойлох боломжтой нэг багана эсвэл баганын багц юм. Тиймээс, өвөрмөц түлхүүр нь түүний хоёр утга тэнцүү байхаар хязгаарлагддаг. Нэг чухал шинж чанар бол өвөрмөц түлхүүрүүд нь NOT NULL хязгаарлалтыг хэрэгжүүлэхгүй байх явдал юм. NULL нь утга байхгүйг илэрхийлдэг тул баганад хоёр мөрөнд NULL байвал утга нь тэнцүү гэсэн үг биш юм. Өвөрмөц түлхүүр гэж тодорхойлсон багана нь тухайн баганад зөвхөн ганц NULL утгыг зөвшөөрдөг. Дараа нь үүнийг тухайн мөрийг өвөрмөц байдлаар тодорхойлоход ашиглаж болно. Жишээлбэл, оюутны мэдээллийг агуулсан хүснэгтэд оюутны үнэмлэхийг өвөрмөц түлхүүр гэж тодорхойлж болно. Хоёр оюутан ижил үнэмлэхтэй байж чадахгүй тул энэ нь нэг оюутныг өвөрмөц байдлаар тодорхойлдог. Тиймээс оюутны ID багана нь өвөрмөц түлхүүрийн бүх шинж чанарыг хангадаг. Өгөгдлийн сангийн дизайнаас хамааран хүснэгт нь нэгээс олон өвөрмөц түлхүүртэй байж болно.
Үндсэн түлхүүр гэж юу вэ?
Үндсэн түлхүүр нь мөн хамаарлын өгөгдлийн сангийн хүснэгтийн мөрийг өвөрмөц байдлаар тодорхойлдог багана эсвэл баганын хослол юм. Хүснэгт хамгийн ихдээ нэг үндсэн түлхүүртэй байж болно. Үндсэн түлхүүр нь далд NOT NULL хязгаарлалтыг хэрэгжүүлдэг. Тиймээс үндсэн түлхүүр гэж тодорхойлсон баганад NULL утгууд байж болохгүй. Үндсэн түлхүүр нь нийгмийн даатгалын дугаар гэх мэт өвөрмөц байх баталгаатай хүснэгтэд байгаа ердийн шинж чанар эсвэл Microsoft SQL Server дахь Дэлхий дахинд өвөрмөц танигч (GUID) гэх мэт мэдээллийн сангийн удирдлагын системээр үүсгэгдсэн өвөрмөц утга байж болно. Анхдагч түлхүүрүүдийг ANSI SQL стандартын PRIMARY KEY хязгаарлалтаар тодорхойлдог. Хүснэгт үүсгэх үед үндсэн түлхүүрийг мөн тодорхойлж болно. SQL нь үндсэн түлхүүрийг нэг буюу хэд хэдэн баганаас бүрдүүлэх боломжийг олгодог бөгөөд үндсэн түлхүүрт багтсан багана бүр нь NULL БИШ гэж далд хэлбэрээр тодорхойлогддог. Гэхдээ зарим өгөгдлийн сангийн удирдлагын системүүд үндсэн түлхүүр баганыг NULL БИШ болгохыг шаарддаг.
Үндсэн түлхүүр ба өвөрмөц түлхүүрийн ялгаа
Хэдийгээр анхдагч түлхүүр болон өвөрмөц түлхүүр нь хүснэгтийн мөрийг өвөрмөц байдлаар тодорхойлох боломжтой нэг буюу хэд хэдэн багана боловч зарим чухал ялгаанууд байдаг. Хамгийн чухал нь хүснэгт нь зөвхөн нэг үндсэн түлхүүртэй байж болох ба нэгээс олон өвөрмөц түлхүүртэй байж болно. Анхдагч түлхүүрийг өвөрмөц түлхүүрийн онцгой тохиолдол гэж үзэж болно. Өөр нэг ялгаа нь анхдагч түлхүүрүүд нь далд NOT NULL хязгаарлалттай байдаг бол өвөрмөц түлхүүр нь тийм хязгаарлалтгүй байдаг. Иймээс өвөрмөц түлхүүрийн баганууд нь NULL утгыг агуулж болох эсвэл агуулаагүй байж болох ч үндсэн түлхүүрийн баганууд NULL утгыг агуулж болохгүй.