目前,我通过ActiveRecord
与数据库中的特定表进行交互。我会事先知道表名,然后我会按rails generate model modelname column1:string ...
创建表格。
但是现在,我得到了这个要求,表名是未知的以及将有多少个表。
例如:在目录Projects
中,有许多子目录,例如:Projects_A
,Project_B
,Project_C
...我需要创建单独的表每个项目。但你不知道会有多少项目。我需要在我的代码中动态创建这些表。如何在我的代码中实现这一点?我是否使用ActiveRecord来实现该方法或任何其他方法?
代码如:
list = maintain_a_dir_list()
Dir.entries( dir ).each { |e|
if e is not in list
create_a_table_after_e_name
end
}
在这里,我将解释为什么我要创建这样的表格:
我上面提到的目录名及其子文件夹名称是不真实的。所以让我们再次讲述这个故事。
我是负载测试员。我为我们公司的一个项目加载测试。假设项目名称为Project_A
。 Project_A
有许多版本,如1.0,2.0等。因此,在每个版本中,我都会进行多轮负载测试,以确保产品的质量。
因此,project,verson和loadtest报告之间的关系很简单:项目包含许多版本。每个版本都包含许多在不同日期执行的负载测试报告。
loadtest报告中的信息如下:
交易名称|最短时间|平均响应时间|最长时间
transaction_01 | 1.0s | 2.0s | 3.0s
transaction_02 | 0.5秒| 1.5s | 4.0s
...
要将报告信息存储在数据库中,我创建了一个名为transactions_table
的表。表格如下:
report_name | transaction_name | min |平均值|最大
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_B
,Project_C
和D
...因此,版本表再次包含项目名称及其版本。
这是我第一次设计数据库表的关系。所以我不知道我组织表的方式是否正确。
首先,我只是认为我可以在transactions_table
中放置所有交易数据 - 无论它属于哪个项目或版本。然后我意识到来自不同项目或版本的报告名称可能是相同的。然后,它无法使用transactions_table
分隔select * from transactions_table where report_name = "xxxx"
。并且transactions_table
的大小将比其他两个表更快地增加。
这就是我考虑将报告存储在不同项目中的原因。
答案 0 :(得分:0)
最好在项目表中使用folder_name字段吗?