Mungkin ada alasan nyata untuk menginginkan/membutuhkan satu tabel komentar. Misalnya, akan lebih mudah untuk melihat semua komentar dari pengguna tertentu. Juga, pencarian melalui semua komentar akan lebih sederhana (letakkan satu indeks FTS di satu meja dan Anda selesai).
Di sisi lain, jika tidak ada alasan kuat untuk menyimpan komentar dalam satu tabel, ada kemungkinan solusi ketiga (dan agak jelas).
Buat tabel komentar terpisah untuk setiap item (postingan, acara, file, dokumen). Hubungan RI akan sangat sederhana untuk didefinisikan dan dijelaskan dalam situasi itu. Juga, jika Anda sering mengetik kueri ad-hoc, itu bisa membuatnya lebih sederhana. Misalnya
select * from documents d left join doc_comments c
on d.id = c.docid
where d.id=42;
Tidak satu pun dari ini mungkin relevan atau penting untuk situasi Anda, tetapi dapat dipertimbangkan.
Satu pemikiran acak tambahan:Kedua solusi di OP memiliki "perasaan" bahwa mereka mendefinisikan hubungan banyak-ke-banyak (mis., komentar dapat dimiliki oleh banyak item). Dengan asumsi itu bukan situasi yang diinginkan, itu dapat dicegah dengan indeks unik yang sesuai, ... tetapi tetap ... ia memiliki penampilan awal, yang tampaknya dapat menyebabkan kemungkinan kebingungan.