2

データベースを実装する前に、いくつかの調査を行う必要がある Web アプリケーションに取り組んでいます。コーディングを開始する前に、いくつかの適切な決定を下すのに役立つことを願っています.

今日、テーブルに約 200 万の連絡先を含むデータベースがあります。

連絡先: cid、名前、電話番号、住所など...

アプリケーションのユーザーは、さまざまな基準に基づいて連絡先テーブルを検索し、連絡先のリストを取得できます。

ユーザーは別のデータベーステーブルに保存されます

ユーザー: uid、名前、電子メールなど...

ここで、ユーザーが検索結果を選択として保存できるようにしたいと考えています。選択は、ユーザーが取得した検索結果のすべての連絡先を表す cid のリストでなければなりません。選択が保存されると、ユーザーは選択を開き、選択内のさまざまな連絡先にメモやステータスなどを追加できます。

私の最初の考えは、次のような選択テーブルと選択-連絡先マッピング テーブルを作成することです。

選択: sid、名前、説明、uid など

SelectionContactMap: sid、cid、ステータス、メモなど...

1,000 から 100,000 の連絡先の平均セレクション サイズと、多数のセレクションを保存する数千のユーザーを使用すると、SelectionContactMap テーブルが非常に急速に大きくなることがわかります。

データベースはMySqlで、アプリケーションはPHPで書かれています。予算が限られているため、タスクに無制限のハードウェアを投入することはできません。

私はここで間違った道を進んでいますか?

これを可能な限り最善の方法で解決するための提案はありますか?

  • 他のデータベース?
  • MySql固有の提案、テーブルタイプなど?
  • 他のデータベース設計?
  • コメントや提案は大歓迎です。

前もって感謝します :)

-- トア・イング

4

1 に答える 1

0

質問:クエリの結果が変更された場合はどうなりますか?たとえば、選択した連絡先に選択した属性がなくなった場合、または新しい連絡先が追加された場合はどうなりますか?

答えが「結果セットを更新する必要がある」の場合、結果自体ではなく、データベースに基準を保存する必要があります。

結果を一定期間キャッシュする必要がある場合は、データベースではなく、アプリケーションで処理する方が適切な場合があります。

于 2012-10-15T13:21:04.333 に答える