Dhéanann PostgreSQL dúblíochtáil sonraí a fhorfheidhmiú trí — rialacha ar shonraí an tábla. Seachas na ceann caighdeánach otoilíochtach (, , , , , ), cuireann Postgres roghanna cumhachtacha ar fáil mar shampla srianta agus nathanna solúbtha.
Dhéanann PostgreSQL dúblíochtáil sonraí a fhorfheidhmiú trí — rialacha ar shonraí an tábla. Seachas na ceann caighdeánach otoilíochtach (, , , , , ), cuireann Postgres roghanna cumhachtacha ar fáil mar shampla srianta agus nathanna solúbtha.
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
Is féidir le srianta CHECK PostgreSQL rialacha gnó saibhre a fhorfheidhmiú, lena n-áirítear coinníollacha trascolún agus patrúin 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
Coimeádann srianta EXCLUDE (gné ar leith PostgreSQL) nach dtarlóidh sraitheanna a fhabhraítear ag oibreoir saincheaptha — go clúiteach, rinne sé eatramh ama a fhorshimplíonn (dúbhbhicir), rud nach féidir le srian UNIQUE a dhéanamh.
-- check constraints at COMMIT instead of immediately (useful for circular references)
FOREIGN KEY (...) REFERENCES ... DEFERRABLE INITIALLY DEFERRED
Tá srianta riachtanach do dhúblíochtáil shonraí — fhorfheidhmíonn siad rialacha sonraí ag an leibhéal bunachair dhíreach (an deiridh dhifíochtúil, i gcónaí fhorfheidhmíonn beag cuibheasach sibhialta), mar sin tá tábhacht ag baint le tacaíochtaí srian PostgreSQL do dhearadh bunachair dhúbhláisteach.
Tá an t-eolas ar na srianta caighdeánacha (PRIMARY KEY, FOREIGN KEY le hionannas tagartha, UNIQUE, NOT NULL, CHECK, DEFAULT) agus cad a ghníomhaíonn gach ceann ann bunúsach don dearadh scéimre, á soláthar ráthaíochtaí ag an leibhéal bunachair (uathúlacht, tagairtí bailí, luachanna riachtanacha, sonraí bailí) a dhíon i gcoinne fabhtanna, coinníollacha rása, agus sonraí neamhréireach ar bhealach nach féidir le cód iarratasóir amháin a dhéanamh.
Tá srianta CHECK PostgreSQL go háirithe ábhartha, ag forfheidhmiú rialacha gnó saibhre lena n-áirítear coinníollacha trascolún (comhchosúlacht loighciúil mar end_date > start_date) agus fiú patrúin regex — ag ceadú duit rialacha fearann a ionchódú go díreach i scéimre.
Go háirithe luachmhar is ea an srian ar leith PostgreSQL EXCLUDE, a choimeádann nach dtarlóidh sraitheanna contrártha ag oibreoir saincheaptha — go suntasach eatramh ama a fhorshimplíonn a choimeád (dúbhbhicir do sheomra/acmhainn), inneall cumhachtach nach féidir le srian caighdeánach UNIQUE a soláthar agus a réitíonn go soléite fadhb rialta domhanda (sceidealú, gealltanais) ag an leibhéal bunachair.
Tá tábhacht ag baint le tuiscint a bheith agat ar na srianta — na ceanna caighdeánacha do dhúblíochtáil, ionadai solúbtha PostgreSQL CHECK, agus an EXCLUDE cumhachtach do bhac coinníollacha — do dhearadh bunachair a dhéanann céimsí fírinne go foluain.
Mar atá dúblíochtáil shonraí riachtanach agus soláthar srianta ráthaíochtaí nach féidir le cód iarratasóir a dhéanamh, agus mar a sholáthar PostgreSQL roghanna cumhachtacha (CHECK saibhre, EXCLUDE do fhorshimpliú) seachas na bunúsach, tá eolas ag baint le tacaíochtaí srian PostgreSQL a bheith ann luachmhar, fíorchúiseach-ábhartha eolas do dhearadh bunachair dhúbhláisteach, agus an srian EXCLUDE go háirithe a bheith ina ghné ar leith, inneall útúil PostgreSQL is fiú a bheith ar an eolas faoi do chórais sceidealúcháin/gealltanais.