gpt4 book ai didi

mysql - 一个帐户有多个具有相同用户属性的好友?如何在 DB 中实现它以及它在 ER 图中的样子

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

一个帐户有许多具有相同用户属性的 friend ?如何在 DB 中实现它以及它在 ER 图中的样子

我正在尝试构建简单的数据库项目

user with (email,password)

每个用户有很多 friend ,其中 friend 也是一个用户!

用户应该能够请求其他用户作为好友并接受或拒绝

如果 user1 是 user2 的 friend ,则 opp 必须工作 user2 是 user1 的 friend

??我需要什么 table ?又有什么关系呢? ER 图中的样子

它是如何工作的,我不是专家,我查看了另一个问题,但我不清楚:)

最佳答案

根据我对您问题的理解,您需要 2 个表:Users 和 UserConnections,其中 User 表具有用户的基本属性(用户 ID、电子邮件、密码)。 UserConnections 具有 RequesterUserID、TargetedUserID 和该请求的结果(即用户接受还是拒绝该请求)。

当您编写 SQL 时,您可以通过 UserConnections 表将 userid 表连接回其自身,以获得您需要的信息。

这是快速的示例代码,仅提供基本概念。我正在创建两个表并插入一些示例数据,并通过一个查询向您展示如何从中获取一些数据。不要使用这个实际代码,它仅供引用。最重要的概念是 useraccount 表在查询中使用两次,每次都有不同的别名。 r 别名代表请求者用户,t 别名代表目标用户。 UserConnections 是交叉引用表的一种形式,允许从用户帐户返回到其自身的多对多连接。

CREATE TABLE [dbo].[UserAccount](
[UserID] [varchar](20) Not NULL,
[EMail] [varchar](20) Not NULL,
[FullName] [varchar](30) Not NULL
) ON [PRIMARY]


CREATE TABLE [dbo].[UserConnections](
[RUserID] [varchar](20) Not NULL,
[TUserID] [varchar](20) Not NULL,
[results] [varchar](10) Not NULL
) ON

[PRIMARY]



insert useraccount select 'user1', 'user1_email', 'user1_name'
insert useraccount select 'user2', 'user2_email', 'user2_name'
insert useraccount select 'user3', 'user3_email', 'user3_name'
insert useraccount select 'user4', 'user4_email', 'user4_name'
insert useraccount select 'user5', 'user5_email', 'user5_name'


insert UserConnections select 'user1', 'user2', 'ACCEPTED'
insert UserConnections select 'user1', 'user3', 'ACCEPTED'
insert UserConnections select 'user1', 'user4', 'REJECTED'
insert UserConnections select 'user1', 'user5', 'REJECTED'
insert UserConnections select 'user2', 'user3', 'REJECTED'
insert UserConnections select 'user2', 'user4', 'ACCEPTED'
insert UserConnections select 'user5', 'user3', 'REJECTED'

--if you wanted to get all the rejected requests for a particular user
select c.tuserid as 'reject_user_id', t.fullname as 'reject_user_name' from useraccount r join UserConnections c
on r.userid = c.ruserid
join useraccount t on c.tuserid = t.userid
and c.results = 'REJECTED'
where r.userid = 'user1'

结果:
user4 user4_name
user5 user5_name

关于mysql - 一个帐户有多个具有相同用户属性的好友?如何在 DB 中实现它以及它在 ER 图中的样子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29979923/

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