Зараз у нас в БД все ось так, як на малюнку, але проблема в тому, що якщо наш контрібутор є і автором якихось творів, і, одночасно перекладачем якихось інших творів, то при спробі зрозуміти ким він є для певного твору, ми отримаємо тільки перелік всіх його ролей за весь час.
Що я придумав: створити ентіті NarrativeContributorRole , де буде комбінований primary key з трьох айдішників. Але тоді вилазить інший костиль. Якщо подивитися як все структуровано зараз, то ми можемо в BLL забов'язати вказання ролі для контрібутора, щоб у нас в базі не лежав запиc про "просто людину". Також ми легко можемо реалізувати обмеження на створення твору: будь-який твір повинен мати автора. Але при реалізації через NarrativeContributorRole виникає конфлікт: щоб створити контрібутора повинен бути неретів, а щоб створити неретів потрібно вказати контрібутора з роллю "Автор". Ми не зможемо створити запис.