gpt4 book ai didi

php - "Has A"或 "Belongs To"关系还是其他什么?

转载 作者:行者123 更新时间:2023-11-29 21:11:18 27 4
gpt4 key购买 nike

我不知道为什么我要为此苦苦挣扎,这似乎是一个非常简单的概念。所以我的挣扎让我觉得也许我的数据建模需要另一个组件......

我正在使用 Laravel 5 并尝试定义一些模型关系。 BelongsToHasA 等。在编写代码之前,我至少需要在概念上了解我要创建的关系类型。

我有一个应用程序,用户可以向人们发送推荐链接,如果一个人单击该链接并注册,他们的用户记录会记录推荐他们的代码。这样我就可以追溯并查看谁推荐了特定用户。但注册并不需要推荐

表格:

用户

+----+-------------+
| 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_IDREFERRALS.ID 之间的关系?

这种“循环引用”是不是很糟糕?我创建一个数据透视表会更好吗?

最佳答案

无需在用户表中添加对引用表的任何引用,您已经在引用表( 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为接受注册的用户id

invitee_id 列可以为 null(),并且将包含用户表中的受邀者加入时的 ID。

将其视为邀请者和被邀请者之间的 JOIN 表。

关于php - "Has A"或 "Belongs To"关系还是其他什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36346480/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com