Naming conventions are not standard-less!
Science is not subjective!
There are Standards, and there are reasons for Standards. All those issues have been answered, and standardised, over 30 years ago. Do read my IDEF1X Introduction, IDFE1X is the Relational Database Modelling Standard, there is no other.
First, there are no 'Intersect' or 'link' tables, each table has a specific purpose which is determined during the modelling exercise, and it is not to link tables or intersect paths. When you take that formal approach, the tables and their meaning is naturally exposed.
Second, if you want a Relational Database, you need to implement Relational Keys or Relational Identifiers, as per the Relational Model. The Relationships are Identifying or Non-identifying. That means no surrogates. Tables are not isolated two-dimensional creatures, once those Identifying Identifiers are determined, the logical or third dimension becomes clear.
Generally that means compound keys.
Third, if you use the IDEF1X standard during modelling, you will have Verb Phrases (detailed in the link). These identify the relationships between the tables very clearly. Again, 'intersects' and 'links' are eliminated, you have proper names and meaning.
Consistency of use is irrelevant, consistency of data, of meaning, is relevant. Model the data, not the usage.
Therefore, when you get to the point where you are evaluating the issue in your question, the naming required is clear; it is an extension of what is already determined and modelled. There is no need for three-part names, two-part names are perfectly enough.
- Given your
User
and Product
tables
UserProduct
is not a complete name per reasoning above
let's say they were Independent
- the Favourite table would be Dependent on both
- its PK would be the
UserPK
plus the ProductPK
- the Verb Phrase is
Each User Favours zero-to-many Products
I would name it UserFavoured
or UserFavourite
User_Favourite_Product
is overloaded, the third part is redundant
Likewise, Each User Elects zero-to-many Products
(or Supports
or Elevates
)
- its PK would be the
UserPK
plus the ProductPK
(unless you like duplicates)
- Therefore
UserElected
or UserElection
The above are Associative Tables (what you call 'link') or a few columns added to same. Purchase is substantially different (not a 'link'). Various details must be recorded for a Purchase, that do not exist in either User
or Product
.
- I would name it
Purchase
UserPurchase
is redundant and silly
UserPurchaseProduct
is silliness squared
(I was maintaining the limits of your question. In reality, there would not be a Purchase table, there would be a SalesOrder
which forms the basis of the Purchase, a commercial event, and SalesOrderItem
, which details the Products
therein.)