วิธีการสร้างคีย์ต่างประเทศใน Microsoft SQL Server

หนึ่งในแนวคิดที่สำคัญที่สุดในฐานข้อมูลคือการสร้างความสัมพันธ์ระหว่างตารางฐานข้อมูล ความสัมพันธ์เหล่านี้เป็นกลไกในการเชื่อมโยงข้อมูลที่เก็บไว้ในหลาย ๆ ตารางและเรียกค้นข้อมูลได้อย่างมีประสิทธิภาพ ในการสร้างการเชื่อมโยงระหว่างสองตารางคุณต้องระบุ คีย์ต่างประเทศ ในตารางหนึ่งที่อ้างอิงถึงคอลัมน์ในตารางอื่น

ตารางฐานข้อมูลและความสัมพันธ์

คุณอาจทราบอยู่แล้วว่าฐานข้อมูลเป็น เพียงชุดของตารางที่ คล้ายคลึงกับสิ่งที่คุณอาจใช้ใน โปรแกรมสเปรดชีต เช่น Microsoft Excel ในความเป็นจริงคุณยังสามารถแปลงสเปรดชีต Excel ไปยังฐานข้อมูล แม้ว่าฐานข้อมูลจะแตกต่างจากสเปรดชีต แต่เมื่อกล่าวถึงการสร้าง ความสัมพันธ์ที่มีประสิทธิภาพ ระหว่างตาราง

พิจารณาตัวอย่างเช่นฐานข้อมูลที่ บริษัท ใช้ในการติดตามข้อมูลทรัพยากรมนุษย์ ฐานข้อมูลดังกล่าวอาจมีตารางที่เรียกว่า Employees ซึ่งประกอบด้วยข้อมูลต่อไปนี้สำหรับสมาชิกแต่ละคนของพนักงานของ บริษัท :

ในตัวอย่างนี้รหัสพนักงานคือจำนวนเต็มที่สร้างขึ้นโดยไม่ซ้ำกันซึ่งกำหนดให้กับพนักงานแต่ละคนเมื่อมีการเพิ่มลงในฐานข้อมูล ID ตำแหน่งคือรหัสงานที่ใช้อ้างอิงตำแหน่งของพนักงานใน บริษัท ในโครงการนี้พนักงานอาจมีเพียงตำแหน่งเดียว แต่พนักงานหลายคน (หรือไม่มี) อาจกรอกข้อมูลในแต่ละตำแหน่ง ตัวอย่างเช่นคุณอาจมีพนักงานหลายร้อยคนที่มีฐานะ "แคชเชียร์"

ฐานข้อมูลอาจประกอบด้วยตารางที่เรียกว่าตำแหน่งโดยมีข้อมูลเพิ่มเติมเกี่ยวกับแต่ละตำแหน่งดังนี้

ฟิลด์ ID ตำแหน่งในตารางนี้คล้ายกับฟิลด์ ID พนักงานในตาราง Employees - เป็นจำนวนเต็มที่สร้างขึ้นโดยไม่ซ้ำกันซึ่งสร้างขึ้นเมื่อเพิ่มตำแหน่งลงในฐานข้อมูล

เมื่อเราไปดึงรายชื่อพนักงานจากฐานข้อมูลการร้องขอชื่อและชื่อของบุคคลนั้นจะเป็นไปตามธรรมชาติ อย่างไรก็ตามข้อมูลนี้จะถูกเก็บไว้ในตารางฐานข้อมูลหลายแห่งดังนั้นจึงสามารถเรียกค้นได้โดยใช้แบบสอบถาม JOIN ซึ่งต้องการความสัมพันธ์ระหว่างตารางที่มีอยู่

เมื่อคุณดูโครงสร้างของตารางฟิลด์ที่กำหนดความสัมพันธ์อาจเป็นที่แน่ชัด - ฟิลด์ ID ตำแหน่ง พนักงานแต่ละคนสามารถมีตำแหน่งได้เพียงตำแหน่งเดียวและตำแหน่งนั้นจะถูกระบุด้วยการรวม ID ตำแหน่งจากรายการที่ตรงกันของตำแหน่ง นอกเหนือจากการเป็น คีย์หลัก สำหรับตารางตำแหน่งแล้วในตัวอย่างนี้ฟิลด์ ID ตำแหน่งยังเป็นคีย์จากต่างประเทศจากตารางพนักงานไปยังตำแหน่งด้วย ฐานข้อมูลสามารถใช้ฟิลด์นี้เพื่อเชื่อมโยงข้อมูลจากหลาย ๆ ตารางและตรวจสอบให้แน่ใจว่าการเปลี่ยนแปลงหรือการเพิ่มฐานข้อมูลยังคงบังคับใช้ ความสมบูรณ์แบบ referential

เมื่อคุณได้ระบุคีย์ต่างประเทศแล้วคุณสามารถดำเนินการต่อและดึงข้อมูลที่ต้องการจากฐานข้อมูลโดยใช้แบบสอบถามต่อไปนี้:

SELECT FirstName, LastName, ชื่อเรื่องจากพนักงาน INNER JOIN ตำแหน่ง ON Employees.PositionID = Positions.PositionID

การสร้างคีย์ต่างประเทศใน SQL Server

ในทางเทคนิคคุณไม่จำเป็นต้องกำหนดความสัมพันธ์อย่างชัดเจนเพื่อให้สามารถดำเนินการแบบสอบถามได้เช่นเดียวกับที่กล่าวมา อย่างไรก็ตามหากคุณกำหนดความสัมพันธ์โดยใช้ข้อ จำกัด คีย์ต่างประเทศอย่างชัดแจ้งฐานข้อมูลจะสามารถทำงานดูแลทำความสะอาดได้สำหรับคุณ:

ต่อไปนี้คือวิธีที่คุณจะสร้างคีย์ต่างประเทศใน SQL Server:

ALTER TABLE พนักงานเพิ่มคีย์ต่างประเทศ (PositionID) ข้อมูลอ้างอิงตำแหน่ง (PositionID)

นอกจากนี้คุณยังสามารถสร้างคีย์ต่างประเทศเมื่อคุณสร้างตารางด้วยการเพิ่มประโยค:

ตำแหน่งอ้างอิงภายนอก (PositionID)

ที่ส่วนท้ายของคำจำกัดความของคอลัมน์สำหรับคอลัมน์คีย์ต่างประเทศ