Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 一个帐户有多个具有相同用户属性的朋友?如何在DB&;在ER图中是什么样子的_Mysql_Database Design_Many To Many_Entity Relationship_Self Reference - Fatal编程技术网

Mysql 一个帐户有多个具有相同用户属性的朋友?如何在DB&;在ER图中是什么样子的

Mysql 一个帐户有多个具有相同用户属性的朋友?如何在DB&;在ER图中是什么样子的,mysql,database-design,many-to-many,entity-relationship,self-reference,Mysql,Database Design,Many To Many,Entity Relationship,Self Reference,一个帐户有多个具有相同用户属性的朋友?如何在DB中实现它&它在ER图中是什么样子 我正试图建立一个简单的数据库项目,我有 具有(电子邮件、密码)的用户 每个用户都有很多朋友,其中朋友也是一个用户 用户应该能够请求另一个用户作为朋友,并接受或拒绝该请求 如果user1的朋友对user2,opp必须与user1的user2朋友工作 ??? 我需要什么桌子?什么关系?它在ER图中是什么样子的 如何工作我不是专家我看了另一个问题但我不清楚:)根据我对你问题的理解,你需要两个表:用户和用户连接,其中用户表

一个帐户有多个具有相同用户属性的朋友?如何在DB中实现它&它在ER图中是什么样子

我正试图建立一个简单的数据库项目,我有

具有(电子邮件、密码)的用户

每个用户都有很多朋友,其中朋友也是一个用户

用户应该能够请求另一个用户作为朋友,并接受或拒绝该请求

如果user1的朋友对user2,opp必须与user1的user2朋友工作

??? 我需要什么桌子?什么关系?它在ER图中是什么样子的


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

根据我对你问题的理解,你需要两个表:用户和用户连接,其中用户表具有用户的基本属性(用户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'
结果:
用户4用户4\u名称

user5 user5_name

“…请求(即用户是否接受或拒绝请求)。当您编写SQL时,您可以通过UserConnections表将userid表连接回自身,以获取所需的信息。”它在SQL中的外观请:)以及好友列表将保存在哪里!另一个问题是用户帐户和用户连接的关系。。。它是m:N或1:None对many。UserAccount表每个用户可以有一行。该用户可以多次出现在UserConnecton表中,具体取决于该用户尝试连接的用户以及尝试连接该用户的用户数量。再次感谢您,在用户接受该请求后,我应该将其保留在同一个表中还是谁接受我将其添加到另一个名为user\u friend的表中,以及我如何实现if user.1 friend to user.2我想通过sql创建user.2 friend to user.1؟帐户用户和帐户用户之间的关系是雇佣和监督还是没有关系!我不能附上我对ER digram的想象,你能解释一下吗?谢谢你在回答问题时核对一下。通过StackOverflow,我们只能接受这么多,但是在UserConnect表上,results(或者status)列指示friend请求的状态。(待定、接受、拒绝等)您还将有一个datetime列,可能一个用于请求datetime,另一个用于响应datetime。此外,状态描述将在ref表中,只有UserConnect表中的键。没有100%正确的方法可以做到这一点,但您可以使用这两个表来完成大部分操作,您不需要有user\u friend表