Ваша диаграмма является эллиптической в том смысле, что вы исключили таблицы соединений N: N между всеми вашими сущностями.Они имеют ОГРОМНОЕ различие в отношении побочных эффектов круговых отношений.Прямые отношения 1: N с CASCADE DELETE могут вызвать реальные проблемы и потенциальные взаимоблокировки.Но с промежуточными таблицами N: N у вас не должно быть этой проблемы, поскольку CASCADE DELETE будет работать только "под уклон" от таблицы 1 к N, и не будет выполнять резервное копирование цепочки от таблицы N: N к другой.родительская таблица.
Мне кажется, что это общая проблема, изоморфная проблеме адресации, т. е. человек может иметь личный адрес и наследовать адрес от работодателя, и решение @Saif Khan об устранениинаследование программного обеспечения от позиции является формой денормализации, в которой вы свели две сложные взаимосвязи сущностей в одну.Я никогда не знаю, как смоделировать это, не из-за потенциальных циклических связей, а из-за проблем с производительностью (и невозможности редактирования), возникающих при сборке единого результирующего набора всех программ / адресов, для которого требуется UNION.Я хотел бы использовать триггер для дублирования программного обеспечения, унаследованного от должности, с записью, связывающей человека с программным обеспечением.
До A2010 это было невозможно на уровне ядра в Access / Jet / ACE, но в A2010 добавлены макросы данных на уровне таблицы, которые можно использовать для реализации эквивалента триггеров.Это может быть случай, когда эта новая функция может позволить вам реализовать эту структуру с помощью триггеров.
Но я не уверен, что мне удобно дублировать данные, хотя триггеры позволят вам сохранить дублированные данныесинхронно на уровне двигателя.