2010-04-23 103 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