<!--
   $FML: db.sgml,v 1.2 2003/04/15 14:51:44 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>
/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>
