Tôi có một câu hỏi liên quan đến hai cột bổ sung (timeCreated, timeLastUpdated) cho mỗi bản ghi mà chúng ta thấy trong nhiều giải pháp. Câu hỏi của tôi: Có một lựa chọn tốt hơn?Làm cách nào để tránh thêm các trường dấu thời gian vào các bảng của bạn?
Kịch bản: Bạn có một DB lớn (về mặt bảng, không phải bản ghi), sau đó khách hàng đến và yêu cầu bạn thêm "dấu thời gian" vào 80% bảng của bạn.
Tôi tin rằng điều này có thể được thực hiện bằng cách sử dụng một bảng riêng biệt (TIMESTAMPS). Bảng này sẽ có, ngoài cột dấu thời gian rõ ràng, tên bảng và khóa chính cho bảng đang được cập nhật. (Tôi giả định ở đây rằng bạn sử dụng một int làm khóa chính cho hầu hết các bảng của bạn, nhưng tên bảng sẽ rất có thể phải là một chuỗi).
Để hình dung điều này giả sử kịch bản cơ bản này. Chúng tôi sẽ có hai bảng:
THANH TOÁN: - (hồ sơ của bạn bình thường)
dấu thời gian: - {current timestamp} + {TABLE_UPDATED
, id_of_entry_updated
, timestamp_type
}
Lưu ý rằng trong thiết kế này bạn không cần những hai cột "phụ" trong đối tượng thanh toán gốc của bạn (theo cách này, có thể làm cho nó thông qua giải pháp ORM của bạn) vì bạn hiện đang lập chỉ mục theo TABLE_UPDATED
và id_of_entry_updated
. Ngoài ra, timestamp_type
sẽ cho bạn biết mục nhập có được chèn hay không (ví dụ: "1"), cập nhật (ví dụ: "2") và bất kỳ mục nào khác bạn có thể muốn thêm, như "xóa".
Tôi muốn biết bạn nghĩ gì về thiết kế này. Tôi quan tâm nhất đến các phương pháp hay nhất, những gì hoạt động và quy mô theo thời gian. Tài liệu tham khảo, liên kết, các mục blog được chào đón nhiều hơn. Tôi biết ít nhất một bằng sáng chế (đang chờ xử lý) cố giải quyết vấn đề này, nhưng có vẻ như các chi tiết không được công khai vào lúc này.
Chúc mừng, Eduardo
Đây là bài viết hạnh phúc nhất từng làm cho tôi. Tôi đã sẵn sàng để nhập một bài viết có nhu cầu chính xác điều này. Tôi không nghĩ rằng Oracle có một cái gì đó như thế này. Nếu có, tôi sẽ tự đá. – MusiGenesis
Tôi nhận được tức giận suy nghĩ về tất cả thời gian tôi đã lãng phí thêm các trường ModifiedBy và CreatedDateTime vào các bảng của tôi. – MusiGenesis
Uh, vâng, Oracle đã có điều này trong nhiều năm. –