![#9. Создание связей между моделями через класс ForeignKey | Django уроки](https://i.ytimg.com/vi/tzl1uklqM20/hqdefault.jpg)
เนื้อหา
- นิยาม - Foreign Key หมายถึงอะไร
- ข้อมูลเบื้องต้นเกี่ยวกับ Microsoft Azure และ Microsoft Cloud | ในคู่มือนี้คุณจะได้เรียนรู้ว่าการประมวลผลแบบคลาวด์คืออะไรและ Microsoft Azure สามารถช่วยคุณในการโยกย้ายและดำเนินธุรกิจจากคลาวด์อย่างไร
- Techopedia อธิบาย Foreign Key
นิยาม - Foreign Key หมายถึงอะไร
foreign key คือคอลัมน์หรือกลุ่มของคอลัมน์ในตารางฐานข้อมูลเชิงสัมพันธ์ที่ให้การเชื่อมโยงระหว่างข้อมูลในสองตาราง มันทำหน้าที่เป็นตัวอ้างอิงโยงระหว่างตารางเพราะมันอ้างอิงถึงคีย์หลักของตารางอื่นดังนั้นจึงสร้างการเชื่อมโยงระหว่างพวกเขา
ตารางส่วนใหญ่ในระบบฐานข้อมูลเชิงสัมพันธ์เป็นไปตามแนวคิดคีย์ภายนอก ในฐานข้อมูลที่ซับซ้อนและคลังข้อมูลต้องมีการเพิ่มข้อมูลในโดเมนในหลาย ๆ ตารางเพื่อรักษาความสัมพันธ์ระหว่างพวกเขา แนวคิดของ referential integrity มาจากทฤษฎีคีย์ต่างประเทศ
คีย์ต่างประเทศและการใช้งานนั้นซับซ้อนกว่าคีย์หลัก
ข้อมูลเบื้องต้นเกี่ยวกับ Microsoft Azure และ Microsoft Cloud | ในคู่มือนี้คุณจะได้เรียนรู้ว่าการประมวลผลแบบคลาวด์คืออะไรและ Microsoft Azure สามารถช่วยคุณในการโยกย้ายและดำเนินธุรกิจจากคลาวด์อย่างไร
Techopedia อธิบาย Foreign Key
สำหรับคอลัมน์ใด ๆ ที่ทำหน้าที่เป็นคีย์ต่างประเทศควรมีค่าที่เกี่ยวข้องในตารางลิงก์ ต้องใช้ความระมัดระวังเป็นพิเศษในขณะที่แทรกข้อมูลและลบข้อมูลออกจากคอลัมน์คีย์ต่างประเทศเนื่องจากการลบหรือการแทรกอย่างไม่ระมัดระวังอาจทำลายความสัมพันธ์ระหว่างสองตาราง
ตัวอย่างเช่นหากมีสองตารางลูกค้าและการสั่งซื้อสามารถสร้างความสัมพันธ์ระหว่างพวกเขาโดยการแนะนำต่างประเทศเข้าสู่ตารางการสั่งซื้อที่อ้างอิงถึงรหัสลูกค้าในตารางลูกค้า คอลัมน์รหัสลูกค้ามีอยู่ในทั้งลูกค้าและตารางการสั่งซื้อ รหัสลูกค้าในตารางคำสั่งซื้อกลายเป็นกุญแจต่างประเทศซึ่งอ้างอิงถึงคีย์หลักในตารางลูกค้า ในการแทรกรายการลงในตารางการสั่งซื้อข้อ จำกัด กุญแจต่างประเทศจะต้องได้รับการปฏิบัติ ความพยายามในการป้อนรหัสลูกค้าที่ไม่ได้อยู่ในตารางลูกค้าล้มเหลวดังนั้นการรักษาความสมบูรณ์ของการอ้างอิงของตาราง
การดำเนินการอ้างอิงบางอย่างที่เกี่ยวข้องกับการดำเนินการกับคีย์ต่างประเทศรวมถึงสิ่งต่อไปนี้:
- เรียงซ้อน: เมื่อแถวในตารางหลักถูกลบคอลัมน์สำคัญต่างประเทศที่ตรงกันในตารางลูกจะถูกลบเช่นกันสร้างการลบแบบเรียงซ้อน
- Set Null: เมื่อแถวอ้างอิงในตารางหลักถูกลบหรือปรับปรุงค่าคีย์ต่างประเทศในแถวอ้างอิงจะถูกตั้งค่าเป็น null เพื่อรักษาความสมบูรณ์ของการอ้างอิง
- ทริกเกอร์: การดำเนินการอ้างอิงมักจะถูกนำไปใช้เป็นทริกเกอร์ การดำเนินการกับ foreign key ในหลายวิธีคล้ายกับทริกเกอร์ที่ผู้ใช้กำหนด เพื่อให้แน่ใจว่าการดำเนินการที่เหมาะสมบางครั้งการดำเนินการอ้างอิงจะถูกแทนที่ด้วยทริกเกอร์ที่ผู้ใช้กำหนดเองที่เทียบเท่า
- ตั้งค่าเริ่มต้น: การดำเนินการอ้างอิงนี้คล้ายกับ "set null" ค่า foreign key ในตารางลูกถูกตั้งค่าเป็นค่าคอลัมน์เริ่มต้นเมื่อแถวอ้างอิงในตารางหลักถูกลบหรือปรับปรุง
- จำกัด : นี่คือการดำเนินการอ้างอิงปกติที่เกี่ยวข้องกับคีย์ต่างประเทศ ค่าในตารางหลักไม่สามารถลบหรืออัปเดตได้ตราบใดที่มันถูกอ้างอิงโดยคีย์ต่างประเทศในตารางอื่น
- ไม่มีการดำเนินการ: การดำเนินการอ้างอิงนี้มีลักษณะคล้ายกับฟังก์ชั่น "จำกัด " ยกเว้นว่าจะไม่มีการตรวจสอบการดำเนินการหลังจากพยายามแก้ไขตาราง