私は内部に会話システムが組み込まれたGWTアプリケーションを持っています。この会話システムには、私は以下のDB構造を持っています。会話のフィルタリングと削除をサポートするようにDB構造を調整する
create table if not exists conversation(
id int(11) PRIMARY KEY AUTO_INCREMENT,
user_one varchar(25) NOT NULL,
user_two varchar(25) NOT NULL,
subject varchar(15) NOT NULL,
ip varchar(30) DEFAULT NULL,
date varchar(50) NOT NULL,
filter varchar(20) DEFAULT 'Inbox'
);
create table if not exists conversation_reply(
id int(11) PRIMARY KEY AUTO_INCREMENT,
reply text,
username varchar(25) NOT NULL,
ip varchar(30) DEFAULT NULL,
date varchar(50) NOT NULL,
conv_id_fk int(11) NOT NULL REFERENCES conversation(id)
);
私は、会話を受信トレイからアーカイブまたは重要なものに移動できるフィルタリングメカニズムを実装しました。私は、フィルタを更新クエリを実行するときしかし:
update conversation set filter=? where id=?;
をGUIの両方がusers..thereに同じであるので、それは、user_oneとuser_twoには、この両方を更新するという点でuser_oneとuser_twoの間に違いはありませんGUIの外観だから、すべての会話を取得した、選択は次のようになります。
select * from conversation where (user_one=? or user_two=?) and filter=? order by id desc
は、どのように私は私のように移動したときに、私が言ったようので、正常に動作(移動や削除)上記の操作を行うために、DBの構造を変更する必要がありますuser_oneの場合は、user_twoにも移動します。会話を削除すると、他の会話も削除されます。
提案?
ありがとうございます。
最も簡単な解決策:2番目のフィルタフィールドを会話テーブルに追加します。 – Shadow