1

合計 100 万件を超えるレコードを持つ 4 つの地域があります。地域の列を含むテーブルを作成するか、地域ごとにテーブルを作成し、それらを組み合わせて上位のランクを取得する必要がありますか?

4 つのリージョンをすべて組み合わせると、どの列も一意にならないidため、主キーの列も追加する必要があります。それ以外の場合、name, accountId&characterIdは候補キーになるか、idとにかく列を追加する必要があります。

Table:
----------------------------------------------------------------
| name | accountId | iconId | level | characterId | updateDate |
----------------------------------------------------------------

編集: テーブルをパーティション分割することを検討する必要がありますregion_idか?

4

2 に答える 2

1

すべてのレコードは特定のリージョンに関連しているため、他の属性とともにregionIdを含む3NF(All-Regionsなど)の単一のデータベーステーブルが機能するはずです。

于 2012-12-07T10:36:30.960 に答える
0

通常のデータベース設計と同様に、正解は「場合による」です。

まず第一に、(IMHO)適切な主キーはユーザーではなくデータベースに属している必要があります:)
したがって、ユーザーが編集できる場合、またはユーザーに目立つように表示される場合は、テーブルの主キーに使用しないでくださいaccountIdcharacterId(s) とにかく。そしてname、キーに(または他のユーザー生成の文字列)を使用することは、単に問題を引き起こしているだけです。

地域に関しては、レコードがどのように使用されるかを推測してみてください。

  • ほとんどのクエリが 1 つのリージョンのみを使用するのか、それともほとんどのクエリがリージョン間でデータを使用するのか?
  • 異なる地域のスキーマが異なる可能性はありますか?
  • 同様のデータに対して異なる使用シナリオはありますか? (例: 地域ごとに異なる電話番号パターン)

結論として、どちらのアプローチも機能します。どちらのアプローチがより管理しやすいかをデータから判断できます。

于 2012-12-07T11:01:57.203 に答える