ไพรมารีคีย์ (Primary key) และฟอร์เรนคีย์ (Foreign key)
ก่อนเริ่ม
ข้อมูลที่จะใช้เป็นตัวอย่างคือคลินิกสุนัข ซึ่งมีสองตาราง คือ เจ้าของสุนัข และ ตัวสุนัข ซึ่งได้ตารางดังนี้
ตารางคน(เจ้าของสุนัข)
| ชื่อ | สูง(ซม.) | น้ำหนัก(กก.) |
|---|---|---|
| อวยชัย | 180 | 80 |
| ทิปฟ้า | 170 | 55 |
ตารางสุนัข
| ชื่อ | สูง(ซม.) | น้ำหนัก(กก.) |
|---|---|---|
| ชาลี | 43 | 20 |
| ข้าวเหนียว | 50 | 23 |
ไพรมารีคีย์ (Primary key:PK)
ไพรมารีคีย์ใช้เรียกคอลัมน์ซึ่งจะใช้ข้อมูลในคอลัมน์นั้นเป็นตัวแทนของเอนติตี้หรือตัวแทนแถว โดยคุณสมบัติของไพรมารีคีย์คือ
1. อาจเป็นคอลัมน์เดียวหรือหลายคอลัมน์ประกอบกัน
2. ข้อมูลในไพรมารีย์คีย์ในแต่ละแถวจะต้องไม่มีการซ้ำกับแถวอื่น
3. ต้องมีข้อมูลอยู่ในไพรมารีคีย์ทุกแถว
ถ้านำหลักการของไพรมารีคีย์มาใช้กับตัวอย่าง นั้นหมายความว่าจะต้องหาคอลัมน์ที่ตรงตามลักษณะที่ระบุไว้ ในกรณีทุกคอลัมน์มีิสิทธิ์เป็นไพรมารีคีย์ทั้งสิ้น เพราะข้อมูลของทุกคอลัมน์ไม่มีการซ้ำกัน แต่ความสูงและน้ำหนัก มีความเป็นไปได้ในอนาคตที่อาจจะมีการซ้ำกัน ด้วยเหตุนี้คอลัมน์ชื่อ น่าจะเหมาะสมที่สุดในการจัดให้เป็นไพรมารีคีย์ ซึ่งจะได้ผลดังตารางข้างล่าง
ตารางคน(เจ้าของสุนัข)
| ชื่อ(PK) | สูง(ซม.) | น้ำหนัก(กก.) |
|---|---|---|
| อวยชัย | 180 | 80 |
| ทิปฟ้า | 170 | 55 |
ตารางสุนัข
| ชื่อ(PK) | สูง(ซม.) | น้ำหนัก(กก.) |
|---|---|---|
| ชาลี | 43 | 20 |
| ข้าวเหนียว | 50 | 23 |
ฟอร์เรนคีย์ (Foreign key)
ฟอร์เรนคีย์ใช้เรียกคอลัมน์ซึ่งข้อมูลในคอลัมน์นั้นจะต้องอ้างอิงคอลัมน์อื่นในตารางเดียวกันหรือตารางอื่นก็ได้ จุดประสงค์ของฟอร์เรนคีย์คือการเชื่อมความสัมพันธ์ระหว่างข้อมูลในสองตารางถ้ามี โดยมากคอลัมน์ที่ฟอร์เรนคีย์จะอ้างอิงถึงมักจะเป็นคอลัมน์ที่เป็นไพรมารีคีย์ แต่ไม่ใช่กฎข้อบังคับแต่อย่างใด
จากตัวอย่าง ข้อมูลในตารางคนยังไม่มีข้อมูลใดที่บอกว่า แต่ละคนเป็นเจ้าของสุนัขตัวใด ด้วยเหตุนี้อาจมีการเพิ่มคอลัมน์ที่ชื่อว่า “ชื่อสุนัข” บนตารางคน แล้วระบุชื่อสุนัขที่คนๆนั้นเป็นเจ้าของ ในกรณีคอลัมน์ “ชื่อสุนัข” บนตารางคนจะจัดเป็นฟอร์เรนคีย์ เพราะข้อมูลในคอลัมน์นี้มีการอ้างอิงข้อมูลในคอลัมน์ “ชื่อ” ของตารางสุนัข ผลที่ได้จะเป็นดังตารางข้างล่าง
ตารางคน(เจ้าของสุนัข)
| ชื่อ(PK) | สูง(ซม.) | น้ำหนัก(กก.) | ชื่อสุนัข(FK อิง"ชื่อ"ในตารางสุนัข) |
|---|---|---|---|
| อวยชัย | 180 | 80 | ชาลี |
| ทิปฟ้า | 170 | 55 | ข้าวเหนียว |
ตารางสุนัข
| ชื่อ(PK) | สูง(ซม.) | น้ำหนัก(กก.) |
|---|---|---|
| ชาลี | 43 | 20 |
| ข้าวเหนียว | 50 | 23 |
