2017-05-17 12 views
0

私はチャットを作成しています。チャットは、ユーザーが他のユーザーと会話を開始できる場所です。チャットの会話を追跡するテーブルにユーザーを追加するための最良の方法

私はこれらの列を持つテーブル内の各会話を格納しています:

  • conversations_id
  • conversation_starter
  • conversation_receiver(これは受信するユーザである(これは会話を開始するユーザーです)会話)

ご覧のとおり、この表は2人のユーザーに限られています。だから、より多くのユーザーが入ることを可能にする最良の方法は何でしょうか?例えば。 2番目のテーブル?

答えて

1

会話のテーブルと会話の参加者のテーブルはどうですか?

会話

  • conversation_id
  • CONVERSATION_NAME

参加

  • をparticipant_id
  • participant_name

参加

  • participation_id
  • participant_id

SELECT A.participant_name AS name, C.conversation_name AS conv_name 
FROM conversations C, participations P, participants A 
WHERE P.conversation_id = C.conversation_id AND P.participant_id = A.participant_id AND C.Conversation_id = ? 
をconversation_id

上記には、あなたの会話の参加者の一覧が表示されます。

会話内の実際のメッセージのテーブルを作成できましたか?

メッセージ

  • それが拡張することができる

たくさんの方法をmessage_conversation_id

  • message_participant_id_sender message_participant_id_receiverをMESSAGE_ID。

  • +0

    参加者が複数の会話に参加している場合はどうなりますか? – JonasSH

    +0

    'participations'テーブルに複数の行を含めることができます。すなわち、participant_id13は、conversation_id24内にあってもよいが、conversation_id25内にあってもよい。 つまり、2つの異なる行:13,24、および13,25 – NiallFH

    +1

    ありがとう!それはちょうどそれがすべき方法で動作する – JonasSH

    1

    あなたは対話と1つの表を作成することができますが、 conversation_id列でお互いに話をしているユーザーや他のデータと第2表をconversation_id、をUSER_ID。

    会話を含むテーブルでは、シナリオ(所有者)を開始したユーザーの列でもあります。

    関連する問題