22 ก.ย. เวลา 09:00 • การศึกษา
Data By Shoper Gamer

Natural Key คืออะไร

โดย
ในการออกแบบฐานข้อมูล Natural Key (คีย์จากธรรมชาติ) เป็นแนวคิดสำคัญที่ใช้ข้อมูลจริงๆ ที่มีอยู่ในโลกธุรกิจมาเป็นตัวระบุข้อมูลแทนการสร้างรหัสใหม่ขึ้นมา บทความนี้จะพาคุณไปทำความเข้าใจเกี่ยวกับ Natural Key อย่างลึกซึ้ง ตั้งแต่แนวคิดพื้นฐานไปจนถึงการนำไปใช้งานจริง
  • ​Natural Key คืออะไร
Natural Key คือ แอตทริบิวต์หรือชุดของแอตทริบิวต์ที่อยู่ในข้อมูลธุรกิจอยู่แล้ว และ สามารถใช้ระบุระเบียนได้อย่างไม่ซ้ำกัน โดยมีคุณสมบัติเด่นคือ
○ มีอยู่แล้วในโลกจริง ไม่ได้ถูกสร้างขึ้นเพื่อใช้ในฐานข้อมูลโดยเฉพาะ
○ มีความหมายในเชิงธุรกิจ ทำให้เข้าใจได้ง่ายว่าข้อมูลนั้นคืออะไร
○ มีค่าไม่ซ้ำกัน โดยธรรมชาติของข้อมูล
  • ​Natural Key ทำงานอย่างไร
☆ หลักการทำงาน
○ ระบุแอตทริบิวต์ ที่มีค่าไม่ซ้ำกันตามธรรมชาติ
○ ตรวจสอบความไม่ซ้ำกัน ของค่าข้อมูล
○ นำมาใช้เป็น Primary Key หรือ Alternate Key
○ บังคับความถูกต้องของข้อมูล ผ่านข้อกำหนด (Constraints)
☆ กลไกการทำงาน
○ อาศัยความไม่ซ้ำกันของข้อมูลตามธรรมชาติ
○ ไม่จำเป็นต้องสร้างค่าใหม่เพิ่มเติม
○ มีความหมาย และ ช่วยให้การสืบค้นข้อมูลง่ายขึ้น
  • ​ประเภทของ Natural Keys
1) Natural Keys แบบเดี่ยว
ใช้เพียงแอตทริบิวต์เดียวเป็นคีย์ เช่น เลขบัตรประชาชน, อีเมล, เลข ISBN
🟢 ข้อดี: ใช้งานง่าย
🔴 ข้อเสีย: อาจมีการเปลี่ยนแปลงได้
2) Natural Key แบบผสม
ใช้หลายแอตทริบิวต์มารวมกันเป็นคีย์ เช่น รหัสสาขารวมกับรหัสสินค้า หรือ ประเทศรวมกับรหัสไปรษณีย์
🟢 ข้อดี: สะท้อนความสัมพันธ์ที่ซับซ้อนได้ดี
🔴 ข้อเสีย: จัดการได้ยุ่งยากกว่า
  • ​ประโยชน์ของ Natural Key
✅️ มีความหมายในเชิงธุรกิจ ทำให้เข้าใจข้อมูลได้ทันที
✅️ ลดความซ้ำซ้อนของข้อมูล
✅️ ไม่ต้องสร้างรหัสใหม่ ช่วยประหยัดเวลา
✅️ ง่ายต่อการทำความเข้าใจและใช้งาน
✅️ ลดความซับซ้อนในการออกแบบ ฐานข้อมูล
  • ​ตัวอย่างการใช้งาน Natural Key
☆ ตัวอย่าง 1 ระบบทะเบียนประชาชน
ใช้เลขบัตรประชาชนเป็น Natural Key เนื่องจากมีค่าเฉพาะสำหรับแต่ละบุคคล
CREATE TABLE Citizens (
CitizenID CHAR(13) PRIMARY KEY, -- ใช้เลขบัตรประชาชนเป็นคีย์หลัก
FirstName VARCHAR(50),
LastName VARCHAR(50),
BirthDate DATE,
CONSTRAINT unique_citizen_id UNIQUE (CitizenID)
);
☆ ตัวอย่าง 2 ระบบหนังสือ
ใช้เลข ISBN เป็น Natural Key เพราะแต่ละเล่มจะมีเลข ISBN ที่ไม่ซ้ำกัน
CREATE TABLE Books (
ISBN VARCHAR(20) PRIMARY KEY, -- ใช้เลข ISBN เป็นคีย์หลัก
Title VARCHAR(200),
Author VARCHAR(100),
Publisher VARCHAR(100),
PublishedYear INT
);
☆ ตัวอย่าง 3 ระบบสินค้า
ใช้รหัสสินค้าเป็น Natural Key ที่ไม่ซ้ำกันในแต่ละสินค้า
CREATE TABLE Products (
ProductCode VARCHAR(20) PRIMARY KEY, -- ใช้รหัสสินค้าเป็นคีย์หลัก
ProductName VARCHAR(100),
Category VARCHAR(50),
Price DECIMAL(10,2),
Manufacturer VARCHAR(100)
);
  • ​เมื่อไหร่ควรใช้ Natural Key
☆ เหมาะสำหรับใช้เมื่อ
✅️ มีข้อมูลระบุตัวตนที่คงที่ ข้อมูลที่ไม่เปลี่ยนแปลงบ่อย เช่น เลขบัตรประชาชน
✅️ ค่ามีความเฉพาะตัวโดยธรรมชาติข้อมูลที่ไม่ซ้ำกัน
✅️ ต้องการให้คีย์มีความหมาย เพื่อให้การสืบค้นข้อมูลเป็นเรื่องง่าย
✅️ ระบบมีขนาดเล็กไม่ซับซ้อน
☆ ไม่เหมาะเมื่อ
🙅‍♂️ ข้อมูลระบุตัวตนอาจเปลี่ยนแปลงได้ เช่น อีเมลหรือชื่อผู้ใช้
🙅‍♂️ ค่าไม่แน่ใจว่าจะไม่ซ้ำกัน: มีโอกาสที่จะเกิดการซ้ำซ้อน
🙅‍♂️ ต้องการประสิทธิภาพสูงในการเชื่อมโยงข้อมูล (join)
🙅‍♂️ ระบบมีขนาดใหญ่และซับซ้อนต้องการความคงที่ของคีย์
  • ​คัวอย่างการนำ Natural Key ไปใช้งาน
1) การสร้างตาราง
สร้างตารางพนักงาน โดยใช้รหัสพนักงานเป็น Natural Key และอีเมลเป็น Alternate Key
CREATE TABLE Employees (
EmployeeCode VARCHAR(10) PRIMARY KEY, -- Natural Key
FullName VARCHAR(100),
Department VARCHAR(50),
HireDate DATE,
Email VARCHAR(100) UNIQUE -- Natural Alternate Key
);
2) การเพิ่มข้อมูล
INSERT INTO Employees (EmployeeCode, FullName, Department, HireDate, Email)
VALUES
('EMP001', 'สมชาย ใจดี', 'IT', '2023-01-15', 'somchai@company.com'),
('EMP002', 'สมหญิง รักดี', 'HR', '2023-02-20', 'somying@company.com');
3) การสืบค้นข้อมูล
-- ค้นหาด้วย Natural Key
SELECT * FROM Employees WHERE EmployeeCode = 'EMP001';
-- ค้นหาด้วย Natural Alternate Key
SELECT * FROM Employees WHERE Email = 'somchai@company.com';
เปรียบเทียบ Natural Key กับ Surrogate Key
Surrogate Key คือคีย์ที่สร้างขึ้นใหม่โดยอัตโนมัติ เช่น ID ที่เพิ่มขึ้นเรื่อยๆ
✏️ Shoper Gamer
Credit :
👇
  • ​https://www.baeldung.com/sql/keys-natural-vs-surrogate
  • ​https://patterns.dataincubator.org/book/natural-keys.html
  • ​https://www.mssqltips.com/sqlservertip/5431/surrogate-key-vs-natural-key-differences-and-when-to-use-in-sql-server/

ดูเพิ่มเติมในซีรีส์

โฆษณา