& quot; Имеет & quot; или «Принадлежит» отношения или что-то еще?

Я не уверен, почему я борюсь с этим, это кажется очень простой концепцией. Поэтому моя борьба заставляет меня думать, что, возможно, мое моделирование данных нуждается в другом компоненте …

Я использую Laravel 5 и пытаюсь определить некоторые модельные отношения. BelongsTo,HasAи т. д. Прежде чем я смогу написать код, мне нужно хотя бы концептуально понять, какой тип отношений я создаю.

У меня есть приложение, куда пользователи могут отправлять реферальные ссылки людям, если человек нажимает на ссылку и регистрируется, его запись пользователя записывает код, который их пересылал. Таким образом, я могу отследить и посмотреть, кто ссылался на конкретного пользователя. Но реферал НЕ обязателен, чтобы зарегистрироваться

Таблицы:

ПОЛЬЗОВАТЕЛИ

+----+-------------+
| id | referral_id |
+----+-------------+
|  1 | 1           |
|  2 | null        |
|  3 | 2           |
+----+-------------+

ОБРАЩЕНИЯ

+----+---------------+---------+
| id | referral_code | user_id |
+----+---------------+---------+
|  1 |         12345 |       2 |
|  2 |         54321 |       2 |
|  3 |         99999 |       2 |
+----+---------------+---------+

USERS.REFERRAL_ID Рекомендации REFERRALS.ID
а также
REFERRALS.USER_ID Рекомендации USERS.ID

Но что это за отношения?
Единственное, что мне кажется очевидным, это то, что REFERRALS.USER_ID принадлежит USERS,

Но что насчет USERS.REFERRAL_IDговоря это belongsTo Рефералы не чувствуются правильными, так как эта запись не требуется, и я не чувствую, что она каким-то образом «владеет» пользователем. Сказать это hasA реферал также не выглядит корректным, так как опять пользователь не владеет или даже не требует реферала.

Я думаю, что меня смущает то, что REFERRALS это необязательный объект.

Как я должен осмыслить отношения между USERS.REFERRAL_ID а также REFERRALS.ID?

Разве это плохо иметь такую ​​«круговую ссылку»? Будет ли мне лучше создать сводную таблицу?

0

Решение

Нет необходимости добавлять какие-либо ссылки на таблицу рефералов в таблице User, у вас уже есть это отношение, определенное в таблице рефералов (столбец user_id)

Дальнейшее чтение: https://en.wikipedia.org/wiki/Database_normalization

Отношения это

USER has many REFERRALS
REFERRAL belongs to USER ( inviter )
REFERRAL belongs to USER ( invitee )

Измените свою таблицу РЕФЕРРАСОВ

+----+---------------+---------+------------+
| id | referral_code | user_id | invitee_id |
+----+---------------+---------+------------+
|  1 |         12345 |       2 |          1 |
|  2 |         54321 |       1 |       null |
|  3 |         99999 |       3 |          1 |
+----+---------------+---------+------------+

user_id — идентификатор пользователя, отправляющего приглашение

инвайт_иде — это идентификатор пользователя, который принимает и регистрирует

Аргумент invitle_id имеет значение nullable () и будет содержать идентификатор приглашенного из таблицы пользователей, когда они присоединятся.

Думайте об этом как о таблице JOIN между приглашающим и приглашенным.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]