Ƙuntatawa su ne ƙaidodi da database ke zarta akan bayanan da ke cikin tables — tabbatar da ingantaccen bayanan a matakin database (ba kawai a kodolin aikace-aikace ba). Manyan su ne: PRIMARY KEY, FOREIGN KEY, UNIQUE, , , da .
Ƙuntatawa su ne ƙaidodi da database ke zarta akan bayanan da ke cikin tables — tabbatar da ingantaccen bayanan a matakin database (ba kawai a kodolin aikace-aikace ba). Manyan su ne: PRIMARY KEY, FOREIGN KEY, UNIQUE, , , da .
NOT NULLCHECKDEFAULTCREATE 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
ƙuntatawa na database su ne layin karfi na karshe don ingantaccen bayanan — ana zarta su ba tare da wataƙila game da wane code ke saka bayanan (aikace-aikace da yawa, scripts, canje-canjen hannu, ko code mai kuskure), kuma suna kwatanta yanayin gajeriya da daidaicewa wanda sake tantance na app ba ya ƙarba.
CHECK (price > 0) -- prices must be positive
CHECK (status IN ('active', 'inactive')) -- only valid statuses
CHECK (end_date > start_date) -- logical consistency
CHECK yana zartar da ƙaidodin kasuwanci/yanki kai tsaye a cikin tsarin.
ƙuntatawa su ne mahimmai don kiyaye ingantaccen bayanan — suna tabbatar da cewa bayanan da ke cikin database suna sa riko ga ƙaidodi (daidaituwa, kasancewa, ingantaccen daraji, ingantaccen abokan dangantaka) a matakin database, wanda ke mahimmanci ga aikace-aikace masu amincewa, don haka fahimtar su ya wajaba.
Sanin nau'in ƙuntatawa (PRIMARY KEY, FOREIGN KEY, UNIQUE, NOT NULL, CHECK, DEFAULT) da abin da kowanne yana zartar shi ya zama dole a gida mai inganci.
Mahimmancin wakilci mafi mahimmanci shine me yasa a zarta a matakin database sannan kawai a cikin code na aikace-aikace: ƙuntatawa na database su ne layin karfi na karshe don ingantaccen bayanan — ana zarta su koyaushe ba tare da wataƙila game da wane code ko nawa aikace-aikace ke shiga bayanan ba, suna kama kurakurai da daidaike na app na iya kakatawa, kuma mahimmanci suna kwatanta yanayin gajeriya da bada zaman gida na app ba zai iya (misali juna-juna inserts biyu duka suna wucewa daidaite na app amma UNIQUE ƙuntatawa kwatakwabar da karbin kwafiya).
Doka-doka ga code na aikace-aikace don inganci tabbatacciye ba, ƙuntatawa suna ba tabbaci.
Fahimtar CHECK ƙuntatawa don zartar da kasuwanci/yanki ƙaidodi (ingantaccen kewayen, ingantaccen daraji, ingantaccen dabun) kai tsaye a cikin tsarin ya kuma kasanca da amfani.
'Sabili da ingantaccen bayanan ya zama mahimmanci ga aikace-aikace masu amincewa, kuma sabili da ƙuntatawa suna ba tabbacin matakin database da kariya a kakarai, gajeriya, da bayanan rashin daidai waɗannan code na aikace-aikace shi kaɗai ba zai iya ba, fahimtar ƙuntatawa — nau'in, ingantaccinsu na inganci, da mahimmancin zartar matakin database — mahimmanci, ilmi na tushe don tsara database masu ƙarfi kuma mahimmancin gida don gina aikace-aikace waɗanda bayanansu ya dogara inganci da inganci.