1

Messageメッセージとその応答を格納するmySQLでこのようなテーブルを作成するにはどうすればよいですか?

ここに画像の説明を入力してください

4

2 に答える 2

7

あなたはこれを試すことができます:

create table messages (
    message_id int primary key,
    response_to int null references messages(message_id), -- self relationship
    user_from int not null references users(user_id),
    user_to int not null references users(user_id),
    content varchar(200) not null
);

最初のメッセージには、null値unresponse_toフィールドがあります。

補足として、「メッセージ」ではなく「会話」を格納することを計画している場合は、会話のJSONまたはXML表現を格納するためのCLOB(文字ラージオブジェクト)を含むプレーンテーブルを検討してください。クエリが高速化されます(個々のメッセージではなく、会話全体を一度に読むことを常に計画している場合)。

于 2013-03-25T10:23:07.143 に答える
1

元のmessageIdを参照するforeign_keyを作成できますが、元のメッセージにはこのキーが設定されていないため、null値を許可することを忘れないでください。

ただし、スレッドテーブルを用意し、メッセージテーブルにthreadIdを保存して、どのメッセージがどのスレッドに属しているかを照合できるようにすることは、より良いアプローチではありません。投稿時間は、応答メッセージを識別するための優れた指標になる可能性があります。

于 2013-03-25T10:23:35.680 に答える