存储MySql数据库中人员之间的连接

时间:2010-03-29 07:36:09

标签: php mysql relational-database

我想创建一个数据库,用于存储人与人之间的链接。

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

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

如何开始执行此任务?

1 个答案:

答案 0 :(得分:3)

好的,我假设您想要找出MySQL数据库中某些条目之间的关系。在我看来,理想的方法是让你的用户表在这种情况下我们称之为tblusers。我相信你会有很多专栏,但为了这个连接,我们可以为与其他用户的关系命名一个列'ucons'。

您可能或可能不知道,users表将有一个主键列,在这种情况下,我将其命名为'uid'。这些主键最终用于定位您的用户条目,因为每个用户都在主键列“uid”中收到唯一ID。

假设我们有三个用户:user1,user2,user3,他们拥有以下用户ID:

user1 - > 1

user2 - > 2

user3 - > 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',一个用户'0'用于tblusers,因此用户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表关系”。

希望这能为你的问题提供一些启示。

有一个好的。

相关问题