Bạn không nói rõ là bạn lập trình trên desktop hay lập trình web. Khi mình mới đến với lập trình mình cũng loay hoay với mấy cái table. Khi nạp dữ liệu lên từ CSDL thì khi người ta sửa cái gì đó, họ bấm nút save xuống mình lại cập nhật xuống cả đống những cái không liên quan, lúc đó kể cả lập trình desktop và web đều làm như vậy, đơn giản vì lười và nghĩ rằng có lẽ mỗi trang có vài chục dòng (record sẽ ghi vào DB) thì cũng chẳng đáng là bao.
Nhưng một ngày kia, hệ thống nằm quay đơ bởi vì với 50 người nhập liệu cùng lúc, trong số đó có người sợ cúp điện hay ngứa tay gì đó nên họ cứ bấm nút save sau mỗi lần sửa xong một record. Vậy là mình đành ngồi suy nghĩ rằng phải làm cách nào đó để biết rằng dòng nào thực sự thay đổi dữ liệu thì mới save, còn những dòng khác cứ để im đó. Sau đó còn phát hiện ra điều khá thú vị đó là việc ghi và việc đọc gần như không gây xáo rộn lẫn nhau, cho nên những biểu ghi nào được cập nhật mình sẽ insert vào một table mới hoàn toàn, không hề đụng gì đến cái table cũ kia, đến nửa đêm thì mình mới cho nó chạy một script viết riêng cho việc merge cái table đó với cái table đã đọc lên để sửa.
Túm lại là nghĩ sao cứ làm vậy, một ngày nào đó sẽ trả một giá đắt vì lười suy nghĩ rồi sẽ có cách.