私は現在、Twitterに非常に似ているが、私の会社にいくつかのユニークな機能を備えたWebアプリケーションを設計しています。テクノロジーはVue2、Spark frameworkおよびPostgreSQLです。
ERの設計方法と、クライアント側をAPIと統合する方法を決定しようとしています。問題を分解しましょう。
これらは、アプリケーションの主要コンポーネントである「Tweet」の詳細です。
Id、
タイムスタンプ、
投稿タイプ(別のテーブルから)、
TaggedPeople(別のテーブルのユーザーIDのリスト)、
テキスト、
ステータス(別の表から)、
いいね(別のテーブルのユーザーIDのリスト)、
追加データ(投稿タイプに応じて)
フィードにこれらのつぶやきの束を表示し、つぶやきを追加/更新/削除し、さまざまなパラメーターでつぶやきをフィルター処理する必要があります。
現在、私は3つのオプションの間で引き裂かれています:
この種のWebアプリケーションの経験者からの声はとてもクールです。
前もって感謝します。
モデル、ビュー、コントローラーを分離する必要があります。
データベース層(モデル)については、ツイートとピープルのクラスを作成します。そして、タグ用の結合テーブル(2つの列、tweetIdとuserId)と、いいね!用の結合テーブル(これも、tweetIdとuserIdの2つの列)を作成します。投稿のタイプやステータスなどは単なるルックアップ値なので、別のテーブルは必要ない場合があります。
「追加データ」を解析またはインデックス付けせずにデータベース内で検索できるように、並べ替えとフィルタリングに必要なものは、独自の列に分離されている場合に最適です。通常、データベースの呼び出しは、最適化とスケーリングを行うのに最適な場所です。データベースの機能を活用できる場合は、すべてを1つの列にまとめてクライアントで解析するだけではありません。
次に、データをアプリケーション(コントローラー/ビュー)にロードするときに、キー値を持つマップを使用するなど、好きなようにデータを渡したり結合したりできます。それはあなたの好みのフレームワークに依存します。