🔍 فهم CHECK Constraint: حارس البيانات الذكي في SQL

CHECK Constraint هو أحد القيود المهمة في SQL الذي يسمح لك بتحديد شرط يجب أن تلتزم به البيانات المُدخلة في عمود أو مجموعة أعمدة. يعمل هذا القيد كحارس للبيانات يضمن عدم إدخال قيم غير صحيحة أو غير منطقية في الجدول.


💡 ما هو CHECK Constraint؟

CHECK Constraint هو قيد يُطبق على عمود أو جدول لفرض شرط معين يجب أن تحققه البيانات قبل إدخالها. إذا حاولت إدخال بيانات لا تلبي هذا الشرط، فسيرفض نظام إدارة قواعد البيانات العملية ويعيد خطأ.

مثال بسيط: يمكنك استخدام CHECK لمنع إدخال أعمار سلبية، أو رواتب أقل من الحد الأدنى، أو تواريخ غير منطقية.


🛠️ كيفية إنشاء CHECK Constraint

يمكن إنشاء CHECK Constraint بطريقتين رئيسيتين:

الطريقة الأولى: عند إنشاء الجدول

CREATE TABLE employees (
    employee_id INT PRIMARY KEY,
    employee_name VARCHAR(100),
    age INT CHECK (age >= 18), -- التأكد من أن العمر 18 أو أكثر
    salary DECIMAL(10,2) CHECK (salary > 0) -- التأكد من أن الراتب أكبر من الصفر
);

الطريقة الثانية: إضافة القيد لجدول موجود

ALTER TABLE employees
ADD CONSTRAINT chk_age CHECK (age >= 18);

📋 أمثلة عملية على CHECK Constraint

المثال 1: التحقق من نطاق الراتب

CREATE TABLE employees (
    id INT PRIMARY KEY,
    name VARCHAR(100),
    salary DECIMAL(10,2) CHECK (salary BETWEEN 1000 AND 10000)
);
-- هذا يضمن أن الراتب بين 1000 و 10000 فقط

المثال 2: التحقق من فئة المنتج

CREATE TABLE products (
    product_id INT PRIMARY KEY,
    product_name VARCHAR(100),
    category VARCHAR(50) CHECK (category IN ('Electronics', 'Clothing', 'Books'))
);
-- هذا يضمن أن الفئة تكون واحدة من القيم المحددة فقط

المثال 3: التحقق من تاريخ التعيين

CREATE TABLE employees (
    id INT PRIMARY KEY,
    name VARCHAR(100),
    hire_date DATE CHECK (hire_date >= '2000-01-01')
);
-- هذا يضمن أن تاريخ التعيين يكون بعد عام 2000

⚠️ أهم النقاط التي يجب تذكرها

  1. يدعم معظم أنظمة قواعد البيانات CHECK Constraint بما فيها MySQL، PostgreSQL، Oracle، وSQL Server
  2. يمكن تطبيقه على عمود واحد أو مجموعة أعمدة
  3. الشرط يجب أن يعود بقيمة boolean (صحيح أو خطأ)
  4. يمكن استخدام عوامل المقارنة مثل: =, <>, >, <, >=, <=
  5. يدعم العوامل المنطقية مثل: AND, OR, NOT

🚀 ماذا سنتعلم في الدرس القادم؟

في الدرس القادم، سنتعرف على "DEFAULT Constraint" وكيفية استخدامه لتعيين قيم افتراضية للأعمدة عندما لا يتم إدخال قيمة صريحة. سيساعدنا هذا في تحسين كفاءة إدخال البيانات والحفاظ على اتساقها في قواعد البيانات.