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 để thực thi, 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ả.