Как я могу реализовать отношение «может быть» на диаграмме ERD? - PullRequest
0 голосов
/ 04 сентября 2018

Я создаю ERD, который внедряю в Laravel.

У меня есть три объекта: Hiker, HikeLeader и социальные сети Influencer.

Пользователь может зарегистрироваться как любой из вышеперечисленных трех типов. Тем не менее, Hiker или HikeLeader могут решить стать влиятельными лицами в дополнение к своим существующим ролям. Таким образом, они переключают кнопку в своем профиле и становятся Hiker и Influencer или HikeLeader и Influencer.

Это пример атрибутов:

Hiker:
    profile_photo

HikeLeader:
    logo

Influencer:
    instagram_handle

Вот что я имею в виду для ERD:

Диаграмма ERD

Первая часть проста, так как User будет иметь метод userable для этого вопроса.

Так что User будет выглядеть так:

User:
    id
    email
    password
    userable_id // this will be the id from the Hike, HikeLeader or Influencer tables.
    userable_type // this will be class type Hike, HikeLeader or Influencer.

Если я принимаю решение стать влиятельным лицом:

Influencer:
    instagram_handle
    influencerable_id
    influencerable_type

Это прекрасно работает. Тем не менее, он работает только в том случае, если существующие пользователи хотят стать влиятельными, так как influencerable_type будет Hiker или HikeLeader, но НЕ, когда новый пользователь зарегистрируется, чтобы стать Influencer и ничего не знает о пеших походах. Разве объект влияния не может трансформироваться в себя?

...