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

ผู้เขียน: Laura McKinney
วันที่สร้าง: 1 เมษายน 2021
วันที่อัปเดต: 12 พฤษภาคม 2024
Anonim
Primary Key, Foreign Key Concept, Practical Example in SQL
วิดีโอ: Primary Key, Foreign Key Concept, Practical Example in SQL

เนื้อหา


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

มีความแตกต่างอื่น ๆ ระหว่างสองสิ่งนี้ให้เราระบุความแตกต่างเหล่านั้นด้วยความช่วยเหลือของแผนภูมิเปรียบเทียบที่แสดงด้านล่าง

  1. แผนภูมิเปรียบเทียบ
  2. คำนิยาม
  3. ความแตกต่างที่สำคัญ
  4. ข้อสรุป

แผนภูมิเปรียบเทียบ

พื้นฐานสำหรับการเปรียบเทียบคีย์หลัก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 ของการอ้างอิงความสัมพันธ์ตรวจสอบให้แน่ใจว่าค่าการแทรกต้องแสดงในคอลัมน์คีย์หลักของความสัมพันธ์ที่อ้างอิง ในขณะที่ไม่มีข้อ จำกัด ในขณะที่ ลบ ค่าจากคอลัมน์คีย์ต่างประเทศ

  1. หลักคือชุดของคุณลักษณะ / คีย์ตัวเลือกที่ระบุบันทึกในความสัมพันธ์อย่างชัดเจน อย่างไรก็ตามคีย์ต่างประเทศในตารางหมายถึงคีย์หลักของตารางอื่น
  2. ไม่มีแอตทริบิวต์ของคีย์หลักสามารถมีค่า NULL ในขณะที่แอตทริบิวต์ของคีย์ต่างประเทศสามารถยอมรับค่า NULL
  3. คีย์หลักควรมีค่าแอตทริบิวต์ที่ไม่ซ้ำกันในขณะที่ foreign key อาจมีค่าแอตทริบิวต์ซ้ำกัน
  4. อาจมีคีย์ต่างประเทศหลายรายการในความสัมพันธ์ แต่ความสัมพันธ์มีคีย์หลักเดียวเท่านั้น
  5. ข้อ จำกัด คีย์หลักสามารถนำไปใช้กับตารางชั่วคราว อย่างไรก็ตามข้อ จำกัด foreign key ไม่สามารถใช้กับตารางชั่วคราวได้
  6. คีย์หลักคือการทำดัชนีคลัสเตอร์เริ่มต้นในขณะที่คีย์ต่างประเทศไม่ได้จัดทำดัชนีคลัสเตอร์โดยอัตโนมัติ แต่สามารถทำได้ด้วยตนเอง
  7. ในขณะที่ใส่ค่าลงในคอลัมน์คีย์ต่างประเทศตรวจสอบให้แน่ใจว่าค่าแอตทริบิวต์การแทรกอยู่ในคอลัมน์คีย์หลักที่อ้างอิง อย่างไรก็ตามไม่มีข้อ จำกัด ในการแทรกในคอลัมน์คีย์หลัก
  8. ในขณะที่ลบค่าออกจากคอลัมน์คีย์หลักตรวจสอบให้แน่ใจว่าค่าแอตทริบิวต์ที่ถูกลบนั้นไม่มีอยู่ในคอลัมน์อ้างอิงคีย์ต่างประเทศ อย่างไรก็ตามไม่มีข้อ จำกัด ในการลบค่าจากคอลัมน์ foreign key

สรุป:

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