【问题标题】:Optimize mysql table?优化mysql表?
【发布时间】:2011-02-11 15:16:57
【问题描述】:

这是我的实际表架构(我使用的是 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) 并允许 null=true)?

关于价值观:我们可以有:例如: 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 之间存在关系。

例子:

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

【问题讨论】:

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


    【解决方案1】:

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

    experiments_to_samples
    id  |  experiment_id | sample_id |  
    
    
    experiments_to_rnas
    id  |  experiment_id | rna_id |
    

    这样,每个experiment 可以有无限数量的samplerna 引用。

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

    【讨论】:

    • 我想在 Rna 和 Sample Table 之间添加一个关系(见我的编辑)?
    • @fabien 你能添加更多细节来说明 rna 与样本的关系吗?
    • 我在上一篇文章中添加了一个示例。
    【解决方案2】:

    像这样规范化你的表格:

    Table experiment :
    code(int)
    experiment_start
    
    Table sample:
    sample_id
    code   fk to experiment.code
    
    
    table rna:
    rna_id
    code   fk to experiment.code
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-18
      • 2011-07-25
      • 2021-10-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多