2010-04-23 86 views
1

这里是我的实际表模式(我使用MySQL):优化mysql表吗?

Table experiment : 
code(int) 
sample_1_id 
sample_2_id 
... until ... sample_12_id 
rna_1_id 
rna_2_id 
... until ... rna_12_id 
experiment_start 

我怎么能同时优化部分:sample_n_id和rna_n_id(均为BIGINT(20),并允许空=真)?

关于价值观:我们可以有:例如: sample_1_id = 2, Sample_2_id = 5,...

注:值可以被更新。

想法? 谢谢。


编辑:

我有3个表:

Table experiment : 
sample_1_id .. sample_12_id (not useful with normalization) 
rna_1_id .. rna_12_id (not useful with normalization) 


With normalization I should have : 

Table Rna : 
id 
experiment_id 
rna_id 
rna_name 
sample_id (link to a sample in Table sample) 

Table Sample : 
id 
experiment_id 
sample_id 
sample_name 

因此,有RNA和样品表之间的关系。

例子:

Table rna : 
    id =1 
    experiment_id = 1 
    rna_id = rna1 
    rna_name = name1 
    sample_id = 2 

    Table Sample : 
    id = 2 
    experiment_id = 1 
    sample_id = Sample1 
    sample_name = SampName 

所以,sample_id = 2 =>表中的示例:ID = 2 => sample_id =样本1

回答

3

我不知道你在找什么样的优化情况,但这绝对应该归到一个表中定义的实验样品和实验-RNA关系,例如像这样:

experiments_to_samples 
id | experiment_id | sample_id | 


experiments_to_rnas 
id | experiment_id | rna_id | 

这样一来,每experiment可以有无限数量的samplerna参考。

这是假设有一个表samples和一个表rna

+0

我想补充的RNA和样品表(见我的编辑)之间的关系? – 2010-04-23 18:27:27

+0

@fabien您可以添加更多详细信息以了解rna如何与样本相关? – 2010-04-23 18:38:27

+0

我在前一篇文章中添加了一个示例。 – 2010-04-23 19:35:23

0

正常化你的表是这样的:

Table experiment : 
code(int) 
experiment_start 

Table sample: 
sample_id 
code fk to experiment.code 


table rna: 
rna_id 
code fk to experiment.code