Cách thực hành tốt nhất để lưu trữ siêu dữ liệu của các bản ghi riêng lẻ trong cơ sở dữ liệu là gì?
Tôi cần lưu trữ dữ liệu meta phổ biến như thời gian tạo và thời gian cập nhật lần cuối cho nhiều bảng trong cơ sở dữ liệu của tôi. Tôi tìm thấy một vài giải pháp khác nhau:
Lưu trữ dữ liệu meta trực tiếp trong các bảng.
Ưu điểm:
- Dữ liệu meta được liên kết trực tiếp với hồ sơ
- Không cần tham gia để truy xuất dữ liệu meta
Nhược điểm:
- Rất nhiều cột trùng lặp được yêu cầu (trừ khi sử dụng kế thừa)
- Dữ liệu meta và dữ liệu kinh doanh không được tách rời
Tạo một bảng dữ liệu meta chung với và sử dụng các khóa ngoại mềm để liên kết dữ liệu với các bảng và bản ghi chính xác.
Ưu điểm:
- Không trùng lặp cột
- Dữ liệu meta được tách ra khỏi dữ liệu kinh doanh
Nhược điểm:
- Không có liên kết trực tiếp giữa dữ liệu meta và dữ liệu (không thể sử dụng FK)
- Tham gia yêu cầu một điều kiện bổ sung
Tạo các bảng dữ liệu meta riêng lẻ cho mỗi bảng yêu cầu dữ liệu meta.
Ưu điểm:
- Dữ liệu meta được liên kết trực tiếp với hồ sơ
- Dữ liệu meta được tách ra khỏi dữ liệu kinh doanh
Nhược điểm:
- Rất nhiều bảng phụ được yêu cầu
- Rất nhiều cột trùng lặp được yêu cầu (trừ khi sử dụng kế thừa)
Có nhiều lựa chọn, ưu hay nhược điểm hơn những cái tôi đã đề cập ở đây không? Và cách tốt nhất để lưu trữ dữ liệu meta này là gì?
hstore
hoặcJSON
cột có thể giải quyết vấn đề của bạn?