Skip to main content

ข้อจำกัดและคีย์ (Constraints and Keys)

บทนำ

ในฐานข้อมูล, ข้อจำกัด (Constraints) และคีย์ (Keys) เป็นเครื่องมือที่สำคัญในการจัดการความสมบูรณ์ของข้อมูล (Data Integrity) โดยใช้ข้อกำหนดในการควบคุมการป้อนข้อมูลที่เข้ามาในฐานข้อมูล เช่น การบังคับให้ข้อมูลไม่ซ้ำกัน หรือการตรวจสอบความสัมพันธ์ระหว่างตารางต่าง ๆ ข้อจำกัดและคีย์ช่วยให้การจัดการข้อมูลเป็นระเบียบและปลอดภัยมากขึ้น

1. ข้อจำกัด (Constraints)

ข้อจำกัด (Constraints) คือข้อกำหนดที่ใช้ในการควบคุมค่าข้อมูลในคอลัมน์ของตาราง เช่น การห้ามใส่ค่าซ้ำ หรือการห้ามใส่ค่าที่เป็น NULL

1.1 NOT NULL

ข้อจำกัด NOT NULL ใช้เพื่อห้ามไม่ให้คอลัมน์ใดคอลัมน์หนึ่งมีค่าเป็น NULL คอลัมน์ที่มีข้อจำกัดนี้จะต้องมีข้อมูลทุกแถว

การใช้งาน:

CREATE TABLE example (
name VARCHAR(100) NOT NULL
);

ในตัวอย่างนี้ คอลัมน์ name จะไม่สามารถเก็บค่า NULL ได้

1.2 UNIQUE

ข้อจำกัด UNIQUE ใช้เพื่อห้ามไม่ให้ข้อมูลในคอลัมน์หรือกลุ่มคอลัมน์มีค่าซ้ำกัน โดยจะตรวจสอบค่าของแต่ละแถวว่าไม่ซ้ำกัน

การใช้งาน:

CREATE TABLE example (
email VARCHAR(100) UNIQUE
);

ในตัวอย่างนี้ ข้อมูลในคอลัมน์ email จะต้องไม่ซ้ำกันในแต่ละแถว

1.3 PRIMARY KEY

ข้อจำกัด PRIMARY KEY ใช้ในการกำหนดคอลัมน์หรือกลุ่มคอลัมน์ที่ใช้เป็นรหัสหลัก (Primary Key) ซึ่งเป็นค่าที่ไม่ซ้ำกันและไม่สามารถเป็น NULL ได้ คีย์หลักใช้ในการระบุแถวที่ไม่ซ้ำกันในตาราง

การใช้งาน:

CREATE TABLE example (
id INT PRIMARY KEY,
name VARCHAR(100)
);

ในตัวอย่างนี้ คอลัมน์ id เป็น PRIMARY KEY ซึ่งจะต้องไม่ซ้ำกันและไม่สามารถเป็น NULL ได้

1.4 FOREIGN KEY

ข้อจำกัด FOREIGN KEY ใช้ในการสร้างความสัมพันธ์ระหว่างตาราง โดยกำหนดให้คอลัมน์หนึ่งในตารางหนึ่งต้องอ้างอิงถึงค่าที่มีอยู่ในคอลัมน์ของตารางอื่น

การใช้งาน:

CREATE TABLE orders (
order_id INT PRIMARY KEY,
customer_id INT,
FOREIGN KEY (customer_id) REFERENCES customers(id)
);

ในตัวอย่างนี้ คอลัมน์ customer_id ในตาราง orders จะอ้างอิงถึงคอลัมน์ id ในตาราง customers ซึ่งหมายความว่า ค่าใน customer_id ต้องมีอยู่ในตาราง customers

1.5 CHECK

ข้อจำกัด CHECK ใช้ในการกำหนดเงื่อนไขในการตรวจสอบข้อมูล เช่น การห้ามใส่ค่าในคอลัมน์ที่ไม่ตรงตามเงื่อนไขที่กำหนด

การใช้งาน:

CREATE TABLE example (
age INT CHECK (age >= 18)
);

ในตัวอย่างนี้ ข้อจำกัด CHECK จะทำให้คอลัมน์ age ต้องมีค่าอย่างน้อย 18 ปี

1.6 DEFAULT

ข้อจำกัด DEFAULT ใช้ในการกำหนดค่าพื้นฐานให้กับคอลัมน์ในกรณีที่ไม่ได้ระบุค่าเมื่อเพิ่มข้อมูล

การใช้งาน:

CREATE TABLE example (
status VARCHAR(10) DEFAULT 'active'
);

ในตัวอย่างนี้ ถ้าหากไม่มีการระบุค่าในคอลัมน์ status ค่าจะถูกตั้งเป็น 'active'

2. คีย์ (Keys)

คีย์ (Keys) คือชุดของคอลัมน์ที่ใช้ในการระบุแถวในตาราง หรือในการสร้างความสัมพันธ์ระหว่างตารางต่าง ๆ ในฐานข้อมูล

2.1 Primary Key

คีย์หลัก (Primary Key) เป็นคีย์ที่ใช้ระบุแถวในตาราง โดยมีคุณสมบัติว่า:

  • ไม่มีค่าซ้ำกัน
  • ไม่สามารถเป็น NULL ได้

ตารางสามารถมีคีย์หลักได้เพียงคีย์เดียว

ตัวอย่าง:

CREATE TABLE employees (
employee_id INT PRIMARY KEY,
name VARCHAR(100)
);

2.2 Foreign Key

คีย์ต่างประเทศ (Foreign Key) ใช้ในการสร้างความสัมพันธ์ระหว่างตาราง โดยจะอ้างอิงคอลัมน์ของตารางอื่น

คีย์ต่างประเทศอาจจะมีค่าซ้ำหรือเป็น NULL ได้ แต่ต้องอ้างอิงถึงค่าที่มีอยู่ในตารางอื่น

ตัวอย่าง:

CREATE TABLE orders (
order_id INT PRIMARY KEY,
customer_id INT,
FOREIGN KEY (customer_id) REFERENCES customers(id)
);

2.3 Unique Key

คีย์ที่ไม่ซ้ำกัน (Unique Key) ใช้ในการสร้างข้อจำกัดให้คอลัมน์หรือชุดของคอลัมน์ไม่ให้มีค่าซ้ำกัน โดยสามารถมีหลายคีย์ที่ไม่ซ้ำกันในตาราง

ตัวอย่าง:

CREATE TABLE users (
user_id INT PRIMARY KEY,
email VARCHAR(100) UNIQUE
);

2.4 Composite Key

คีย์ผสม (Composite Key) คือคีย์ที่ประกอบด้วยหลายคอลัมน์ ซึ่งใช้ในการระบุแถวในตารางโดยการรวมค่าของหลายคอลัมน์เข้าด้วยกัน

ตัวอย่าง:

CREATE TABLE order_items (
order_id INT,
product_id INT,
quantity INT,
PRIMARY KEY (order_id, product_id)
);

2.5 Candidate Key

คีย์ผู้สมัคร (Candidate Key) คือคีย์ที่สามารถใช้เป็นคีย์หลักได้ โดยปกติจะมีหลายคีย์ในตารางที่สามารถใช้แทนกันได้เป็นคีย์หลัก เช่น คอลัมน์ email และ user_id ในตาราง users อาจจะเป็นคีย์ผู้สมัครทั้งหมด

2.6 Alternate Key

คีย์ทางเลือก (Alternate Key) คือคีย์ที่เหลืออยู่หลังจากเลือกคีย์หลักจากคีย์ผู้สมัคร

สรุป

ข้อจำกัดและคีย์เป็นเครื่องมือที่สำคัญในการควบคุมความสมบูรณ์ของข้อมูลในฐานข้อมูล ข้อจำกัด เช่น NOT NULL, UNIQUE, PRIMARY KEY, FOREIGN KEY, CHECK, และ DEFAULT ช่วยให้เราสามารถควบคุมข้อมูลที่ถูกป้อนเข้ามาในฐานข้อมูลได้อย่างถูกต้องและปลอดภัย คีย์ เช่น Primary Key, Foreign Key, Unique Key, และ Composite Key ช่วยในการระบุแถวที่ไม่ซ้ำกันในตาราง และสร้างความสัมพันธ์ระหว่างตารางต่าง ๆ ในฐานข้อมูล