คุณสมบัติหนึ่งที่สำคัญของความสัมพันธ์ก็คือ ความเป็นเอกลักษณ์ (Uniqueness property) สิ่งที่ใช้กำหนดความเป็นเอกลักษณ์ของแถวในความสัมพันธ์ เรียกว่า คีย์ (key)
ฐานข้อมูลหนึ่งๆ จะมีข้อมูลอยู่มากมาย ยิ่งฐานข้อมูลมีขนาดใหญ่ขึ้นก็จะมีข้อมูลจำนวนมากขึ้นเป็นเงาตามตัวข้อมูลเหล่านี้อาจมีค่าแตกต่างกัน คล้ายกัน หรือแม้กระทั่งเหมือนกัน ทำให้การแยกแยะโดยอาศัยเพียงตัวข้อมูลอย่างเดียวทำได้อย่างยากลำบาก ดังนั้นจึงมีการกำหนดค่า Keys ประจำข้อมูลเพื่อทำให้การแยกแยะข้อมูลในฐานข้อมูลเป็นไปอย่างถูกต้อง
คีย์มีหลายประเภท ได้แก่ คีย์หลัก, Secondary key, Foreign key, Candidate key, Super key ดังจะได้กล่าวในรายละเอียดต่อไป
คีย์หลัก คือ Key หลักที่ใช้ในการอ้างถึง Entity ในฐานข้อมูล การเลือกคีย์หลักสามารถเลือกได้จากRecord ใดๆ ก็ได้ที่ไม่มีโอกาสซ้ำซ้อนกันบนฐานข้อมูลนั้น
เลขประจำตัวประชาชน |
ชื่อ |
นามสกุล |
อายุ |
3501552150054 |
สมชาย |
แซ่ตั้ง |
25 |
3210077565107 |
สมศรี |
แซ่อึ้ง |
42 |
4110597520235 |
สมชาย |
แซ่ตั้ง |
25 |
2156800512473 |
สมปอง |
แซ่แต้ |
16 |
7812350453784 |
สมชัย |
แซ่เล้ง |
50 |
ตารางที่ 1 แสดง Entity ของประชาชนซึ่งประกอบด้วยเลขประจำตัวประชาชน ชื่อ นามสกุล และอายุ โดยจะสามารถเห็นได้ว่า นอกจาก Field เลขประจำตัวประชาชนแล้ว Field อื่นๆ คือชื่อ นามสกุล และอายุ อาจซ้ำกันได้ทั้งนั้น ในกรณีนี้ Field ที่เหมาะสมที่จะเป็นคีย์หลักที่สุดก็คือ Field เลขประจำตัวประชาชนนั่นเอง
คีย์หลักเป็นข้อมูลสำคัญที่จะทำให้การเข้าถึงข้อมูลบนฐานข้อมูลเป็นไปได้อย่างรวดเร็ว ดังนั้นผู้ใช้จึงควรกำหนดคีย์หลักให้ชัดเจนตั้งแต่ขั้นตอนออกแบบฐานข้อมูล หากไม่มีข้อมูลใดเลยในฐานข้อมูลที่เหมาะที่จะเป็นคีย์หลักก็ควรที่จะกำหนด Record ใหม่สำหรับให้เป็นคีย์หลักโดยเฉพาะ
ชื่อ |
นามสกุล |
อายุ |
เพศ |
สมชาย |
แซ่ตั้ง |
25 |
ชาย |
สมศรี |
แซ่อึ้ง |
42 |
หญิง |
สมชาย |
แซ่ตั้ง |
25 |
ชาย |
สมปอง |
แซ่แต้ |
16 |
ชาย |
สมชัย |
แซ่เล้ง |
50 |
ชาย |
จากตารางที่ 2 จะเห็นได้ว่าฐานข้อมูลพนักงานบริษัทนี้ไม่มี Field ใดเลยที่เหมาะสมที่จะใช้เป็นคีย์หลัก ดังนั้น ผู้ออกแบบฐานข้อมูลจึงควรเพิ่ม Field เฉพาะสำหรับใช้เป็นคีย์หลักของฐานข้อมูลดังตารางที่ 3
ID |
ชื่อ |
นามสกุล |
อายุ |
เพศ |
1 |
สมชาย |
แซ่ตั้ง |
25 |
ชาย |
2 |
สมศรี |
แซ่อึ้ง |
42 |
หญิง |
3 |
สมชาย |
แซ่ตั้ง |
25 |
ชาย |
4 |
สมปอง |
แซ่แต้ |
16 |
ชาย |
5 |
สมชัย |
แซ่เล้ง |
50 |
ชาย |
ตารางที่ 2-5 ข้อมูลทั่วไปของพนักงานบริษัทหลังจากเพิ่ม คีย์หลัก แล้ว
หลังจากเพิ่ม Field พิเศษคือ ID เข้าไปในตารางที่ 2 เพื่อใช้เป็นคีย์หลักโดยเฉพาะ จะสามารถทำให้การอ้างถึงข้อมูลในฐานข้อมูลเป็นไปได้สะดวกและมีประสิทธิภาพมากขึ้น
โครงสร้างของคีย์
คีย์สำรอง คือ คีย์เดี่ยวหรือคีย์ผสม (Single or Composite key) ซึ่งเมื่อใช้ในการค้นหาข้อมูลจากความสัมพันธ์จะได้มากกว่าหนึ่งเรคคอร์ด ต่างจากคีย์หลักที่ทำให้ข้อมูลในตารางไม่ซ้ำกัน ดังนั้นคีย์รองจึงไม่จำเป็นจะต้องเป็นเอกลักษณ์
คีย์นอก คือ คีย์เดี่ยวหรือคีย์ผสม ซึ่งปรากฏเป็นคีย์ทั่วไปของความสัมพันธ์หนึ่ง แต่ไปปรากฏเป็นอีกคีย์หลักในอีกความสัมพันธ์หนึ่ง คีย์นอกเป็นอีกคีย์หนึ่งที่มีความสำคัญมากใสฐานข้อมูลเชิงสัมพันธ์ เนื่องจากเป็นตัวที่ใช้สร้างการเชื่อมต่อระหว่างความสัมพันธ์ การเปลี่ยนแปลงค่าของคีย์นอกจะต้องอาศัยความระมัดระวังเป็นอย่างมากเนื่องจากจะมีผลกระทบโดยตรงต่อข้อมูลในความสัมพันธ์อื่นที่มีการอ้างอิงถึงคีย์นอกตัวนี้ จึงมีกฏและเงื่อนไขที่บังคับใช้เพื่อทำให้ข้อมูลมีความถูกต้องอยู่เสมอ ดังจะกล่าวในตอนที่ 2.3
การกำหนดค่าให้กับคีย์นอกของความสัมพันธ์ที่อ้างอิงถึงจะต้องกำหนดค่าของคีย์ให้อยู่ในโดเมนเดียวกันกับความสัมพันธ์ที่คีย์นอกนั้นเป็นคีย์หลัก แต่คีย์นอกนั้นไม่จำเป็นจะต้องเป็นส่วนหนึ่งในคีย์หลักของความสัมพันธ์อื่น
คือกลุ่มของแอททริบิวที่สามารถนำไปใช้ในการค้นหาข้อมูลที่เป็นเอกลักษณ์ได้
คีย์แข่งขัน ก็คือ ซุปเปอร์คีย์ และไม่มีกลุ่มย่อยของคีย์ใดในคีย์แข่งขันที่จะสามารถเป็นซุปเปอร์คีย์ได้อีก