単一のコメントテーブルが必要な/必要な本当の理由があるかもしれません。たとえば、特定のユーザーからのすべてのコメントを表示するのが簡単になります。また、すべてのコメントの検索が簡単になります(1つのテーブルに1つのFTSインデックスを配置すれば完了です)。
一方、コメントを1つのテーブルに保持するやむを得ない理由がない場合は、3番目の(そしてかなり明白な)解決策が考えられます。
アイテム(投稿、イベント、ファイル、ドキュメント)ごとに個別のコメントテーブルを作成します。 RIの関係は、その状況で定義および説明するのが非常に簡単です。また、アドホッククエリを頻繁に入力する場合は、簡単に入力できる可能性があります。例
select * from documents d left join doc_comments c
on d.id = c.docid
where d.id=42;
これはいずれもあなたの状況に適切または重要ではないかもしれませんが、検討する価値があるかもしれません。
もう1つのランダムな考え:OPの両方のソリューションには、多対多の関係を定義しているという「感覚」があります(たとえば、コメントは複数のアイテムに属することができます)。それが望ましい状況ではないと仮定すると、適切な一意のインデックスを使用して防止できますが、それでも...最初の外観は、混乱を招く可能性があるように見えます。