คีย์หลักกับคีย์เฉพาะ
คอลัมน์หรือชุดของคอลัมน์ซึ่งสามารถใช้เพื่อระบุหรือเข้าถึงแถวหรือชุดของแถวในฐานข้อมูลเรียกว่าคีย์ คีย์เฉพาะคือคีย์ที่สามารถระบุแถวในตารางในบริบทของฐานข้อมูลเชิงสัมพันธ์โดยไม่ซ้ำกัน คีย์เฉพาะประกอบด้วยคอลัมน์เดียวหรือชุดของคอลัมน์ คีย์หลักยังเป็นการรวมกันของคอลัมน์ในตารางที่ระบุแถวที่ไม่ซ้ำกัน แต่ถือว่าเป็นกรณีพิเศษของคีย์เฉพาะ
รหัสเฉพาะคืออะไร
ดังที่กล่าวไว้ก่อนหน้านี้ คีย์ที่ไม่ซ้ำคือคอลัมน์เดียวหรือชุดของคอลัมน์ที่สามารถระบุแถวในตารางได้โดยไม่ซ้ำกันดังนั้น คีย์เฉพาะจะถูกจำกัดไม่ให้มีค่าสองค่าเท่ากัน คุณสมบัติที่สำคัญประการหนึ่งคือ คีย์เฉพาะไม่บังคับใช้ข้อจำกัด NOT NULL เนื่องจาก NULL แสดงถึงการขาดค่า หากแถวสองแถวมีค่า NULL ในคอลัมน์ ก็ไม่ได้หมายความว่าค่าจะเท่ากัน คอลัมน์ที่กำหนดเป็นคีย์เฉพาะอนุญาตให้มีค่า NULL เพียงค่าเดียวในคอลัมน์นั้น จากนั้นสามารถใช้เพื่อระบุแถวนั้นโดยไม่ซ้ำกัน ตัวอย่างเช่น ในตารางที่มีข้อมูลนักเรียน ID นักเรียนสามารถกำหนดเป็นคีย์เฉพาะได้ เนื่องจากไม่มีนักเรียนสองคนใดที่สามารถมี ID เดียวกันได้ จึงระบุถึงนักเรียนคนเดียวได้โดยไม่ซ้ำกัน ดังนั้นคอลัมน์รหัสนักศึกษาจึงมีคุณสมบัติทั้งหมดของคีย์เฉพาะ ตารางอาจมีคีย์ที่ไม่ซ้ำกันมากกว่าหนึ่งคีย์ ทั้งนี้ขึ้นอยู่กับการออกแบบของฐานข้อมูล
รหัสหลักคืออะไร
คีย์หลักยังเป็นคอลัมน์หรือชุดของคอลัมน์ที่กำหนดแถวในตารางของฐานข้อมูลเชิงสัมพันธ์โดยไม่ซ้ำกัน ตารางสามารถมีคีย์หลักได้ไม่เกินหนึ่งคีย์ คีย์หลักบังคับใช้ข้อจำกัด NOT NULL โดยปริยายดังนั้น คอลัมน์ที่กำหนดเป็นคีย์หลักไม่สามารถมีค่า NULL ได้ คีย์หลักอาจเป็นแอตทริบิวต์ปกติในตารางที่รับประกันว่าจะไม่ซ้ำกัน เช่น หมายเลขประกันสังคม หรืออาจเป็นค่าเฉพาะที่สร้างโดยระบบการจัดการฐานข้อมูล เช่น Globally Unique Identifier (GUID) ใน Microsoft SQL Server คีย์หลักถูกกำหนดผ่านข้อจำกัด PRIMARY KEY ใน ANSI SQL Standard คีย์หลักสามารถกำหนดได้เมื่อสร้างตาราง SQL อนุญาตให้คีย์หลักประกอบด้วยคอลัมน์อย่างน้อยหนึ่งคอลัมน์ และแต่ละคอลัมน์ที่รวมอยู่ในคีย์หลักถูกกำหนดโดยปริยายให้ไม่เป็นค่าว่าง แต่ระบบการจัดการฐานข้อมูลบางระบบต้องการการสร้างคอลัมน์คีย์หลักให้ชัดเจนว่าไม่ใช่ NULL
ความแตกต่างระหว่างคีย์หลักและคีย์เฉพาะ
แม้ว่าทั้งคีย์หลักและคีย์เฉพาะจะเป็นคอลัมน์อย่างน้อยหนึ่งคอลัมน์ที่สามารถระบุแถวในตารางได้โดยไม่ซ้ำกัน แต่ก็มีความแตกต่างที่สำคัญบางประการ สิ่งสำคัญที่สุดคือ ตารางสามารถมีคีย์หลักได้เพียงคีย์เดียว ในขณะที่สามารถมีคีย์ที่ไม่ซ้ำกันได้มากกว่าหนึ่งคีย์คีย์หลักถือได้ว่าเป็นกรณีพิเศษของคีย์เฉพาะ ข้อแตกต่างอีกประการหนึ่งคือคีย์หลักมีข้อ จำกัด ไม่ใช่ NULL โดยนัยในขณะที่คีย์เฉพาะไม่มีข้อ จำกัด นั้น ดังนั้น คอลัมน์คีย์เฉพาะอาจมีหรือไม่มีค่า NULL แต่คอลัมน์คีย์หลักไม่สามารถมีค่า NULL ได้