首页 > 解决方案 > 在 MySQL 中存储基因表达数据

问题描述

我有 mxn 个基因表达数据矩阵,我想将它们存储在 MySQL 中,以便可以使用 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表中存储对应于样本和基因的表达值?

标签: mysql

解决方案


假设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列分配任何值。但理想情况下,该列甚至不属于联结表。


推荐阅读