นิยามกุญแจ
หน้าแรก
Data Mining
นิยามกุญแจ
5.2. นิยามกุญแจ ในวิชาฐานข้อมูลสัมพันธ์เราใช้คำว่าดรรชนี (index) และกุญแจ (key) กับแนวคิดที่คล้ายกัน ดรรชนีในฐานข้อมูลเหมือนดรรชนีในหนังสือ คือมีไว้ค้นหาหัวข้อที่ต้องการในหนังสือได้อย่างรวดเร็ว (โดยไม่ต้องไล่หาทีละหน้า) ในทำนองเดียวกันดรรชนีในฐานข้อมูลคือสำเนาของข้อมูลบางส่วนในฐานข้อมูล เราสามารถสร้างดรรชนีจากคอลัมน์ใดของตารางก็ได้ ส่วนกุญแจเป็นสิ่งที่เป็นนามธรรมกว่าดรรชนี เพราะกุญแจเองก็เป็นดรรชนีได้ด้วยเช่นกัน กุญแจหมายถึงคอลัมน์ในตารางซึ่งทำหน้าที่เชื่อมโยงตารางต่างๆ เข้าด้วยกัน กุญแจสามารถทำหน้าที่เป็นได้ทั้งกุญแจและเป็นดรรชนี เมื่อทำหน้าที่เป็นดรรชนีมันคัดลอกคอลัมน์ในตารางไปทำเป็นโครงสร้างที่ใช้ค้นข้อมูลได้อย่างมีประสิทธิภาพ (เช่นเป็นโครงสร้างแบบต้นไม้ไบนารี) เมื่อทำหน้าที่เป็นกุญแจมันใส่เครื่องหมายพิเศษไว้ในคอลัมน์เพื่อระบุว่าคอลัมน์นั้นทำหน้าที่เชื่อมโยงกับตารางอื่นๆ กุญแจมีสามแบบคือกุญแจหลัก (Primary Key ย่อ PK) กุญแจเอกลักษณ์ (Unique Key ย่อ UK) และกุญแจนอก (Foreign Key ย่อ FK) 5.2.1. นิยามกุญแจหลัก PK ทำหน้าที่แยกแยะความแตกต่างระหว่างข้อมูลแถวต่างๆ ในตาราง การแยกแยะนี้เป็นสิ่งจำเป็น เพราะหากไม่มีเราจะไม่สามารถค้นหาข้อมูลเฉพาะแถวที่ต้องการได้ ภาพ 5-8 แสดง PK ของตาราง Author และตาราง Publication 
ภาพ 5-8 : กุญแจหลักทำหน้าที่แยกแยะความแตกต่างระหว่างข้อมูลแถวต่างๆ ในตาราง 5.2.2. นิยามกุญแจเอกลักษณ์ UK เหมือน PK คือทำหน้าที่แยกแยะความแตกต่างระหว่างข้อมูลแถวต่างๆ ในตาราง โดยค่าของ UK จะไม่มีการซ้ำกัน ชนิดข้อมูลของ UK มักเป็นแบบเลขจำนวนเต็ม (สาเหตุที่ไม่ใช้ชื่อนักเขียนหรือชื่อหนังสือเป็นค่าของ UK ผู้เขียนจะอธิบายในบทต่อไป) เนื่องจากเราใช้ตัวเลขแทนชื่อเราจึงเรียกกุญแจเอกลักษณ์ได้อีกอย่างหนึ่งว่ากุญแจแทน (Surrogate Key ย่อ SK) ยกตัวอย่างเช่นตาราง Author มีคอลัมน์ AUTHOR_ID เป็น UK เพราะมันมีค่าเป็นตัวเลขจำนวนเต็มซึ่งแทนชื่อของผู้เขียน (แทนค่าของคอลัมน์ NAME) แม้โอกาสน้อยมากที่จะมีผู้เขียนชื่อซ้ำกันแต่ SK ก็ยังมีประโยชน์ในการเพิ่มประสิทธิภาพ UK ต่างจาก PK ที่เราใช้เพื่อกำหนดความสัมพันธ์ระหว่างตาราง แต่เราจะไม่ใช้ UK เพื่อการนี้ ต่อไปนี้จะยกตัวอย่างตารางที่มี PK และ UK คิวรีในภาพ 5-9 ทำหน้าที่สร้างตาราง Author 
ภาพ 5-9 : คิวรีทำหน้าที่สร้างตาราง Author โปรดสังเกตว่าผู้เขียนกำหนดให้คอลัมน์ author_id เป็น PK และกำหนดให้คอลัมน์ name เป็น UK (คือไม่อนุญาตให้มีข้อมูลซ้ำกัน) เพื่อป้องกันไม่ให้ผู้ใช้ป้อนข้อมูลนักเขียนคนเดียวกันซ้ำมากกว่าหนึ่งแถว หรือป้องกันไม่ให้นักเขียนสองคนใช้นามปากกาซ้ำกัน 5.2.3. นิยามกุญแจนอก FK คือสำเนาของ PK ที่ถูกคัดลอกจาก PT ไปใส่ CT เพื่อให้ทั้งสองตารางสามารถเชื่อมโยงกันได้ FK ทำให้เราแยกแยะได้ว่าข้อมูลแถวใดใน CT สัมพันธ์กันข้อมูลแถวใดใน PT ในภาพ 5-10 จะเห็นตาราง Publication มี FK ชื่อ author_id (FK) เชื่อมโยงกับตาราง Author เพราะนักเขียนหนึ่งคนอาจเขียนหนังสือไว้หลายเล่ม ยกตัวอย่างเช่นผู้เขียนชื่อ Larry Niven (นักเขียนนิยายวิทยาศาสตร์ที่ผู้เขียนชื่นชอบ) มีรหัสประจำตัว 4 และมีหนังสือสี่เล่ม ดังนั้นในตาราง Author จะมี author_ID ที่เป็น 4 อยู่หนึ่งแถวและในตาราง Publication จะมี author_ID เป็น 4 อยู่สี่แถว ดูภาพ 5-10 อีกครั้ง โปรดสังเกตว่าตาราง CoAuthor มีการเชื่อมโยงไปยังสองตาราง คือตาราง Author และตาราง Publication ที่เป็นเช่นนั้นเพราะผู้เขียนร่วมอาจเขียนหนังสือร่วมกับนักเขียนมากกว่าหนึ่งคน และในขณะเดียวกันก็อาจมีหนังสือ (ที่ตนเองร่วมเขียน) ได้มากกว่าหนึ่งเล่มด้วย ดังนั้นตาราง CoAuthor จึงมี FK ถึงสองอัน อันแรกชื่อ author_id (FK) ใช้เชื่อมโยงกับตาราง Author และอันที่สองคือ publicaction_ID เพื่อใช้เชื่อมโยงกับตาราง Publication 
ภาพ 5-10 : FK ทำให้เราแยกแยะได้ว่าข้อมูลแถวใดใน CT สัมพันธ์กันข้อมูลแถวใดใน PT ภาพ 5-11 เป็นคิวรีเพื่อสร้างตาราง Publication ซึ่งแสดงให้เห็นวิธีสร้างตารางที่มีกุญแจครบทั้งสามแบบ คือมีทั้ง PK, FK และ UK |

ภาพ 5-11 : คิวรีเพื่อสร้างตาราง Publication
โปรดสังเกตว่าคิวรีในภาพ 5-11 ผู้เขียนกำหนดให้คอลัมน์ publication_id เป็น PK ส่วน subject_id และ author_id เป็น FK เพื่อใช้เชื่อมโยงกับตาราง Subject และ Author ตามลำดับ ส่วนคอลัมน์ title ถูกกำหนดให้เป็น UK เพื่อป้องกันไม่ให้ผู้ใช้ป้อนข้อมูลชื่อหนังสือซ้ำกัน 5.3. สาธิตการออกแบบฐานข้อมูลอย่างง่าย ในหัวข้อนี้ผู้เขียนจะแสดงวิธีออกแบบตารางสองตารางที่มีการเชื่อมโยงกันอย่างง่ายๆ สมมุติว่าเรามีข้อมูลอย่างที่เห็นในภาพ 5-12 ข้อมูลแต่ละบรรทัดคือข้อมูลของเพลงหนึ่งเพลง คอลัมน์แรก Band name คือชื่อวงดนตรี คอลัมน์ที่สอง Track คือชื่อเพลง คอลัมน์สุดท้าย Description คือคำวิจารณ์ของเพลงนั้น 
ภาพ 5-12: ข้อมูลเพื่อสาธิตการออกแบบฐานข้อมูลอย่างง่าย สมมุติว่าผู้เขียนถูกสั่งให้ทำสิ่งต่างๆ ดังนี้ 1. นำข้อมูลนี้มาออกแบบสร้างเป็น PT และ CT ที่เชื่อมโยงกันแบบหนึ่งต่อหลาย 2. กำหนด PK ให้แก่ตารางทั้งสอง 3. กำหนด FK ใน CT 5.3.1. ตัวอย่างการออกแบบ ข้อมูลดิบมีสามคอลัมน์ เราต้องสร้างตารางสองตารางจากสามคอลัมน์นี้ ตารางที่ 1 มีหนึ่งคอลัมน์ ตารางที่ 2 มีสองคอลัมน์ การสร้างความสัมพันธ์แบบหนึ่งต่อหลายทำได้โดยดูข้อมูลที่ซ้ำกัน ในภาพ 5-12 อาจดูยากเพราะข้อมูลไม่ได้เรียงแต่กระจายอยู่อย่างไม่มีแบบแผน การออกแบบตารางตามโจทย์สามข้อนี้มีสิ่งที่ควรพิจารณาดังนี้ 1. วงดนตรีหนึ่งวงปรกติจะมีเพลงมากกว่าหนึ่งเพลง เนื่องจากเราต้องการเชื่อมโยงความสัมพันธ์แบบหนึ่งต่อหลายโดย ดังนั้น "หนึ่ง" คือ "หนึ่งวงดนตรี" และ "หลาย" คือ "หลายเพลง" 2. ชื่อวงในคอลัมน์แรกมีการซ้ำกัน แต่คอลัมน์อื่นๆ ไม่มีข้อมูลซ้ำกันเลย ข้อเท็จจริงนี้สนับสนุนแนวคิดในข้อที่หนึ่ง 3. เนื่องจากคอลัมน์แรกมีข้อมูลซ้ำกัน จึงเหมาะนำมาสร้างเป็น PT คอลัมน์ที่เหลืออีกสองคอลัมน์ไม่มีข้อมูลซ้ำจึงเหมาะนำมาใช้สร้างเป็น CT 4. ข้อมูลชื่อเพลงจะต้องไม่มีการซ้ำกัน ภาพข้างล่างแสดงทางเลือกสามแบบในการออกแบบ ทางเลือกที่ 3 ดีที่สุดเพราะ SK ถูกนำมาใช้เป็น PK และ FK นั้นคือเรากำหนด band_id และ track_id เป็นเลขจำนวนเต็มเพื่อใช้เป็นตัวเชื่อมโยงแทนที่จะใช้ชื่อวงหรือชื่อเพลง ทั้งทางเลือกที่ 3 และที่ 2ใช้การกำหนดความสัมพันธ์แบบจำแนกไม่ได้ คือ CT ไม่ขึ้นกับ PT คือ PK ของ CT ไม่ใช่กุญแจเดียวกันกับ PK ในตารางแม่ 
ภาพ 5-13 : แผนภูมิ ER แสดงการออกแบบความสัมพันธ์ระหว่างตาราง Band และ Track ส่วนทางเลือกที่ 2 ไม่ค่อยดี (แต่ก็ยังดีกว่าทางเลือกที่ 1) เพราะ PK ในตาราง Band และ FK ในตาราง Track ไม่ได้ใช้ SK (คือไม่ได้ใช้เลขรหัสแทนชื่อวง) จึงมีประสิทธิภาพต่ำกว่าทางเลือกที่ 3 ส่วนทางเลือกที่ 1 มีประสิทธิภาพต่ำที่สุดเพราะใช้ชื่อวง (band_name) เป็นตัวเชื่อมโยง คือใช้ชื่อวงเป็นทั้ง PK ในตาราง Band และ PK ในตาราง Track ด้วย การทำเช่นนี้ทำให้ชื่อวงมีฐานะเป็นกุญแจร่วม (Composite Key หรือ Compound Key ย่อ CK) คือมีข้อมูล (ชื่อวง) ซ้ำกันอยู่ในทั้งสองตารางซึ่งไม่ดี เพราะมีข้อมูลซ้ำกันจำนวนมากซึ่งเป็นสิ่งที่เราต้องการหลีกเลี่ยงตั้งแต่แรก 5.3.2. นิยามบูรณภาพสัมพันธ์ บูรณภาพสัมพันธ์ (Referential Integrity ย่อ RI)คือการควบคุมความคงเส้นคงว่าของความสัมพันธ์ระหว่างค่าของ PK และ FK ซึ่งเป็นค่าที่เราใช้เชื่อมโยง PT และ CT เข้าด้วยกัน การควบคุมทำได้โดยใช้กลไกที่เรียกว่าข้อบังคับ (constraint) โปรแกรม RDBMS ส่วนใหญ่จะมีกลไกนี้ฝังมาในตัวอยู่แล้ว ยกตัวอย่างเช่นใน PT คอลัมน์ที่เป็น PK จะมีค่าซ้ำกันไม่ได้ ตัวอย่างในหัวข้อที่ผ่านมา PT คือ Band มี PK เป็นชื่อวงดนตรี ค่านี้จะซ้ำกันไม่ได้ เพราะค่านี้ถูกใช้เป็น FK ใน CT ดังนั้นใน PT จึงมีข้อมูลนี้ได้เพียงแถวเดียวเท่านั้น เพื่อคงไว้ซึ่ง RI การออกแบบฐานข้อมูลจำเป็นต้องครอบคลุมประเด็นต่างๆ ต่อไปนี้ ตารางที่เก็บ PK จะถูกถือว่าเป็น PT และตารางที่เก็บ FK จะถูกถือว่าเป็น CT เมื่อแทรกข้อมูลแถวใหม่เข้าสูง CT ค่าของ FK ของข้อมูลนั้นต้องเป็นค่ามีปรากฏอยู่ใน PT หรือจะเป็นค่า NULL ก็ได้ FK จะมีค่าเป็น NULL ก็ได้ แต่ PK จะมีค่าเป็น NULL ไม่ได้ การเปลี่ยนแปลงค่าใน PT เป็นสิ่งต้องห้าม หากการเปลี่ยนแปลงนั้นกระทบค่าของ PK นอกเสียจากว่าการเปลี่ยนแปลงนี้จะปรับแก้ค่าของ FK ใน CT ที่เชื่อมโยงอยู่ทั้งหมดด้วย การเปลี่ยนแปลงค่าใน CT เป็นสิ่งต้องห้าม หากการเปลี่ยนแปลงนั้นกระทบค่าของ FK นอกเสียจากว่าการเปลี่ยนแปลงนี้จะทำให้ค่าของ FK เป็น NULL หรือมีการตรวจสอบค่า PK ใน PT ด้วย การลบแถวใน PT เป็นสิ่งต้องห้าม นอกเสียจากว่าการลบนั้นจะดำเนินการกับ CT ทุกตาราง คือลบแถวข้อมูลใน CT ทุกแถวที่มี FK ตรงกับแถวข้อมูล PT ที่ถูกลบ 5.4. สรุปท้ายบท แผนภูมิ ERD เป็นเครื่องมือช่วยออกแบบฐานข้อมูลที่ใช้งานได้ง่าย ปัจจุบันมีซอฟต์แวร์ที่ช่วยให้ท่านสร้างแผนภูมิ ERD บนจอภาพแทนการร่างในกระดาษและสามารถผลิตโค้ดภาษา SQL ให้โดยอัตโนมัติ แผนภูมิ ERD แสดงความสัมพันธ์ระหว่างเอนทิตีหรือตาราง ความสัมพันธ์มีหลายแบบ อาทิ หนึ่งต่อหนึ่ง หนึ่งต่อหลาย ความสัมพันธ์ระหว่างตารางมีกุญแจหรือคีย์เป็นสิ่งเชื่อมโยง กุญแจมีหลายแบบ อาทิ กุญแจหลัก กุญแจนอก ในบทต่อๆ ไปท่านจะได้เรียนเรื่องเหล่านี้ในรายละเอียดลึกลงไปอีก ในบทหน้าท่านจะได้เรียนเรื่องนอร์มัลไลเซชัน ซึ่งเป็นหัวข้อสำคัญอีกหัวข้อหนึ่งในเรื่องการออกแบบฐานข้อมูล 5.5. คำถามท้ายบท 1. ERD มีประโยชน์อย่างไร 2. ตีนกามีหน้าที่อะไร 3. ความสัมพันธ์แบบหนึ่งต่อหนึ่งพบได้ในกรณีใด 4. ความสัมพันธ์แบบหลายต่อหลายคืออะไร 5. สัญลักษณ์รูปวงกลมและขีดหนึ่งขีดใช้แทนอะไร 6. ความสัมพันธ์แบบจำแนกได้คืออะไร 7. ความสัมพันธ์แบบจำแนกไม่ได้เป็นอย่างไร 8. ตารางผูกพันคืออะไร 9. กุญแจหลักมีหน้าที่อะไร 10. กุญแจเอกลักษณ์คืออะไร 5.6. แบบฝึกหัดท้ายบท พิจารณาข้อมูลในภาพ 5-13 แล้วทำสิ่งต่างๆ ดังนี้ 1. นำข้อมูลนี้มาออกแบบสร้างเป็น PT และ CT ที่เชื่อมโยงกันแบบหนึ่งต่อหลาย 2. กำหนด PK ให้แก่ตารางทั้งสอง 3. กำหนด FK ใน CT 
ภาพ 5-13 : ตัวอย่างข้อมูลสำหรับทำแบบฝึกหัดท้ายบท |
refer: http://cptd.chandra.ac.th/selfstud/Database/keytype2.htm
Key คือ Attribute หรือ ชุดขอบ Attribute ที่ทำให้ข้อมูลแต่ละ Tuple
มีค่าข้อมูลที่ไม่ซ้ำกัน(Unique) เช่น Attribute "CustID" จาก Relation"Cu
ใช้แทนรหัสลูกค้าที่ลูกค้าแต่ละคนจะมีรหัสประจำตัวที่ไม่ซ้ำกัน การใช้ K
ion นี้จัดเป็นพื้นฐานในการกำหนด General Integrity Rule ขึ้นเพื่อควบ
ระหว่างข้อมูลระหว่างข้อมูลใน Relation ต่างๆ ให้มีความถูกต้องและเชื่อมั่
จุดมุ่งหมายของ Relational Model ได้แก่ ความต้องการให้ได้ฐานข้อมูลที่ปลอดจาก
ข้อมูลที่มีความซ้ำซ้อนกัน ดังนั้น ในแนวความคิดของ Relational Model ข้อมูลจึงถูกแยก
เก็บอยู่ในแต่ละ Relation แทน ซึ่งการที่จะทำให้ข้อมูลในแต่ละ Relation คงความสัมพันธ์
ระหว่างข้อมูลในแต่ละ Relation แทน ซึ่งการที่จะทำให้ช้อมูลในแต่ละ Relation คงความ
สัมพันธ์อยู่ได้นั้นต้องอาศัย Key ที่เรียกว่า Forieng Key
Foriegn Key ได้แก่ Attribute ได้แก่ ใด Attribute หนึ่งใน Relation ที่ใช้อ้างอิงไปยัง
Attribute ที่ทำหน้าที่เป็น Candidate Key ของอีก Relation หนึ่งที่มีความสัมพันธ์กันเช่น ค่า
ของข้อมูลใน Attribute"DepID"ของ Relation"Employee"ที่ทำหน้าที่เป็น Foreing Key เพื่อ
อ้างอิงไปยัง Attribute"DepID" ที่ทำหน้าที่เป็น Candidate Key ของ Relation"Department"
ดังตัวอย่างต่อไปนี้
คุณสมบัติของ Foreign Key มีดังนี้
1. Foreign Key สามารถกำหนดขึ้นจาก Attribute เดียวหรือมากกว่าเช่นเดียวกับ
Primary Key สำหรับ Attribute ที่ทำหน้าที่เป็น Foreign Key มักเขียนอยู่ในเครื่องหมาย
"{ }" เช่น "{ DepID }"
2. ค่าของ Foreign Key ใน Relation หนึ่งจะต้องปรากฏอยู่ในCandidate Key ของ
Relation ที่สัมพันธ์กันนั้น แต่ในแง่กลับกันทุกค่าของCandidate Key ในRelationหนึ่ง
ไม่จำเป็นที่จะต้องปรากฏอยู่ใน Foreign Key ของอีก Relation หนึ่ง
3. จำนวนของ Attribute ที่จะนำมาประกอบเป็น Foreign Key จะขึ้นอยู่กับจำนวน
ของ Attribute ที่เป็น Candidate Key ของ Relation ที่มีความสัมพันธ์กับ Relation นั้นที่
ถูกนำมาใช้เปรียบเทียบกับค่าของ Foreign Key
4. Domain ของ Attribute ที่กำหนดเป็น Foreign Key จะต้องมีค่าเหมือนกับ Do-
main ของ Attribute ที่เป็น Candidate Key ของ Relation ที่สัมพันธ์กัน
5. Attribute ที่ทำหน้าที่เป็น Foreign Key ไม่จำเป็นต้องเป็น Candidate Key ของ
Relation นั้น เช่น Attribute "DeptID" ของ Relation "Employee" ซึ่งไม่ได้เป็น Candi-
date Key ของ Relation แต่สามารถทำหน้าที่เป็น Foreign Key ได้
6. Relation ที่เป็นเจ้าของ Foreign Key จะถูกเรียกว่า "Referencing Relation"
ส่วน Relation ที่เป็นเจ้าของ Candidate Key ที่สัมพันธ์กับ Foreign Keyนั้นจะถูกเรียก
ว่า "Referenced Relation"
7. Relation ใดๆ สามารถเป็นได้ทั้ง Referenced Relation และ Referencing Re-
laiton
8. Relation ใด ๆ สามารถมีความสัมพันธ์ด้วย Foreign Key กับตัวมันเองได้
Candidate Key คือ Key ที่มีชนาดเล็กที่สุดที่ทำให้ข้อมูลในแต่ละ Tuple ของ
Relation มีค่าข้อมูลที่ไม่ซ้ำกัน ดังนั้นจึงกล่าวได้ว่า Candidate Key เป็นส่วนพื้นฐาน
ที่จำเป็นต่อ General Integrity Rule เนื่องจาก Candidate Key จัดเป็นเครื่องมือที่สา-
ระบุตำแหน่งของแต่ละ Tuple ใน Relation ได้ จึงเป็นหลักประกันว่าเมื่อมีการกระ-
ทำที่ใช้ค่าของ Candidate Key เพื่อเรียกใช้ข้อมูลใน Relation แล้วผลลัพธ์ที่ได้จะ-
ปรากฏข้อมูลออกมาเพียง Tuple เดียว ดังนั้นจึงสามารถเชื่อได้ว่า เมื่อนำ Relation
ที่มี Candidate Key มาสัมพันธ์กันจะไม่เกิดการสับสนในกรณีที่ Tuple ใน Relation
หนึ่งไม่ทราบว่าจะจับคู่กับ Tuple ใดในอีก Relation หนึ่ง ที่มีความเกี่ยวข้องกันอัน
เนื่องมาจากมีมากกว่า 1 Tuple ที่มีข้อมูลเหมือนกัน เช่น Relation "Department" ที่
ไม่มีการกำหนด Candidate Key ดังตัวอย่างข้อมูลต่อไปนี้
จากตัวอย่างข้อมูลสังเกตุได้ว่าข้อมูลใน Relation "Department" นี้รหัสของพนักงานฝ่าย
(Attribute"DepID") ซ้ำกันดังนั้นเมื่อนำไปสร้างความสัมพันธ์ร่วมกับ Relation"Employee"
ผลที่ได้จะไม่สามารถระบุได้ว่าพนักงานที่ชือ"สมเกียรติ"สังกัดอยู่ฝ่ายใด แต่กรณีที่ Rela-
ation "Department" กำหนดให้รหัสฝ่าย (Attribute"DepID") เป็นCandidate Keyแล้วข้อ-
มูลใน Attribute"DepID"จะไม่ปรากฏรหัสที่ซ้ำกันและผลที่ได้ก็สามารถเชื่อมั่นได้ว่าจะไม่
ว่าจะไม่เกิดการสับสนที่ว่าพนักงานที่ชื่อ"สมเกียริต" สังกัดอยู่ฝ่ายใด
สำหรับคุณสมบัติของ Candidate Key ประกอบไปด้วย
1. โดยปกติ เมื่อกล่าวในแง่ทฤษฏีของ Relation แล้วแต่ละ Relation ควรจะมี Can-
didate Key เดียวและถ้า Relation นั้นปรากฏ Attribute ที่สามารถทำให้แต่ละTuple ในRe-
lation มีค่าของข้อมูลที่ไม่ซ้ำกันได้เช่นRelation"Employee" สามารถมี Candidate Key ทั้ง
ที่กำหนดขึ้นจาก Attribute "EmpID" ซึ่งเป็นรหัสพนักงาน และที่กำหนดขึ้นจาก Attribute "
Name" ซึ่งเป็นชื่อของพนักงาน เนื่องจากทั้ง 2 Attribute ไม่ปรากฏค่าในTuple ใดที่ซ้ำกัน
2.Candidate Key สามารถกำหนดขึ้นจาก Attribute เพียง Attribute เดียวหรือมาก
กว่า ขึ้นอยู่กับว่า Attribute ที่นำมากำหนดเป็น Candidate Key นั้นสามารถทำให้ Tupleใน
Relation มีค่าของข้อมูลที่ไม่ซ้ำกันได้หรือไม่ เช่น กรณีของ Attribute"EmpID" สามารถนำ
มากำหนดเป็น Candidate Key จะไม่สามารถกระทำได้ ถ้าพนักงานในบริษัทนั้นมีชื่อที่ซ้ำ
กันดังตัวอย่าง ดังนี้ (ลองชี้ดูสิจ๊ะ)
3.ค่าของ Candidate Key จะตส้องไม่สามารถแยกออกเป็น Key ย่อยๆ ได้อีกหรือ
กล่าวอีกนัยหนึ่งว่า จะต้องเป็น Key ขนาดเล็กที่สุด
4.การกำหนด Candidate Key ให้กับ Relation จะไม่เกี่ยวข้องกับการกำหนด Index
เนื่องจากโครงสร้างของ Index จะเป็น Key ทางกายภาพมากกว่า
ข้อสังเกต Relation ในความหมายของ Relational Model ปกติจะต้องมี Candidate
Key อยู่อย่างน้อย 1 key เนื่องจาก Relation จะต้องประกอบด้วย Tuple ที่มีค่าไม่ซ้ำกัน
ขึ้นไปด้านบน