我不确定为什么我会挣扎于此,这似乎是一个非常简单的概念。所以我的努力让我觉得也许我的数据建模需要另一个组件......
我正在使用Laravel 5并尝试定义一些模型关系。 BelongsTo
,HasA
等。在我编写代码之前,我至少需要在概念上理解我正在创建的关系类型。
我有一个应用程序,用户可以在哪里发送人员推荐链接,如果有人点击链接并注册,他们的用户记录会记录引用它们的代码。通过这种方式,我可以追溯并查看谁引用了特定用户。但是,无需报名参加
表格:
用户
+----+-------------+
| id | referral_id |
+----+-------------+
| 1 | 1 |
| 2 | null |
| 3 | 2 |
+----+-------------+
REFERRALS
+----+---------------+---------+
| 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
推荐感觉不对,因为该记录并不是必需的,我不会感觉到它是&#39 ;拥有'用户无论如何。说它hasA
推荐也感觉不正确,因为用户再次拥有甚至不需要推荐。
我想让我感到困惑的是REFERRALS
是一个可选实体。
我应该如何概念化USERS.REFERRAL_ID
和REFERRALS.ID
之间的关系?
有这种"循环参考"?我最好创建一个数据透视表吗?
答案 0 :(得分:0)
无需在User表中添加对Referrals表的任何引用,您已经在引用表(user_id列)中定义了该关系
进一步阅读:https://en.wikipedia.org/wiki/Database_normalization
关系是
USER has many REFERRALS
REFERRAL belongs to USER ( inviter )
REFERRAL belongs to USER ( invitee )
修改您的REFERRALS表
+----+---------------+---------+------------+
| id | referral_code | user_id | invitee_id |
+----+---------------+---------+------------+
| 1 | 12345 | 2 | 1 |
| 2 | 54321 | 1 | null |
| 3 | 99999 | 3 | 1 |
+----+---------------+---------+------------+
user_id是发送邀请的用户的ID
invitee_id是接受并注册
的用户的IDinvitee_id列是nullable(),并且在加入时将包含来自users表的被邀请者的ID。
将其视为邀请者和被邀请者之间的JOIN表。