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

คีย์ในระบบจัดการฐานข้อมูล (DBMS) คืออะไร?
คีย์ในระบบจัดการฐานข้อมูล (DBMS) คีย์ คือคุณลักษณะหรือชุดของคุณลักษณะที่ช่วยให้คุณระบุแถว (ทูเปิล) ในความสัมพันธ์ (ตาราง) ได้ คีย์ช่วยให้คุณค้นหาความสัมพันธ์ระหว่างสองตารางได้ คีย์ช่วยให้คุณระบุแถวในตารางได้อย่างไม่ซ้ำกันโดยใช้การรวมกันของคอลัมน์หนึ่งคอลัมน์ขึ้นไป และยังช่วยในการค้นหาระเบียนที่ไม่ซ้ำกันในตารางได้อีกด้วย
ตัวอย่าง:
| รหัสพนักงาน | ชื่อจริง | นามสกุล |
|---|---|---|
| 11 | แอนดรู | จอห์นสัน |
| 22 | ทอม | ไม้ |
| 33 | อเล็กซ์ | มีกำลังวังชา |
ในตัวอย่างข้างต้น รหัสพนักงาน (Employee ID) เป็นคีย์หลัก เนื่องจากใช้ระบุข้อมูลพนักงานแต่ละคนได้อย่างเฉพาะเจาะจง ในตารางนี้ ไม่มีพนักงานคนใดมีรหัสพนักงานเดียวกันได้
ทำไมเราจึงต้องการกุญแจ?
ต่อไปนี้คือเหตุผลบางประการที่ต้องใช้คีย์ในระบบจัดการฐานข้อมูล (DBMS):
- คีย์ช่วยให้คุณระบุแถวข้อมูลใดๆ ในตารางได้ ในแอปพลิเคชันในโลกแห่งความเป็นจริง ตารางอาจมีระเบียนหลายพันรายการ และระเบียนเหล่านั้นอาจซ้ำกันได้ คีย์ช่วยให้คุณสามารถระบุระเบียนในตารางได้อย่างไม่ซ้ำกัน แม้จะมีข้อท้าทายเหล่านี้ก็ตาม
- ฟังก์ชันเหล่านี้ช่วยให้คุณสามารถสร้างและระบุความสัมพันธ์ระหว่างตารางต่างๆ ได้
- สิ่งเหล่านี้ช่วยให้คุณเสริมสร้างเอกลักษณ์และความซื่อสัตย์ในความสัมพันธ์ได้
ประเภทของคีย์ในระบบจัดการฐานข้อมูล (DBMS)
ในระบบจัดการฐานข้อมูล (DBMS) มีคีย์หลักๆ อยู่ 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 |

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