<!-- -*- mode:text coding:euc-jp -*-
   $FML: db.sgml,v 1.3 2003/05/31 08:51:10 fukachan Exp $
-->

<sect1 id="threadtrack.db">
	<title>
	スレッドシステムのデータベース
	</title>

<para>
以下のようなデータベース群から
スレッドシステムのデータベースは構成されています。
<screen>
ファイル名      内容の例
----------------------------------------------
status		open / close
ml_name		elena
article_id	100
thread_id	elena/100
from		ヘッダの From: (めーる＠アドレスの形式)
sender		ヘッダの Sender: (めーる＠アドレスの形式)
x_sender	ヘッダの X-Sender: (めーる＠アドレスの形式)
</screen>
たとえば、BSD 上であれば 
status.db といった .db のファイル群のセットとなるわけです。
</para>

<para>
これらのファイル群は各ＭＬのホームディレクトリではなく、
<screen>
$ml_home_prefix/@db@/ＭＬ名/

例
/var/spool/ml/@db@/ＭＬ名/
</screen>
というディレクトリに作られています。
これは、(特定のドメイン内
<footnote>
<para>
逆にいえば、現在、ドメインを超えたクロスポストは無視しているわけですね。
まぁ、あまりそういう要求は無いと思いますけど…
</para>
</footnote>
にある)ＭＬが話題を相互に参照しあう運用が想定されています。
たとえば
「support/100 の記事は sales/98 を出発点としている」
といった情報を自動的にＭＬが教える機能を実装するためです
(残念ながら、現在のところは未実装です)。
</para>

<para>
スレッドデータベースは、
おもに
article_id
か
thread_id
を primary key にしています。
具体的に書くと以下のようになります。
<screen>
[thread .db]

	aritcle_id	=&gt;	thread_id

[article .db]

	thread_id	=&gt;	article_ids

	Example:	elena/100	=&gt; 100 101 103 105

[date .db]

	aritcle_id	=&gt;	unix_time

[sender .db]

	article_id	=&gt;	from

[message_id .db]

	mesasge_id	=&gt;	thread_id

[status .db]

	thread_id	=&gt;	status

[index .db]

	thread_id	=&gt;	"$ml_name " *

	Example: support/100 =&gt; support sales
</screen>
</para>

</sect1>
