-2

企業向けのテクニカル サポート用の Twitter ベースのアプリケーションを開発しています。

ワークフローはこのようなものです

1- Twitter ユーザーが会社についてメンションします。

2- 管理者に通知されます。

3- お客様との DM の使用を開始します。

そのため、最適な ER モデルについて少し混乱しています。

何千ものレコードを取得するために、ツイートと DM を同じテーブルに保存する必要がありますか、それとも別々にする必要がありますか?

4

1 に答える 1

1

モデルにはエンティティがほとんどありません。user_idは、ツイートを書き込んだユーザーのIDを意味します。

基本構造

Message (id, message, user_id, date etc)
User (id, name, employee_id?, etc)

言及された単一のアカウント

次に、言及が行われる可能性があるという事実があります。これはメッセージの属性であるため、次のような列を追加できます。アカウントを1つだけ持つ場合は、BOOLが言及されます。与えるだろう:

Message (id, message, user_id, date, BOOL mentioned, etc)
User (id, name, employee?, etc)

複数のアカウントについて言及することができます

別のフォームはより柔軟である可能性があります。言及したいアカウントを保存できるテーブルアカウントを追加します。

Account (id, name)
Message (id, message, user_id, date, INT account_mentioned, etc)
User (id, name, employee?, etc)

アカウントを追加して言及のフォローを開始できるため、柔軟性が向上します。たとえば、そのアカウントの管理者に通知して、ソリューションを将来にわたって利用できるようにすることができます。

従業員への対応方法

ワークフローに応じて、次のように言うことができます。従業員は、1つ以上のアカウントを処理するユーザーです。また、1つのアカウントが複数のユーザーによって管理されており、最後に複数のユーザーが複数のアカウントを管理している状況を示すこともできます。

本質的に、私は接続テーブルを作成することをお勧めします:

Accounts_Users (account_id, user_id)

たとえば、そのテーブルにロールを追加したり、優先度を追加したりすることもできます。これにより、アカウントを完全に制御できます。この部分についての情報が提供されていないので、私はそれを完全に説明することはできません。

DMと公開メッセージの保存

次に、DMの問題があります。これは、メッセージエンティティに最も簡単に追加できます。

Account (id, name)
Message (id, message, user_id, user_to_id (NULLABLE), date, INT account_mentioned_id, etc)
User (id, name, employee?, etc)

したがって、メッセージ(ツイート)のデフォルトでは、user_to_id列はNULLですが、DMの場合は、そこにレシーバーを追加します。そうすればあなたはそれらを見つけることができます。

なぜそれらすべてを1つのテーブルに入れるのですか?これは同じ属性を持つ同じエンティティであり、フラグ(プライベート)のみがありますが、本質的には同じデータです。

データ量

...この段階ではまったく関係ありません。本質的には、適切な構造が必要なだけなので、最初に正規化してください。パフォーマンスの問題が実際に発生した場合は、いくつかのステップを非正規化する方法を確認してください。ただし、単一の会社で使用する場合、この正規化された構造で問題が発生することはないと思います。

必要なデータを取得するために必要なのは通常の単純な結合だけです。正規化されているため、たとえば、正規化したために1人のユーザー(クライアント)とのすべての通信を表示するページを簡単に作成できます。この設定では、そのデータを簡単に取得できます。

数百万のツイートが処理されており、正規化するだけで問題ありません。データはそれほど大きくないので、多くの行は高価ではありません。

最終設定をお勧めします

私は今持っている情報に基づいてこのように行きます。

Account (id, name)
Accounts_Users (account_id, user_id)
Message (id, message, user_id, user_to_id (NULLABLE), date, account_mentioned_id, etc)
User (id, name, etc)
于 2012-06-17T10:35:24.293 に答える