[前][次][番号順一覧][スレッド一覧]

mysql:6226

From: "kosugi" <"kosugi" <kosugi@xxxxxxxxxx>>
Date: Thu, 19 Sep 2002 06:39:43 +0900
Subject: [mysql 06226] Re: スレッド式掲示板のテーブル構造について

小杉です。

自己レス:訂正です

  ID    | rootNo |  oyaNo  | treeString(char)
---------------------------
 354   |  354   |       0      |   1
 355   |  354   |   354      |    11
 356   |  354   |   355      |    111
 400   |  354   |   356      |    1111
 357   |  354   |   354      |    12
 358   |  354   |   357      |    121
 401   |  354   |   358      |    1211
 502   |  354   |   357      |    122
 506   |  354   |   502      |    1221
 508   |  354   |   506      |    12211
snip...
 805   |  354   |   708      |    139
 806   |  354   |   805      |    1391
 807   |  354   |   708      |    13a

treeStringは一桁で順序を示す順序キーです。桁上がり
の防止と、正しくソートするために、文字列型を使って
います。その分、次の文字列をプログラムで与えなけれ
ばなりません。(配列+順序)

たとえば、502は357に対するレスですが、すでに358で
レスがついているため、357のtreeString の12に2を付
け加えて、122をtreeStringとします。
805は、708に対する9番目のレス。806は805に対するレ
ス。807は708に対する10番目のレスです。
ちなみに、708は書いていませんが354に対する3番目の
レスであることがわかります。

このテーブルでは下記のようなことが簡単に実現できま
す。
rootNoでスレッド全体を取り出す
oyaNoで特定のメッセージについた直レスを取り出す。
treeStringで特定のメッセージ以下のtreeをすべて取り
出す。
個々のメッセージはスレrootと直親を持つ
treeが深くなったときは、任意の階層まででレプリケー
トできる。

文字列を利用したためのレス数の制限は、前記した例外
処理でも回避できますが、フラグフィールドを別に設け
ればtreeをネストして利用することも出来ます。
また、treeStingは、1桁で数値とアルファベットを利用
して35までの順序をつけられますが、二桁区切りにすれ
ば、35*35=1225までの順序を与えられます。


----- Original Message -----
From: "kosugi" <kosugi@xxxxxxxxxx>
To: <ml@xxxxxxxxxx>
Sent: Wednesday, September 18, 2002 10:10 PM
Subject: [mysql 06221] Re: スレッド式掲示板のテー
ブル構造について


> 小杉です
>
> 掲示板を作るときに注意するのは登録時よりも閲覧時
にスピードが要求される点では
> ないでしょうか?
> 個々のメッセージがoyanoを持って再帰的に呼び出す
方法よりも、メッセージの登録
> 時にツリー構造を持たせる方法を提案します。(問題
はいくつかありますが)
>
> 任意のレスメッセージはルートメッセージとしての
oyanoを持ちます。
> 問題は再帰的方法以外に、ツリー構造を再現する方法
です。
>
> 下記のようなメッセージ構造があったとすると、
>
> ---------(1)   
>    ---------(2)
>      ---------(3)
>        ---------(4)
>    ---------(5)
>      ---------(6)
>        ---------(7)
>      ---------(8)
>        ---------(9)
>          ---------(10)
> それぞれを下記のようにtreeStringを与えて登録する
>   ID    |  oyano  | treeString(char)
> ---------------------------
>  354   |    354   |     1
>  355   |    354   |     1.1
>  356   |    354   |     1.1.1
>  400   |    354   |     1.1.1.1
>  357   |    354   |     1.2
>  358   |    354   |     1.2.1
>  401   |    354   |     1.2.1.1
>  502   |    354   |     1.2.2
>  506   |    354   |     1.2.2.1
>  508   |    354   |     1.2.2.1.1
>
> /*  .dotは不要です・・
>
> この方法ですと、oyano 354で呼び出されたレコード
をtreeStringでソートすること
> により、上記の順で取り出せます。(数値型や
autoincrementだとこのようにはソー
> トされません)
>
> 基本的な考え方は以上ですが、
> 9の次はa,b,c・・・とつづけて、zでエラーを返す。
> charサイズの限界でエラーを返す
> という例外処理が必要になります。
> charの桁数までしかレスがつけられないのでは実用的
ではないため、
> childTreeStringフィールドをいくつか作っておき、
限界が発生したところで
> childTreeStringに移行します。
> これで掲示板としてはまっとうなレスの数を維持でき
ます。
>
> いかがでしょう?
>
>
> --
> Tomoaki Kosugi
> kosugi@xxxxxxxxxx
>
>
>
>
>
>
>
>
>
>
>



[前][次][番号順一覧][スレッド一覧]

      6207 2002-09-18 19:27 [Tybalt of Capulet <i] スレッド式掲示板のテーブル構造について  
      6208 2002-09-18 19:36 ┣[荒井 哲三 <tetsumi.]                                       
      6209 2002-09-18 19:45 ┣[Yuya.Nishida. <yuya@]                                       
      6210 2002-09-18 20:23 ┃┗[Tybalt of Capulet <i]                                     
      6211 2002-09-18 20:33 ┃ ┣[Tomohiro 'Tomo-p' KA]                                   
      6213 2002-09-18 20:41 ┃ ┣["Kaigai Kohei" <kaig]                                   
      6214 2002-09-18 20:49 ┃ ┣[Yuya.Nishida. <yuya@]                                   
      6216 2002-09-18 20:54 ┃ ┗[Takanori Tobe <taka@]                                   
      6212 2002-09-18 20:37 ┣[NAGASAWA Teruo <ml@x]                                       
      6217 2002-09-18 21:16 ┣[HAMAI Kyoichi <k-ham]                                       
      6225 2002-09-19 03:20 ┃┗["umemura" <shigemi.u]                                     
      6218 2002-09-18 21:17 ┣["KAWAI,Takanori" <GC]                                       
      6219 2002-09-18 21:33 ┃┗[Tomohiro 'Tomo-p' KA]                                     
      6220 2002-09-18 22:02 ┃ ┗["KAWAI,Takanori" <GC]                                   
      6222 2002-09-18 22:14 ┃  ┣["黒木 玲" <kuroki434]                                 
      6223 2002-09-19 01:02 ┃  ┃┗[Tybalt of Capulet <i]                               
      6224 2002-09-19 03:16 ┃  ┃ ┣[<rio-t@xxxxxxxxxx>  ]                             
      6227 2002-09-19 07:15 ┃  ┃ ┃┣["kosugi" <kosugi@xxx]                           
      6228 2002-09-19 09:32 ┃  ┃ ┃┃┗["Takashi Yamashita" ]                         
      6229 2002-09-19 10:06 ┃  ┃ ┃┗[Tybalt of Capulet <i]                           
      6230 2002-09-19 10:21 ┃  ┃ ┃ ┗["黒木 玲" <kuroki434]                         
      6232 2002-09-19 11:01 ┃  ┃ ┃  ┗[Toyoshima Hiroshi <t]                       
      6233 2002-09-19 11:33 ┃  ┃ ┃   ┗[Tomohiro 'Tomo-p' KA]                     
      6236 2002-09-19 12:26 ┃  ┃ ┃    ┗[Toyoshima Hiroshi <t]                   
      6237 2002-09-19 12:52 ┃  ┃ ┃     ┗[HAMAI Kyoichi <k-ham]                 
      6231 2002-09-19 10:46 ┃  ┃ ┗["KAWAI,Takanori" <GC]                             
      6234 2002-09-19 12:18 ┃  ┗[<n.futami@xxxxxxxxxx]                                 
      6238 2002-09-19 13:52 ┃   ┣["kosugi" <kosugi@xxx]                               
      6247 2002-09-20 11:50 ┃   ┗[Tybalt of Capulet <i]                               
      6248 2002-09-20 12:53 ┃    ┣[Yuya.Nishida. <yuya@]                             
      6249 2002-09-20 13:21 ┃    ┃┗["KAWAI,Takanori" <GC]                           
      6252 2002-09-20 13:59 ┃    ┃ ┗[Yuya.Nishida. <yuya@]                         
      6251 2002-09-20 13:51 ┃    ┣["KAWAI,Takanori" <GC]                             
      6255 2002-09-20 22:53 ┃    ┗["kosugi" <kosugi@xxx]                             
      6257 2002-09-21 02:31 ┃     ┗[Tybalt of Capulet <i]                           
      6258 2002-09-21 05:18 ┃      ┗["kosugi" <kosugi@xxx]                         
      6259 2002-09-21 08:18 ┃       ┣["黒木 玲" <kuroki434]                       
      6260 2002-09-21 09:40 ┃       ┗["KAWAI,Takanori" <GC]                       
      6261 2002-09-21 11:16 ┃        ┗["kosugi" <kosugi@xxx]                     
      6262 2002-09-21 11:46 ┃         ┗["kosugi" <kosugi@xxx]                   
      6221 2002-09-18 22:10 ┣["kosugi" <kosugi@xxx]                                       
->    6226 2002-09-19 06:39 ┃┗["kosugi" <kosugi@xxx]                                     
      6235 2002-09-19 12:25 ┣[You2 <ml-mysql@xxxxx]                                       
      6239 2002-09-19 15:01 ┗[平松 幸治 <kouji@xx] OR と AND を複数使った検索で・・・    
      6240 2002-09-19 15:09  ┣[平松 幸治 <kouji@xx]                                     
      6243 2002-09-19 15:35  ┃┗[平松 幸治 <kouji@xx]                                   
      6244 2002-09-19 16:34  ┃ ┗["Takashi Yamashita" ]                                 
      6250 2002-09-20 13:40  ┃  ┗[平松 幸治 <kouji@xx]                               
      6241 2002-09-19 15:16  ┣[SAKIMURA Noriyuki <s]                                     
      6242 2002-09-19 15:16  ┗[Daiju Azuma <daiju_a]