I know you don't allow users to change primary keys but permit me to ask this question.
Let's say I have a theoretical table of recipies like
RecipeID int PK (Identity Column)
RecipeName varchar(35)
and a directions table, which tells a user what to do and the order in which to do it.
RecipeID int PK (From Parent)
Order int PK
Activity varchar(250)
In the child table the combination of RecipeID and Order makes a very logical key field but the Order may need to change if the user wants to add a new step. Of course the user could change the Order field to an existing value and create a duplicate but they could not save the record in that state. So are you saying you would create the table like this?
RecipeID int PK
DirectionId int PK (Identity Column)
Order int
Activity varchar(250)
This seems like a waste of a field. SQL management tools have always allowed you to change primary keys and they have those cascase update rules as well.