多个分离的顺序ID

时间:2017-05-01 01:23:28

标签: sql postgresql database-design

我正在构建一个图像板/论坛引擎。 按照设计,子论坛中的每个帖子/帖子都有一个顺序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

1 个答案:

答案 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

如果您有任何问题或意见,请随时发表评论。