您的位置:首页 > 其它

实现类似空间说说与评论存储表的结构与测试逻辑

2016-03-19 10:07 281 查看
之后做项目会有社交模块,所以就先把这块搞一下。

本篇文章要解决的问题是:一个说说下面,某一组评论有三个及三个以上的人参与的情况下,从数据库中输出能够正确表达评论人之间的逻辑关系,并且保证时间的正确的先后顺序。

说说表(saysay):

id:主键、无意义

owner:说说的主人

sendtime:发布时间

content:说说内容

做了三个测试,前两个失败了,最后一个成功了。三个测试的不同之处只是在于评论的存储内容和结构。

另说明‘一级评论’的含义:即直接评论说说内容的评论称为一级评论

测试一(失败):

评论表(comments)

id:主键、无意义

owner:该评论的发出者

sendtime:评论的时间

content:评论的内容

ssid:是哪条说说的下面的评论

pid:回复的(那个人的id),<该属性值为零时代表一级评论>

该测试的缺陷是:在采用递归的方法遍历出一组评论的情况下,它能够保证评论人之间的逻辑的正确性,但是由于它是深度优先遍历的,所以时间就不能正确的显示。

测试二(失败):

评论表(comments)

id:主键、无意义

owner:该评论的发出者

sendtime:评论的时间

content:评论的内容

ssid:是哪条说说的下面的评论

pid:一级评论的id,<该属性值为零时代表一级评论>

该测试的缺陷:在获取说说的所有评论之后,在每输出一条一级评论之后,就输出该一级评论下的所有评论。它能够保证输出的评论时间的先后顺序,但是评论人之间的逻辑会出现不匹配的情况。

测试三(成功):

评论表(comments)

id:主键、无意义

owner:该评论的发出者

toname: 该评论是回复哪个人的

sendtime:评论的时间

content:评论的内容

ssid:是哪条说说的下面的评论

pid:一级评论的id(值为0 代表一级评论)

该测试添加了一个属性toname(即该评论是回复哪个人的)。可以正确的输出评论人之间的逻辑关系和时间的的正确顺序。

该测试java代码的逻辑:

1、获取说说内容之后,得到说说的id

2、根据说说的id,获取该说说下的评论(按照发布时间递增的顺序查询),并且输出一级评论

3、在每输出一条一级评论之后,获取该一级评论的id,获取该一级评论下的所有评论即可。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: