首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据库设计,并行表,还是额外的字段?

数据库设计,并行表,还是额外的字段?
EN

Software Engineering用户
提问于 2013-09-20 10:36:54
回答 1查看 557关注 0票数 1

我为一个测序中心管理一个数据库。还有其他开发人员从数据库中获取数据,并运行自动化和半自动流程。

我们正在讨论对数据库的修改。

目前,我们有一个库,它与multiplex_index有一对一的关系,可以用来识别库。现在我们要向每个库添加一个可选的GBS_index (另一个可选的一对一关系)。因此,每个库都有一个multiplex_index,也可以有一个GBS_index。

存储在新GBS_index上的列将与multiplex_index相同。因此,我们有两个存储GBS_index数据的选项。

1)将GBS_index数据存储在原始的multiplex_index表中,并通过其“类型”字段对其进行标识。

2)我们可以为GBS_index添加一个并行表,它反映了multiplex_index表。

我赞成第二个并行表选项,因为我认为它不太可能破坏现有代码(脚本在数据库中查询multiplex_indexes列表,在本例中需要排除GBL_indexes )。

从概念上讲,这两种类型的索引都是“多重索引”,但使用方式略有不同。

是否有任何有力的论据支持或反对这两种选择?

好吧,快速解释DNA测序可能会有帮助。

DNA测序涉及从细胞中提取DNA,并将它们分成大约200个碱基对(每个碱基对就像一个DNA炭A、T、G或C)。

我们将准备好的生物样本中的DNA加载到机器上,并对它们进行测序。我提到的两种类型的索引是另一段具有已知序列的DNA,它在测序之前附加到库DNA的开头。这样,我们就可以读取第一个序列,我们可以识别每个读取的库(大约200个字符)来自哪个库。(我们通常感兴趣的是与参考基因组上的位置匹配的读取数)。

现在,我们可以在库DNA (一个接一个)开始时有一个(多重)或两个(多重+ GBS)索引,它们形成一个独特的组合来标识库。

最初,两个具有相同multiplex_index的库不应该一起加载,因为您无法从multiplex_index序列中识别它们。现在,这两个指数的组合应该是唯一的。

EN

回答 1

Software Engineering用户

回答已采纳

发布于 2013-09-20 12:46:28

并行表:

对GBS_index使用新的“并行”表将不太可能破坏现有进程,这是正确的。即使您可以在没有额外类型字段的情况下重用旧表,您也会将关系从1-1更改为1-多。这将是一次彻底的改变。

退一步说,这种设计不是数据驱动的。如果引入第三种索引呢?第四种,第五种.20岁?我不熟悉DNA,但是如果类型可以扩展,那么每次引入新类型时都需要进行查询更改。添加带有并行表的类型可能不是“破坏”更改,但每次引入类型时都需要进行更改。针对20+表编写查询将非常麻烦。

添加一个额外的类型字段:

这个设计将是一个巨大的改变。你把关系从1-1改为1-多。但是,如果这种关系真的是1-多,那么它“应该”在数据库中以这种方式建模。

这个设计也是数据驱动的。每次引入新类型时,您只需将数据添加到“类型”查找表中。不需要查询更改(当然,您现在正在做的初始更改除外)。

结论:

我更喜欢添加额外的字段,因为它建模了数据库中的1-多关系和1-多关系。并行表模拟具有multipe 1-1关系的1-多个表,而不是未来新类型的数据驱动。

这两种设计都能用。这取决于重大的政治变革有多重要。以及这些类型是否固定在2或比例为N。

票数 1
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/212066

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档