ความแตกต่างระหว่างคีย์หลักและรหัสผู้สมัคร
![Candidate Key vs Primary Key: Definition and Differences](https://i.ytimg.com/vi/xzVWLfZrnvM/hqdefault.jpg)
เนื้อหา
คีย์เป็นแอตทริบิวต์หรือชุดของคุณลักษณะที่ใช้ในการเข้าถึงสิ่งอันดับจากตารางหรือใช้เพื่อสร้างความสัมพันธ์ระหว่างสองตาราง ในบทความนี้เราจะพูดถึงคีย์หลักและผู้สมัครและความแตกต่างระหว่างพวกเขา ทั้งคีย์หลักและผู้สมัครระบุรหัส tuple ในความสัมพันธ์หรือตาราง แต่ประเด็นที่สำคัญที่สุดที่ทำให้พวกเขาแตกต่างคือมีเพียงคนเดียวเท่านั้น คีย์หลัก ในความสัมพันธ์ อย่างไรก็ตามสามารถมีได้มากกว่าหนึ่งรายการ รหัสผู้สมัคร ในความสัมพันธ์
มีความแตกต่างเพิ่มเติมระหว่างคีย์หลักและคีย์ผู้สมัครซึ่งฉันจะหารือด้วยความช่วยเหลือของแผนภูมิเปรียบเทียบที่แสดงด้านล่าง
- แผนภูมิเปรียบเทียบ
- คำนิยาม
- ความแตกต่างที่สำคัญ
- ข้อสรุป
แผนภูมิเปรียบเทียบ
พื้นฐานสำหรับการเปรียบเทียบ | คีย์หลัก | รหัสผู้สมัคร |
---|---|---|
ขั้นพื้นฐาน | สามารถมีคีย์หลักเพียงคีย์เดียวเท่านั้นในความสัมพันธ์ใด ๆ | สามารถมีได้มากกว่าหนึ่งคีย์ผู้สมัครในความสัมพันธ์ |
โมฆะ | ไม่มีแอตทริบิวต์ของคีย์หลักสามารถมีค่าเป็นศูนย์ | คุณลักษณะของผู้สมัครที่สำคัญสามารถมีค่าเป็นศูนย์ |
ระบุ | มันเป็นตัวเลือกเพื่อระบุคีย์หลักสำหรับความสัมพันธ์ใด ๆ | ไม่สามารถมีความสัมพันธ์โดยไม่ระบุรหัสผู้สมัคร |
ลักษณะ | คีย์หลักอธิบายคุณลักษณะที่สำคัญที่สุดสำหรับความสัมพันธ์ | คีย์ผู้สมัครนำเสนอผู้สมัครที่สามารถมีสิทธิ์ได้รับคีย์หลัก |
ในทางกลับกัน | คีย์หลักคือคีย์ตัวเลือก | แต่ไม่บังคับว่าแต่ละตัวเลือกที่สามารถเป็นกุญแจหลัก |
นิยามของคีย์หลัก
คีย์หลัก เป็นคุณลักษณะหรือชุดของคุณลักษณะที่จะระบุแต่ละ tuple ในความสัมพันธ์ สามารถมีได้เท่านั้น หนึ่ง คีย์หลักสำหรับแต่ละความสัมพันธ์ จะต้องได้รับการดูแลที่คีย์หลักควร ไม่เคย มี โมฆะ ค่าและจะต้องมี เป็นเอกลักษณ์ ค่าสำหรับแต่ละ tuple ในความสัมพันธ์ ค่าของแอตทริบิวต์ / s ของคีย์หลักจะต้องเป็น คงที่, เช่นค่าของแอตทริบิวต์ไม่ควรเปลี่ยนแปลงหรือแทบจะไม่มีเลย
หนึ่งใน กุญแจผู้สมัคร ได้รับการรับรองให้เป็นคีย์หลัก กฎระเบียบ ว่าคีย์ผู้สมัครจะต้องมีคุณสมบัติที่จะเป็นหลักคือว่าค่าของคีย์ไม่ควรจะเป็น โมฆะ และมันจะต้องเป็น เป็นเอกลักษณ์ สำหรับสิ่งอันดับทั้งหมด
หากความสัมพันธ์มีแอตทริบิวต์ที่เป็นคีย์หลักของความสัมพันธ์อื่น ๆ ดังนั้นแอตทริบิวต์นั้นจะถูกเรียก foreign key.
ขอแนะนำให้คิดคีย์หลักของความสัมพันธ์ก่อนที่จะแนะนำคุณลักษณะอื่น ๆ ของความสัมพันธ์เนื่องจากคีย์หลักระบุแต่ละ tuple ที่ไม่ซ้ำกัน มันจะดีกว่าที่จะเลือกคุณสมบัติเดียวหรือคุณลักษณะจำนวนน้อยเป็นคีย์หลักที่ทำให้การจัดการความสัมพันธ์ง่ายขึ้น
ตอนนี้ให้เราดูตัวอย่างของคีย์หลัก
นักเรียน {ID, First_name, Last_name, อายุ, ที่อยู่}
ที่นี่เราจะหารหัสผู้สมัครก่อน ฉันคิดออกแล้ว สอง ปุ่มตัวเลือก {ID} และ {ชื่อนามสกุล} ตามที่พวกเขาจะระบุนักเรียนแต่ละคนโดยไม่ซ้ำกันในความสัมพันธ์ของนักเรียน ตอนนี้ที่นี่ฉันจะเลือก ID เป็นคีย์หลักของฉันเพราะบางครั้งมันอาจเกิดขึ้นว่านักเรียนสองคนอาจมีชื่อและนามสกุลเหมือนกันดังนั้นจึงง่ายต่อการติดตามนักเรียนด้วย ID.
คำจำกัดความของรหัสผู้สมัคร
รหัสผู้สมัคร เป็นคุณลักษณะหรือชุดของคุณลักษณะที่กำหนด tuple ในความสัมพันธ์ จะมี มากกว่าหนึ่ง รหัสผู้สมัครในความสัมพันธ์ คีย์ผู้สมัครเหล่านี้คือผู้สมัครที่สามารถมีคุณสมบัติเป็นคีย์หลักได้
แม้ว่าคีย์ตัวเลือกแต่ละตัวจะมีคุณสมบัติเป็นคีย์หลัก แต่ก็สามารถเลือกได้เพียงคีย์เดียวเท่านั้นเป็นคีย์หลัก กฎที่คีย์ตัวเลือกต้องกลายเป็นคีย์หลักคือค่าของคีย์นั้นไม่สามารถเป็นได้ โมฆะ ในโดเมนใด ๆ ของคีย์จะต้องเป็น เป็นเอกลักษณ์ และ คงที่.
หากคีย์ตัวเลือกทั้งหมดมีคุณสมบัติเป็นคีย์หลักแสดงว่ามีประสบการณ์ DBA จะต้องตัดสินใจในการคิดคีย์หลัก ไม่สามารถมีความสัมพันธ์ได้หากไม่มีรหัสผู้สมัคร
ให้เราเข้าใจรหัสผู้สมัครพร้อมตัวอย่าง หากเราเพิ่มคุณสมบัติเพิ่มเติมให้กับความสัมพันธ์ของนักเรียนฉันพูดถึงข้างต้น
นักเรียน {ID, First_name, Last_name, อายุ, ที่อยู่, DOB, Department_name}
ที่นี่ฉันสามารถคิดออก สอง ปุ่มตัวเลือกที่มี {ID}, {First_name, Last_name, DOB}. ดังนั้นคุณจึงสามารถเข้าใจได้ว่าปุ่มตัวเลือกเป็นสิ่งที่ระบุทูเปิลในความสัมพันธ์โดยเฉพาะ
- จุดพื้นฐานที่แตกต่างคีย์หลักจากคีย์ผู้สมัครคือว่าสามารถมีเพียงหนึ่งหลักสำหรับความสัมพันธ์ใด ๆ ในสคีมา อย่างไรก็ตามอาจมีปุ่มผู้สมัครหลายคนสำหรับความสัมพันธ์เดียว
- แอ็ตทริบิวต์ภายใต้คีย์หลักไม่สามารถมีค่า NULL ได้เนื่องจากฟังก์ชั่นหลักของคีย์หลักคือการระบุระเบียนที่เกี่ยวข้องโดยเฉพาะ แม้แต่คีย์หลักอาจถูกใช้เป็น foreign key ในความสัมพันธ์อื่นและดังนั้นจึงต้องไม่เป็น NULL เพื่อให้การอ้างอิงความสัมพันธ์สามารถค้นหา tuples ในความสัมพันธ์ที่อ้างอิง คีย์ตัวเลือกสามารถเป็น NULL ยกเว้นว่ามีการระบุข้อ จำกัด ของแอตทริบิวต์ไม่เป็นโมฆะ
- มันเป็นตัวเลือกในการระบุคีย์หลัก แต่ไม่สามารถมีความสัมพันธ์โดยไม่ต้องใช้คีย์ตัวเลือก
- คีย์หลักอธิบายคุณลักษณะเฉพาะและสำคัญที่สุดของความสัมพันธ์ในขณะที่คีย์ตัวเลือกให้ผู้สมัครที่สามารถเลือกเป็นคีย์หลักได้
- ทุกคีย์หลักคือคีย์ตัวเลือก แต่ในทางกลับกันไม่เป็นความจริง
สรุป:
เป็นทางเลือกสำหรับความสัมพันธ์เพื่อระบุคีย์หลัก ในทางกลับกันหากคุณกำลังประกาศความสัมพันธ์จะต้องมีคีย์ผู้สมัครในความสัมพันธ์นั้นเพื่อสร้างความสัมพันธ์ที่ดี