คีย์ DBMS: ประเภทผู้สมัคร ประเภทหลัก ประเภทเสริม และประเภทต่างประเทศ

⚡ สรุปอย่างชาญฉลาด

คีย์ในระบบจัดการฐานข้อมูล (DBMS) คือคุณลักษณะที่ใช้ระบุแถวในตารางได้อย่างเฉพาะเจาะจง และสร้างความสัมพันธ์ระหว่างตารางต่างๆ คีย์มีแปดประเภท ตั้งแต่คีย์หลัก (super key) และคีย์รอง (primary key) ไปจนถึงคีย์ต่างประเทศ (foreign key) และคีย์สำรอง (surrogate key) ซึ่งบังคับใช้ความถูกต้องและความสมบูรณ์ของข้อมูลในฐานข้อมูลเชิงสัมพันธ์

  • 🗝️ วัตถุประสงค์หลัก: คีย์ใช้ระบุแถวที่ไม่ซ้ำกันและเชื่อมโยงตารางที่เกี่ยวข้องเพื่อให้ข้อมูลมีความสอดคล้องกัน
  • 🔝 กุญแจสำคัญ: ชุดแอตทริบิวต์ใดๆ ที่ใช้ระบุแถว โดยอาจมีแอตทริบิวต์เพิ่มเติมมากกว่าขั้นต่ำ
  • คีย์หลัก: คีย์ผู้สมัครที่เลือกไว้ จะต้องไม่เป็นค่าว่างและจะไม่ซ้ำกัน โดยมีเพียงหนึ่งคีย์ต่อหนึ่งตาราง
  • 🎯 รหัสผู้สมัคร: ซูเปอร์คีย์ขั้นต่ำที่ไม่มีแอตทริบิวต์ที่ซ้ำซ้อน โดยคีย์หลักจะถูกเลือกจากแอตทริบิวต์เหล่านี้
  • 🔁 คีย์สำรอง: คีย์ผู้สมัครใดๆ ที่ไม่ได้ถูกเลือกเป็นคีย์หลัก
  • 🔗 รหัสต่างประเทศ: คอลัมน์ที่อ้างอิงถึงคีย์หลักของตารางอื่นเพื่อรักษาความสมบูรณ์ของการอ้างอิง
  • 🧩 ภาพจำลองและภาพแทน: คีย์ผสมเป็นการรวมคอลัมน์เข้าด้วยกันเพื่อให้มีความเป็นเอกลักษณ์ ในขณะที่คีย์สำรองเป็นคีย์ที่สร้างขึ้นเพื่อใช้แทนคีย์หลัก

คีย์ DBMS ผู้สมัครหลักสูงสุด

คีย์ในระบบจัดการฐานข้อมูล (DBMS) คืออะไร?

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

ตัวอย่าง:

รหัสพนักงาน ชื่อจริง นามสกุล
11 แอนดรู จอห์นสัน
22 ทอม ไม้
33 อเล็กซ์ มีกำลังวังชา

ในตัวอย่างข้างต้น รหัสพนักงาน (Employee ID) เป็นคีย์หลัก เนื่องจากใช้ระบุข้อมูลพนักงานแต่ละคนได้อย่างเฉพาะเจาะจง ในตารางนี้ ไม่มีพนักงานคนใดมีรหัสพนักงานเดียวกันได้

ทำไมเราจึงต้องการกุญแจ?

ต่อไปนี้คือเหตุผลบางประการที่ต้องใช้คีย์ในระบบจัดการฐานข้อมูล (DBMS):

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

ประเภทของคีย์ในระบบจัดการฐานข้อมูล (DBMS)

ในระบบจัดการฐานข้อมูล (DBMS) มีคีย์หลักๆ อยู่ 8 ประเภท และแต่ละคีย์ก็มีฟังก์ชันการทำงานเฉพาะของตัวเอง:

  1. ซุปเปอร์คีย์
  2. คีย์หลัก
  3. คีย์ผู้สมัคร
  4. คีย์สำรอง
  5. ต่างประเทศที่สำคัญ
  6. คีย์ผสม
  7. คีย์ผสม
  8. กุญแจสำรอง

ตารางด้านล่างนี้สรุปประเด็นทั้งแปดอย่างโดยสังเขป ก่อนที่จะอธิบายแต่ละประเด็นโดยละเอียด

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

ซุปเปอร์คีย์คืออะไร?

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

ตัวอย่าง:

EmpSSN EmpNum นาม
9812345098 AB05 แสดงให้เห็นว่า
9876512345 AB06 โรสลิน
199937890 AB07 เจมส์

ในตัวอย่างข้างต้น EmpSSN และ EmpNum เป็นซูเปอร์คีย์

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

คีย์หลัก in DBMS คีย์หลัก คือ คอลัมน์หรือกลุ่มคอลัมน์ในตารางที่ใช้ระบุแต่ละแถวในตารางนั้นได้อย่างเฉพาะเจาะจง คีย์หลักต้องไม่ซ้ำกัน หมายความว่าค่าเดียวกันต้องไม่ปรากฏมากกว่าหนึ่งครั้งในตาราง และตารางหนึ่งๆ ไม่สามารถมีคีย์หลักได้มากกว่าหนึ่งคีย์

หลักเกณฑ์ในการกำหนดคีย์หลัก

  • สองแถวไม่สามารถมีค่าคีย์หลักเดียวกันได้
  • ทุกแถวต้องมีค่าคีย์หลัก
  • ฟิลด์คีย์หลักไม่สามารถเป็นค่าว่างได้
  • ค่าในคอลัมน์คีย์หลักไม่สามารถแก้ไขหรืออัปเดตได้ หากคีย์ภายนอกใดๆ อ้างถึงคีย์หลักนั้น

ตัวอย่าง: ในตัวอย่างต่อไปนี้ StudID เป็นคีย์หลัก

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

คีย์สำรองคืออะไร?

คีย์สำรอง คีย์หลัก คือ คอลัมน์หรือกลุ่มคอลัมน์ในตารางที่ใช้ระบุแต่ละแถวได้อย่างเฉพาะเจาะจง ตารางสามารถมีตัวเลือกคีย์หลักได้หลายตัว แต่จะมีเพียงตัวเดียวเท่านั้นที่ถูกกำหนดให้เป็นคีย์หลัก คีย์ทั้งหมดที่ไม่ใช่คีย์หลักเรียกว่าคีย์สำรอง

ตัวอย่าง: ในตารางนี้ StudID, Roll No และ Email มีคุณสมบัติที่จะเป็นคีย์หลักได้ แต่เนื่องจาก StudID เป็นคีย์หลักอยู่แล้ว Roll No และ Email จึงกลายเป็นคีย์รอง

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

รหัสผู้สมัครคืออะไร?

รหัสผู้สมัคร คีย์ผู้สมัคร (Candidate Key) คือชุดของแอตทริบิวต์ที่ใช้ระบุทูเปิลในตารางได้อย่างเฉพาะเจาะจง คีย์ผู้สมัครเป็นซูเปอร์คีย์ที่ไม่มีแอตทริบิวต์ซ้ำกัน คีย์หลักควรถูกเลือกจากคีย์ผู้สมัคร ทุกตารางต้องมีคีย์ผู้สมัครอย่างน้อยหนึ่งคีย์ และตารางหนึ่งสามารถมีคีย์ผู้สมัครได้หลายคีย์ แต่มีคีย์หลักได้เพียงคีย์เดียว

คุณสมบัติของคีย์ผู้สมัคร:

  • ต้องมีค่าที่ไม่ซ้ำกัน
  • คีย์ผู้สมัครอาจมีแอตทริบิวต์ได้หลายอย่าง
  • ต้องไม่มีค่าว่าง (null) อยู่ในนั้น
  • ควรมีฟิลด์ขั้นต่ำที่จำเป็นเพื่อให้มั่นใจได้ว่าข้อมูลไม่ซ้ำกัน
  • มันใช้ระบุแต่ละระเบียนในตารางได้อย่างเฉพาะเจาะจง

ตัวอย่าง: ในตารางด้านล่าง StudID, Roll No และ Email เป็นคีย์หลักที่ช่วยให้เราสามารถระบุข้อมูลนักเรียนแต่ละคนได้อย่างเฉพาะเจาะจง ความสัมพันธ์ของคีย์เหล่านี้กับคีย์หลักและคีย์รองเป็นวิธีที่ใช้กันทั่วไปในการทำความเข้าใจ การพึ่งพาการทำงาน.

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

กุญแจต่างประเทศคืออะไร?

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

ตัวอย่าง:

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

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

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

บัตรประจำตัวครู ฝ่ายCode ชื่อ ชื่อ
B002 002 เดวิด วอร์เนอร์
B017 002 ซาร่า โจเซฟ
B009 001 ไมค์ บรันตัน

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

คีย์ผสมคืออะไร?

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

ตัวอย่าง:

หมายเลขคำสั่งซื้อ รหัสผลิตภัณฑ์ ชื่อสินค้า จำนวน
B005 ญี่ปุ่น 102459 เม้าส์ 5
B005 ดีเคที321573 USB 10
B005 โอ้พระเจ้า446789 จอแอลซีดี 20
B004 ดีเคที321573 USB 15
B002 โอ้พระเจ้า446789 เลเซอร์ปริ้นเตอร์ 3

ในตัวอย่างนี้ OrderNo และ ProductID ไม่สามารถเป็นคีย์หลักได้ เนื่องจากทั้งสองตัวแปรไม่สามารถระบุระเบียนแต่ละรายการได้อย่างเฉพาะเจาะจง อย่างไรก็ตาม คีย์ผสมระหว่าง OrderNo และ ProductID สามารถระบุระเบียนแต่ละรายการได้อย่างเฉพาะเจาะจง

คีย์ผสมคืออะไร?

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

ความแตกต่างระหว่างคีย์ผสมและคีย์ประกอบคือ คีย์ผสมสามารถมีส่วนใดส่วนหนึ่งเป็นคีย์ต่างประเทศได้ แต่คีย์ประกอบอาจเป็นหรือไม่เป็นส่วนหนึ่งของคีย์ต่างประเทศก็ได้

คีย์สำรอง (Surrogate Key) คืออะไร?

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

ชื่อ นามสกุล เวลาเริ่มต้น เวลาสิ้นสุด
แอนน์ Smith 09:00 18:00
ช่องเสียบ ฟรานซิส 08:00 17:00
แอนนา McLean 11:00 20:00
แสดงให้เห็นว่า วิลลาม 14:00 23:00

ตัวอย่างข้างต้นแสดงตารางเวลาการทำงานของพนักงานแต่ละคน ในกรณีนี้ จำเป็นต้องใช้คีย์ตัวแทน (surrogate key) เพื่อระบุตัวตนของพนักงานแต่ละคนได้อย่างเฉพาะเจาะจง คีย์ตัวแทนใน SQL ใช้เมื่อ:

  • ไม่มีคุณสมบัติใดที่มีพารามิเตอร์เป็นคีย์หลัก
  • คีย์หลักมีขนาดใหญ่หรือซับซ้อนเกินไป

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

ต่อไปนี้คือความแตกต่างหลักระหว่างคีย์หลักและคีย์รอง:

คีย์หลัก ต่างประเทศที่สำคัญ
ช่วยให้คุณระบุระเบียนในตารางได้อย่างเฉพาะเจาะจง เป็นเขตข้อมูลในตารางที่เป็นคีย์หลักของตารางอื่น
คีย์หลักจะไม่ยอมรับค่าว่าง (null) เด็ดขาด คีย์ต่างประเทศอาจยอมรับค่าว่างหลายค่า
คีย์หลักเป็นดัชนีแบบคลัสเตอร์ และข้อมูลในตารางจะถูกจัดเรียงตามลำดับของดัชนีแบบคลัสเตอร์นั้น คีย์นอกไม่สามารถสร้างดัชนีโดยอัตโนมัติ ไม่ว่าจะเป็นดัชนีแบบคลัสเตอร์หรือแบบไม่คลัสเตอร์ คุณต้องสร้างดัชนีด้วยตนเอง
ตารางสามารถมีคีย์หลักได้เพียงคีย์เดียว คุณสามารถมีคีย์ต่างประเทศได้หลายคีย์ในตาราง

คำถามที่พบบ่อย

แต่ละคีย์ผู้สมัครสามารถระบุแถวได้อย่างเฉพาะเจาะจง คีย์หลักคือคีย์ผู้สมัครเพียงคีย์เดียวที่ผู้ออกแบบเลือกใช้ ส่วนคีย์ผู้สมัครที่เหลือจะกลายเป็นคีย์สำรอง

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

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

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

ใช่แล้ว ต่างจากคีย์หลัก คีย์รองสามารถเก็บค่าว่างได้ ซึ่งหมายถึงแถวที่ยังไม่มีความสัมพันธ์กับเรคอร์ดหลักใดๆ คีย์รองที่ไม่สามารถเก็บค่าว่างได้จะต้องตรงกับคีย์หลักที่มีอยู่แล้ว

สรุปโพสต์นี้ด้วย: