0

現在、を介してデータベース内の特定のテーブルとやり取りしていますActiveRecord。テーブル名は事前に知っておき、でテーブルを作成しますrails generate model modelname column1:string ...

しかし、今では、テーブル名とテーブルの数が不明であるというこの要件があります。

例:ディレクトリには、 : 、、 ...Projectsなどの多くのサブディレクトリがあります。これらのプロジェクトごとに個別のテーブルを作成する必要があります。しかし、プロジェクトがいくつあるかはわかりません。そして、コードでこれらのテーブルを動的に作成する必要があります。私のコードでそれを達成する方法は?ActiveRecordを使用してそれまたは他のメソッドを実現しますか?Projects_AProject_BProject_C

次のようなコード:

list = maintain_a_dir_list()

Dir.entries( dir ).each { |e|
  if e is not in list
    create_a_table_after_e_name
  end
}

ここでは、そのようなテーブルを作成する理由を説明します。

上記のディレクトリ名とそのサブフォルダ名は非現実的です。それでは、この話をもう一度繰り返しましょう。

私は負荷テスターです。弊社のプロジェクトの1つで負荷テストを行っています。プロジェクトの名前がであるとしましょうProject_AProject_A1.0、2.0などの多くのバージョンがあります。そのため、すべてのリリースで、製品の品質を確認するために何度も負荷テストを行います。

したがって、プロジェクト、バージョン、およびロードテストレポートの関係は単純です。プロジェクトには多くのバージョンが含まれています。また、各バージョンには、異なる日に実行された多くのロードテストレポートが含まれています。

loadtestレポートの情報は次のとおりです。

トランザクション名| 最小時間| 平均応答時間| 最大時間

transaction_01 | 1.0秒| 2.0秒| 3.0秒

transaction_02 | 0.5秒| 1.5秒| 4.0秒

..。

レポート情報をデータベースに保存するために、という名前のテーブルを作成しますtransactions_table。テーブルは次のようになります:

report_name | transaction_name | 分| 平均| 最大

20121001_100users_4hours | transaction_01 | 1.0 | 2.0 | 3.0

20121001_100users_4hours | transaction_02 | 1.0 | 2.0 | 3.0

..。

20121002_100users_2hours | transaction_01 | 1.5 | 2.1 | 2.5

20121002_100users_2hours | transaction_02 | 1.1 | 2.1 | 2.7

..。

..。

次に、バージョン情報を取得したいと思います。そこで、という名前の別のテーブルを作成しますreports_table。テーブルは次のようになります:

バージョン| report_name

project_a_1.0 | 20121001_100users_4hours

project_a_1.0 | 20121002_100users_2hours

..。

project_a_2.0 | 20121101_50users_1hours

project_a_2.0 | 20121102_50users_2hours

..。

..。

そしてもちろん、私の会社には複数のプロジェクトがあります。がありますProject_BProject_CそしてD...プロジェクト名とそのバージョンで構成されるバージョンテーブルが再び登場します。

DBテーブルの関係を設計するのは初めてです。ですから、テーブルを整理する方法が正しいかどうかはわかりません。

まず、プロジェクトやバージョンに関係なく、すべてのトランザクションデータをに入れることができると思いますtransactions_table。次に、異なるプロジェクトまたはバージョンのレポート名が同じである可能性があることに気付きました。transactions_tableその後、を使用して分離することはできませんselect * from transactions_table where report_name = "xxxx"。また、transactions_tableのサイズは他の2つのテーブルよりも急速に増加します。

そのため、さまざまなプロジェクトのレポートをさまざまなテーブルに保存することを検討しています。

4

1 に答える 1

0

プロジェクトテーブルでfolder_nameフィールドを使用する方がよいでしょうか。

于 2012-11-01T11:45:02.833 に答える