
业务需要在消息中心处以不同消息模板展示给用户,比如有帖子被评论、评论被回复、被 @等等。
需要显示:
Ganxiaozhe 回复了你在 XXX 的评论 [查看]
问题:如何设计消息数据表比较优雅(最优数据读写以及查询的方案)
目前数据表设计如下
| 字段 | 类型 | | :-------- | ------------ | | id | int(11) | | status | tinyint(4) | | name | varchar(16) | | email | varchar(256) | | password | text | | avatar | varchar(255) | | 字段 | 类型 | | :------ | :----------- | | id | int(11) | | sort | varchar(32) | | attr | varchar(255) | | type | tinyint(4) | | uid | int(11) | | comment | text | | time | datetime | | ppid | int(11) | | pid | int(11) | | puid | int(11) | | 字段 | 类型 | | :-------- | :--------- | | ID | int(11) | | TYPE | tinyint(4) | | STATUS | tinyint(4) | | UID | int(11) | | CRT_ID | int(11) | | CTR_DT | int(11) | | SOURCE_ID | int(11) | 目前实现为 PHP 后端取得 MySQL 数据后,以数组对象传给前端(一次取 20 条最新消息)。依靠 user_msg 中的 TYPE 判断使用哪个模板类型,若为评论(1),那么则通过 CRT_ID 向 user_basic 取得用户名和头像。再根据 SOURCE_ID 向 comment 取得具体页面及内容。
问题是这样需要递归多次请求,以及如果后面需追加模板也比较繁琐,比如问答的:
Ganxiaozhe 回答了你提出的问题 XXX [查看]
在之前的业务我是直接将信息写在了数据库里,但感觉有点占空间,所以这次准备采用模板的方法。不知道这样是否是实现的最佳方案,非常期待大家的回答,还请不吝赐教!
1 gxz OP 在我一目十行之下看了一些 MySQL 性能的书籍之后,问题暂时解决惹。 现在消息显示根据不同模板( TYPE 值)方式如: > XXX 回复了你的评论 > (评论前 90 字内容) > [查看] XXX 根据 `CRT_UID` 在 `user_basic` 中取得用户名和头像, 回复了你的评论 根据 `TYPE` 得到, (评论前 90 字内容)为 `SRE_DETAIL` 字段 查看操作根据需要通过 `SRE_ID` 在指定表中取得数据。( TYPE ) msg 表如下: ``` | 名字 | 类型 | 注释 | | :--------- | :----------- | :------- | | ID | int(11) | | | TYPE | tinyint(4) | | | STATUS | tinyint(4) | | | UID | int(11) | 接收者 | | SRE_ID | int(11) | 来源 ID | | SRE_DETAIL | varchar(255) | 来源标题 | | CRT_UID | int(11) | 创建人 | | CRT_DT | datetime | 创建时间 | ``` |