mysql - 具有黑名单和收藏夹的用户注册系统的数据模型?

标签 mysql database-design

有人可以告诉我用户注册系统的数据模型,用户可以收藏或黑名单(禁止)彼此吗?我正在寻找最好的方法,但直到现在都没有人很好地回答我的问题。最好的方法我的意思是我们加入的人较少用于编程。

到目前为止我的用户表

uid(pk) | name | family | blah blah blah ..

我只是不知道如何设计这个我们只有一个或更少加入的收藏夹和黑名单?

我认为这一定是一对多的关系,但我应该如何设计呢?

最佳答案

你可以有第二个表列出黑名单和/或收藏夹

表格 编号(pk) | userid_src(fk) | userid_dst(fk) |类型

如果用户 A 将用户 B 列入黑名单,然后用户 A 收藏了用户 C,并且用户 B 和 C 相互收藏,您将拥有此代码,其中 A 是 id 1,B id 2 和 C id 3

id(pk) | userid_src(fk) | userid_dst(fk) | type
1      | 1              | 2              | blacklist
2      | 1              | 3              | favourite
3      | 2              | 3              | favourite
4      | 3              | 2              | favourite

编辑:检索每个用户的信息:

SELECT * from users
LEFT JOIN users_connections as con ON users.uid = con.userid_src
LEFT JOIN users as userCon ON userCon.uid = con.userid_dst
WHERE users.id = XXX

XXX 将是您当前用户的 ID。然后,您将检索当前用户与他列入黑名单或添加为收藏夹的每个用户之间的每个连接。

关于mysql - 具有黑名单和收藏夹的用户注册系统的数据模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13660708/

相关文章:

android - 未创建 SQLite 数据库

sql - 创建用于存储高尔夫分数的可扩展数据库模式

mysql - MySQL 是如何存储索引的?

mysql - 我如何定期终止 "too long"有效的 MySQL 查询?

mysql - 带有参数的 UNIX_TIMESTAMP() 会破坏查询缓存吗?

mysql - 数据库设计-自定义属性表- "relate"实体表

sql - 在关系数据库中存储矩阵

SQL:帮我优化 mySQL

mysql - 无法 Access 表远程 MySQL 数据库

php - Ajax 和 PHP 提交