-7

我想创建一个数据库来存储人与人之间的联系。

然后我需要带回详细说明哪些人与哪些人有联系的记录。

我需要输出:person1 连接到 person2 连接到 person3 等。

我怎样才能开始这项任务?

4

1 回答 1

3

好的,我假设您的意思是要找出 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 表关系”即可。

希望这对您的问题有所帮助。

祝你有个好的一天。

于 2010-03-29T08:26:35.163 回答