Dễ lẫn vì một số constraint tự tạo index, nhưng vai trò khác nhau: constraint là quy tắc dữ liệu (primary key, foreign key, unique, check, not null), còn index là cấu trúc giúp tìm/đọc nhanh hơn. Một unique constraint thường tạo unique index bên dưới để đảm bảo ràng buộc, nhưng không phải index nào cũng là quy tắc nghiệp vụ.
Những quy tắc nghiệp vụ nên khai báo bằng constraint:
sql
ALTER TABLE users ADD CONSTRAINT users_email_unique UNIQUE (email);
ALTER TABLE orders ADD CONSTRAINT positive_total CHECK (total >= 0);Nếu chỉ tạo index để query nhanh hơn thì đừng nhầm nó với một quy tắc dữ liệu — nó không ép tính duy nhất hay điều kiện gì cả.