Constraints, tables-களில் உள்ள data-வில் database-ஆல் அமல்படுத்தப்படும் விதிகள் — application code-இல் மட்டுமல்ல, database அளவில் data integrity-ஐ உறுதி செய்கின்றன. முக்கியமானவை: PRIMARY KEY, FOREIGN KEY, UNIQUE, , , மற்றும் .
Constraints, tables-களில் உள்ள data-வில் database-ஆல் அமல்படுத்தப்படும் விதிகள் — application code-இல் மட்டுமல்ல, database அளவில் data integrity-ஐ உறுதி செய்கின்றன. முக்கியமானவை: PRIMARY KEY, FOREIGN KEY, UNIQUE, , , மற்றும் .
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
Database constraints, data integrity-க்கான கடைசி பாதுகாப்புக் கோடு — எந்த code data-வை insert செய்தாலும் (பல applications, scripts, manual மாற்றங்கள், அல்லது buggy code) அவை அமல்படுத்தப்படுகின்றன, மேலும் application-level சரிபார்ப்புகள் தவறவிடும் race conditions-களை அவை கையாளுகின்றன.
CHECK (price > 0) -- prices must be positive
CHECK (status IN ('active', 'inactive')) -- only valid statuses
CHECK (end_date > start_date) -- logical consistency
CHECK, business/domain விதிகளை schema-இல் நேரடியாக அமல்படுத்துகிறது.
Constraints data integrity-ஐ பராமரிப்பதற்கு அவசியம் — உங்கள் database-இல் உள்ள data விதிகளை (uniqueness, presence, valid மதிப்புகள், valid references) database அளவில் திருப்திப்படுத்துகிறது என்பதை அவை உறுதி செய்கின்றன, இது நம்பகமான applications-களுக்கு அடிப்படையானது, எனவே அவற்றைப் புரிந்துகொள்வது முக்கியம்.
constraint வகைகள் (PRIMARY KEY, FOREIGN KEY, UNIQUE, NOT NULL, CHECK, DEFAULT) மற்றும் ஒவ்வொன்றும் என்ன அமல்படுத்துகிறது என்பதை அறிந்திருப்பது சரியான schema design-க்கு அவசியம்.
மிக முக்கியமான கருத்து விஷயம் ஏன் application code-இல் மட்டுமல்லாமல் database அளவில் அமல்படுத்த வேண்டும் என்பது: database constraints data integrity-க்கான கடைசி பாதுகாப்புக் கோடு — எந்த code அல்லது எத்தனை applications data-வை அணுகினாலும் அவை எப்போதும் அமல்படுத்தப்படுகின்றன, application சரிபார்ப்புகள் தவறவிடக்கூடிய bugs-களை அவை பிடிக்கின்றன, மேலும் முக்கியமாக application-level validation-ஆல் கையாள முடியாத race conditions-களை அவை கையாளுகின்றன (எ.கா. இரண்டு ஒரே நேரத்து inserts இரண்டும் ஒரு app-level uniqueness சரிபார்ப்பைக் கடந்தாலும் ஒரு UNIQUE constraint duplicate-ஐ சரியாக நிராகரிக்கிறது).
integrity-க்கு application code-ஐ மட்டுமே நம்புவது risky; constraints ஒரு உத்தரவாதத்தை வழங்குகின்றன.
domain/business விதிகளை (valid ranges, அனுமதிக்கப்பட்ட மதிப்புகள், logical consistency) schema-இல் நேரடியாக அமல்படுத்துவதற்கு CHECK constraints-ஐப் புரிந்துகொள்வதும் மதிப்புமிக்கது.
நம்பகமான applications-களுக்கு data integrity மிக முக்கியம் என்பதாலும், application code மட்டுமே செய்ய முடியாத வழிகளில் bugs, race conditions மற்றும் inconsistent data-வுக்கு எதிராக constraints database-அளவு உத்தரவாதங்களை வழங்குவதாலும், constraints-களைப் புரிந்துகொள்வது — வகைகள், அவற்றின் integrity உத்தரவாதங்கள், மற்றும் database-அளவு அமலாக்கத்தின் முக்கியத்துவம் — robust databases-களை வடிவமைப்பதற்கு முக்கியமான, அடிப்படை அறிவு மற்றும் data சீராகவும் valid-ஆகவும் இருக்கும் applications-களைக் கட்டமைப்பதன் ஒரு முக்கிய அம்சம்.