Mohou existovat skutečné důvody, proč chtít/potřebovat jedinou tabulku komentářů. Například by to zjednodušilo zobrazení všech komentářů od daného uživatele. Také prohledávání všech komentářů by bylo jednodušší (dejte jeden FTS index na jednu tabulku a máte hotovo).
Na druhou stranu, pokud neexistuje pádný důvod pro ponechání komentářů v jediné tabulce, existuje možné třetí (a poměrně zřejmé) řešení.
Vytvořte samostatnou tabulku komentářů pro každou položku (příspěvek, událost, soubor, dokument). V takové situaci by bylo velmi jednoduché definovat a popsat vztahy RI. Také, pokud zadáváte ad-hoc dotazy velmi často, mohlo by to být jednodušší. Například
select * from documents d left join doc_comments c
on d.id = c.docid
where d.id=42;
Nic z toho nemusí být relevantní nebo důležité pro vaši situaci, ale mohlo by to stát za zvážení.
Jedna další náhodná myšlenka:Obě řešení v OP mají „pocit“, že definují vztah many-to-many (např. komentář může patřit k více položkám). Za předpokladu, že se nejedná o požadovanou situaci, lze jí předejít pomocí vhodného jedinečného indexu, ... ale přesto ... má počáteční vzhled, který se zdá, jako by to mohlo vést k možnému zmatku.