ความแตกต่างระหว่างคีย์หลักและคีย์ต่างประเทศใน DBMS
เนื้อหา
คีย์เป็นส่วนสำคัญของ DBMS ที่ใช้เพื่อระบุและสร้างความสัมพันธ์ระหว่างตารางในสคีมา ทีนี้วันนี้เราจะมาพูดถึงกุญแจสำคัญสองอย่างของ DBMS นั่นคือคีย์หลักและคีย์ต่างประเทศและเราจะพูดถึงความแตกต่างระหว่างคีย์หลักและคีย์ต่างประเทศ ในทางที่ฉันจะบอกคุณถึงความแตกต่างพื้นฐานระหว่างคีย์หลักและคีย์ต่างประเทศซึ่งเป็นคีย์หลักคือหนึ่งในคีย์ตัวเลือกที่เลือกโดยผู้ออกแบบฐานข้อมูลในขณะที่คีย์ต่างประเทศเป็นคีย์ที่อ้างถึงคีย์หลักของความสัมพันธ์อื่น
มีความแตกต่างอื่น ๆ ระหว่างสองสิ่งนี้ให้เราระบุความแตกต่างเหล่านั้นด้วยความช่วยเหลือของแผนภูมิเปรียบเทียบที่แสดงด้านล่าง
- แผนภูมิเปรียบเทียบ
- คำนิยาม
- ความแตกต่างที่สำคัญ
- ข้อสรุป
แผนภูมิเปรียบเทียบ
พื้นฐานสำหรับการเปรียบเทียบ | คีย์หลัก | Foreign Key |
---|---|---|
ขั้นพื้นฐาน | คีย์หลักคือคีย์ตัวเลือกที่เลือกซึ่งจะกำหนดนิยามของ tuple ในความสัมพันธ์ | Foreign key ในตารางหมายถึงคีย์หลักของตารางอื่น |
โมฆะ | ค่าคีย์หลักไม่สามารถเป็น NULL ได้ | Foreign key ยอมรับค่า NULL |
ซ้ำ | ไม่มีทูเปิลสองตัวในความสัมพันธ์ที่มีค่าซ้ำกันสำหรับแอตทริบิวต์คีย์หลัก | Tuples สามารถนำค่าที่ซ้ำกันมาใช้กับคุณสมบัติของ foreign key |
พิสัย | สามารถมีคีย์หลักเดียวเท่านั้นของความสัมพันธ์ | อาจมีกุญแจต่างประเทศหลายอันในความสัมพันธ์ |
ตารางชั่วคราว | ข้อ จำกัด คีย์หลักสามารถกำหนดได้ในตารางชั่วคราว | ไม่สามารถกำหนดข้อ จำกัด Foreign Key ในตารางชั่วคราว |
ดัชนีแบบคลัสเตอร์ | โดยค่าเริ่มต้นคีย์หลักจะได้รับการจัดทำดัชนีคลัสเตอร์ | Foreign key จะไม่ถูกทำดัชนีโดยอัตโนมัติ จะต้องทำด้วยตนเอง |
การแทรก | เราสามารถแทรกค่าลงในแอตทริบิวต์คีย์หลักแม้ว่ารหัสอ้างอิงต่างประเทศจะไม่มีค่านั้นในคอลัมน์ | เราไม่สามารถแทรกค่าให้กับ foreign key ถ้าค่านั้นไม่มีอยู่ในคอลัมน์คีย์หลักที่อ้างอิง |
การลบ | ก่อนที่คุณจะลบค่าคีย์หลักตรวจสอบให้แน่ใจว่าค่านั้นยังไม่ปรากฏในคอลัมน์การอ้างอิงคีย์ต่างประเทศของตารางการอ้างอิง | คุณสามารถลบค่าจากคอลัมน์คีย์ต่างประเทศได้โดยไม่ต้องกังวลว่าจะมีค่านั้นอยู่ในคอลัมน์คีย์หลักที่อ้างอิงของความสัมพันธ์ที่อ้างอิงหรือไม่ |
นิยามของคีย์หลัก
คีย์หลัก ที่ไม่ซ้ำกัน กำหนดสิ่งอันดับในความสัมพันธ์ มันอาจเป็นคุณลักษณะเดียวในความสัมพันธ์หรืออาจเป็นชุดของคุณลักษณะในความสัมพันธ์ ค่าของแอตทริบิวต์คีย์หลักควร ไม่เคยเปลี่ยนแปลงหรือไม่ค่อย. เนื่องจากเป็นตัวการหมายถึงการระบุระเบียนใด ๆ ในฐานข้อมูล การเปลี่ยนแปลงในค่าแอตทริบิวต์ของคีย์หลักจะสร้างความสับสน
ผู้ออกแบบฐานข้อมูลเลือกหนึ่งใน ปุ่มตัวเลือก เป็นคีย์หลักโดยคำนึงถึงบางประเด็น ข้อพิจารณาแรกคือค่าแอตทริบิวต์หลักที่ไม่มีวันมีได้ โมฆะ ราคา. เพราะถ้าค่าคีย์หลักมีค่า NULL ก็หมายความว่าเราไม่สามารถระบุบันทึกนั้นในตาราง นอกจากนี้ยังละเมิดข้อ จำกัด ด้านความสมบูรณ์ของเอนทิตี การพิจารณาที่สองคือ ไม่มีทูเปิลสองอัน ในตารางสามารถมี เหมือนกัน ค่าสำหรับแอตทริบิวต์คีย์หลักเนื่องจากจะเป็นการละเมิดเอกลักษณ์ระหว่างสิ่งอันดับ
จะมีได้เท่านั้น หนึ่งคีย์หลัก สำหรับใด ๆ ความสัมพันธ์. คีย์หลักคือค่าเริ่มต้น คลัสเตอร์การจัดทำดัชนีซึ่งหมายความว่าสิ่งอันดับทั้งหมดในตารางจะถูกจัดเรียงตามค่าแอตทริบิวต์คีย์หลัก ข้อ จำกัด คีย์หลักสามารถกำหนดได้ใน ตารางชั่วคราว. ตารางกลางที่สร้างขึ้นระหว่างการดำเนินการของแบบสอบถามเรียกว่าตารางชั่วคราว
ในขณะที่ ลบ tuple จากความสัมพันธ์ต้องดูแลว่าค่าคีย์หลักของ tuple ที่ถูกลบยังไม่ปรากฏในคอลัมน์คีย์ภายนอกของความสัมพันธ์อ้างอิง ในขณะที่ การแทรก ไม่มีข้อ จำกัด ใด ๆ ในคีย์หลัก
คีย์หลักของตารางเมื่อใช้ในตารางอื่นจากนั้นจะกลายเป็นคีย์ต่างประเทศสำหรับตารางนั้น ข้อ จำกัด ของกุญแจต่างประเทศอธิบายไว้ด้านล่าง
นิยามของ Foreign Key
เมื่อมีความสัมพันธ์ R1ในบรรดาคุณลักษณะของมันมี ประถม สำคัญ ความสัมพันธ์อื่น ๆ R2จากนั้นเรียกแอตทริบิวต์นั้น กุญแจต่างประเทศ สำหรับความสัมพันธ์ R1. ความสัมพันธ์ R1 ที่มีรหัสต่างประเทศเรียกว่า การอ้างอิงความสัมพันธ์ เพราะมันหมายถึงคีย์หลักของความสัมพันธ์ R2 และความสัมพันธ์ R2 ถูกเรียก ความสัมพันธ์อ้างอิง.
ต่างจากคีย์หลักต่างประเทศสามารถยอมรับได้ โมฆะ ค่าเพราะมันไม่ได้มีหน้าที่ในการระบุบันทึกอย่างชัดเจนในความสัมพันธ์ในขณะที่เรามีคีย์หลักสำหรับสิ่งนี้ ในทำนองเดียวกันคีย์ต่างประเทศก็ยอมรับเช่นกัน ค่าที่ซ้ำกัน.
ความสัมพันธ์สามารถมีได้ หลายอย่าง foreign key เนื่องจากสามารถมีคุณลักษณะที่แตกต่างกันซึ่งเป็นคีย์หลักในความสัมพันธ์ที่ต่างกัน ข้อ จำกัด คีย์ต่างประเทศสามารถ ไม่ กำหนดไว้ใน ตารางชั่วคราว, ไม่ คีย์ต่างประเทศคือ คลัสเตอร์การจัดทำดัชนี คุณลักษณะ
ในขณะที่ แทรก ค่าในคอลัมน์ foreign key ของการอ้างอิงความสัมพันธ์ตรวจสอบให้แน่ใจว่าค่าการแทรกต้องแสดงในคอลัมน์คีย์หลักของความสัมพันธ์ที่อ้างอิง ในขณะที่ไม่มีข้อ จำกัด ในขณะที่ ลบ ค่าจากคอลัมน์คีย์ต่างประเทศ
- หลักคือชุดของคุณลักษณะ / คีย์ตัวเลือกที่ระบุบันทึกในความสัมพันธ์อย่างชัดเจน อย่างไรก็ตามคีย์ต่างประเทศในตารางหมายถึงคีย์หลักของตารางอื่น
- ไม่มีแอตทริบิวต์ของคีย์หลักสามารถมีค่า NULL ในขณะที่แอตทริบิวต์ของคีย์ต่างประเทศสามารถยอมรับค่า NULL
- คีย์หลักควรมีค่าแอตทริบิวต์ที่ไม่ซ้ำกันในขณะที่ foreign key อาจมีค่าแอตทริบิวต์ซ้ำกัน
- อาจมีคีย์ต่างประเทศหลายรายการในความสัมพันธ์ แต่ความสัมพันธ์มีคีย์หลักเดียวเท่านั้น
- ข้อ จำกัด คีย์หลักสามารถนำไปใช้กับตารางชั่วคราว อย่างไรก็ตามข้อ จำกัด foreign key ไม่สามารถใช้กับตารางชั่วคราวได้
- คีย์หลักคือการทำดัชนีคลัสเตอร์เริ่มต้นในขณะที่คีย์ต่างประเทศไม่ได้จัดทำดัชนีคลัสเตอร์โดยอัตโนมัติ แต่สามารถทำได้ด้วยตนเอง
- ในขณะที่ใส่ค่าลงในคอลัมน์คีย์ต่างประเทศตรวจสอบให้แน่ใจว่าค่าแอตทริบิวต์การแทรกอยู่ในคอลัมน์คีย์หลักที่อ้างอิง อย่างไรก็ตามไม่มีข้อ จำกัด ในการแทรกในคอลัมน์คีย์หลัก
- ในขณะที่ลบค่าออกจากคอลัมน์คีย์หลักตรวจสอบให้แน่ใจว่าค่าแอตทริบิวต์ที่ถูกลบนั้นไม่มีอยู่ในคอลัมน์อ้างอิงคีย์ต่างประเทศ อย่างไรก็ตามไม่มีข้อ จำกัด ในการลบค่าจากคอลัมน์ foreign key
สรุป:
ทั้งคีย์หลักและคีย์ต่างประเทศเป็นสิ่งจำเป็นสำหรับสคีมา คีย์หลักกำหนดแต่ละ tuple ในความสัมพันธ์ที่ไม่ซ้ำกันในขณะที่คีย์ต่างประเทศจะใช้ในการสร้างการเชื่อมโยงระหว่างสองความสัมพันธ์