Hiện tại tôi muốn cấu trúc bảng theo dõi / lịch sử như thế này:
- Khóa chính - ID
- OtherTableId - fk
- fieldName - tên của trường theo dõi
- OldValue
- Giá trị mới
- Tên tài khoản
- Tạo thời gian
Vì vậy, về cơ bản tôi muốn có một bảng sẽ theo dõi lịch sử bảng khác, lưu trữ tên cột của trường đã thay đổi với giá trị mới và cũ. Câu hỏi của tôi là bất cứ ai có thể chọc lỗ trong này? Ngoài ra, cách dễ nhất để đảm bảo rằng chỉ một tên cột từ các bảng theo dõi của nó được nhập vào cột fieldName là gì? Hiện tại các tùy chọn của tôi là có một enum trong dịch vụ tôi đang xây dựng hoặc tạo một bảng trạng thái khác và biến trườngName thành một fk. Còn ý tưởng nào hay hơn không?
Chỉnh sửa mục tiêu: Hiện tại chỉ có 2 lĩnh vực mà chúng tôi quan tâm để theo dõi. Một trường sẽ được hiển thị trên một trang web để hiển thị lịch sử, trường khác sẽ chỉ được truy cập bởi một bộ phận và họ có quyền truy cập vào chế độ xem cơ sở dữ liệu mà họ có thể truy vấn. Họ sẽ truy vấn chỉ một trường này để biết thông tin về người đã thay đổi trường và làm gì. Đây là lý do chúng tôi muốn đặt nó ở nơi trường cơ sở dữ liệu xác định cột bảng thay vì có một bản sao chính xác của lịch sử bản ghi bảng. Chúng tôi chỉ muốn hai trường được theo dõi với khả năng thêm hoặc xóa các trường trong tương lai.
Cảm ơn!