You do not need to call them different things. You can have a FAM_ID column in FAMILY, a FAM_ID column in DOCUMENTS, and a FAM_ID column in a contact.
In this case, calling them one and the same, it becomes clear that they refer to the same thing. But you can also come up with a different naming convention if you want.
For example, I use something along the lines family_ID in the family table and contact_familyID , document_familyID when accessing it from contacts and documents tables.
The only drawback to calling them the same, as I see it, is that when you perform joins, you cannot just refer to them by the column name, you must pseudonize them or refer to them by the name tablename.columnname.
Edit: I think I found what you mean without having the same name. This is so when you add a foreign key relationship within the same table, as described here: http://bugs.mysql.com/bug.php?id=46363
source share