Може да има реални причини да искате/нуждате се от една таблица с коментари. Например, това би улеснило прегледа на всички коментари от даден потребител. Също така, търсенията във всички коментари биха били по-прости (поставете един индекс на FTS на една таблица и сте готови).
От друга страна, ако няма убедителна причина коментарите да се съхраняват в една таблица, има възможно трето (и доста очевидно) решение.
Създайте отделна таблица с коментари за всеки елемент (публикация, събитие, файл, документ). В тази ситуация връзките на RI биха били много лесни за дефиниране и описание. Освен това, ако пишете ad hoc заявки много често, това може да го направи по-лесно. Например
select * from documents d left join doc_comments c
on d.id = c.docid
where d.id=42;
Нищо от това може да не е уместно или важно за вашата ситуация, но може да си струва да обмислите.
Една допълнителна произволна мисъл:И двете решения в ОП имат „усещането“, че дефинират връзка много към много (например коментар може да принадлежи на множество елементи). Ако приемем, че това не е желаната ситуация, тя може да бъде предотвратена с подходящия уникален индекс, ... но все пак ... има онзи първоначален вид, който изглежда сякаш може да доведе до възможно объркване.