Another advantage of using table_id instead of id is that if the referential key is called the same, many databases support: a JOIN b USING user_id, which saves typing out the where clause.

I think the naming of the foreign keys should also be standardized. However I wouldn’t use the name of the table they refer to (like is common) but to describe the role, i.e. if there is a relationship between project and employee, I wouldn’t call the key ’employee_id’ but ‘projectmanager_id’. This makes your point about keys that are named equal moot, but it does have more flexibility when there are multiple relationships between the same tables.