ป้ายกำกับ: Default

SQL Constraints: การกำหนด規則 NOT NULL, UNIQUE, DEFAULT เพื่อคุมความถูกต้องข้อมูลSQL Constraints: การกำหนด規則 NOT NULL, UNIQUE, DEFAULT เพื่อคุมความถูกต้องข้อมูล

ในโลกธุรกิจยุคข้อมูล (Data-Driven Era) ข้อมูลคือสินทรัพย์ที่ทรงพลังที่สุดขององค์กร การเก็บข้อมูลจำนวนมหาศาลไว้ในระบบฐานข้อมูลจึงเป็นเรื่องปกติ แต่ความท้าทายที่ใหญ่กว่าคือการรักษา ความถูกต้องของข้อมูล (Data Integrity) หากข้อมูลแม้แต่ส่วนเดียวผิดพลาด ระบบการตัดสินใจทางธุรกิจทั้งหมดก็จะผิดพลาดตามไปด้วย

ในฐานะ Senior Architect เราจึงต้องมั่นใจว่าฐานข้อมูลของเราถูกสร้างขึ้นด้วยมาตรฐานสูงสุด และหัวใจสำคัญของการรับประกันมาตรฐานนี้คือการใช้ SQL Constraints (ข้อจำกัด) ซึ่งเป็นชุดกฎที่ถูกกำหนดไว้ในระดับโครงสร้างของตาราง เพื่อบังคับให้ข้อมูลที่ถูกบันทึกเข้าไปต้องเป็นไปตามเงื่อนไขที่กำหนดไว้เท่านั้น

🧱 หลักการทำงานของ SQL Constraints ใน PostgreSQL

Constraints คือกลไกป้องกันความผิดพลาดของมนุษย์ (Human Error) และความผิดพลาดทางตรรกะ (Logical Error) โดย PostgreSQL รองรับการกำหนดข้อจำกัดที่สำคัญหลายรูปแบบ แต่ในบทความนี้เราจะเจาะลึก 3 Constraints ที่จำเป็นที่สุดสำหรับการควบคุมคุณภาพข้อมูล ได้แก่ NOT NULL, UNIQUE, และ DEFAULT

✅ 1. NOT NULL: บังคับให้ต้องมีค่า

Constraint NOT NULL เป็นการกำหนดกฎที่ง่ายที่สุดแต่สำคัญที่สุด มันบังคับว่าคอลัมน์ที่ถูกกำหนดนี้จะต้องมีค่าเสมอ ห้ามปล่อยให้เป็นค่าว่าง (NULL) โดยเด็ดขาด หากพยายาม INSERT ข้อมูลโดยละเว้นคอลัมน์นี้ ระบบจะปฏิเสธคำสั่งทันที

✅ 2. UNIQUE: รับประกันความไม่ซ้ำซ้อน

Constraint UNIQUE ใช้เพื่อรับประกันว่าค่าที่ถูกบันทึกในคอลัมน์นั้นจะต้องไม่ซ้ำกับแถวอื่น ๆ ในตาราง แม้ว่าคอลัมน์นั้นอาจจะอนุญาตให้เป็น NULL ได้ (ขึ้นอยู่กับการตั้งค่า) แต่ค่าที่ไม่ใช่ NULL จะต้องเป็นค่าที่ไม่ซ้ำกันเสมอ เหมาะสำหรับรหัสสินค้า (SKU) หรืออีเมลผู้ใช้

✅ 3. DEFAULT: การกำหนดค่ามาตรฐานอัตโนมัติ

Constraint DEFAULT ช่วยให้เรากำหนดค่าเริ่มต้น (Default Value) ให้กับคอลัมน์ เมื่อผู้ใช้หรือระบบไม่ได้ระบุค่าสำหรับคอลัมน์นั้น ๆ ระบบจะใช้ค่าที่เราตั้งไว้ให้โดยอัตโนมัติ ทำให้ข้อมูลมีความสมบูรณ์แม้ในกรณีที่ผู้ใช้ไม่ได้ป้อนข้อมูลครบถ้วน

💻 ตัวอย่างการใช้งานใน PostgreSQL (PostgreSQL Syntax)

เราจะสร้างตาราง products เพื่อสาธิตการใช้งาน Constraints ทั้งสามอย่างพร้อมกัน:

SQL

-- สร้างตารางสินค้าที่บังคับใช้ Constraints ต่างๆ<br>CREATE TABLE products ( <br>    product_id SERIAL PRIMARY KEY, -- Primary Key (บังคับไม่ซ้ำและไม่เป็น NULL)<br>    product_name VARCHAR(100) NOT NULL, -- 1. NOT NULL: ชื่อสินค้าต้องมีค่าเสมอ<br>    sku VARCHAR(50) UNIQUE NOT NULL, -- 2. UNIQUE: SKU ต้องไม่ซ้ำกันและต้องมีค่า<br>    price NUMERIC(10, 2) DEFAULT 0.00, -- 3. DEFAULT: ถ้าไม่ระบุราคา จะใช้ 0.00<br>    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP <br>);<br><br>-- ตัวอย่างการ INSERT ข้อมูลที่ถูกต้อง<br>INSERT INTO products (product_name, sku, price) VALUES ('Laptop X', 'LX-001', 25000.00);<br><br>-- ตัวอย่างการ INSERT ข้อมูลที่ใช้ค่า DEFAULT<br>INSERT INTO products (product_name, sku) VALUES ('Mouse Y', 'MY-002'); -- price จะเป็น 0.00 โดยอัตโนมัติ<br><br>-- ตัวอย่างการพยายามละเว้น NOT NULL (จะเกิด Error)<br>-- INSERT INTO products (product_name, sku) VALUES (NULL, 'FAIL');

💡 สรุป: การออกแบบฐานข้อมูลที่แข็งแกร่ง

การใช้ SQL Constraints ไม่ใช่แค่การเขียนโค้ด แต่คือการออกแบบสถาปัตยกรรมข้อมูล (Data Architecture) ที่มีความแข็งแกร่ง (Robust) การกำหนด NOT NULL, UNIQUE, และ DEFAULT อย่างเหมาะสมตั้งแต่ขั้นตอนการสร้างตาราง จะช่วยให้ฐานข้อมูลของคุณเป็นแหล่งเก็บข้อมูลที่เชื่อถือได้ ลดความเสี่ยงจากข้อผิดพลาด และทำให้การตัดสินใจทางธุรกิจที่ขับเคลื่อนด้วยข้อมูลนั้นมีความแม่นยำสูงสุด