PostgreSQL constraints — ਟੇਬਲ ਡਾਟਾ ਉੱਤੇ ਨਿਯਮ — ਦੁਆਰਾ ਡਾਟਾ ਅਖੰਡਤਾ ਨੂੰ ਲਾਗੂ ਕਰਦਾ ਹੈ। ਸਟੈਂਡਰਡ ਸਮਰਥਨ ਤੋਂ ਪਰੇ (, , , , , ), Postgres ਸ਼ਕਤੀਸ਼ਾਲੀ ਵਿਕਲਪ ਜਿਵੇਂ constraints ਅਤੇ ਲਚਕਦਾਰ ਸਮੀਕਰਨ ਜੋੜਦਾ ਹੈ।
PostgreSQL constraints — ਟੇਬਲ ਡਾਟਾ ਉੱਤੇ ਨਿਯਮ — ਦੁਆਰਾ ਡਾਟਾ ਅਖੰਡਤਾ ਨੂੰ ਲਾਗੂ ਕਰਦਾ ਹੈ। ਸਟੈਂਡਰਡ ਸਮਰਥਨ ਤੋਂ ਪਰੇ (, , , , , ), Postgres ਸ਼ਕਤੀਸ਼ਾਲੀ ਵਿਕਲਪ ਜਿਵੇਂ constraints ਅਤੇ ਲਚਕਦਾਰ ਸਮੀਕਰਨ ਜੋੜਦਾ ਹੈ।
PRIMARY KEYFOREIGN KEYUNIQUENOT NULLCHECKDEFAULTCHECKCREATE TABLE bookings (
id SERIAL PRIMARY KEY, -- unique identifier
room_id INT NOT NULL REFERENCES rooms(id), -- foreign key (referential integrity)
email VARCHAR(255) UNIQUE NOT NULL, -- unique + required
guests INT CHECK (guests > 0 AND guests <= 10), -- value constraint
status TEXT DEFAULT 'pending' -- default value
);
PRIMARY KEY → unique row identifier
FOREIGN KEY → references another table (referential integrity, with ON DELETE options)
UNIQUE → no duplicate values
NOT NULL → must have a value
CHECK → value must satisfy a condition
DEFAULT → default value when not provided
CHECK (price > 0)
CHECK (end_date > start_date) -- logical consistency between columns
CHECK (status IN ('active', 'inactive', 'pending'))
CHECK (email ~ '^[^@]+@[^@]+\.[^@]+$') -- regex validation
Postgres CHECK constraints ਅਮੀਰ ਵਪਾਰਕ ਨਿਯਮਾਂ ਨੂੰ ਲਾਗੂ ਕਰ ਸਕਦੇ ਹਨ, ਜਿਸ ਵਿੱਚ ਕਰਾਸ-ਕਾਲਮ ਸਥਿਤੀਆਂ ਅਤੇ regex ਪੈਟਰਨ ਸ਼ਾਮਲ ਹਨ।
-- prevent OVERLAPPING bookings for the same room (impossible with UNIQUE alone!)
CREATE TABLE bookings (
room_id INT,
during TSRANGE, -- a time range
EXCLUDE USING GIST (room_id WITH =, during WITH &&) -- no two rows where room_id is
); -- equal AND time ranges OVERLAP
EXCLUDE constraints (ਇੱਕ Postgres-ਖਾਸ ਵਿਸ਼ੇਸ਼ਤਾ) ਉਹਨਾਂ ਰੋਜ਼ ਨੂੰ ਰੋਕਦੇ ਹਨ ਜੋ ਇੱਕ ਕਸਟਮ ਓਪਰੇਟਰ ਦੁਆਰਾ ਟਕਰਾ ਰਹੇ ਹਨ — ਪ੍ਰਸਿੱਧ ਤੌਰ ਤੇ, ਓਵਰਲੈਪਿੰਗ ਸਮੇਂ ਦੀ ਰੇਂਜ (ਡਬਲ-ਬੁਕਿੰਗ) ਨੂੰ ਰੋਕਦੇ ਹਨ, ਜੋ ਇੱਕ UNIQUE constraint ਨਹੀਂ ਕਰ ਸਕਦਾ।
-- check constraints at COMMIT instead of immediately (useful for circular references)
FOREIGN KEY (...) REFERENCES ... DEFERRABLE INITIALLY DEFERRED
Constraints ਡਾਟਾ ਅਖੰਡਤਾ ਲਈ ਜ਼ਰੂਰੀ ਹਨ — ਉਹ ਡਾਟਾਬੇਸ ਪੱਧਰ ਤੇ ਡਾਟਾ ਨਿਯਮ ਨੂੰ ਲਾਗੂ ਕਰਦੇ ਹਨ (ਆਖਿਰੀ ਰੱਖਿਆ ਲਾਈਨ, ਹਮੇਸ਼ਾ ਲਾਗੂ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਚਾਹੇ ਅਪਲੀਕੇਸ਼ਨ ਕੋਡ ਕੁਝ ਵੀ ਹੋ), ਇਸ ਲਈ PostgreSQL ਦੀ constraint ਸਮਰਥਨ ਨੂੰ ਸਮਝਣਾ ਮਜ਼ਬੂਤ ਡਾਟਾਬੇਸ ਡਿਜ਼ਾਈਨ ਕਰਨ ਲਈ ਮਹੱਤਵਪੂਰਨ ਹੈ।
ਸਟੈਂਡਰਡ constraints (PRIMARY KEY, FOREIGN KEY referential integrity ਨਾਲ, UNIQUE, NOT NULL, CHECK, DEFAULT) ਨੂੰ ਜਾਣਨਾ ਅਤੇ ਹਰੇਕ ਕੀ ਲਾਗੂ ਕਰਦਾ ਹੈ ਸਕੀਮਾ ਡਿਜ਼ਾਈਨ ਲਈ ਬੁਨਿਆਦੀ ਹੈ, ਡਾਟਾਬੇਸ-ਪੱਧਰ ਦੀ ਗਰੰਟੀ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ (ਵਿਲੱਖਣਤਾ, ਵੈਧ ਸੰਦਰਭ, ਲੋੜੀਂਦੀਆਂ ਮੁੱਲ, ਵੈਧ ਡਾਟਾ) ਜੋ ਬਗ, ਰੇਸ ਸਥਿਤੀਆਂ ਅਤੇ ਅਸੰਗਤ ਡਾਟਾ ਤੋਂ ਬਚਾਉਂਦੇ ਹਨ ਉਪਾਅ ਕੋਡ ਇਕੱਲਾ ਨਹੀਂ ਕਰ ਸਕਦਾ।
PostgreSQL ਦੇ CHECK constraints ਖਾਸ ਤੌਰ ਤੇ ਸਮਰਥ ਹਨ, ਅਮੀਰ ਵਪਾਰਕ ਨਿਯਮਾਂ ਨੂੰ ਲਾਗੂ ਕਰਦੇ ਹਨ ਜਿਸ ਵਿੱਚ ਕਰਾਸ-ਕਾਲਮ ਸਥਿਤੀਆਂ (end_date > start_date ਵਾਂਗ ਤਰਕਸ਼ੀਲ ਸੰਗਤੀ) ਅਤੇ ਇੱਥੋ ਤਕ regex ਪੈਟਰਨ — ਤੁਹਾਨੂੰ ਡੋਮੇਨ ਨਿਯਮ ਸੱਜੇ ਸਕੀਮਾ ਵਿੱਚ ਏਨਕੋਡ ਕਰਨ ਦਿੰਦਾ ਹੈ।
ਖਾਸ ਕਰਕੇ ਮੂਲਵਾਨ Postgres-ਖਾਸ EXCLUDE constraint ਹੈ, ਜੋ ਕਸਟਮ ਆਪਰੇਟਰਾਂ ਦੁਆਰਾ ਅਨੁਕੂਲਿਤ ਰੋਜ਼ ਨੂੰ ਰੋਕਦਾ ਹੈ — ਸਭ ਤੋਂ ਵਧ ਯਾਦਗਾਰ ਓਵਰਲੈਪਿੰਗ ਸਮੇਂ ਦੀ ਰੇਂਜ ਨੂੰ ਰੋਕਦਾ ਹੈ (ਇੱਕ ਕਮਰੇ/ਸਰੋਤ ਲਈ ਡਬਲ-ਬੁਕਿੰਗ), ਇੱਕ ਸ਼ਕਤੀਸ਼ਾਲੀ ਸਮਰਥਾ ਜੋ ਇੱਕ ਸਟੈਂਡਰਡ UNIQUE constraint ਨਹੀਂ ਪ੍ਰਦਾਨ ਕਰ ਸਕਦਾ ਅਤੇ ਜੋ ਖਾਸ ਸਾਧਾਰਨ ਅਸਲ-ਸੰਸਾਰ ਸਮੱਸਿਆ (ਸਮਯਾਂਕਨ, ਰਜ਼ਰਵੇਸ਼ਨ) ਨੂੰ ਡਾਟਾਬੇਸ ਪੱਧਰ ਤੇ ਸੁਲਝਾਉਂਦਾ ਹੈ।
Constraints ਨੂੰ ਸਮਝਣਾ — ਅਖੰਡਤਾ ਲਈ ਸਟੈਂਡਰਡ ਅਖਰ, Postgres ਦੀਆਂ ਲਚਕਦਾਰ CHECK ਸਮੀਕਰਨ, ਅਤੇ ਸ਼ਕਤੀਸ਼ਾਲੀ EXCLUDE ਸੰਘਰਸ਼ ਲਈ — ਅਜਿਹੇ ਡਾਟਾਬੇਸ ਡਿਜ਼ਾਈਨ ਕਰਨ ਲਈ ਮਹੱਤਵਪੂਰਨ ਹੈ ਜੋ ਪੁਸ਼ਟੀ ਨੂੰ ਆਪਣੇ ਆਪ ਨੂੰ ਲਾਗੂ ਕਰਦੇ ਹਨ।
ਕਿਉਂਕਿ ਡਾਟਾ ਅਖੰਡਤਾ ਮਹੱਤਵਪੂਰਨ ਹੈ ਅਤੇ constraints ਗਰੰਟੀ ਪ੍ਰਦਾਨ ਕਰਦੇ ਹਨ ਜੋ ਅਪਲੀਕੇਸ਼ਨ ਕੋਡ ਨਹੀਂ ਕਰ ਸਕਦਾ, ਅਤੇ ਕਿਉਂਕਿ Postgres ਸ਼ਕਤੀਸ਼ਾਲੀ ਵਿਕਲਪ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ (ਅਮੀਰ CHECK, ਓਵਰਲੈਪ ਲਈ EXCLUDE) ਬੁਨਿਆਦ ਤੋਂ ਅੱਗੇ, PostgreSQL ਦੀ constraint ਸਮਰਥਨ ਨੂੰ ਸਮਝਣਾ ਮਜ਼ਬੂਤ ਡਾਟਾਬੇਸ ਬਣਾਉਣ ਲਈ ਮੂਲਵਾਨ, ਵਿਅਕਤੀਗਤ ਨਾਲ ਲਾਗੂ ਬਿਆਨ ਹੈ, EXCLUDE constraint ਖਾਸ ਤੌਰ ਤੇ ਇੱਕ ਵਿਲੱਖਣ, ਉਪਯੋਗੀ Postgres ਸਮਰਥਾ ਹੈ ਸਮਯਾਂਕਨ/ਰਜ਼ਰਵੇਸ਼ਨ ਪ੍ਰਣਾਲੀਆਂ ਲਈ ਜਾਣਨ ਦੇ ਯੋਗ।