ความแตกต่างระหว่างคีย์หลักและคีย์ต่างประเทศ

ความแตกต่างที่สำคัญระหว่างคีย์หลักกับคีย์ต่างประเทศ

  • ข้อจำกัดคีย์หลักคือคอลัมน์ที่ระบุทุกแถวในตารางของระบบการจัดการฐานข้อมูลเชิงสัมพันธ์โดยไม่ซ้ำกัน ในขณะที่คีย์ภายนอกคือคอลัมน์ที่สร้างความสัมพันธ์ระหว่างสองตาราง
  • คีย์หลักไม่ยอมรับค่า Null ในขณะที่คีย์นอกอาจยอมรับค่า Null หลายค่า
  • คุณสามารถมีคีย์หลักได้เพียงคีย์เดียวในตาราง ในขณะที่คุณสามารถมีคีย์นอกได้หลายคีย์ในตาราง
  • ค่าของคีย์หลักไม่สามารถลบออกจากตารางหลักได้ ในขณะที่ค่าของคีย์นอกสามารถลบออกจากตารางลูกได้
  • ไม่มีสองแถวที่สามารถมีค่าที่เหมือนกันสำหรับคีย์หลักได้ ในทางกลับกัน คีย์ต่างประเทศอาจมีค่าที่ซ้ำกัน
  • ไม่มีข้อจำกัดในการแทรกค่าลงในคอลัมน์ของตารางในขณะที่แทรกค่าใดๆ ลงในตารางคีย์นอก ตรวจสอบให้แน่ใจว่าค่านั้นมีอยู่ในคอลัมน์ของคีย์หลัก
ความแตกต่างระหว่างคีย์หลักและคีย์ต่างประเทศ
ความแตกต่างระหว่างคีย์หลักและคีย์ต่างประเทศ

ที่นี่ ฉันได้วิเคราะห์ความแตกต่างระหว่างคีย์หลักและคีย์นอกแล้ว และจะประเมินข้อดีข้อเสียอย่างครอบคลุม

คีย์หลักคืออะไร?

ข้อจำกัดคีย์หลักคือคอลัมน์หรือกลุ่มของคอลัมน์ที่ระบุทุกแถวในตารางของระบบการจัดการฐานข้อมูลเชิงสัมพันธ์โดยไม่ซ้ำกัน ไม่สามารถทำซ้ำได้ ซึ่งหมายความว่าค่าเดียวกันไม่ควรปรากฏมากกว่าหนึ่งครั้งในตาราง

ตารางไม่สามารถมีคีย์หลักได้มากกว่าหนึ่งคีย์ ที่ คีย์หลัก สามารถกำหนดได้ในระดับคอลัมน์หรือตาราง หากคุณสร้างคีย์หลักแบบผสม ควรกำหนดไว้ที่ระดับตาราง

ตัวอย่างของคีย์หลัก

ไวยากรณ์:

ด้านล่างนี้เป็นไวยากรณ์ของคีย์หลัก:

CREATE TABLE <Table-Name>
(
Column1 datatype,
Column2 datatype,  PRIMARY KEY (Column-Name)
.
);    

ที่นี่

  • Table_Name คือชื่อของตารางที่คุณต้องสร้าง
  • Column_Name คือชื่อของคอลัมน์ที่มีคีย์หลัก

ตัวอย่าง:

สตั๊ดไอดี ม้วนไม่มี ชื่อ นามสกุล อีเมล
1 11 ทอม ค่าสมัครเรียน abc@gmail.com
2 12 Nick ไรท์ xyz@gmail.com
3 13 Dana Natan mno@yahoo.com

ในตัวอย่างข้างต้น เราได้สร้างตารางนักเรียนที่มีคอลัมน์เช่น StudID, Roll No., First Name, Last Name และ Email StudID ถูกเลือกเป็นคีย์หลักเพราะสามารถระบุแถวอื่นๆ ในตารางได้อย่างชัดเจน

เหตุใดจึงต้องใช้คีย์หลัก

ตลอดระยะเวลาหลายปีในการจัดการระบบฐานข้อมูล ฉันได้สังเกตเห็นข้อเสียและคุณประโยชน์เหล่านี้เมื่อใช้คีย์หลัก:

  • จุดมุ่งหมายหลักของคีย์หลักคือการระบุแต่ละระเบียนในตารางฐานข้อมูล
  • คุณสามารถใช้คีย์หลักได้เมื่อคุณไม่อนุญาตให้ผู้อื่นป้อนค่าว่าง
  • หากคุณลบหรืออัปเดตบันทึก การดำเนินการที่คุณระบุจะถูกดำเนินการเพื่อให้แน่ใจว่าข้อมูลมีความสมบูรณ์
  • ดำเนินการจำกัดเพื่อปฏิเสธการดำเนินการลบหรืออัปเดตสำหรับตารางหลัก
  • ข้อมูลจะถูกจัดระเบียบในลำดับของดัชนีคลัสเตอร์ทุกครั้งที่คุณจัดระเบียบตาราง DBMS ทางกายภาพ

คีย์ต่างประเทศคืออะไร?

Foreign key คือคอลัมน์ที่สร้างความสัมพันธ์ระหว่างสองตาราง วัตถุประสงค์ของคีย์ Foreign คือเพื่อรักษาความสมบูรณ์ของข้อมูลและอนุญาตการนำทางระหว่างสองอินสแตนซ์ที่แตกต่างกันของเอนทิตี มันทำหน้าที่เป็นตัวอ้างอิงโยงระหว่างสองตารางโดยอ้างอิงคีย์หลักของตารางอื่น ทุกความสัมพันธ์ในฐานข้อมูลควรได้รับการสนับสนุนโดยคีย์ต่างประเทศ

ตัวอย่างคีย์ต่างประเทศ

ไวยากรณ์:

ด้านล่างนี้คือไวยากรณ์ของ Foreign Key:

CREATE TABLE <Table Name>( 
column1    datatype,
column2    datatype,  
constraint (name of constraint) 
FOREIGN KEY [column1, column2...] 
REFERENCES [primary key table name] (List of primary key table column) ...);

ที่นี่

  • พารามิเตอร์ ชื่อตาราง ระบุชื่อของตารางที่คุณจะสร้าง
  • พารามิเตอร์ column1, column2… แสดงถึงคอลัมน์ที่ต้องเพิ่มลงในตาราง
  • ข้อจำกัดหมายถึงชื่อของข้อจำกัดที่คุณกำลังสร้าง
  • การอ้างอิงระบุตารางที่มีคีย์หลัก

ตัวอย่าง:

รหัสแผนก ชื่อแผนก
001 วิทยาศาสตร์
002 ภาษาอังกฤษ
005 คอมพิวเตอร์
บัตรประจำตัวครู ชื่อ ชื่อ
B002 เดวิด วอร์เนอร์
B017 ซาร่า โจเซฟ
B009 ไมค์ บรันตัน

ในตัวอย่างข้างต้น เรามีตารางสองตาราง: ครูและแผนกในโรงเรียน อย่างไรก็ตาม ไม่มีทางที่จะดูว่าการค้นหาใดได้ผลในแผนกใด

ในตารางนี้ ด้วยการเพิ่มคีย์ต่างประเทศใน Deptcode ให้กับชื่อครู เราสามารถสร้างความสัมพันธ์ระหว่างทั้งสองตารางได้

บัตรประจำตัวครู รหัสแผนก ชื่อ ชื่อ
B002 002 เดวิด วอร์เนอร์
B017 002 ซาร่า โจเซฟ
B009 001 ไมค์ บรันตัน

แนวคิดนี้เรียกอีกอย่างว่า Referential Integrity

เหตุใดจึงต้องใช้คีย์ต่างประเทศ

จากสิ่งที่ฉันได้เห็น นี่คือเหตุผลสำคัญในการใช้คีย์ต่างประเทศ:

  • คีย์ต่างประเทศช่วยให้คุณย้ายเอนทิตีโดยใช้คีย์หลักจากตารางหลัก
  • A คีย์ต่างประเทศ ช่วยให้คุณสามารถเชื่อมโยงสองตารางขึ้นไปเข้าด้วยกัน
  • ทำให้ข้อมูลฐานข้อมูลของคุณสอดคล้องกัน
  • Foreign Key สามารถใช้เพื่อจับคู่คอลัมน์หรือชุดค่าผสมของคอลัมน์กับคีย์หลักในตารางหลักได้
  • ข้อจำกัดคีย์นอกของ SQL ถูกใช้เพื่อให้แน่ใจว่าความสมบูรณ์ในการอ้างอิงของพาเรนต์ของข้อมูลตรงกับค่าในตารางลูก

ความแตกต่างระหว่างคีย์หลักและคีย์ต่างประเทศ

ให้ฉันแบ่งปันความแตกต่างที่สำคัญระหว่างคีย์หลักและคีย์ต่างประเทศตามที่ฉันได้พบเป็นการส่วนตัว:

คีย์หลักเทียบกับคีย์ต่างประเทศ
คีย์หลักเทียบกับคีย์ต่างประเทศ
เกณฑ์การเปรียบเทียบ คีย์หลัก ต่างประเทศที่สำคัญ
คำนิยาม ข้อจำกัดคีย์หลักคือคอลัมน์หรือกลุ่มของคอลัมน์ที่ระบุทุกแถวในตารางโดยไม่ซ้ำกัน ระบบจัดการฐานข้อมูลเชิงสัมพันธ์. Foreign Key คือคอลัมน์ที่สร้างความสัมพันธ์ระหว่างสองตาราง
ขั้นพื้นฐาน ช่วยให้คุณระบุเรกคอร์ดในตารางได้โดยไม่ซ้ำกัน เป็นเขตข้อมูลในตารางที่เป็นคีย์หลักของตารางอื่น
NULL คีย์หลักไม่ยอมรับค่าว่าง คีย์ต่างประเทศอาจยอมรับค่าว่างหลายค่า
การจัดทำดัชนี คีย์หลักเป็นดัชนีคลัสเตอร์ และข้อมูลในตาราง DBMS จะได้รับการจัดระเบียบทางกายภาพในลำดับของดัชนีคลัสเตอร์ คีย์ต่างประเทศไม่สามารถสร้างดัชนีแบบคลัสเตอร์หรือไม่คลัสเตอร์ได้โดยอัตโนมัติ
นับ คุณสามารถมีคีย์หลักได้เพียงคีย์เดียวในตาราง คุณสามารถมีคีย์ต่างประเทศได้หลายคีย์ในตาราง
การลบ ไม่สามารถลบค่าของคีย์หลักออกจากตารางหลักได้ ค่าของคีย์นอกสามารถลบออกจากตารางลูกได้
ตารางชั่วคราว คุณสามารถกำหนดคีย์หลักโดยปริยายในตารางชั่วคราว คุณไม่สามารถกำหนดคีย์ภายนอกบนตารางชั่วคราวภายในเครื่องหรือส่วนกลางได้
ความสัมพันธ์ คีย์หลักเป็นดัชนีคลัสเตอร์ โดยค่าเริ่มต้นไม่ใช่ดัชนีคลัสเตอร์
การทำสำเนา ไม่มีสองแถวที่สามารถมีค่าเหมือนกันสำหรับคีย์หลักได้ คีย์ต่างประเทศสามารถมีค่าที่ซ้ำกันได้
การแทรก ไม่มีข้อจำกัดในการแทรกค่าลงในคอลัมน์ของตาราง ขณะแทรกค่าใดๆ ลงในตารางคีย์นอก ตรวจสอบให้แน่ใจว่าค่านั้นปรากฏในคอลัมน์ของคีย์หลัก

วิธีเลือกระหว่างคีย์หลักและคีย์ต่างประเทศ

จากสิ่งที่เราได้เห็น คีย์หลักจะระบุรายการตารางโดยไม่ซ้ำกัน และคีย์นอกจะเชื่อมโยงรายการเหล่านี้ข้ามตาราง ซึ่งทั้งมีความสำคัญต่อการรักษาความสมบูรณ์ของข้อมูลและอำนวยความสะดวกในการดึงข้อมูลอย่างมีประสิทธิภาพ