Some of our issues with Compare and Merge are specifically related to FK attributes / columns with role names. For example, the Agreement entity has two relationships from Currency, where Currency is a subtype of a generic Classification entity. When we run compare and merge between the LDM and PDM with all comparison options, it fails to match up the attributes and columns, and it also fails to match up the two relationships. If I force-match the relationships, the attributes are matched up OK. Unfortunately, there doesn't seem to be a way to save the force-matching of relationships, so the problem is still there the next time I run compare and merge.
How does compare and merge match up relationships? There is no visible 'where used' for them, and there's nothing in the exposed object model that I can see.
By the way, if we exclude relationships from Compare and Merge, the attributes and columns DO match up OK.