mysql - 在 MySQL 中存储基因表达数据——需要联结表吗?

标签 mysql join matrix junction-table

我有几个 m x n 的基因表达数据矩阵,我想将它们存储在 MySQL 中。

m 大约有 30,000 个基因(可唯一识别)
n 大约是 3,000 个样本(大部分是唯一可识别的)

我不确定存储这些数据的最佳方式是什么。我最初将矩阵直接读入 MySQL 表中,但后来有人告诉我这不是做事的好方法,因为列(样本)的数量是可变的。我无法转置矩阵并以这种方式存储它们,因为在创建列时,存在的基因数量超出了 MySQL 允许的数量。

后来有人告诉我,“连接表”可能是实现此目的的更好方法。然而,在观看了几个关于这些的 YouTube 视频后,我还是一无所知。我也搜索过谷歌,似乎没有关于使用连接表在 MySQL 中存储基因表达数据的教程。那么,有人对如何最好地存储这些数据有任何建议吗?老实说,我预计会有大量这方面的文献,所以如果您有有用的链接,我们也将不胜感激。

最佳答案

你只需要几个表,我使用的是 mysql 语法:

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,
FOREIGN KEY(`gene_id`) REFERENCES genes (`gene_id`),
FOREIGN KEY(`sample_id`) REFERENCES sample (`sample_id`),
)ENGINE=InnoDB;

对于样本中出现的每个基因,将 gene_idsample_id 对插入到 gene_sample 表中。

在 SELECT 中使用两个 JOIN 表达式来重建完整数据:

SELECT genes.*, samples.* 
FROM gene_sample 
LEFT JOIN genes USING (gene_id) 
LEFT JOIN samples USING (sample_id);

关于mysql - 在 MySQL 中存储基因表达数据——需要联结表吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37005373/

相关文章:

mysql 获取 X(点) 以及 join

algorithm - 排序矩阵搜索主定理分析

javascript - (php)如何放置按钮来获取新的输入字段(内有图片)

MySQL 在 POINT 列上插入/更新

PHP/MySQL - 将日期时间显示为日期

mysql - SQL连接同一个表

php - MySQL OUTER JOIN 从连接表中获取单独的行结果

hadoop - hadoop pig:在条件上加入(例如tab1.COL1 LIKE(%tab2.col2%))

c++ - 第三人称相机翻转循环

r - 如何在 R 中有效转置矩阵?