论坛回复贴中,”楼“的概念在数据库表中如何设计?

有以下几个表:

Topic { topicID, userID, content, ... }:用户发表的主题贴表
Reply { replyID, userID, topicID, content, ... }:用户回复贴表

现在我想要扩展 Reply 表,让它能够记录每一个回复贴对于其主题贴是第几楼,假设我用 layer 这个列来表示

就产生以下两个问题:

  1. 那怎么在产生新的回复的时候根据已有 楼的高度 来设定这个新的回复贴的layer值呢?如果每次都要读取当前主题帖的楼高度再来设定会不会效率太低?
  2. 如果存在较高效的办法可以设定layer,当并发量大时,怎么解决竞争条件呢?
阅读 5.8k
4 个回答

新增一个楼高字段、 插入数据的时候、楼高查询本主题的最大值 ,然后加1, 如此解决竞争,并发再大也不能是同一时刻插入。

空间换时间。在回复表中添加一个楼层的字段不可以吗?

新手上路,请多包涵

2L的设计,如果中间有哪楼删除了 是不是要更新一片?

新手上路,请多包涵

把某个主题帖的回复数据拿出来的时候根据添加的时间顺序倒序

再看一下每一页的数据量是多少,手动计算一下分页并加多一个 layer 的参数来保存排序过后的顺序ID就当做是给前端的楼层ID数。

推荐问题
logo
101 新手上路
子站问答
访问
宣传栏