1

stackoverlow データベース構造はどこかで入手できますか?

何かに関する情報を含む Table1 と、Table1 に関する数値情報を含む Table2 が 1:n の関係にあるという状況に直面しています。たとえば、スタックオーバーフローに関するユーザーと回答がここにあるように。

数値情報の合計にすばやくアクセスする必要があり (SO がユーザーの評判の合計にすばやくアクセスできるように)、テーブル 1 に列を追加して合計を格納し、テーブル 2 が更新されるたびに更新するかどうか疑問に思っています。その情報が必要になるたびに、table2 のすべてのレコードを合計します。

SOにも同じ状況があり、非常にうまく対処しているようです。彼らがどのアプローチを使用しているか知りたいです。

4

2 に答える 2

1

はい、時間をかけて更新するデータベース フィールドに非正規化します。以前は、結合/合計を実行して再計算を行っていましたが (時折ドリフトすることがありました)、それは苦痛でした。そのため、時間の経過に伴う評判の変化について特定のストアを保持し、より直接的で正確な履歴を保持しています。

于 2012-05-03T11:23:09.617 に答える
0

あなたの状況は、投稿、返信、担当者の間のSOの現実によって定義されていません。ヘッダーレコードに関連付けられた値を合計する必要がある、完全に一般的なデータベースの状況があります。

この要件を解決するための2つの通常の方法に熱心に取り組んでいます

  1. 値が必要な場合は、SQLで使用可能な集計方法を使用して値を合計します
  2. 新しい行が追加されたときに値を合計し、ヘッダーに対して保存します

どちらにも長所と短所がありますが、主に考慮すべき1つのウェイトアップがあります

  1. データの整合性が維持され(賛成)、パフォーマンスが妨げられる(反対)
  2. データ破損の可能性(短所)、パフォーマンスの妨げにならない(長所)
于 2012-05-03T11:24:53.003 に答える