0

ITに関する問題のチケットシステムを作成しています。私は次の表を持っています:

id                          
userID                                  
priority                                        
details                              
rank                                
conversation                                
order                                   
status                                  
ts

私が必要としているのは、IT部門とユーザーの間のやり取りを会話として表示できるようにすることです。だから私は2つの列conversationとを持っていると思いますorder。列conversationは一意の識別子(番号またはテキスト)であり、順序は行が変換で再生される順序(1、2、3など)を示します。

私の質問はこれです:

  1. これはそれについて行くための最良の方法ですか?
  2. 各会話をどのように識別しますか?

ランダムなPHP5文字のテキストなどを生成するか、番号を付けることができ、各ユーザーは会話番号1、番号2などを持ちます。しかし、それを行った場合、ユーザーが使用する次の番号をどのように見つけることができますか。 mySQL?

どんな考えや提案も役に立ちます、ありがとう。

4

3 に答える 3

2

おそらく、会話を一意のIDを持つ別のテーブルに保存し、そのIDをチケットテーブルにリンクします。

この他のテーブルは、「前後」のシーケンスの自動増分ID、グローバル会話キー(チケットテーブルに格納されている)、および会話(行)自体で構成されている可能性があります。

また、誰が何を言ったかが明確になるように、サポート技術者のユーザー名とサポート対象者を保存することをお勧めします。

わかりやすくするためにタイムスタンプを追加することもできます。

于 2012-07-30T11:40:13.420 に答える
1

私は@Debockが言及したような別のテーブルに行きます。ただし、構造は少し異なります。

create table ticket_conversation (
    id                     int not null auto_increment primary key
,   ticket_id              int not null
,   user_id                int not null
,   conversation_text      text
,   conversation_timestamp timestamp default current_timestamp
,   foreign key ticket_id references ticket(id) 
,   foreign key user_id references user(id)
,   key(ticked_id, conversation_timestamp)
)

タイムスタンプを使用すると、コメントが作成された日時を追跡できます。タイムスタンプで並べ替えると、コメントの順序がわかります。

于 2012-07-30T11:48:21.617 に答える
0

SQLテーブルには通常、主キーと呼ばれる一意の識別子を格納する列があります。主キーは、自動生成された整数にすることができます。したがって、PHPで一意の識別子を作成しようとすることに煩わされる必要はありません。

私は、データベースとそれらがどのように機能するかについてのいくつかの集中的な読書があなたの近い将来にあるべきであることを提案します。単なる死すべき者のためのデータベース設計を試してみてください。それはあなたに何が可能であるか、そしてデータベース設計の観点から問題に取り組む方法の両方についての良い基礎を与えるでしょう。

于 2012-07-30T11:44:37.357 に答える