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

来源:互联网 发布:win10查看电脑mac地址 编辑:程序博客网 时间:2024/05/17 22:02

之后做项目会有社交模块,所以就先把这块搞一下。


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


说说表(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,获取该一级评论下的所有评论即可。





0 0
原创粉丝点击