มีความแตกต่างเพิ่มเติมระหว่างคีย์หลักและคีย์ผู้สมัครซึ่งฉันจะหารือด้วยความช่วยเหลือของแผนภูมิเปรียบเทียบที่แสดงด้านล่าง
แผนภูมิเปรียบเทียบ
พื้นฐานสำหรับการเปรียบเทียบ | คีย์หลัก | รหัสผู้สมัคร |
---|---|---|
ขั้นพื้นฐาน | สามารถมีคีย์หลักเพียงคีย์เดียวเท่านั้นในความสัมพันธ์ใด ๆ | สามารถมีได้มากกว่าหนึ่งคีย์ผู้สมัครในความสัมพันธ์ |
โมฆะ | ไม่มีแอตทริบิวต์ของคีย์หลักสามารถมีค่าเป็นศูนย์ | คุณลักษณะของผู้สมัครที่สำคัญสามารถมีค่าเป็นศูนย์ |
ระบุ | มันเป็นตัวเลือกเพื่อระบุคีย์หลักสำหรับความสัมพันธ์ใด ๆ | ไม่สามารถมีความสัมพันธ์โดยไม่ระบุรหัสผู้สมัคร |
ลักษณะ | คีย์หลักอธิบายคุณลักษณะที่สำคัญที่สุดสำหรับความสัมพันธ์ | คีย์ผู้สมัครนำเสนอผู้สมัครที่สามารถมีสิทธิ์ได้รับคีย์หลัก |
ในทางกลับกัน | คีย์หลักคือคีย์ตัวเลือก | แต่ไม่บังคับว่ารหัสผู้สมัครแต่ละคนสามารถเป็นคีย์หลักได้ |
ความหมายของคีย์หลัก
คีย์หลัก เป็นแอตทริบิวต์หรือชุดของคุณลักษณะที่จะระบุแต่ละ tuple ในความสัมพันธ์ สามารถมีคีย์หลักได้เพียงคีย์เดียวเท่านั้นสำหรับแต่ละความสัมพันธ์ จะต้องได้รับการดูแลที่คีย์หลัก ไม่ ควรมี ค่า เป็น ศูนย์ และจะต้องมีค่าที่ ไม่ซ้ำกัน สำหรับแต่ละ tuple ในความสัมพันธ์ ค่าของแอททริบิวต์ / s ของคีย์หลักจะต้อง คงที่ นั่นคือค่าของแอททริบิวไม่ควรเปลี่ยนแปลงหรือแทบจะไม่เปลี่ยนแปลงเลย
หนึ่งใน คีย์ผู้สมัคร รับคุณสมบัติที่จะเป็นคีย์หลัก กฎ ที่คีย์ผู้สมัครต้องมีคุณสมบัติเป็นหลักคือค่าของคีย์ไม่ควรเป็น ค่า NULL และต้อง ไม่ซ้ำกัน สำหรับ tuples ทั้งหมด
หากความสัมพันธ์มีแอตทริบิวต์ที่เป็นคีย์หลักของความสัมพันธ์อื่น ๆ แอตทริบิวต์นั้นจะเรียกว่า foreign key
ขอแนะนำให้คิดคีย์หลักของความสัมพันธ์ก่อนที่จะแนะนำคุณลักษณะอื่น ๆ ของความสัมพันธ์เนื่องจากคีย์หลักระบุแต่ละ tuple โดยไม่ซ้ำกัน มันจะดีกว่าที่จะเลือกคุณลักษณะเดียวหรือคุณลักษณะจำนวนน้อยเป็นคีย์หลักที่ทำให้การจัดการความสัมพันธ์ง่ายขึ้น
ตอนนี้ให้เราดูตัวอย่างของคีย์หลัก
นักเรียน {ID, First_name, Last_name, อายุ, ที่อยู่}
ที่นี่เราจะหารหัสผู้สมัครก่อน ฉันพบคีย์ผู้สมัคร สอง คน {ID} และ {First_name, Last_name} เนื่องจากพวกเขาจะระบุนักเรียนแต่ละคนโดยไม่ซ้ำกันในความสัมพันธ์ของนักเรียน ตอนนี้ที่นี่ฉันจะเลือก ID เป็นคีย์หลักของฉันเพราะบางครั้งอาจเกิดขึ้นที่นักเรียนสองคนอาจมีชื่อและนามสกุลเหมือนกันดังนั้นจึงง่ายต่อการติดตามนักเรียนด้วย ID ของเขา
คำจำกัดความของรหัสผู้สมัคร
คีย์ตัวเลือก คือแอตทริบิวต์หรือชุดของแอตทริบิวต์ที่กำหนด tuple ในความสัมพันธ์ มีคีย์ตัวเลือก มากกว่าหนึ่ง ตัวในความสัมพันธ์ คีย์ผู้สมัครเหล่านี้คือผู้สมัครที่สามารถมีคุณสมบัติเป็นคีย์หลักได้
แม้ว่าคีย์ตัวเลือกแต่ละตัวจะมีคุณสมบัติเป็นคีย์หลัก แต่สามารถเลือกได้เพียงคีย์เดียวเท่านั้นเป็นคีย์หลัก กฎสำหรับคีย์ตัวเลือกต้องกลายเป็นคีย์หลักคือค่าแอททริบิวของคีย์ไม่สามารถเป็น NULL ในโดเมนใด ๆ ของคีย์มันจะต้อง ไม่ซ้ำกัน และ คงที่
หากคีย์ตัวเลือกทั้งหมดมีคุณสมบัติสำหรับคีย์หลัก DBA ที่ มีประสบการณ์จะต้องทำการตัดสินใจเพื่อหาคีย์หลัก ไม่สามารถมีความสัมพันธ์ได้หากไม่มีรหัสผู้สมัคร
ให้เราเข้าใจรหัสผู้สมัครพร้อมตัวอย่าง หากเราเพิ่มคุณสมบัติเพิ่มเติมให้กับความสัมพันธ์ของนักเรียนฉันพูดถึงข้างต้น
นักเรียน {ID, First_name, Last_name, อายุ, ที่อยู่, DOB, Department_name}
ที่นี่ฉันสามารถหาคีย์ผู้สมัคร สอง คนคือ {ID}, {First_name, Last_name, DOB} ดังนั้นคุณสามารถเข้าใจได้ว่าคีย์ผู้สมัครเป็นกุญแจที่ระบุทูเปิลในความสัมพันธ์โดยเฉพาะ
ความแตกต่างระหว่างคีย์หลักและคีย์ผู้สมัคร
- จุดพื้นฐานที่แตกต่างคีย์หลักจากคีย์ผู้สมัครคือว่าสามารถมีเพียงหนึ่งหลักสำหรับความสัมพันธ์ใด ๆ ในสคีมา อย่างไรก็ตามอาจมีปุ่มผู้สมัครหลายคนสำหรับความสัมพันธ์เดียว
- แอ็ตทริบิวต์ภายใต้คีย์หลักไม่สามารถมีค่า NULL ได้เนื่องจากฟังก์ชั่นหลักของคีย์หลักคือการระบุระเบียนที่เกี่ยวข้องโดยเฉพาะ แม้แต่คีย์หลักอาจถูกใช้เป็น foreign key ในความสัมพันธ์อื่นและดังนั้นจึงต้องไม่เป็น NULL เพื่อให้การอ้างอิงความสัมพันธ์สามารถค้นหา tuples ในความสัมพันธ์ที่อ้างอิง คีย์ตัวเลือกสามารถเป็น NULL ยกเว้นว่ามีการระบุข้อ จำกัด ของแอตทริบิวต์ไม่เป็นโมฆะ
- มันเป็นตัวเลือกในการระบุคีย์หลัก แต่ไม่สามารถมีความสัมพันธ์โดยไม่ต้องใช้คีย์ตัวเลือก
- คีย์หลักอธิบายคุณลักษณะเฉพาะและสำคัญที่สุดของความสัมพันธ์ในขณะที่คีย์ตัวเลือกให้ผู้สมัครที่สามารถเลือกเป็นคีย์หลักได้
- ทุกคีย์หลักคือคีย์ตัวเลือก แต่ในทางกลับกันไม่เป็นความจริง
สรุป:
เป็นทางเลือกสำหรับความสัมพันธ์เพื่อระบุคีย์หลัก ในทางกลับกันหากคุณกำลังประกาศความสัมพันธ์จะต้องมีรหัสผู้สมัครในความสัมพันธ์นั้นเพื่อสร้างความสัมพันธ์ที่ดี