2017-05-01 8 views
0

イメージボード/フォーラムエンジンを構築しています。 すべての問題のIDがそれにバインドされているのGithubの問題は、リポジトリのように設計することにより、サブフォーラム内のすべてのスレッド/ポストは、シーケンシャルなIDを持っている:ゲームサブフォーラムで新しいスレッドを作成する場合複数の連続した一連のID

、あなた誰かが返信場合、スレッドは、私はすべての新しいサブ用の新しいテーブルを作成し、いくつかの実装を見てきましたそのポスト(返信)IDが2であるというように...

+----+--------+------------+ 
| id | parent | board | 
+----+--------+------------+ 
| 1 | null | games  | 
| 2 | null | games  | 
| 3 | 1  | games  | 
| 1 | null | music  | 
| 1 | null | television | 
| 2 | 1  | music  | 
+----+--------+------------+ 

なり、ID 1を持っているでしょう私は質問をするためにすべてのサブフォーラムを知っておく必要があるので、私はこのアプローチが嫌いです。

Githubのようなレポの問題に「最良の」アプローチがありますか?

PS:私はスレッドを開始すると、新しいthreadIDを作成し、このスレッドには、このIDに属するすべてのメッセージを与える、Postgresqlの

+0

2番目のレコードに 'parent'の値が '1'であってはなりませんか? – toonice

+0

スレッドを開始するときに、新しい 'threadID'を作成し、このスレッドに属するすべてのメッセージにこのIDを渡します。スレッド内の各メッセージ(最初のメッセージを含む)にインクリメントする 'messageID'も与えます。 – toonice

+0

返信はサブスレッドの先頭にもなりますか? – toonice

答えて

0

を使用するつもりです。また、スレッド内の各メッセージ(最初のメッセージを含む)には、インクリメントの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 | 
+----------+-----------+------------+ 

は、MAX(threadID) + 1threadIDを設定し、1の任意の値にmessageIDを設定します。同様に、スレッドを続行する場合は、threadIDをスレッドの既存のthreadIDの値に、messageIDMAX(messageID) + 1の値に設定します。

ご不明な点がございましたら、お気軽にコメントを投稿してください。

+0

しかし、threadID autoincrementをそのボードにバインドするにはどうすればよいですか? – allanj

関連する問題