我正在构建一个图像板/论坛引擎。 按照设计,子论坛中的每个帖子/帖子都有一个顺序ID,比如Github的问题,其中每个问题ID都绑定到它的存储库:
在Games子论坛上创建新帖子时,你的帖子会有ID 1,如果有人回复,其帖子(回复)ID就是2等等......
+----+--------+------------+
| id | parent | board |
+----+--------+------------+
| 1 | null | games |
| 2 | null | games |
| 3 | 1 | games |
| 1 | null | music |
| 1 | null | television |
| 2 | 1 | music |
+----+--------+------------+
我已经看到一些为每个新的子论坛创建新表的实现,但我不喜欢这种方法,因为我必须知道建议中的所有子论坛才能进行查询。 / p>
是否有最好的"方法,像Github那样回购问题吗?
PS:我将使用Postgresql
答案 0 :(得分:0)
启动线程时,创建一个新的threadID
并将属于该线程的所有消息都给予此ID。同时为线程(包括第一个)中的每条消息提供递增messageID
。例如......
+----------+-----------+------------+
| threadID | messageID | board |
+----------+-----------+------------+
| 1 | 1 | games |
| 1 | 2 | games |
| 1 | 3 | games |
| 2 | 1 | music |
| 2 | 2 | music |
| 1 | 4 | games |
| 3 | 1 | television |
+----------+-----------+------------+
开始新主题时,将threadID
设置为MAX( threadID ) + 1
并将messageID
设置为1
的任意值。同样,在继续线程时,将threadID
设置为线程的现有threadID
值,将messageID
设置为MAX( messageID ) + 1
。
如果您有任何问题或意见,请随时发表评论。