Mogą istnieć prawdziwe powody, dla których chcesz/potrzebujesz jednej tabeli komentarzy. Na przykład ułatwiłoby to przeglądanie wszystkich komentarzy danego użytkownika. Również przeszukiwanie wszystkich komentarzy byłoby prostsze (umieść jeden indeks FTS na jednej tabeli i gotowe).
Z drugiej strony, jeśli nie ma przekonującego powodu, aby trzymać komentarze w jednej tabeli, możliwe jest trzecie (i raczej oczywiste) rozwiązanie.
Utwórz osobną tabelę komentarzy dla każdego elementu (post, wydarzenie, plik, dokument). W takiej sytuacji relacje RI byłyby bardzo proste do zdefiniowania i opisania. Ponadto, jeśli bardzo często wpisujesz zapytania ad hoc, może to uprościć. Na przykład
select * from documents d left join doc_comments c
on d.id = c.docid
where d.id=42;
Nic z tego nie może być istotne ani ważne w Twojej sytuacji, ale warto to rozważyć.
Jedna dodatkowa losowa myśl:oba rozwiązania w PO mają „poczucie”, że definiują relację wiele-do-wielu (np. komentarz może należeć do wielu elementów). Zakładając, że nie jest to pożądana sytuacja, można temu zapobiec za pomocą odpowiedniego unikalnego indeksu, ... ale nadal ... ma ten początkowy wygląd, który wydaje się, że może prowadzić do możliwych zamieszania.