Внешний ключ определяет отношения родитель-потомок между двумя таблицами. Первичным ключом в родительской таблице является внешний ключ в не более n строках дочерней таблицы.
Теперь, если этот первичный ключ в родительской таблице получает UPDATE, запускается правило UPDATE. Либо все дочерние строки также обновляются, либо устанавливаются в NULL, либо как угодно. Однако рекомендуется иметь первичный ключ, который НИКОГДА не меняется (фиксированный идентификатор или что-то в этом роде), так что это менее важное правило.
Более важным является правило УДАЛИТЬ - что если родительская строка удалена (например, Порядок удален)? Вы также можете удалить все дочерние строки (все позиции заказа) с помощью CASCADE DELETE или установить для их внешнего ключа значение NULL (у них больше нет родителя) - это полностью соответствует вашему конкретному сценарию.
В сценарии «Порядок / строки заказа» может быть очень полезно удалить строки заказа, когда полный заказ будет удален, но вы, вероятно, не хотите удалять продукт, просто потому что заказ, который ссылается на него, был удален - нет единого правильного ответа - это зависит от вашего сценария и вашего приложения.
Марк