午後すべて。MySQLイベントベースのサポートチケットシステム
私は最近、イベントベースのサポートチケットシステムに取り組んでいますが、私は多くの問題に遭遇しました。問題はデータベース構造だと思います。チケットの変更がステージたびだから、新しい行が、それはに移動した段階ticket_eventsテーブルの指定、およびstage_idフィールドに追加され
create table tickets (
ticket_id int not null primary key auto_increment,
stage_id int not null default 0,
name varchar(255) not null default ''
/* etc... */
);
create table ticket_events (
event_id int not null primary key auto_increment,
ticket_id int not null,
date datetime,
stage_id
);
create table stages (
stage_id int not null primary key auto_increment,
name varchar(255)
);
:それは少しこのようになります瞬間
チケットテーブルは新しいステージで更新されます。
この問題は、チケットが現在のステージがticket.stage_idとticket_eventsテーブルの最新のレコードの両方で定義されているため、データベースの正規化ルールが破損するという問題があります。いつの時点でも未払いのチケットの数を示すレポートを書く私の試みで、私はそれがなぜこのようなのかを発見した。イベントテーブルから現在のステージをすばやく取得するために、あらゆる種類のSQLを取得することは非常に難しいようです。
この非常に役立つページ(http://kristiannielsen.livejournal.com/6745.html)で、オプション2を使用して合理的に高速なクエリを作成することができましたが、私は問題を抱えていました。
現在のデータでは、event_idが日付に対して常に昇順で実行されるわけではありません。さらに、特定の自動化された処理スクリプトのために、1つのチケットが正確に同じ日付の2つのイベントを持つ可能性が非常に高い。これは、イベントテーブルを使用しようとするクエリが、サブクエリやグループ化ではほとんど不可能な「日付、イベントID順」を必要とすることを意味します。
誰も私がこれらの問題を克服する方法についてアドバイスをいただけますか?イベントの順序を定義する良い方法はありますか?
多くのありがとうございます。 Simon
編集:特に、特定の時点でチケットのステージを効率的に取得する方法に焦点を当てたいと思います。異なるデータベース構造を使用するソリューションの例も高く評価されます。 – SystemParadox