Foreign Keys ในฐานข้อมูล SQL คืออะไร?

Foreign Keys ในฐานข้อมูล SQL คืออะไร?

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
  • ฐานข้อมูล
เกี่ยวกับผู้เขียน คาเดชา คีน(21 บทความที่ตีพิมพ์)

Kadeisha Kean เป็นนักพัฒนาซอฟต์แวร์ฟูลสแตกและนักเขียนด้านเทคนิค/เทคโนโลยี เธอมีความสามารถที่ชัดเจนในการทำให้แนวคิดทางเทคโนโลยีที่ซับซ้อนที่สุดบางส่วนง่ายขึ้น การผลิตวัสดุที่สามารถเข้าใจได้ง่ายโดยสามเณรเทคโนโลยี เธอหลงใหลในการเขียน พัฒนาซอฟต์แวร์ที่น่าสนใจ และเดินทางไปทั่วโลก (ผ่านสารคดี)

เพิ่มเติมจาก Kadeisha Kean

สมัครรับจดหมายข่าวของเรา

เข้าร่วมจดหมายข่าวของเราสำหรับเคล็ดลับทางเทคนิค บทวิจารณ์ eBook ฟรี และดีลพิเศษ!

คลิกที่นี่เพื่อสมัครสมาชิก