Hỏi về database và website

Chào mọi người, em đang làm một web báng hàng. Database: product(id,name,price,…); order(id,productId,userId,…). Order có khóa ngoại productId đến bảng product.

->>>Cho em hỏi nếu như muốn xóa một product, thì em nên thêm thuộc tính isRemove vào bảng product. Hay là xóa hoàn toàn product đó ra khỏi database?
->>>Bởi vì khóa chính của product là khóa ngoại của Order và nhiều bảng khác, nên khi xóa hoàn toàn product ra khỏi database thì phải xóa thêm các order có liên quan.
Do vậy em thấy cách thêm thuộc tính isRemove và bảng Product sẽ hợp lý hơn. Không biết trong thực tế thì mọi người sẽ dùng cách nào? Mong mọi người giúp đỡ ạ.

isRemoved hợp lí hơn vì shop có thể xóa nhưng chưa phải là hết chuyện.

3 Likes

Trong thực tế, tùy TH cậu sẽ chọn xóa logic (thêm field isRemove là cách này) hay xóa vật lý.
Xóa logic nhìn chung sẽ nhanh hơn, dữ liệu cũng sẽ còn lại để cậu có thể audit về sau. Cơ mà cuối cùng thì cậu cũng phải xóa vật lý để reclaim lại bộ nhớ.
Xóa vật lý sẽ chậm hơn, nhưng cậu sẽ không lo tới việc dữ liệu vô dụng chiếm hết bộ nhớ.

Cá nhân tớ thấy việc xóa logic thường được sử dụng nhiều hơn trong industry. Trong TH của cậu, xóa logic sẽ hợp lý hơn.

Hope it helps!

6 Likes

Em cảm ơn ạ, em đã xử lý được rồi.

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?