Thinking about the most general norms across database vendors, consider a table name for User Posts: You could write that as UserPosts, but in a lot of databases you're going to end up with userposts, since typically SQL and identifiers are naturally case insensitive; you can preserve case by quoting that "UserPosts", but now you have extra characters just to get the case sensitivity. Finally, you can use snake case: user_posts... true you still end up with extra characters, but ultimately I think a little less shifting. Snake case also keeps you in line with much historical precedence in writing names for the database as well.
Alternatively, you can use camelCase without quotes in your SQL, and ignore the fact that Postgres will lowercase it.
SELECT * FROM "MyTable"
You can even use reserved SQL keywords in table/column names as long as they are double-quoted.