优化mysql表?

时间:2010-04-23 17:23:12

标签: sql mysql database-design data-structures data-modeling

这是我的实际表架构(我正在使用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

如何优化part:sample_n_id和rna_n_id(所有都是bigint(20)并允许null = true)?

关于价值观:我们可以:ex: 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和Sample表之间存在关系。

示例:

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 = Sample1

2 个答案:

答案 0 :(得分:3)

我不确定您正在寻找什么样的优化,但这绝对应该归一化为定义实验样本和实验-rna关系的表格,例如:

experiments_to_samples
id  |  experiment_id | sample_id |  


experiments_to_rnas
id  |  experiment_id | rna_id |
这样,每个experiment都可以拥有无​​限数量的samplerna引用。

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

答案 1 :(得分: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