Constraints ਟੇਬਲਾਂ ਵਿਚ ਡਾਟਾ 'ਤੇ ਲਾਗੂ ਕੀਤੇ ਜਾਣ ਵਾਲੇ ਨਿਯਮ ਹਨ — ਸਿਰਫ ਐਪਲੀਕੇਸ਼ਨ ਕੋਡ ਵਿਚ ਨਹੀਂ ਬਲਕਿ ਡਾਟਾਬੇਸ ਪੱਧਰ 'ਤੇ ਡਾਟਾ ਦੀ ਇਕਸਾਰਤਾ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਂਦੇ ਹਨ। ਮੁੱਖ ਹਨ: PRIMARY KEY, FOREIGN KEY, UNIQUE, NOT NULL, , ਅਤੇ ।
Constraints ਟੇਬਲਾਂ ਵਿਚ ਡਾਟਾ 'ਤੇ ਲਾਗੂ ਕੀਤੇ ਜਾਣ ਵਾਲੇ ਨਿਯਮ ਹਨ — ਸਿਰਫ ਐਪਲੀਕੇਸ਼ਨ ਕੋਡ ਵਿਚ ਨਹੀਂ ਬਲਕਿ ਡਾਟਾਬੇਸ ਪੱਧਰ 'ਤੇ ਡਾਟਾ ਦੀ ਇਕਸਾਰਤਾ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਂਦੇ ਹਨ। ਮੁੱਖ ਹਨ: PRIMARY KEY, FOREIGN KEY, UNIQUE, NOT NULL, , ਅਤੇ ।
CHECKDEFAULTCREATE 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
Database constraints ਡਾਟਾ ਇਕਸਾਰਤਾ ਲਈ ਅਖੀਰਲੀ ਲਾਈਨ ਆਫ ਡਿਫੈਂਸ ਹਨ — ਇਹ ਕਿਸੇ ਵੀ ਕੋਡ ਦੁਆਰਾ ਡਾਟਾ ਸ਼ਾਮਲ ਕਰਨ ਉੱਤੇ ਲਾਗੂ ਕੀਤੇ ਜਾਂਦੇ ਹਨ (ਕਈ ਐਪਲੀਕੇਸ਼ਨਾਂ, ਸਕ੍ਰਿਪਟਾਂ, ਮੈਨੁਅਲ ਤਬਦੀਲੀਆਂ, ਜਾਂ ਬਗੀ ਕੋਡ), ਅਤੇ ਉਹ ਰੇਸ ਕੰਡੀਸ਼ਨਾਂ ਨੂੰ ਸੰਭਾਲਦੇ ਹਨ ਜਿਹਨਾਂ ਨੂੰ ਐਪਲੀਕੇਸ਼ਨ-ਪੱਧਰ ਚੈੱਕ ਮਿਸ ਕਰ ਸਕਦੇ ਹਨ।
CHECK (price > 0) -- prices must be positive
CHECK (status IN ('active', 'inactive')) -- only valid statuses
CHECK (end_date > start_date) -- logical consistency
CHECK ਸਕੀਮਾ ਵਿਚ ਸਿੱਧੇ ਤੌਰ 'ਤੇ ਵਪਾਰਕ/ਡੋਮੇਨ ਨਿਯਮਾਂ ਨੂੰ ਲਾਗੂ ਕਰਦਾ ਹੈ।
Constraints ਡਾਟਾ ਇਕਸਾਰਤਾ ਨੂੰ ਬਣਾਈ ਰੱਖਣ ਲਈ ਜ਼ਰੂਰੀ ਹਨ — ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦੇ ਹਨ ਕਿ ਤੁਹਾਡੇ ਡਾਟਾਬੇਸ ਵਿਚ ਡਾਟਾ ਡਾਟਾਬੇਸ ਪੱਧਰ 'ਤੇ ਨਿਯਮਾਂ (ਵਿਲੱਖਣਤਾ, ਮੌਜੂਦਗੀ, ਵੈਲਿਡ ਮੁੱਲ, ਵੈਲਿਡ ਰਿਫਰੈਂਸਾਂ) ਨੂੰ ਪੂਰਾ ਕਰਦਾ ਹੈ, ਜੋ ਭਰੋਸੇਮੰਦ ਐਪਲੀਕੇਸ਼ਨਾਂ ਲਈ ਬੁਨਿਆਦੀ ਹੈ, ਇਸ ਲਈ ਉਹਨਾਂ ਨੂੰ ਸਮਝਣਾ ਮਹੱਤਵਪੂਰਨ ਹੈ।
Constraint ਕਿਸਮਾਂ (PRIMARY KEY, FOREIGN KEY, UNIQUE, NOT NULL, CHECK, DEFAULT) ਅਤੇ ਹਰ ਇੱਕ ਜੋ ਲਾਗੂ ਕਰਦਾ ਹੈ ਉਸ ਨੂੰ ਜਾਣਨਾ ਸਹੀ ਸਕੀਮਾ ਡਿਜ਼ਾਈਨ ਲਈ ਜ਼ਰੂਰੀ ਹੈ।
ਸਭ ਤੋਂ ਮਹੱਤਵਪੂਰਨ ਸੰਕਲਪਾਤਮਕ ਨੁਕਤਾ ਇਹ ਹੈ ਡਾਟਾਬੇਸ ਪੱਧਰ 'ਤੇ ਕਿਉਂ ਲਾਗੂ ਕਰੀਏ ਨਾ ਕਿ ਸਿਰਫ ਐਪਲੀਕੇਸ਼ਨ ਕੋਡ ਵਿਚ: ਡਾਟਾਬੇਸ constraints ਡਾਟਾ ਇਕਸਾਰਤਾ ਲਈ ਅਖੀਰਲੀ ਲਾਈਨ ਆਫ ਡਿਫੈਂਸ ਹਨ — ਇਹ ਹਮੇਸ਼ਾ ਲਾਗੂ ਕੀਤੇ ਜਾਂਦੇ ਹਨ ਬਿਨਾਂ ਇਸ ਦੇ ਕਿ ਕਿਹੜਾ ਕੋਡ ਜਾਂ ਕਿੰਨੀਆਂ ਐਪਲੀਕੇਸ਼ਨਾਂ ਡਾਟਾ ਤਕ ਪਹੁੰਚ ਕਰਦੀਆਂ ਹਨ, ਉਹ ਬਗਾਂ ਨੂੰ ਫੜਦੇ ਹਨ ਜਿਹਨਾਂ ਨੂੰ ਐਪਲੀਕੇਸ਼ਨ ਚੈੱਕ ਮਿਸ ਕਰ ਸਕਦੇ ਹਨ, ਅਤੇ ਮਹੱਤਵਪੂਰਣ ਹੋ ਕੇ ਉਹ ਰੇਸ ਕੰਡੀਸ਼ਨਾਂ ਨੂੰ ਸੰਭਾਲਦੇ ਹਨ ਜਿਹਨਾਂ ਨੂੰ ਐਪਲੀਕੇਸ਼ਨ-ਪੱਧਰ ਪ੍ਰਮਾਣਿਕਤਾ ਨਹੀਂ ਕਰ ਸਕਦੀ (ਉਦਾ. ਦੋ ਇਕੋ ਸਾਥ ਸ਼ਾਮਲੀਆਂ ਦੋਵੇਂ ਐਪ-ਲੈਵਲ ਵਿਲੱਖਣਤਾ ਚੈੱਕ ਨੂੰ ਪਾਸ ਕਰ ਸਕਦੀਆਂ ਹਨ ਪਰ UNIQUE constraint ਸਹੀ ਤੌਰ 'ਤੇ ਡੁਪਲੀਕੇਟ ਨੂੰ ਰੱਦ ਕਰ ਸਕਦਾ ਹੈ)।
ਸਿਰਫ ਐਪਲੀਕੇਸ਼ਨ ਕੋਡ 'ਤੇ ਨਿਰਭਰ ਕਰਨਾ ਖੋਖਲਾ ਹੈ; constraints ਇੱਕ ਗ੍ਰੈਂਟੀ ਪ্ਰਦਾਨ ਕਰਦੇ ਹਨ।
CHECK constraints ਨੂੰ ਸਮਝਣਾ ਡੋਮੇਨ/ਵਪਾਰਕ ਨਿਯਮਾਂ ਨੂੰ ਲਾਗੂ ਕਰਨ ਲਈ (ਵੈਲਿਡ ਰੇਂਜ, ਅਨੁਮਤ ਮੁੱਲ, ਲਾਜ਼ੀਕਲ ਸੰਗਤੀ) ਸਕੀਮਾ ਵਿਚ ਸਿੱਧੇ ਮੁੱਲਵਾਨ ਹੈ।
ਕਿਉਂਕਿ ਡਾਟਾ ਇਕਸਾਰਤਾ ਭਰੋਸੇਮੰਦ ਐਪਲੀਕੇਸ਼ਨਾਂ ਲਈ ਮਹੱਤਵਪੂਰਨ ਹੈ, ਅਤੇ ਕਿਉਂਕਿ constraints ਡਾਟਾਬੇਸ-ਪੱਧਰ ਦੀ ਗ੍ਰੈਂਟੀ ਪ੍ਰਦਾਨ ਕਰਦੇ ਹਨ ਜੋ ਬਗਾਂ, ਰੇਸ ਕੰਡੀਸ਼ਨਾਂ, ਅਤੇ ਅਸੰਗਤ ਡਾਟਾ ਦੇ ਵਿਰੁੱਧ ਸੁਰੱਖਿਆ ਕਰਦੇ ਹਨ ਜਿਹਨਾਂ ਤੱਕ ਐਪਲੀਕੇਸ਼ਨ ਕੋਡ ਅਕੇਲਾ ਨਹੀਂ ਪਹੁੰਚ ਸਕਦਾ, constraints ਨੂੰ ਸਮਝਣਾ — ਕਿਸਮਾਂ, ਉਹਨਾਂ ਦੀ ਇਕਸਾਰਤਾ ਦੀ ਗ੍ਰੈਂਟੀ, ਅਤੇ ਡਾਟਾਬੇਸ-ਪੱਧਰ ਲਾਗੂ ਕਰਨ ਦੀ ਮਹੱਤਤਾ — ਮਜ਼ਬੂਤ ਡਾਟਾਬੇਸਾਂ ਨੂੰ ਡਿਜ਼ਾਈਨ ਕਰਨ ਲਈ ਮਹੱਤਵਪੂਰਣ, ਬੁਨਿਆਦੀ ਗਿਆਨ ਹੈ ਅਤੇ ਅਜਿਹੀਆਂ ਐਪਲੀਕੇਸ਼ਨਾਂ ਦਾ ਨਿਰਮਾਣ ਕਰਨ ਦਾ ਇੱਕ ਮੁੱਖ ਪੱਖ ਹੈ ਜਿਸ ਦਾ ਡਾਟਾ ਮੁਲਾਜ਼ਮ ਅਤੇ ਵੈਲਿਡ ਰਹਿੰਦਾ ਹੈ।