ความแตกต่างระหว่างคีย์หลักและคีย์ต่างประเทศ
ความแตกต่างที่สำคัญระหว่างคีย์หลักกับคีย์ต่างประเทศ
- ข้อจำกัดคีย์หลักคือคอลัมน์ที่ระบุทุกแถวในตารางของระบบการจัดการฐานข้อมูลเชิงสัมพันธ์โดยไม่ซ้ำกัน ในขณะที่คีย์ภายนอกคือคอลัมน์ที่สร้างความสัมพันธ์ระหว่างสองตาราง
- คีย์หลักไม่ยอมรับค่า 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 จะได้รับการจัดระเบียบทางกายภาพในลำดับของดัชนีคลัสเตอร์ | คีย์ต่างประเทศไม่สามารถสร้างดัชนีแบบคลัสเตอร์หรือไม่คลัสเตอร์ได้โดยอัตโนมัติ |
นับ | คุณสามารถมีคีย์หลักได้เพียงคีย์เดียวในตาราง | คุณสามารถมีคีย์ต่างประเทศได้หลายคีย์ในตาราง |
การลบ | ไม่สามารถลบค่าของคีย์หลักออกจากตารางหลักได้ | ค่าของคีย์นอกสามารถลบออกจากตารางลูกได้ |
ตารางชั่วคราว | คุณสามารถกำหนดคีย์หลักโดยปริยายในตารางชั่วคราว | คุณไม่สามารถกำหนดคีย์ภายนอกบนตารางชั่วคราวภายในเครื่องหรือส่วนกลางได้ |
ความสัมพันธ์ | คีย์หลักเป็นดัชนีคลัสเตอร์ | โดยค่าเริ่มต้นไม่ใช่ดัชนีคลัสเตอร์ |
การทำสำเนา | ไม่มีสองแถวที่สามารถมีค่าเหมือนกันสำหรับคีย์หลักได้ | คีย์ต่างประเทศสามารถมีค่าที่ซ้ำกันได้ |
การแทรก | ไม่มีข้อจำกัดในการแทรกค่าลงในคอลัมน์ของตาราง | ขณะแทรกค่าใดๆ ลงในตารางคีย์นอก ตรวจสอบให้แน่ใจว่าค่านั้นปรากฏในคอลัมน์ของคีย์หลัก |
วิธีเลือกระหว่างคีย์หลักและคีย์ต่างประเทศ
จากสิ่งที่เราได้เห็น คีย์หลักจะระบุรายการตารางโดยไม่ซ้ำกัน และคีย์นอกจะเชื่อมโยงรายการเหล่านี้ข้ามตาราง ซึ่งทั้งมีความสำคัญต่อการรักษาความสมบูรณ์ของข้อมูลและอำนวยความสะดวกในการดึงข้อมูลอย่างมีประสิทธิภาพ