Foreign Key ช่วยให้ผู้ดูแลระบบฐานข้อมูลสามารถระบุการเชื่อมต่อต่างๆ ที่มีอยู่ภายในระบบการจัดการฐานข้อมูล SQL ได้อย่างง่ายดาย
SQL ดำเนินการทางคณิตศาสตร์กับข้อมูลภายในระบบการจัดการฐานข้อมูล ฐานข้อมูลเหล่านี้ประกอบด้วยตารางต่าง ๆ ที่เก็บข้อมูลบนเอนทิตีเฉพาะ หากคุณมีฐานข้อมูลการเช่ารถ นิติบุคคล (หรือตาราง) ในฐานข้อมูลนั้นจะเป็นลูกค้า (ซึ่งจะเก็บข้อมูลส่วนบุคคลทั้งหมดของลูกค้าแต่ละราย)
ตารางฐานข้อมูลเหล่านี้ประกอบด้วยแถวและคอลัมน์ โดยที่แต่ละแถวจะโฮสต์ระเบียน และแต่ละคอลัมน์จะเก็บข้อมูลเฉพาะของแอตทริบิวต์
ในระบบการจัดการฐานข้อมูล แต่ละเร็กคอร์ด (หรือแถว) ควรไม่ซ้ำกัน
คีย์หลัก
แม้ว่าข้อกำหนดคือแต่ละระเบียนในตารางควรมีความชัดเจน แต่ก็ไม่เสมอไป ต่อด้วยตัวอย่างฐานข้อมูลการเช่ารถ หากฐานข้อมูลมีลูกค้าสองรายซึ่งแต่ละรายมีชื่อ John Brown คาดว่า John Brown จะส่งคืน Mercedes-Benz ที่เขาไม่ได้เช่า
การสร้างคีย์หลักจะช่วยลดความเสี่ยงนี้ได้ ในระบบการจัดการฐานข้อมูล SQL คีย์หลักคือตัวระบุเฉพาะที่แยกความแตกต่างระหว่างระเบียนหนึ่งกับอีกระเบียนหนึ่ง
windows10 กี่gbครับ
ดังนั้นทุกเร็กคอร์ดในระบบจัดการฐานข้อมูล SQL ควรมีคีย์หลัก
การใช้คีย์หลักในฐานข้อมูล
ในการรวมคีย์หลักในระบบการจัดการฐานข้อมูลโดยใช้ SQL คุณสามารถเพิ่มเป็นแอตทริบิวต์ปกติเมื่อสร้างตารางใหม่ ดังนั้นตารางของลูกค้าจะมีสี่แอตทริบิวต์ (หรือคอลัมน์):
- CarOwnerID (ซึ่งจะเก็บคีย์หลัก)
- ชื่อจริง
- นามสกุล
- หมายเลขโทรศัพท์
ที่เกี่ยวข้อง: วิธีสร้างตารางในSQL
ตอนนี้ทุกบันทึกของลูกค้าที่เข้าสู่ฐานข้อมูลจะมีหมายเลขประจำตัวที่ไม่ซ้ำกัน เช่นเดียวกับชื่อ นามสกุล และหมายเลขโทรศัพท์ หมายเลขโทรศัพท์ไม่ซ้ำกันมากพอที่จะเป็นคีย์หลัก เพราะถึงแม้จะเป็นหมายเลขเฉพาะสำหรับบุคคลทีละคน แต่บุคคลสามารถเปลี่ยนหมายเลขได้อย่างง่ายดาย ซึ่งหมายความว่าตอนนี้จะเป็นของคนอื่น
บันทึกด้วยตัวอย่างคีย์หลัก
/* creates a new record in the customers table */
INSERT INTO Customers VALUES
('0004',
'John',
'Brown',
'111-999-5555');
โค้ด SQL ด้านบนจะเพิ่มระเบียนใหม่ให้กับไฟล์ที่มีอยู่แล้ว ลูกค้า ตาราง. ตารางด้านล่างแสดงตารางลูกค้าใหม่ที่มีระเบียน John Brown สองรายการ
กุญแจต่างประเทศ
ตอนนี้คุณมีคีย์หลักที่ทำให้ผู้เช่ารถรายหนึ่งแตกต่างไปจากที่อื่น ปัญหาเดียวคือ ในฐานข้อมูล ไม่มีการเชื่อมต่อที่แท้จริงระหว่าง John Brown แต่ละคนกับรถที่เขาเช่า
ดังนั้น โอกาสที่จะผิดพลาดยังคงมีอยู่ นี่คือที่มาของคีย์ต่างประเทศ การใช้คีย์หลักเพื่อแก้ปัญหาความคลุมเครือในการเป็นเจ้าของจะทำได้ก็ต่อเมื่อคีย์หลักเป็นคีย์ภายนอกเป็นสองเท่า
กุญแจต่างประเทศคืออะไร?
ในระบบการจัดการฐานข้อมูล SQL คีย์นอกคือตัวระบุที่ไม่ซ้ำกันหรือการรวมกันของตัวระบุที่ไม่ซ้ำกันซึ่งเชื่อมต่อตารางตั้งแต่สองตารางขึ้นไปในฐานข้อมูล
จากสี่ระบบการจัดการฐานข้อมูล SQL ที่มีอยู่ ระบบการจัดการฐานข้อมูลเชิงสัมพันธ์เป็นระบบที่ได้รับความนิยมมากที่สุด เมื่อตัดสินใจว่าตารางใดในฐานข้อมูลเชิงสัมพันธ์ควรมีคีย์ภายนอก คุณควรระบุก่อนว่าตารางใดเป็นหัวข้อและตารางใดเป็นวัตถุในความสัมพันธ์
กลับไปที่ฐานข้อมูลการเช่ารถ เพื่อเชื่อมต่อลูกค้าแต่ละรายกับรถที่ถูกต้อง คุณจะต้องเข้าใจว่าลูกค้า (เจ้าของโครงการ) เช่ารถ (วัตถุ) ดังนั้นกุญแจต่างประเทศควรอยู่ในตารางรถยนต์
โค้ด SQL ที่สร้างตารางที่มีคีย์นอกแตกต่างจากปกติเล็กน้อย
การสร้างตารางด้วยตัวอย่างคีย์ต่างประเทศ
/* creates a new cars table in the car rental database */
CREATE TABLE Cars
(
LicenseNumber varchar(30) NOT NULL PRIMARY KEY,
CarType varchar(30) NOT NULL,
CustomerID varchar(30) FOREIGN KEY REFERENCES Customers(CustomerID)
);
ดังที่คุณเห็นในโค้ดด้านบน จะต้องมีการระบุคีย์ภายนอกให้ชัดเจน ควบคู่ไปกับการอ้างอิงถึงคีย์หลักที่เชื่อมต่อกับตารางใหม่
ปิดการใช้งาน facebook แล้วยังใช้ Messenger ได้อยู่ไหม
ที่เกี่ยวข้อง: แผ่นโกงคำสั่ง SQL ที่จำเป็นสำหรับผู้เริ่มต้น
ในการเพิ่มระเบียนลงในตารางใหม่ คุณจะต้องตรวจสอบให้แน่ใจว่าค่าในช่อง Foreign Key ตรงกับค่าในช่องคีย์หลักของตารางต้นฉบับ
การเพิ่มบันทึกด้วยตัวอย่างคีย์ต่างประเทศ
/* creates a new record in the cars table */
INSERT INTO Cars VALUES
('100012',
'Mercedes-Benz',
'0004');
รหัสด้านบนสร้างบันทึกใหม่ใน new รถยนต์ ตารางโดยให้ผลลัพธ์ดังนี้
ตารางรถ
จากตารางด้านบน คุณสามารถระบุ John Brown ที่ถูกต้องซึ่งเช่า Mercedes-Benz ด้วยรหัสต่างประเทศในบันทึก
กุญแจต่างประเทศล่วงหน้า
มีอีกสองวิธีในการใช้คีย์ต่างประเทศในฐานข้อมูล
หากคุณมองย้อนกลับไปที่คำจำกัดความของคีย์นอกด้านบน คุณจะพบว่าคีย์นอกสามารถเป็นตัวระบุที่ไม่ซ้ำกันหรือเป็นการรวมกันของตัวระบุที่ไม่ซ้ำกัน
กลับไปที่ตัวอย่างฐานข้อมูลการเช่ารถ คุณจะเห็นว่าการสร้างบันทึกใหม่ (ของรถคันเดียวกัน) ทุกครั้งที่ลูกค้าเช่ารถนั้น ขัดต่อจุดประสงค์ของ รถยนต์ ตาราง. ถ้ารถขายและขายให้กับลูกค้าคนเดียวครั้งเดียว ฐานข้อมูลที่มีอยู่จะสมบูรณ์แบบ แต่เนื่องจากรถยนต์ให้เช่าจึงมีวิธีที่ดีกว่าในการแสดงข้อมูลนี้
คอมโพสิตคีย์
คีย์ผสมมีตัวระบุที่ไม่ซ้ำกันตั้งแต่สองตัวขึ้นไป ในฐานข้อมูลเชิงสัมพันธ์ จะมีบางกรณีที่การใช้ Foreign Key เดียวไม่เพียงพอต่อความสัมพันธ์ที่มีอยู่ภายในฐานข้อมูลนั้น
ในตัวอย่างการเช่ารถ แนวทางที่ใช้งานได้จริงที่สุดคือการสร้างตารางใหม่ที่จัดเก็บรายละเอียดการเช่า เพื่อให้ข้อมูลในตารางการเช่ารถมีประโยชน์ จะต้องเชื่อมกับทั้งรถและตารางลูกค้า
การสร้างตารางด้วยคีย์ต่างประเทศผสม
/* creates a CarRental table in the car rental database */
CREATE TABLE CarRental
(
DateRented DATE NOT NULL,
LicenseNumber varchar(30) NOT NULL FOREIGN KEY REFERENCES Cars(LicenseNumber),
CustomerID varchar(30) NOT NULL FOREIGN KEY REFERENCES Customers(CustomerID),
PRIMARY KEY (DateRented, LicenseNumber, CustomerID)
);
รหัสด้านบนแสดงจุดสำคัญ แม้ว่าตารางในฐานข้อมูล SQL สามารถมีคีย์ภายนอกได้มากกว่าหนึ่งคีย์ แต่ก็มีคีย์หลักได้เพียงคีย์เดียว เนื่องจากควรมีวิธีที่ไม่ซ้ำกันเพียงวิธีเดียวในการระบุเร็กคอร์ด
จำเป็นต้องรวมแอตทริบิวต์ทั้งสามในตารางเพื่อให้มีคีย์เฉพาะ ลูกค้าสามารถเช่ารถได้มากกว่าหนึ่งคันในวันเดียวกัน (so รหัสลูกค้า และ วันที่เช่า ไม่ใช่การผสมผสานที่ดี) ลูกค้ามากกว่าหนึ่งรายสามารถเช่ารถคันเดียวกันได้ในวันเดียวกัน (ดังนั้น ใบอนุญาตเลขที่ และ วันที่เช่า ไม่ใช่ส่วนผสมที่ดี)
อย่างไรก็ตาม การสร้างคีย์ผสมที่บอกว่าลูกค้ารายใด รถยนต์อะไร และวันไหน จึงเป็นกุญแจที่มีเอกลักษณ์เฉพาะตัวที่ยอดเยี่ยม คีย์เฉพาะนี้แสดงถึงทั้งคีย์ภายนอกแบบผสมและคีย์หลักแบบผสม
ใช้ ram สองแบบได้ไหม
กุญแจหลักต่างประเทศ
ใช่แล้ว คีย์หลักต่างประเทศจะออกแล้ว แม้ว่าจะไม่มีชื่ออย่างเป็นทางการ แต่คีย์ต่างประเทศก็สามารถเป็นคีย์หลักในตารางเดียวกันได้ สิ่งนี้จะเกิดขึ้นเมื่อคุณสร้างตารางใหม่ที่มีข้อมูลเฉพาะเกี่ยวกับเอนทิตีที่มีอยู่ (หรือบันทึกในตารางอื่น)
Say Fred (ที่ทำงานในบริษัทให้เช่ารถยนต์) อยู่ในฐานข้อมูลของบริษัทใต้ตารางพนักงาน หลังจากนั้นไม่กี่ปี เขาก็กลายเป็นหัวหน้างานและถูกเพิ่มเข้าในตารางผู้บังคับบัญชา
เฟร็ดยังเป็นพนักงานอยู่และจะมีหมายเลขประจำตัวประชาชนเหมือนเดิม ดังนั้น ID พนักงานของ Fred จึงอยู่ในตารางหัวหน้างานในฐานะคีย์นอก ซึ่งจะกลายเป็นคีย์หลักในตารางนั้นด้วย (เนื่องจากการสร้างหมายเลขประจำตัวใหม่สำหรับ Fred ในตอนนี้เนื่องจากเขาเป็นหัวหน้างานนั้นไม่สมเหตุสมผล)
ตอนนี้คุณสามารถระบุ Foreign Keys ในฐานข้อมูล SQL
Foreign Key เชื่อมต่อตารางต่างๆ ภายในฐานข้อมูล SQL จากบทความนี้ คุณสามารถดูได้ว่า Foreign Key คืออะไร ทำงานอย่างไร และเหตุใดจึงสำคัญที่จะต้องมีคีย์ดังกล่าวในฐานข้อมูล คุณยังเข้าใจรูปแบบพื้นฐานของคีย์ต่างประเทศและซับซ้อนยิ่งขึ้นอีกด้วย
หากคุณคิดว่า Foreign Keys น่าสนใจ คุณจะต้องมีวันทำงานเมื่อคุณเริ่มใช้โปรเจ็กต์และการดำเนินการเลือกเพื่อสืบค้นฐานข้อมูล SQL ของคุณ
แบ่งปัน แบ่งปัน ทวีต อีเมล เรียนรู้วิธีใช้โครงการและการดำเนินการคัดเลือกในSQLทำความเข้าใจกับฐานข้อมูลเชิงสัมพันธ์ของ SQL โดยการทำความเข้าใจการดำเนินการโครงการและการเลือกด้วยตัวอย่างเหล่านี้
อ่านต่อไป หัวข้อที่เกี่ยวข้อง- การเขียนโปรแกรม
- การเขียนโปรแกรม
- SQL
- ฐานข้อมูล
Kadeisha Kean เป็นนักพัฒนาซอฟต์แวร์ฟูลสแตกและนักเขียนด้านเทคนิค/เทคโนโลยี เธอมีความสามารถที่ชัดเจนในการทำให้แนวคิดทางเทคโนโลยีที่ซับซ้อนที่สุดบางส่วนง่ายขึ้น การผลิตวัสดุที่สามารถเข้าใจได้ง่ายโดยสามเณรเทคโนโลยี เธอหลงใหลในการเขียน พัฒนาซอฟต์แวร์ที่น่าสนใจ และเดินทางไปทั่วโลก (ผ่านสารคดี)
เพิ่มเติมจาก Kadeisha Keanสมัครรับจดหมายข่าวของเรา
เข้าร่วมจดหมายข่าวของเราสำหรับเคล็ดลับทางเทคนิค บทวิจารณ์ eBook ฟรี และดีลพิเศษ!
คลิกที่นี่เพื่อสมัครสมาชิก