2

私は単純なスコア管理システムを作成しており、各ユーザーはさまざまなゲームの統計情報を取得できますが、各ユーザーが独自のスコア テーブルを持つべきか、それとも user_id 列を持つすべてのスコアを含む 1 つの大きなテーブルを持つべきかはわかりません

複数のテーブル:

テーブル名: [ユーザーID]_score

ゲームID | ハイスコ​​ア | last_score | average_score

シングルテーブル:

ユーザー ID | ゲームID | ハイスコ​​ア | last_score | average_score

4

4 に答える 4

4

フィールドの 1 つとして userID を持つ単一のテーブルを必ず用意してください。そのような複数のテーブルを扱うことは非常に困難です (そして不必要に)。

クエリで各 userId のレコードをすばやく見つけられるように、少なくとも 1 つのインデックスに userId フィールドを含める必要があります。

于 2010-11-10T20:43:43.660 に答える
2

単一のテーブルと と の周りの複合主キーを使用user_idgame_idます。game_idゲームごとのハイスコアの検索が高速になるように、補足インデックスを作成することもできます。user_id(複合キーも基準の一部でない場合は十分ではありません。)

ユーザーごとに 1 つのテーブルを使用するアプローチを使用すると、一部の LARTing が発生する可能性があります。

于 2010-11-10T20:45:37.093 に答える
0

間違いなく、すべての user_ids を含む 1 つのテーブルを保持してください。一般に、生成されたデータ (ユーザー ID) をテーブル名に含めるソリューションには近づかないでください (例外はありますが、まれです)。

于 2010-11-10T20:45:04.387 に答える
0

おそらく必要になるでしょう:
ユーザー テーブル user_info[]、user_id
ゲーム テーブル game_info[]、game_id
user_id、game_id、score、insertdate を保持する user_game_join テーブル

そうすれば、ゲームごと、ユーザーごと、ゲームとユーザーごと、平均とその他など、ハイスコアを取得するためのすべてのデータが得られます。

常に拡張可能に構築します。いつコードを改良する必要があるかわかりません。データベースをやり直すことは、最初から私たちの権利を守らないと、本当に PITA になります。

于 2010-11-10T20:45:11.970 に答える