dm_enum_fk_candidates() first checks if ref_table has a primary key set,
if not, an error is thrown.
If ref_table does have a primary key, then a join operation will be tried using
that key as the by argument of join() to match it to each column of table.
Attempting to join incompatible columns triggers an error.
The outcome of the join operation determines the value of the why column in the result:
- an empty value for a column of - tablethat is a suitable foreign key candidate
 
- the count and percentage of missing matches for a column that is not suitable 
- the error message triggered for unsuitable candidates that may include the types of mismatched columns 
enum_fk_candidates() works like dm_enum_fk_candidates() with the zoomed table as table.