Kekangan (constraint) ialah peraturan yang dikuatkuasakan oleh pangkalan data ke atas data dalam jadual — menjamin integriti data pada peringkat pangkalan data (bukan sekadar dalam kod aplikasi). Yang utama: PRIMARY KEY, FOREIGN KEY, , , , dan .
Kekangan (constraint) ialah peraturan yang dikuatkuasakan oleh pangkalan data ke atas data dalam jadual — menjamin integriti data pada peringkat pangkalan data (bukan sekadar dalam kod aplikasi). Yang utama: PRIMARY KEY, FOREIGN KEY, , , , dan .
UNIQUENOT 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
Kekangan pangkalan data ialah barisan pertahanan terakhir untuk integriti data — ia dikuatkuasakan tidak kira kod apa yang memasukkan data (pelbagai aplikasi, skrip, perubahan manual, atau kod berpepijat), dan ia mengendalikan keadaan perlumbaan (race condition) yang semakan peringkat aplikasi terlepas.
CHECK (price > 0) -- prices must be positive
CHECK (status IN ('active', 'inactive')) -- only valid statuses
CHECK (end_date > start_date) -- logical consistency
CHECK menguatkuasakan peraturan perniagaan/domain terus dalam skema.
Kekangan adalah penting untuk mengekalkan integriti data — ia menjamin bahawa data dalam pangkalan data anda memenuhi peraturan (keunikan, kehadiran, nilai sah, rujukan sah) pada peringkat pangkalan data, yang asas kepada aplikasi yang boleh dipercayai, jadi memahaminya adalah penting.
Mengetahui jenis kekangan (PRIMARY KEY, FOREIGN KEY, UNIQUE, NOT NULL, CHECK, DEFAULT) dan apa yang setiap satu kuatkuasakan adalah perlu untuk reka bentuk skema yang betul.
Perkara konseptual yang paling penting ialah mengapa kuatkuasakan pada peringkat pangkalan data dan bukannya hanya dalam kod aplikasi: kekangan pangkalan data ialah barisan pertahanan terakhir untuk integriti data — ia sentiasa dikuatkuasakan tanpa mengira kod apa atau berapa banyak aplikasi mengakses data, ia menangkap pepijat yang mungkin terlepas oleh semakan aplikasi, dan yang kritikal ia mengendalikan keadaan perlumbaan yang pengesahan peringkat aplikasi tidak boleh (cth. dua insert serentak kedua-duanya lulus semakan keunikan peringkat aplikasi tetapi kekangan UNIQUE dengan betul menolak pendua).
Bergantung semata-mata pada kod aplikasi untuk integriti adalah berisiko; kekangan menyediakan jaminan.
Memahami kekangan CHECK untuk menguatkuasakan peraturan domain/perniagaan (julat sah, nilai dibenarkan, konsistensi logik) terus dalam skema juga berharga.
Memandangkan integriti data adalah kritikal untuk aplikasi yang boleh dipercayai, dan memandangkan kekangan menyediakan jaminan peringkat pangkalan data yang melindungi daripada pepijat, keadaan perlumbaan, dan data tidak konsisten dengan cara yang kod aplikasi sahaja tidak dapat, memahami kekangan — jenisnya, jaminan integritinya, dan kepentingan penguatkuasaan peringkat pangkalan data — ialah pengetahuan asas yang penting untuk mereka bentuk pangkalan data yang teguh dan aspek utama membina aplikasi yang datanya kekal konsisten dan sah.
Pustaka soalan temu duga IT dengan jawapan terperinci — daripada Junior hingga Senior.
Derma