The current EA Foreign Key constraint default naming rule is:
FK_<origin_table_Name>_<destination_table_name>
Long experience has shown that is is insufficient to ensure unique constraint identity, especially in RDBMS technologies that require global uniqueness of foreign key constraint names.
A better naming rule has been shown to be:
FK_<origin_table_Name>_<origin_inversion_column_set_name>_<destination_table_name>
where <origin_inversion_column_set_name> is the name of the column-set in the origin table that forms the "Child" (or inversion) end of the relationship.
How do you derive the name of the name of the inversion column-set? If there is only one column involved, then it's easy, just use the column name! If there is more than one column involved in the set, then (typically) there should be a named Inversion Index created to assist in relational joins, that index name should be used. If such an index doesn't exist, then a name can be synthesized from the names of the columns involved in the column set.
In any event, the current naming rule doesn't allow for more than one relationship between any two tables and is thus defective.
Thoughts, Votes?
Paolo[size=0]©2007 Paolo Cantoni, -Semantica-[/size]