Client
^ ^
| |
| Entities Service
Eletter ^ ^
^ | |
|_______ EntityServices
Как это?
"Один клиент имеет несколько EngagementLetters (через имя клиента - это уникально)"
почему имя клиента?Вы использовали Client Id для отношений с сущностью.Можно сделать имя клиента уникальным, но не рекомендуется использовать другой ключ для разных отношений.Внешние ключи обычно должны указывать на первичный ключ (который, я предполагаю, является идентификатором клиента?)
"и хитрый: все EntityServices в одном EngagementLetter должны иметь одного и того же клиента"
Что делатьты имеешь в виду?Есть ли связь между EntityServices и клиентом?есть один через сущности, вы имеете в виду идентификатор клиента, полученный из родительской строки связанных сущностей?Связано ли это каким-то образом с клиентом, с которым связано письмо-обязательство?
Если вы просто хотите применить правило в том виде, в каком вы его изложили, вам следует подумать о создании новой таблицы, которая ссылается как на письмо клиента, так и на письмо-обязательство,и ссылку туда от сервисов сущностей.Однако, это хороший выбор, если вы можете утверждать, что комбинация клиент / письмо-обязательство является неким объектом, а не просто абстрактной конструкцией для реализации этого конкретного бизнес-правила.
Если это просто так,бизнес-правило, тогда вы должны использовать триггеры или логику приложения для его применения и резервировать внешние ключи только для представления отношений между структурами данных.