Разложение троичной связи на бинарные связи

Я разрабатываю базу данных, которая обрабатывает пользователей, учетные записи и проекты со следующими отношениями и ограничениями:

  • У учетной записи много пользователей
  • Пользователь принадлежит многим учетным записям
  • учетная запись имеет много проектов
  • Проект принадлежит толькоодна учетная запись
  • Пользователь участвует во многих проектах (избыточное примечание: каждый из них принадлежит своей учетной записи).

Другими словами, пользователь может сотрудничать во многих проектах одной и той же учетной записи. Но поскольку пользователь может принадлежать нескольким учетным записям, то пользователь может сотрудничать во многих проектах нескольких учетных записей. Это приводит меня к троичной взаимосвязиотношения:

enter image description here

После прочтения нескольких статей о преобразовании троичных отношений в бинарные я пришел к следующим эквивалентным отношениям:

enter image description here

Здесь возникает два вопроса:

  1. ] Является ли это преобразование правильным? Я обнаружил, что мне нужно добавить дополнительные проверки на уровне приложения для обработки вставок. Например, перед добавлением нового (Пользователь,Проект)я должен убедиться, что пользователь принадлежит к той же учетной записи, к которой принадлежит проект.

  2. Действительно ли необходимо устанавливать связь между Пользователеми Пользователем? Как только связь между Пользователеми Проектомдобавлена, нельзя ли узнать, к какой учетной записи принадлежит пользователь, получив доступ к проекту?

Спасибо!!

9
задан starblue 2 June 2012 в 14:51
поделиться