ประเภทของคีย์ในฐานข้อมูล Primary Key - Compound Key - Foreign Key คืออะไร
โพสต์แล้ว: 06/08/2013 1:11 pm
ประเภทของคีย์ใน ระบบฐานข้อมูล
การกำหนดคีย์ในระบบฐานข้อมูลนั้น ไม่ว่า ฐานข้อมูลใดๆเช่น 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)
การกำหนดคีย์ในระบบฐานข้อมูลนั้น ไม่ว่า ฐานข้อมูลใดๆเช่น 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)