PostgreSQL zbaton integritetin e të dhënave përmes kufizimeve — rregullat për të dhënat e tabelës. Përveç atyre standarde (, , , , , ), Postgres shton opsione të fuqishme si kufizime dhe shprehje fleksibël .
PostgreSQL zbaton integritetin e të dhënave përmes kufizimeve — rregullat për të dhënat e tabelës. Përveç atyre standarde (, , , , , ), Postgres shton opsione të fuqishme si kufizime dhe shprehje fleksibël .
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
KufizimetPostgres CHECK mund të zbatojnë rregulla të pasura biznesi, duke përfshirë kushte ndër-kolona dhe modele 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
KufizimetÏ EXCLUDE (një veçori specifike për Postgres) parandalojnë rreshtat që bien në konflikt sipas një operatori të personalizuar — famozisht, parandalojnë intervalet e orës që mbivendosen (rezervimet e dyfishta), që një kufizim UNIQUE nuk mund ta bëjë.
-- check constraints at COMMIT instead of immediately (useful for circular references)
FOREIGN KEY (...) REFERENCES ... DEFERRABLE INITIALLY DEFERRED
Kufizimetjanë thelbësore për integritetin e të dhënave — ato zbatojnë rregulla të dhënash në nivelin e bazës së të dhënave (linja e fundit e mbrojtjes, gjithmonë e zbatuar pavarësisht nga kodi i aplikacionit), kështu që të kuptuarit e suportit të kufizimeve të PostgreSQL-it është i rëndësishëm për projektimin e bazave të dhënash të forta.
Më e rëndësishmja e kufizimeve standarde (PRIMARY KEY, FOREIGN KEY me integritetin referencial, UNIQUE, NOT NULL, CHECK, DEFAULT) dhe ajo që secila zbaton është themelore për dizajnin e skemës, duke siguruar garanci në nivelin e bazës së të dhënave (unike, referencat e vlefshme, vlerat e kërkuara, të dhëna të vlefshme) që mbrojnë kundër gabimeve, kushteve të garës dhe të dhënave jo konsistente në mënyra që kodi i aplikacionit vetëm nuk mund të ofrojë.
KufizimetPostgres CHECK janë veçanërisht të aftë, duke zbatuar rregulla të pasura biznesi duke përfshirë kushte ndër-kolona (konsistenca logjike si end_date > start_date) dhe madje modele regex — duke ju lejuar të kodoni rregullat e domenit drejtpërdrejt në skemë.
Eveçanërisht i vlefshëm është kufizimi specifik për Postgres EXCLUDE, i cili parandalon rreshta në konflikt sipas operatorëve të personalizuar — më ndjekfshëm parandalon intervalet e orës që mbivendosen (rezervimet e dyfishta për një dhomë/burim), një aftësi e fuqishme që një kufizim standard UNIQUE nuk mund të ofrojë dhe që zgjidh me elegancë një problem të zakonshëm në botën reale (planifikimi, rezervimet) në nivelin e bazës së të dhënave.
Të kuptuarit e kufizimeve — ato standarde për integritetin, shprehjet fleksibël CHECK të Postgres, dhe ajo të fuqishme EXCLUDE për parandalimin e konflikteve — është e rëndësishme për projektimin e bazave të dhënash që zbatojnë korrektësinë automatikisht.
Meqenëse integritatea e të dhënave është kritike dhe kufizimetofrojnë garanci që kodi i aplikacionit nuk mund të ofrojë, dhe meqenëse Postgres ofron opsione të fuqishme (CHECK të pasur, EXCLUDE për mbivendosjet) përtej bazave, të kuptuarit e suportit të kufizimeve të PostgreSQL-it është dijeni e vlefshme, praktikisht e rëndësishme për ndërtimin e bazave të dhënash të forta, me kufizimin EXCLUDE në veçanti si një aftësi karakteristike, e dobishme për Postgres që vlen të dihet për sistemet e planifikimit/rezervimit.
Një bibliotekë pyetjesh intervistash IT me përgjigje të detajuara — nga Junior te Senior.
Dhuro