Có thể có những lý do thực sự để muốn / cần một bảng nhận xét. Ví dụ:nó sẽ giúp việc xem tất cả các nhận xét từ một người dùng nhất định trở nên đơn giản hơn. Ngoài ra, việc tìm kiếm thông qua tất cả các bình luận sẽ đơn giản hơn (đặt một chỉ mục FTS trên một bảng và bạn đã hoàn tất).
Mặt khác, nếu không có lý do thuyết phục để giữ các nhận xét trong một bảng duy nhất, thì có một giải pháp thứ ba (và khá rõ ràng).
Tạo một bảng nhận xét riêng cho từng mục (bài đăng, sự kiện, tệp, tài liệu). Các mối quan hệ RI sẽ rất đơn giản để xác định và mô tả trong tình huống đó. Ngoài ra, nếu bạn đang gõ các truy vấn đặc biệt thường xuyên, nó có thể làm cho nó đơn giản hơn. Ví dụ
select * from documents d left join doc_comments c
on d.id = c.docid
where d.id=42;
Không điều nào trong số này có thể phù hợp hoặc quan trọng đối với tình huống của bạn, nhưng nó có thể đáng được xem xét.
Một suy nghĩ ngẫu nhiên bổ sung:Cả hai giải pháp trong OP đều có cảm giác rằng chúng đang xác định mối quan hệ nhiều-nhiều (ví dụ:một nhận xét có thể thuộc nhiều mục). Giả sử đó không phải là tình huống mong muốn, nó có thể được ngăn chặn bằng chỉ mục duy nhất thích hợp, ... nhưng ... nó vẫn có diện mạo ban đầu, có vẻ như có thể dẫn đến nhầm lẫn.