我要在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表中?
答案 0 :(得分:1)
假设已经填充了genes
和samples
表,并且您想使用所有可能的组合来填充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
列分配任何值。但理想情况下,此列甚至都不属于联结表。