我想创建一个数据库来存储人与人之间的联系。
然后我需要带回详细说明哪些人与哪些人有联系的记录。
我需要输出:person1 连接到 person2 连接到 person3 等。
我怎样才能开始这项任务?
我想创建一个数据库来存储人与人之间的联系。
然后我需要带回详细说明哪些人与哪些人有联系的记录。
我需要输出:person1 连接到 person2 连接到 person3 等。
我怎样才能开始这项任务?
好的,我假设您的意思是要找出 MySQL 数据库中某些条目之间的关系。理想的方式——在我看来——是让你的用户表在这种情况下我们称之为 tblusers。我相信你会有很多列,但为了这个连接,我们可以将一列命名为“ucons”来表示与其他用户的关系。
您可能知道也可能不知道,用户表将有一个主键列,在这种情况下,我将其命名为“uid”。这些主键最终用于定位您的用户条目,因为每个用户都会在主键列“uid”中收到一个唯一的 ID。
假设我们有三个用户:user1、user2、user3,他们具有以下用户 ID:
用户 1 -> 1
用户 2 -> 2
用户 3 -> 3
现在,对于你关于关系的问题,我通常会将关系键存储在一个单独的表中,这是因为你可能有数千个用户,如果每个用户有 200 个连接,那么表上的开销会很大,尤其是如果同时对表执行其他操作!这被称为一对多 - 多对一的关系。
现在,让我们有一个秒表,其中包含两列用于人与人之间的实际“连接”,我们将其称为“tblconnections”,其中包含“cid”、“cuser”和“ccon”列。
cid 是主键 cuser 是 tblusers 中刚刚创建连接的用户的 ID ccon 是 tblusers 中 CONNECTED 用户的 ID
因此,让我们采用以下两种表格布局:
tblusers:
-------------------
uid | uname | uage
-------------------
0 | Joe | 22
1 | Bob | 54
2 | Tod | 14
tblconnections
-------------------
cid | cuser | ccon
-------------------
0 | 1 | 2
1 | 1 | 0
现在,这告诉使用 id 为“1”的用户有两个连接,一个到用户“2”,一个到 tblusers 中的用户“0”,所以用户 1(Bob) 与 Tod 和 Joe 有一个连接。
使用此信息,您可以执行简单的 mysql 查询,例如:
SELECT uid AS id, (SELECT GROUP_CONCAT(cconn) FROM tblconnections WHERE cuser = id) FROM tblusers;
这将从“tblusers”返回您常用的 iser id 以及所有连接用户的串联字符串。所以用户 id 可能是 '3' 并且连接的字符串可能如下所示:2,6,22,45,67,8 在这种情况下是连接到用户 '3' 的所有用户的列表。
请注意,还有许多其他方法可以与您的查询一起返回每个连接的用户信息,这只是一个示例。
如果您想阅读教程,只需搜索“数据库关系”、“一对多多对一关系”或“mysql 表关系”即可。
希望这对您的问题有所帮助。
祝你有个好的一天。