0

有人可以向我展示用户注册系统的数据模型,哪些用户可以互相收藏或加入黑名单(禁止)?我正在寻找最好的方法,但直到现在没有人很好地回答我的问题。最好的方法是我的意思是我们参与编程的人数较少。

到目前为止我的用户表

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

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

我认为它必须是一对多的关系,但我应该如何设计这个?

4

2 回答 2

2

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

表 id(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。然后,您将检索当前用户与他列入黑名单或添加为收藏的每个用户之间的每个连接。

于 2012-12-01T15:14:07.940 回答
2

寻找现成数据模型的一个地方是 databaseanswers.com。这是对他们的数据模型进行分类的页面。

http://www.databaseanswers.org/data_models/index.htm

有一个关于社交网站的部分,但它非常稀疏。

于 2012-12-01T18:14:48.837 回答