web-dev-qa-db-ja.com

メッセージをスレッド化するためのデータベース設計/関係

ユーザー間のメッセージング用のアプリを作成するためのデータベース設計またはビジネスロジックは何ですか?

ユーザースレッドの各会話間の関係にどのようにアプローチするかを選択するのが困難です。この図を見せますが、コンセプトがわかりにくかったです

enter image description here

このスレッドメッセージ(GmailやFacebookなど)はどのように機能しますか?

4

メッセージのスレッドを作成してから、後続のスレッドを返信先のメッセージに従属させます。

例えば:

  • スレッドAが開始されます。
  • スレッドAは3つのメッセージを受け取ります。
  • 4番目のメッセージが追加され、メッセージ3に応答して新しいスレッドを作成します。
  • スレッドBの親はメッセージ3に設定されます。
  • 4番目のメッセージはThreadBの一部になります。
  • 5番目のメッセージは元のメッセージへの返信であり、ThreadAに追加されます。
  • 6番目のメッセージはメッセージ3への返信であり、ThreadBに追加されます。

次に、スレッドをレンダリングするときに、親メッセージであるスレッドのメッセージクエリを表示した後、表示したメッセージと一致します。メッセージがある場合は、次のメッセージに進む前にそのスレッドをレンダリングします。

データベース内の関係を示す基本的な(おそらく技術的に欠陥のある)図を含めました。

上記のサンプルの場合、表示すると次のようになります。

  • (ThreadA)
    1. Message 1
    2. Message 2
    3. メッセージ3
      • (ThreadB)
        1. Message 4
        2. Message 6
    4. Message 5

更新:いくつかの関係と多重度の問題を修正しました。関係のテキスト表現も含めるように更新しました。妥当性に関する入力は役に立ちます。私が1つ作成してからしばらく経ちます。最近、Model Based ORMをほぼ独占的に使用しています。 IDEF1Xの基本フォーマットを使用している間も注意してください。これには詳細が含まれており、IDEF1Xはセマンティクスベースのモデリングシステムです。 enter image description here

2
Kody Manharth