Constraints ڈیٹا بیس کے ذریعے tables میں ڈیٹا پر نافذ کیے جانے والے اصول ہیں — جو ڈیٹا بیس کی سطح پر ڈیٹا کی درستگی کو یقینی بناتے ہیں (صرف ایپلیکیشن کوڈ میں نہیں)۔ اہم ترین یہ ہیں: PRIMARY KEY، FOREIGN KEY، UNIQUE، ، ، اور ۔
Constraints ڈیٹا بیس کے ذریعے tables میں ڈیٹا پر نافذ کیے جانے والے اصول ہیں — جو ڈیٹا بیس کی سطح پر ڈیٹا کی درستگی کو یقینی بناتے ہیں (صرف ایپلیکیشن کوڈ میں نہیں)۔ اہم ترین یہ ہیں: PRIMARY KEY، FOREIGN KEY، UNIQUE، ، ، اور ۔
NOT NULLCHECKDEFAULTCREATE TABLE users (
id INT PRIMARY KEY, -- unique + not null identifier
email VARCHAR(255) UNIQUE NOT NULL, -- must be unique AND present
age INT CHECK (age >= 0 AND age <= 120), -- must satisfy a condition
country VARCHAR(2) DEFAULT 'US', -- default value if not provided
role VARCHAR(20) NOT NULL DEFAULT 'user',
manager_id INT REFERENCES users(id) -- FOREIGN KEY (referential integrity)
);
PRIMARY KEY → uniquely identifies a row (unique + not null, indexed)
FOREIGN KEY → references another table's key (referential integrity)
UNIQUE → no duplicate values allowed in this column
NOT NULL → the column must have a value (can't be NULL)
CHECK → the value must satisfy a condition (age >= 0, status IN (...))
DEFAULT → a value used when none is provided on insert
-- ❌ relying only on application code to enforce uniqueness:
-- a race condition or a bug or a different app could insert a duplicate
-- ✅ a UNIQUE constraint guarantees it at the DB level — ALWAYS enforced,
-- regardless of which code or how many apps access the database
email VARCHAR(255) UNIQUE
ڈیٹا بیس constraints ڈیٹا کی درستگی کے لیے آخری حفاظتی لائن ہیں — یہ کسی بھی کوڈ سے نافذ ہوتے ہیں جو ڈیٹا داخل کرتا ہے (متعدد ایپلیکیشنز، scripts، manual تبدیلیاں، یا غلط کوڈ)، اور یہ race conditions کو سنبھالتے ہیں جو application-level checks چھوڑ دیتے ہیں۔
CHECK (price > 0) -- prices must be positive
CHECK (status IN ('active', 'inactive')) -- only valid statuses
CHECK (end_date > start_date) -- logical consistency
CHECK براہ راست schema میں business/domain اصول نافذ کرتا ہے۔
Constraints ڈیٹا کی درستگی برقرار رکھنے کے لیے ضروری ہیں — یہ یقینی بناتے ہیں کہ آپ کے ڈیٹا بیس میں ڈیٹا اصول کو پورا کرتا ہے (uniqueness، موجودگی، درست قدریں، درست حوالہ جات) ڈیٹا بیس کی سطح پر، جو قابل اعتماد ایپلیکیشنز کے لیے بنیادی ہے، اس لیے انہیں سمجھنا اہم ہے۔
Constraint کی اقسام کو جاننا (PRIMARY KEY، FOREIGN KEY، UNIQUE، NOT NULL، CHECK، DEFAULT) اور ہر ایک کیا نافذ کرتا ہے، یہ صحیح schema design کے لیے ضروری ہے۔
سب سے اہم conceptual نکتہ یہ ہے کہ صرف application code میں نہیں بلکہ ڈیٹا بیس کی سطح پر enforce کیوں کریں: ڈیٹا بیس constraints ڈیٹا کی درستگی کے لیے آخری لائن ہیں — وہ ہمیشہ نافذ ہوتے ہیں چاہے کوئی بھی کوڈ یا کتنی بھی ایپلیکیشنز ڈیٹا تک رسائی کریں، وہ وہ bugs پکڑتے ہیں جو application checks چھوڑ سکتے ہیں، اور اہم طور پر وہ race conditions کو سنبھالتے ہیں جو application-level validation نہیں کر سکتی (مثال کے طور پر دو بیک وقت inserts دونوں app-level uniqueness check کو پاس کریں لیکن UNIQUE constraint صحیح طریقے سے duplicate کو مسترد کر دے)۔
صرف application code پر منحصر ہونا خطرناک ہے؛ constraints ایک guarantee فراہم کرتے ہیں۔
CHECK constraints کو domain/business اصول (درست ranges، allowed values، logical consistency) کو براہ راست schema میں نافذ کرنے کے لیے سمجھنا بھی قیمتی ہے۔
چونکہ ڈیٹا کی درستگی قابل اعتماد ایپلیکیشنز کے لیے اہم ہے، اور چونکہ constraints ڈیٹا بیس کی سطح کی guarantees فراہم کرتے ہیں جو bugs، race conditions، اور inconsistent ڈیٹا کے خلاف حفاظت کرتے ہیں ایسے طریقوں سے جو صرف application code نہیں کر سکتی، constraints کو سمجھنا — اقسام، ان کی integrity guarantees، اور ڈیٹا بیس کی سطح کے enforcement کی اہمیت — یہ مضبوط ڈیٹابیسز ڈیزائن کرنے کے لیے اہم، بنیادی علم ہے اور ایسی ایپلیکیشنز بنانے کا اہم پہلو ہے جن کا ڈیٹا مستقل اور درست رہے۔