首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据库设计:如何设计这种特殊的关系

数据库设计:如何设计这种特殊的关系
EN

Stack Overflow用户
提问于 2014-11-27 00:00:53
回答 3查看 89关注 0票数 1

我是设计数据库的新手,我遇到了一个挑战;

在实验室里,DNA样本是从组织样本中制备出来的。这些组织样本具有种类和位置等属性。在DNA样品制备之前,不同的组织样品混合是可能的,但并不总是这样。

因此,有3个表,具有以下属性:

Tissue_sample

代码语言:javascript
复制
- ID 
- location 
- species 

Mixed_tissue_sample

代码语言:javascript
复制
- ID 
- tissue samples which are mixed together 

DNA_sample

代码语言:javascript
复制
- ID 
- tissue_sample OR mixed_tissue_sample 

应该可以检索制备DNA样本的所有组织样本。

将其放入数据库的最好方法是什么?在MySQL工作台中可以做到这一点吗?

EN

回答 3

Stack Overflow用户

发布于 2014-11-27 00:16:20

在DNA表中定义两个字段以引用单个或混合组织样本。其中一个字段将保持为空。

组织: id,位置,种类

混合: id,...

mixed_tissues: mixed_id,tissue_id

DNA: id,tissue_id,mixed_id

是的,您可以在MySQL工作台中创建这些表。

票数 0
EN

Stack Overflow用户

发布于 2014-11-27 00:29:29

首先,解决Tissue_sampleMixed_tissue_sample之间的关系。1个或多个Tissue_sample定义一个Mixed_tissue_sample,因此关系是1:n,并且您需要在Tissue_sample处有另一个列,该列将用作Mixed_tissue_sampleforeign key。经Mixed_tissue_sample鉴定后,将两张表连接,即可获得混合组织样本的组织样本。

其次,您需要解析DNA_sample。你需要一个连接到Tissue_sampleMixed_tissue_sampleforeign key

您可以通过创建触发器来确保DNA_sample没有连接到这两者,这将阻止任何insertsupdates,这将导致DNA_sample记录,如果您需要的话,该记录具有两个foreign keys的值。

票数 0
EN

Stack Overflow用户

发布于 2014-11-27 04:12:29

使用表继承。

或者将组织样本和混合组织样本全部放在同一个表中(单表继承),具有一个"type“列,

或者将它们放在两个不同的表中,其主键指向一个公用表(类表继承)。DNA样本表将指向这个公共表。

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

https://stackoverflow.com/questions/27153621

复制
相关文章

相似问题

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