Starbug1のテーブル定義
2007/11/14
http://d.hatena.ne.jp/smeghead/20071105/backtostart で、パフォーマンス的に破綻したStarbug1の再構築を進めていきます。
「良いデザインは再デザインだ。」
結構仕事も忙しいので、いつもどおりボチボチ進めます。id:rayfillさんの助言とか、影舞のソースを参考にして作りなおすことにしたので、今考えているテーブルレイアウトを書いてみました。
プロジェクト情報(project)
プロジェクトの情報を格納する。環境設定も含まれる。
| カラム名 | 型 | 属性 |
|---|---|---|
| 名前(name) | text | |
| 説明(description) | text | |
| home_url | text | |
| host_name | text | |
| smtp_server | text | |
| smtp_port | integer | |
| ml_address | text | |
| admin_address | text |
項目種別(element_type)
チケットの項目(件名、投稿者、概要、状態。。。)を格納する。カスタマイズ項目も全て同等で扱うため、項目種別テーブルのレコードとなる。
| カラム名 | 型 | 属性 |
|---|---|---|
| id | integer | not null primary key |
| type | integer | |
| チケット属性(ticket_property) | integer | |
| 返信属性(reply_property) | integer | not null |
| 必須項目(required) | integer | not null |
| 項目名(element_name) | text | |
| 説明(description) | text | |
| デフォルト値(default) | text | |
| 一覧表示(display_in_list) | integer | not null |
| 並び順(sort) | integer | not null |
選択肢(list_item)
コンボボックスなどの項目の選択肢を格納する。
| カラム名 | 型 | 属性 |
|---|---|---|
| id | integer | not null primary key |
| 項目種別ID(element_type_id) | integer | |
| 名前(name) | text | |
| クローズ(close) | integer | not null |
| 並び順(sort) | integer | not null |
チケット(ticket)
チケット1つにつき、1レコードとなる。
| カラム名 | 型 | 属性 |
|---|---|---|
| id | integer | not null primary key |
| 最初の投稿(original_message_id) | integer | not null |
| 最新の投稿(last_message_id) | integer | not null |
| 登録日(registerdate) | text | |
| クローズ(closed) | integer | not null |
| 削除(deleted) | integer | not null |
メッセージ(massage)
1つの投稿および返信が、1レコードとなる。
| カラム名 | 型 | 属性 |
|---|---|---|
| id | integer | not null primary key |
| チケットID(ticket_id) | integer | not null |
| field1 | text | |
| field2 | text | |
| field3 | text | |
| field4 | text | |
| field5 | text | |
| 登録日(registerdate) | text |
field\d というカラムを動的に増やすようにする。
添付ファイル(element_file)
| カラム名 | 型 | 属性 |
|---|---|---|
| id | integer | not null primary key |
| メッセージID(message_id) | integer | not null |
| カラム名(column_name) | text | not null |
| ファイル名(filename) | text | |
| サイズ(size) | integer | |
| コンテントタイプ(content_type) | text | |
| 添付ファイル本体(content) | blob |
次は、トリガが有効な場面があるか、viewが有効な場面があるかを考えてみます。