Det kan finnas verkliga skäl för att vilja/behöver en enda kommentarstabell. Det skulle till exempel göra det enklare att se alla kommentarer från en given användare. Dessutom skulle sökningar genom alla kommentarer vara enklare (lägg ett FTS-index på den ena tabellen och du är klar).
Å andra sidan, om det inte finns en övertygande anledning att behålla kommentarerna i en enda tabell, finns det en möjlig tredje (och ganska uppenbar) lösning.
Skapa en separat kommentarstabell för varje objekt (inlägg, händelse, fil, dokument). RI-relationerna skulle vara mycket enkla att definiera och beskriva i den situationen. Dessutom, om du skriver ad-hoc-frågor väldigt ofta, kan det göra det enklare. Till exempel
select * from documents d left join doc_comments c
on d.id = c.docid
where d.id=42;
Inget av detta kanske är relevant eller viktigt för din situation, men det kan vara värt att överväga.
Ytterligare en slumpmässig tanke:Båda lösningarna i OP har "känslan" att de definierar ett många-till-många-förhållande (t.ex. en kommentar kan tillhöra flera objekt). Förutsatt att det inte är den önskade situationen kan den förhindras med lämpligt unikt index, ... men ändå ... det har det ursprungliga utseendet, vilket verkar som om det skulle kunna leda till eventuell förvirring.