การใช้ PRIMARY KEY, FOREIGN KEY, UNIQUE, CHECK

Sharing is caring!

ในการออกแบบฐานข้อมูล สิ่งที่สำคัญมากคือการกำหนดข้อจำกัด (Constraints) เพื่อควบคุมความถูกต้องของข้อมูล (Data Integrity) ซึ่งคำสั่ง SQL ที่ใช้บ่อย ได้แก่ PRIMARY KEY, FOREIGN KEY, UNIQUE และ CHECK บทความนี้จะพาคุณเข้าใจการใช้งานแต่ละตัวอย่างละเอียด พร้อมตัวอย่างจริง

PRIMARY KEY

PRIMARY KEY ใช้กำหนดคอลัมน์ที่ไม่ซ้ำกันและไม่เป็นค่า NULL โดยแต่ละตารางสามารถมี PRIMARY KEY ได้เพียง 1 ค่าเท่านั้น

ตัวอย่าง:

CREATE TABLE employees (
  id SERIAL PRIMARY KEY,
  name VARCHAR(100),
  department VARCHAR(50)
);
  

FOREIGN KEY

FOREIGN KEY ใช้เชื่อมโยงตารางหนึ่งกับอีกตารางหนึ่ง เพื่อสร้างความสัมพันธ์ระหว่างข้อมูล เช่น ตาราง employees กับ ตาราง departments

ตัวอย่าง:

CREATE TABLE departments (
  dept_id SERIAL PRIMARY KEY,
  dept_name VARCHAR(100)
);

CREATE TABLE employees (
  id SERIAL PRIMARY KEY,
  name VARCHAR(100),
  dept_id INT,
  FOREIGN KEY (dept_id) REFERENCES departments(dept_id)
);
  

UNIQUE

UNIQUE ใช้บังคับไม่ให้ค่าซ้ำในคอลัมน์ เช่น email ของผู้ใช้งานต้องไม่ซ้ำกัน

ตัวอย่าง:

CREATE TABLE users (
  id SERIAL PRIMARY KEY,
  username VARCHAR(50) UNIQUE,
  email VARCHAR(100) UNIQUE
);
  

CHECK

CHECK ใช้บังคับเงื่อนไขของข้อมูล เช่น เงินเดือนต้องมากกว่า 0 หรืออายุผู้ใช้ต้องมากกว่า 18 ปี

ตัวอย่าง:

CREATE TABLE employees (
  id SERIAL PRIMARY KEY,
  name VARCHAR(100),
  age INT CHECK (age >= 18),
  salary DECIMAL(10,2) CHECK (salary > 0)
);
  

รวมตัวอย่างการใช้งานทั้งหมด

มาดูตัวอย่างจริงที่รวม PRIMARY KEY, FOREIGN KEY, UNIQUE และ CHECK เข้าด้วยกัน

CREATE TABLE departments (
  dept_id SERIAL PRIMARY KEY,
  dept_name VARCHAR(100) UNIQUE
);

CREATE TABLE employees (
  id SERIAL PRIMARY KEY,
  name VARCHAR(100),
  email VARCHAR(100) UNIQUE,
  age INT CHECK (age >= 18),
  salary DECIMAL(10,2) CHECK (salary > 0),
  dept_id INT,
  FOREIGN KEY (dept_id) REFERENCES departments(dept_id)
);
  

การใช้งานจริงในระบบ

สมมติว่าเรามีระบบบริษัท เราอาจมี:

  • PRIMARY KEY: ใช้กับตาราง employees (id)
  • FOREIGN KEY: ใช้เชื่อม employees กับ departments
  • UNIQUE: ใช้บังคับไม่ให้ email ซ้ำ
  • CHECK: ใช้ตรวจสอบอายุและเงินเดือน

Query ตัวอย่าง:

-- เพิ่มแผนก
INSERT INTO departments (dept_name) VALUES ('HR');

-- เพิ่มพนักงาน
INSERT INTO employees (name, email, age, salary, dept_id) 
VALUES ('Alice', '[email protected]', 25, 35000, 1);

-- ลองเพิ่มพนักงานอายุไม่ถึง 18 จะ error
INSERT INTO employees (name, email, age, salary, dept_id) 
VALUES ('Bob', '[email protected]', 15, 20000, 1);
  

ตารางเปรียบเทียบ

Constraintความหมายตัวอย่างการใช้งาน
PRIMARY KEYระบุแถวไม่ซ้ำid SERIAL PRIMARY KEY
FOREIGN KEYเชื่อมความสัมพันธ์ข้ามตารางFOREIGN KEY (dept_id) REFERENCES departments(dept_id)
UNIQUEไม่ให้ค่าซ้ำemail VARCHAR(100) UNIQUE
CHECKตรวจสอบตามเงื่อนไขCHECK (age >= 18)

สรุป

PRIMARY KEY, FOREIGN KEY, UNIQUE และ CHECK เป็นเครื่องมือสำคัญในการควบคุมความถูกต้องของข้อมูล การเข้าใจและใช้งาน Constraints อย่างถูกต้อง จะช่วยให้ระบบฐานข้อมูลมีความน่าเชื่อถือ และลดปัญหาความผิดพลาดของข้อมูลในอนาคต

SEO Keywords

SQL PRIMARY KEY,SQL FOREIGN KEY,SQL UNIQUE,SQL CHECK,สอน SQL,SQL Constraints,การใช้ PRIMARY KEY,การใช้ FOREIGN KEY,การใช้ UNIQUE,การใช้ CHECK

Leave a Reply

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *