ประเภทของคีย์ใน ระบบฐานข้อมูล
การกำหนดคีย์ในระบบฐานข้อมูลนั้น ไม่ว่า ฐานข้อมูลใดๆเช่น PostgreSQL, MySQL, Oracle, SQL Server ก็มี Key ไว้สำหรับเป็นการช่วยเพิ่มประสิทธิภาพในการทำงานของฐานข้อมูล เพราะเป็นการกำหนดการอ้างอิงของข้อมูล การค้นหา จึงทำให้การประมวลของระบบมีความรวดเร็วยิ่ง ซึ่งคีย์ในระบบฐานข้อมูลสามารถแบ่งออกได้ 5 ชนิดดังนี้
1.Primary Key (คีย์หลัก) คือะไร
คีย์หลัก คือข้อมูลคอลัมน์หนึ่งในตารางที่ไม่มีค่าซ้ำกับข้อมูลคอลัมน์อื่น เเละต้องไม่เป็นค่าว่าง(Null)
รูปที่ 1.1 Primary Key (คีย์หลัก)Primary Key.jpg (69.86 KiB) Viewed 42925 times
จากรูปที่ 1.1 จะเห็นว่าคอลัมน์ที่เป็น Primary Key คือ รหัสประจำตัวนักศึกษา เพราะไม่มีค่าซ้ำกับคอลัมน์อื่น เเละไม่เป็นค่าว่าง
#อาจมีข้อสงสัยว่าทำไมเราไม่ใช้ ชื่อ หรือ นามสกุล ในการกำหนด Primary Key เพราะชื่อและนามสกุลของคนเราอาจมีเหมือนกันได้
ดังนั้นหากนักศึกษามีชื่อซ้ำขึ้นมาก็จะไม่สามารถระบุการอ้างอิงได้
2.Secondary Key (คีย์รอง)
ในบางครั้งเรียกคีย์ชนิดนี้ว่า อินเด็กซ์
(Index) คีย์ชนิดนี้เปรียบเสมือนเป็นคีย์รองจากคีย์หลัก กล่าวคือเมื่อเรากำหนดคีย์หลักเเล้ว DBMS ก็จะสามารถค้นหาข้อมูล เเต่เมื่อรัยที่มีข้อมูลเป็นจำนวนมาก DBMS ก็จะต้องทำการค้นหาตั้งเเต่ต้นจนกว่าจะเจอ ซึ่งทำให้เกิดการล่าช้า
เเต่หากมีคีย์รองเป็นชื่อและนามสกุลก็จะสามารถช่วยให้ DBMS ทำการค้นหาได้สะดวกรวดเเล้วยิ่งขึ้น
รูปที่ 1.2 Secondary Key (คีย์รอง)Secondary Key.jpg (82.27 KiB) Viewed 42925 times
#คีย์รองยอมให้ข้อมูลซ้ำกันได้ เเต่หากข้อมูลซ้ำกันมากก็ไม่เป็นผลดี
3.Compound Key (คีย์รวม)
ในบางครั้งเรียกคีย์ชนิดนี้ว่า Composite Key
เป็นคีย์ที่ใช้คอลัมน์หลายคอลัมน์มาร่วมกันเป็นคีย์หลัก ดังรูปที่ 1.3
รูปที่ 1.3 Compound Key (คีย์รวม)Compound Key.jpg (60.84 KiB) Viewed 42925 times
#เนื่องจากในบางครั้งการกำหนด Primary Key เพียงคอลัมน์เดียวอาจเกิดการซ้ำของข้อมูลได้
4.Candidate Key
(คีย์คู่เเข่ง)
เมื่อมีคอลัมน์ที่มีคุณสมบัติครบถ้วนในการเป็น Primary Key คือ ไม่มีค่าซ้ำ ไม่เป็นค่าว่าง
รูปที่ 1.4 Candidate Key (คีย์คู่เเข่ง)Candidate Key.jpg (75.91 KiB) Viewed 42925 times
จากรูปที่ 1.4 จะเห็นว่ามี Candidate Key อยู่ 2 ตัวคือ
รหัสประจำตัวนักศึกษาและชื่อ(ถ้ามั่นใจเเล้วว่าชื่อนักศึกษาจะไม่มีค่าซ้ำกันเลย)
#ในกรณีนี้หากผู้ออกแบบฐานข้อมูลกำหนดให้คอลัมน์รหัสประจำตัวนักศึกษาเป็น Primary Key ดังนั้นคอลัมน์ชื่อก็จะกลายเป็น Secondary Key อัตโนมัติ
เพื่อให้เข้าใจยิ่งขึ้นให้ดูอีกตัวอย่างหนึ่งดังรูปที่ 1.5
รูปที่ 1.5 Candidate Key (คีย์คู่เเข่ง)Candidate Key_1.jpg (91.71 KiB) Viewed 42925 times
จากรูปที่ 1.5 จะเห็นได้อย่างชัดเจนว่า รหัสประจำตัวนักศึกษาเเละรหัสบัตรประชาชน จะไม่เป็นค่าซ้ำและค่าว่างอย่างเเน่นอน ดังนั้นรหัสประจำตัวนักศึกษาเเละรหัสบัตรประชาชน คือ Candidate Key
5.Foreign Key (คีย์นอก)
เป็นคีย์ที่ใช้เชื่อมความสัมพันธ์กับตารางอื่นๆ
รูปที่ 1.6 Foreign Key (คีย์นอก)Foreign Key.jpg (145.6 KiB) Viewed 42925 times
จากรูปที่ 1.6 ตารางนักศึกษามีคอลัมน์รหัสประจำตัวนักศึกษาเป็น Primary Key และในตารางการลงทะเบียนมีคอลัมน์รัหัสวิชาเป็น Primary Key เเต่เมื่อ 2 ตารางมีความสัมพันธ์กัน คอลัมน์รหัสประจำตัวนักศึกษาจะเป็น Foreign Key ของตารางการลงทะเบียน ซึ่งความสัมพันธ์แบบ One-to-Many (ศึกษาความสัมพันธ์ของระบบฐานข้อมูลเพิ่มเติม viewtopic.php?p=38352#p38352)
ขั้นตอน วิธีการสร้างคอลัมน์ Column ให้กับตาราง Table ใน PostgreSQL
2.เลือก Object Schemas แล้วเลือก Object Public จะเห็น Object ตาราง Tableของฐานข้อมูลนั้น จะพบตารางทั้งหมดที่ได้สร้างไว้ ให้คลิ๊กขวาที่ตารางนั้นเลือก New Object แล้วเลือก New Column
3.จะปรากฎหน้าต่าง New Column.... ให้ใส่ข้อมูลของคอลัมน์ ลงไป
Name : ชื่อคอลัมน์
Data Type : ชนิดของข้อมูล
Length : จำนวนตัวอักษรสูงสุด
เมื่อใส่ข้อมูลของคอลัมน์เสร็จแล้วคลิ๊ก ok
4.ในการสร้าง Primary Key หรือคีย์หลักให้กับตาราง Table สามารถทำได้เช่นเดียวกับการเพิ่มคอลัมน์ ให้คลิ๊กขวาที่ Table แล้วเลือก New Object แล้วเลือก New Primary Key...
5.จะปรากฎหน้าต่าง New Primary Key... ในช่อง Name ให้ใส่ชื่อของ Primary Key คีย์หลักลงไป
6.ในหน้า New Primary Key แท็บ Columns ให้เลือกคอลัมน์ของเข้ามาด้วย โดยในช่อง Columns จะมีรายการ Columns ของตารางทั้งหมด ให้เลือกคอลัมน์ที่ต้องการเเล้วคลิ๊ก Add เมื่อเลือกคอลัมน์แล้วให้คลิ๊ก ok