Blockdit Logo
Blockdit Logo (Mobile)
สำรวจ
ลงทุน
คำถาม
เข้าสู่ระบบ
มีบัญชีอยู่แล้ว?
เข้าสู่ระบบ
หรือ
ลงทะเบียน
Shoper Gamer
•
ติดตาม
30 ก.ย. เวลา 09:00 • การศึกษา
Data By Shoper Gamer
Composite Key คืออะไร
โดย
ในโลกของการออกแบบฐานข้อมูล Composite Key (คีย์ผสม) เป็นเครื่องมือสำคัญที่ช่วยแก้ปัญหาการระบุข้อมูลเมื่อไม่มีคุณลักษณะใดคุณลักษณะหนึ่งสามารถระบุแต่ละแถวได้อย่างไม่ซ้ำกัน บทความนี้จะพาคุณเจาะลึกไปกับ Composite Key ตั้งแต่แนวคิดพื้นฐานไปจนถึงการนำไปใช้งานจริง
★
Composite Key คืออะไร
Composite Key คือ คีย์ที่ประกอบด้วยคุณลักษณะตั้งแต่สองตัวขึ้นไปที่รวมกันใช้ระบุแต่ละแถวได้อย่างไม่ซ้ำกัน โดยมีลักษณะสำคัญคือ
✅️ ต้องใช้หลายคุณลักษณะ ประกอบกัน
✅️ การรวมกันต้องไม่ซ้ำกัน
✅️ แต่ละคุณลักษณะเดี่ยว ๆ อาจไม่เป็น Unique ได้
★
Composite Key ทำงานอย่างไร
1) รวมคุณลักษณะ หลายตัวเข้าด้วยกัน
2) ตรวจสอบความไม่ซ้ำกัน (Unique) ของการรวมกัน
3) สร้างดัชนี (Index) สำหรับการค้นหา
4) บังคับความถูกต้อง ของข้อมูล
☆ กลไกการทำงาน
1) ระบบตรวจสอบความไม่ซ้ำกันของการรวมกัน
2) ใช้เป็นตัวอ้างอิง ในการสร้างความสัมพันธ์
3) ต้องกำหนดค่าให้ครบทุกคุณลักษณะ ที่เป็นส่วนประกอบ
★
ประเภทของ Composite Keys
1) Natural Composite Key
ใช้คุณลักษณะจากบริบทธุรกิจจริง
○ ตัวอย่าง: (รหัสสาขา, รหัสสินค้า)
○ ข้อดี: มีความหมายในเชิงธุรกิจ
2) Surrogate Composite Key
ใช้คุณลักษณะที่สร้างขึ้น
○ ตัวอย่าง: (CustomerID, OrderID)
○ ข้อดี: มีประสิทธิภาพสูง
★
ประโยชน์ของ Composite Key
✅ สะท้อนความสัมพันธ์ ระหว่างคุณลักษณะ
✅ ลดความซ้ำซ้อน ของข้อมูล
✅ มีความหมายในเชิงธุรกิจ
✅ เหมาะสำหรับความสัมพันธ์ Many-to-Many (หลายต่อหลาย)
✅ ไม่ต้องสร้างคุณลักษณะเพิ่ม
★
ตัวอย่างการใช้งาน Composite Key
☆ ตัวอย่าง 1 ระบบลงทะเบียนเรียน
SQL
CREATE TABLE StudentCourses (
StudentID INT,
CourseID INT,
EnrollmentDate DATE,
Grade CHAR(2),
PRIMARY KEY (StudentID, CourseID) -- Composite Key
);
☆ ตัวอย่าง 2 ระบบคลังสินค้า
SQL
CREATE TABLE Inventory (
WarehouseID INT,
ProductID INT,
Quantity INT,
LastUpdated DATETIME,
PRIMARY KEY (WarehouseID, ProductID) -- Composite Key
);
☆ ตัวอย่าง 3 ระบบบัญชี
SQL
CREATE TABLE AccountTransactions (
AccountNumber VARCHAR(20),
TransactionDate DATETIME,
TransactionAmount DECIMAL(15,2),
TransactionType VARCHAR(10),
PRIMARY KEY (AccountNumber, TransactionDate) -- Composite Key
);
★
ควรใช้ Composite Key เมื่อไหร่
○ ไม่มีคุณลักษณะเดียว ที่ไม่ซ้ำกัน (Unique)
○ ต้องการสะท้อนความสัมพันธ์ ของข้อมูล
○ ใช้ในตารางเชื่อมโยง (Junction Tables) เพื่อจัดการความสัมพันธ์แบบ Many-to-Many
○ ข้อมูลมีลักษณะลำดับชั้น (Hierarchical)
★
เมื่อไหร่ไม่ควรใช้ Composite Key
○ มีคุณลักษณะเดียว ที่ไม่ซ้ำกันอยู่แล้ว
○ ต้องการประสิทธิภาพสูงสุด (Surrogate Key อาจเร็วกว่า)
○ คุณลักษณะประกอบมีขนาดใหญ่ (ทำให้คีย์ใหญ่ตามไปด้วย)
★
การสร้าง Composite Key
1) ใช้ PRIMARY KEY CONSTRAINT
SQL
CREATE TABLE OrderDetails (
OrderID INT,
ProductID INT,
Quantity INT,
UnitPrice DECIMAL(10,2),
PRIMARY KEY (OrderID, ProductID)
);
2) ใช้ UNIQUE CONSTRAINT
SQL
CREATE TABLE EmployeeDepartments (
EmployeeID INT,
DepartmentID INT,
StartDate DATE,
CONSTRAINT uk_emp_dept UNIQUE (EmployeeID, DepartmentID)
);
3) ใช้ ALTER TABLE
SQL
ALTER TABLE StudentCourses
ADD PRIMARY KEY (StudentID, CourseID);
★
การสืบค้นข้อมูลด้วย Composite Key
1) ค้นหาด้วยค่าเต็ม
SQL
SELECT * FROM StudentCourses
WHERE StudentID = 101 AND CourseID = 201;
2) ค้นหาด้วยค่าเพียงส่วนหนึ่ง
SQL
SELECT * FROM StudentCourses
WHERE StudentID = 101;
3) การเรียงลำดับ
SQL
SELECT * FROM StudentCourses
ORDER BY StudentID, CourseID;
★
การใช้งานร่วมกับ Foreign Key
☆ ตัวอย่างการสร้างความสัมพันธ์
SQL
☆ CREATE TABLE Students (
StudentID INT PRIMARY KEY,
StudentName VARCHAR(100)
);
☆ CREATE TABLE Courses (
CourseID INT PRIMARY KEY,
CourseName VARCHAR(100)
);
☆ CREATE TABLE StudentCourses (
StudentID INT,
CourseID INT,
EnrollmentDate DATE,
PRIMARY KEY (StudentID, CourseID),
FOREIGN KEY (StudentID) REFERENCES Students(StudentID),
FOREIGN KEY (CourseID) REFERENCES Courses(CourseID)
);
✏️ Shoper Gamer
>>
https://shopergamer.vercel.app/
Credit :
👇
●
https://www.geeksforgeeks.org/sql/composite-key-in-sql/
●
https://celerdata.com/glossary/composite-keys
●
https://www.dremio.com/wiki/composite-key/
●
https://milvus.io/ai-quick-reference/what-is-a-composite-key-in-a-relational-database
data
เทคโนโลยี
ข่าวรอบโลก
บันทึก
1
ดูเพิ่มเติมในซีรีส์
Data
1
โฆษณา
ดาวน์โหลดแอปพลิเคชัน
© 2025 Blockdit
เกี่ยวกับ
ช่วยเหลือ
คำถามที่พบบ่อย
นโยบายการโฆษณาและบูสต์โพสต์
นโยบายความเป็นส่วนตัว
แนวทางการใช้แบรนด์ Blockdit
Blockdit เพื่อธุรกิจ
ไทย