ประเภทของคีย์ใน ระบบฐานข้อมูล
การกำหนดคีย์ในระบบฐานข้อมูลนั้น ไม่ว่า ฐานข้อมูลใดๆเช่น PostgreSQL, MySQL, Oracle, SQL Server ก็มี Key ไว้สำหรับเป็นการช่วยเพิ่มประสิทธิภาพในการทำงานของฐานข้อมูล เพราะเป็นการกำหนดการอ้างอิงของข้อมูล การค้นหา จึงทำให้การประมวลของระบบมีความรวดเร็วยิ่ง ซึ่งคีย์ในระบบฐานข้อมูลสามารถแบ่งออกได้ 5 ชนิดดังนี้
1.Primary Key (คีย์หลัก) คือะไร
คีย์หลัก คือข้อมูลคอลัมน์หนึ่งในตารางที่ไม่มีค่าซ้ำกับข้อมูลคอลัมน์อื่น เเละต้องไม่เป็นค่าว่าง(Null)
จากรูปที่ 1.1 จะเห็นว่าคอลัมน์ที่เป็น Primary Key คือ รหัสประจำตัวนักศึกษา เพราะไม่มีค่าซ้ำกับคอลัมน์อื่น เเละไม่เป็นค่าว่าง
#อาจมีข้อสงสัยว่าทำไมเราไม่ใช้ ชื่อ หรือ นามสกุล ในการกำหนด Primary Key เพราะชื่อและนามสกุลของคนเราอาจมีเหมือนกันได้
ดังนั้นหากนักศึกษามีชื่อซ้ำขึ้นมาก็จะไม่สามารถระบุการอ้างอิงได้
2.Secondary Key (คีย์รอง)
ในบางครั้งเรียกคีย์ชนิดนี้ว่า อินเด็กซ์ (Index) คีย์ชนิดนี้เปรียบเสมือนเป็นคีย์รองจากคีย์หลัก กล่าวคือเมื่อเรากำหนดคีย์หลักเเล้ว DBMS ก็จะสามารถค้นหาข้อมูล เเต่เมื่อรัยที่มีข้อมูลเป็นจำนวนมาก DBMS ก็จะต้องทำการค้นหาตั้งเเต่ต้นจนกว่าจะเจอ ซึ่งทำให้เกิดการล่าช้า
เเต่หากมีคีย์รองเป็นชื่อและนามสกุลก็จะสามารถช่วยให้ DBMS ทำการค้นหาได้สะดวกรวดเเล้วยิ่งขึ้น #คีย์รองยอมให้ข้อมูลซ้ำกันได้ เเต่หากข้อมูลซ้ำกันมากก็ไม่เป็นผลดี
3.Compound Key (คีย์รวม)
ในบางครั้งเรียกคีย์ชนิดนี้ว่า Composite Key เป็นคีย์ที่ใช้คอลัมน์หลายคอลัมน์มาร่วมกันเป็นคีย์หลัก ดังรูปที่ 1.3 #เนื่องจากในบางครั้งการกำหนด Primary Key เพียงคอลัมน์เดียวอาจเกิดการซ้ำของข้อมูลได้
4.Candidate Key (คีย์คู่เเข่ง)
เมื่อมีคอลัมน์ที่มีคุณสมบัติครบถ้วนในการเป็น Primary Key คือ ไม่มีค่าซ้ำ ไม่เป็นค่าว่าง จากรูปที่ 1.4 จะเห็นว่ามี Candidate Key อยู่ 2 ตัวคือ รหัสประจำตัวนักศึกษาและชื่อ(ถ้ามั่นใจเเล้วว่าชื่อนักศึกษาจะไม่มีค่าซ้ำกันเลย)
#ในกรณีนี้หากผู้ออกแบบฐานข้อมูลกำหนดให้คอลัมน์รหัสประจำตัวนักศึกษาเป็น Primary Key ดังนั้นคอลัมน์ชื่อก็จะกลายเป็น Secondary Key อัตโนมัติ
เพื่อให้เข้าใจยิ่งขึ้นให้ดูอีกตัวอย่างหนึ่งดังรูปที่ 1.5
จากรูปที่ 1.5 จะเห็นได้อย่างชัดเจนว่า รหัสประจำตัวนักศึกษาเเละรหัสบัตรประชาชน จะไม่เป็นค่าซ้ำและค่าว่างอย่างเเน่นอน ดังนั้นรหัสประจำตัวนักศึกษาเเละรหัสบัตรประชาชน คือ Candidate Key
5.Foreign Key (คีย์นอก)
เป็นคีย์ที่ใช้เชื่อมความสัมพันธ์กับตารางอื่นๆ
จากรูปที่ 1.6 ตารางนักศึกษามีคอลัมน์รหัสประจำตัวนักศึกษาเป็น Primary Key และในตารางการลงทะเบียนมีคอลัมน์รัหัสวิชาเป็น Primary Key เเต่เมื่อ 2 ตารางมีความสัมพันธ์กัน คอลัมน์รหัสประจำตัวนักศึกษาจะเป็น Foreign Key ของตารางการลงทะเบียน ซึ่งความสัมพันธ์แบบ One-to-Many (ศึกษาความสัมพันธ์ของระบบฐานข้อมูลเพิ่มเติม viewtopic.php?p=38352#p38352)
ประเภทของคีย์ในฐานข้อมูล Primary Key - Compound Key - Foreign Key คืออะไร
Moderator: mindphp, ผู้ดูแลกระดาน
-
- PHP Super Hero Member
- โพสต์: 829
- ลงทะเบียนเมื่อ: 22/04/2010 12:02 pm
- mindphp
- ผู้ดูแลระบบ MindPHP
- โพสต์: 41384
- ลงทะเบียนเมื่อ: 22/09/2008 6:18 pm
- ติดต่อ:
Re: ประเภทของคีย์ในฐานข้อมูล Primary Key - Compound Key - Foreign Key คืออะไร
สอนเขียนคำสั่งฐานข้อมูล การ SELECT database (MySQL) รูปแบบ การ Query
viewtopic.php?f=74&t=18516
viewtopic.php?f=74&t=18516
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042
-
- Similar Topics
- ตอบกลับ
- แสดง
- โพสต์ล่าสุด
-
- 1 ตอบกลับ
- 1399 แสดง
-
โพสต์ล่าสุด โดย M027
06/07/2015 6:36 pm
-
-
โพสต์ใหม่ เราสามารถตั้ง Set PRIMARY KEY ว่าจะให้เริ่มต้นที่เลขอะไร ได้มั้ย
โดย thatsawan » 22/04/2020 6:07 pm » ใน SQL - Database - 3 ตอบกลับ
- 2717 แสดง
-
โพสต์ล่าสุด โดย thatsawan
22/04/2020 7:20 pm
-
-
-
โพสต์ใหม่ วิธีการเขียน SQL เพื่ม PRIMARY KEY ตาราง ฐานข้อมูล
โดย Ittichai_chupol » 10/01/2020 6:20 pm » ใน SQL Knowledge - 0 ตอบกลับ
- 3045 แสดง
-
โพสต์ล่าสุด โดย Ittichai_chupol
10/01/2020 6:20 pm
-
-
-
โพสต์ใหม่ เพิ่ม primary key ใน pgadmin แล้ว error ค่ะ
โดย Grammanano » 09/12/2019 11:15 am » ใน SQL - Database - 0 ตอบกลับ
- 1788 แสดง
-
โพสต์ล่าสุด โดย Grammanano
09/12/2019 11:15 am
-
ผู้ใช้งานขณะนี้
สมาชิกกำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และบุคลทั่วไป 87