在MySQL中存储基因表达数据

时间:2019-08-22 05:08:10

标签: mysql

我要在MySQL中存储m x n个基因表达数据矩阵,以便可以使用PHP编程进行搜索。

m约为100000个样本(可唯一识别)
n是大约23,300个基因(可唯一识别)

我创建了三个表,如下所示

CREATE TABLE genes (
    `gene_id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    `gene_name` varchar(99) not null
) ENGINE=InnoDB;

CREATE TABLE samples (
    `sample_id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    `sample_name` varchar(99) not null
) ENGINE=InnoDB;

CREATE TABLE gene_sample (
    `gene_id` INT NOT NULL,
    `sample_id` INT NOT NULL,
    `Expression_value` INT ,
    FOREIGN KEY(`gene_id`) REFERENCES genes (`gene_id`),
    FOREIGN KEY(`sample_id`) REFERENCES sample (`sample_id`),
) ENGINE=InnoDB;

问题是我如何从mXn矩阵的第三个表(gene_sample)中插入值?

我如何将与样品和基因相对应的表达值存储在gene_sample表中?

1 个答案:

答案 0 :(得分:1)

假设已经填充了genessamples表,并且您想使用所有可能的组合来填充gene_sample联结表,则可以尝试使用带有交叉联接的插入:

INSERT INTO gene_sample (gene_id, sample_id)
SELECT g.gene_id, s.sample_id
FROM genes g
CROSS JOIN samples s;

当然,这不会为Expression_value列分配任何值。但理想情况下,此列甚至都不属于联结表。