PostgreSQL ले constraints — table data मा rules — को माध्यमबाट data integrity लागू गर्छ। मानक constraints (, , , , , ) को बाहिरेर, Postgres ले constraints र लचकदार expressions जस्ता शक्तिशाली विकल्पहरु थप गर्छ।
PostgreSQL ले constraints — table data मा rules — को माध्यमबाट data integrity लागू गर्छ। मानक constraints (, , , , , ) को बाहिरेर, Postgres ले constraints र लचकदार expressions जस्ता शक्तिशाली विकल्पहरु थप गर्छ।
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 ले cross-column conditions र regex patterns सहित समृद्ध business rules लागू गर्न सक्छ।
-- 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-specific feature) ले custom operator द्वारा conflicting rows लाई रोक्छ — प्रसिद्ध रूपमा, overlapping time ranges (double-bookings) लाई रोक्छ, जुन UNIQUE constraint गर्न सक्दैन।
-- check constraints at COMMIT instead of immediately (useful for circular references)
FOREIGN KEY (...) REFERENCES ... DEFERRABLE INITIALLY DEFERRED
Constraints data integrity को लागि आवश्यक छन् — तिनीहरुले database level मा data rules लागू गर्छन् (अन्तिम रक्षा रेखा, सधैँ लागू हुन्छ application code को बाबजूद), त्यसकारण PostgreSQL को constraint support बुझ्नु robust databases डिजाइन गर्नको लागि महत्त्वपूर्ण छ।
मानक constraints (PRIMARY KEY, FOREIGN KEY with referential integrity, UNIQUE, NOT NULL, CHECK, DEFAULT) र प्रत्येकले कस्तो लागू गर्छ भनेर जान्नु schema design को लागि मौलिक छ, यो database-level guarantees (uniqueness, valid references, required values, valid data) प्रदान गर्छ जुन application code मात्र bugs, race conditions, र inconsistent data विरुद्ध सुरक्षा दिन सक्दैन।
PostgreSQL को CHECK constraints विशेष गरी सक्षम छन्, cross-column conditions (logical consistency जस्तै end_date > start_date) र regex patterns समेत समृद्ध business rules लागू गर्छन् — यसले domain rules लाई सीधै schema मा encode गर्न दिन्छ।
विशेष गरी मूल्यवान Postgres-specific EXCLUDE constraint छ, जो custom operators द्वारा conflicting rows लाई रोक्छ — सबैभन्दा उल्लेखनीय रूपमा overlapping time ranges (एक कोठा/resource को लागि double-bookings) लाई रोक्छ, एक शक्तिशाली क्षमता जुन मानक UNIQUE constraint गर्न सक्दैन र जो scheduling, reservations) जस्ता सामान्य real-world समस्या को लागि database level मा सुन्दर समाधान प्रदान गर्छ।
Constraints बुझ्नु — integrity को लागि मानक, Postgres को लचकदार CHECK expressions, र conflict prevention को लागि शक्तिशाली EXCLUDE — databases डिजाइन गर्नको लागि महत्त्वपूर्ण छ जो automatically correctness लागू गर्छ।
डेटा integrity महत्त्वपूर्ण भएको कारण constraints guarantees प्रदान गर्छन् जुन application code ले गर्न सक्दैन, र Postgres ले मूलभूत (समृद्ध CHECK, overlaps को लागि EXCLUDE) को बाहिरेर शक्तिशाली विकल्पहरु प्रदान गर्छ, PostgreSQL को constraint support बुझ्नु robust databases निर्माण गर्नको लागि मूल्यवान, व्यावहारिक रूप-समृद्ध ज्ञान छ, विशेष गरी EXCLUDE constraint scheduling/reservation systems को लागि जान्नको लायक एक भिन्न, उपयोगी Postgres क्षमता भएको कारण।
विस्तृत उत्तरसहित IT अन्तर्वार्ता प्रश्नहरूको पुस्तकालय — जुनियरदेखि सिनियरसम्म।
दान गर्नुहोस्