0

私は 3 年以上調査ソフトウェアをプログラミングして使用しています。これは、たとえばほとんどの CMS で見られるように、基本的な「ユーザー」SQL テーブルを備えた単純な調査システムとして始まりました。私は当初、各調査で 30 人ほどのユーザーを対象に、このプログラムを 2、3 回使用する予定でした。

現在、このプログラムは成長し、毎月 1 ~ 2 回の調査に使用されています。アンケートには何百人ものユーザーがいる場合があり、表が非常に長くなり、混乱を招きます。

ただし、従来のユーザー リスト以外に最適な方法はありません。調査ごとに新しいテーブルを作成することを考えましたが、問題があると感じています。私が今やっていることは、調査が終了したときに完全な SQL データベースをアーカイブすることです。これは今のところ十分便利ですが、古い調査の結果をすぐに見つけなければならないときは悪夢に変わります。

この問題に遭遇したのは私が初めてではないと確信しており、解決方法を教えていただければ幸いです。そのためのベストプラクティスはありますか?

ありがとう!

4

2 に答える 2

2

1 つの解決策は、2 つのテーブルを維持することです。ユーザーとUsers_History。

調査が完了したら、データを users_history に移動できます。そうすれば、アプリのパフォーマンスに影響する DB は管理可能なサイズに収まります。分析目的のために、データは常に履歴テーブルで利用できます。

于 2011-03-20T18:00:13.653 に答える
1

各調査のユーザー セットが異なる場合 (2 つの調査で同じ人物が 2 つの異なるユーザー アカウントを持っている場合)、users調査テーブルを参照する列を追加できます。

ALTER TABLE users ADD COLUMN survey INT NOT NULL;
ALTER TABLE users ADD FOREIGN KEY (survey) 
    REFERENCES surveys (id) 
    ON DELETE CASCADE;

調査に関連付けられていないユーザーを許可する場合は、調査の参照を NULL にして、外部キーを に設定しますON DELETE SET NULL

users テーブルを操作するときが来たら、列を使用して、関心のある調査の一部であるユーザーのみを取得します。

于 2011-03-20T18:19:00.907 に答える