在一个多用户系统中,用户A发布ugc时,一种是全部好友可见, 一种设置某些好友(比如B、C)可见, 某些好友不可见(比如E、F两人),那么
A可见的UGC总数是100,列表是全部UGC
B可见的UGC总数是90,列表内容是A的公开ugc和B可见UGC。
E看到的UGC总数是50,列表内容是A的公开ugc和E可见UGC。
看到的列表也是不一样的。
那么在php+mysql中,该如何处理相关的逻辑,表设计如何?
在一个多用户系统中,用户A发布ugc时,一种是全部好友可见, 一种设置某些好友(比如B、C)可见, 某些好友不可见(比如E、F两人),那么
A可见的UGC总数是100,列表是全部UGC
B可见的UGC总数是90,列表内容是A的公开ugc和B可见UGC。
E看到的UGC总数是50,列表内容是A的公开ugc和E可见UGC。
看到的列表也是不一样的。
那么在php+mysql中,该如何处理相关的逻辑,表设计如何?
假设表 post 为用户发布的内容,里面有个标明类型的字段 privacy,值为
0 - 'public'(完全公开) 1 - 'protected'(指定可见)
新建一张表 noBlock,用来记录指定可见的 Post 和可见用户的关系。如:
id postId userId
假设场景为 B 登录,那么他所看的内容读取顺序即为:
1.读取所有 privacy 值为 0 的 post 数据。
2.联合查询 post 和 noBlock 表,读取 noBlock 表中 userId 为 Bid 的数据。
大概写个 mysql 的语句(举例为主,需要测试):
(select * from post where privacy = 0) union (select * from post left join noBlock on post.id = noBlock.postId where post.privacy = 1 and noBlock.userId = Bid)
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号