一个账号有很多朋友,他们的用户属性相同?如何在 DB 中实现它以及它在 ER 图中的样子
one account have many friend who have same attribute of user ? how to implement it in DB & how it look like in ER diagram
一个账号有多个用户属性相同的好友?如何在 DB 中实现它以及它在 ER 图中的样子
我正在尝试构建简单的数据库项目
user with (email,password)
每个用户都有很多朋友,朋友也是一个用户!
用户应该能够请求另一个用户成为朋友并接受或拒绝
并且如果 user1 是 user2 的朋友,则 user1 的 opp 工作 user2 朋友
??
我需要什么表?和什么关系?它在 ER 图中的样子
它是如何工作的我不是专家我看了另一个问题但我不清楚:)
根据我对您问题的理解,您需要 2 tables:Users 和 UserConnections,其中 User table 具有用户的基本属性(用户 ID、电子邮件、密码)。 UserConnections 具有 RequesterUserID、TargetedUserID 和该请求的结果(即用户是接受还是拒绝请求)。
当您编写 SQL 时,您可以通过 UserConnections table 将用户 ID table 连接回自身以获得所需的信息。
这是快速的示例代码,仅提供基本思想。我正在创建两个 table 并插入一些示例数据,并使用一个查询向您展示如何从中获取一些数据。不要使用此实际代码,它仅供参考。最重要的概念是 useraccount table 在查询中使用了两次,每次都有不同的别名。 r 别名代表请求者用户,t 别名代表目标用户。 UserConnections 是一种交叉引用 table 的形式,允许从用户帐户返回到自身的多对多连接。
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'
结果:
用户 4 user4_name
用户 5 user5_name
一个账号有多个用户属性相同的好友?如何在 DB 中实现它以及它在 ER 图中的样子
我正在尝试构建简单的数据库项目
user with (email,password)
每个用户都有很多朋友,朋友也是一个用户!
用户应该能够请求另一个用户成为朋友并接受或拒绝
并且如果 user1 是 user2 的朋友,则 user1 的 opp 工作 user2 朋友
?? 我需要什么表?和什么关系?它在 ER 图中的样子
它是如何工作的我不是专家我看了另一个问题但我不清楚:)
根据我对您问题的理解,您需要 2 tables:Users 和 UserConnections,其中 User table 具有用户的基本属性(用户 ID、电子邮件、密码)。 UserConnections 具有 RequesterUserID、TargetedUserID 和该请求的结果(即用户是接受还是拒绝请求)。
当您编写 SQL 时,您可以通过 UserConnections table 将用户 ID table 连接回自身以获得所需的信息。
这是快速的示例代码,仅提供基本思想。我正在创建两个 table 并插入一些示例数据,并使用一个查询向您展示如何从中获取一些数据。不要使用此实际代码,它仅供参考。最重要的概念是 useraccount table 在查询中使用了两次,每次都有不同的别名。 r 别名代表请求者用户,t 别名代表目标用户。 UserConnections 是一种交叉引用 table 的形式,允许从用户帐户返回到自身的多对多连接。
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'
结果:
用户 4 user4_name
用户 5 user5_name