Database 数据库设计,这是一对一关系吗?

Database 数据库设计,这是一对一关系吗?,database,Database,形势声明: 我们实验室收到来自不同来源的样品。收到后,我们为他们分配实验室id号,该编号对于每个样品都是唯一的。我们对每个样本执行各种测试,比如,test1、test2、test3。。。。这些测试的结果通常有多个值 到目前为止,我认为: 示例表: LabID(PK) 样本描述 源ID(FK) 来源表: SourceID(PK自动生成) 来源 显然,源与样本表之间存在一对多关系,因为一个源可以有多个样本发送到我们的实验室 现在,我的问题从创建存储每个测试数据的表开始。我想我应该将每个测试的

形势声明:

我们实验室收到来自不同来源的样品。收到后,我们为他们分配实验室id号,该编号对于每个样品都是唯一的。我们对每个样本执行各种测试,比如,test1、test2、test3。。。。这些测试的结果通常有多个值

到目前为止,我认为:

示例表:

  • LabID(PK)
  • 样本描述
  • 源ID(FK)
来源表:

  • SourceID(PK自动生成)
  • 来源
显然,源与样本表之间存在一对多关系,因为一个源可以有多个样本发送到我们的实验室

现在,我的问题从创建存储每个测试数据的表开始。我想我应该将每个测试的结果存储在单独的表中。每个样品可进行一次或多次试验

例如,test1表可以如下所示:

Test1表:

  • LabID(PK)
  • 测试1_数据_1
  • 测试1_数据_2
类似地,其他测试表:

Test2表:

  • LabID(PK)
  • 测试3_数据_1
  • 测试3_数据_2
Test3表:

  • LabID(PK)
  • 测试1_数据_1
  • 测试1_数据_2
等等

我的困境(我不清楚的事情):

我很清楚,实验室ID可以作为每个测试表的唯一键(PK)。现在,如果我在Samples表和Tests表之间创建一对一的关系,它需要在所有Tests表中重复每个LabID(如果我错了,请纠正我!)。然而,样品可能不会进行该特定试验

为什么我认为一对一不是正确的选择?

如果从Test1表中删除了该记录,那么其他表中可能还有其他测试和数据,因此从Samples表中删除该记录(如果使用一对一关系,我认为会发生这种情况)是不正确的

我的问题是:


在这种情况下,我如何指定正确的关系?我对数据库设计完全陌生,我的经验是3天的随机阅读。

我会创建测试和值表,如下所示

测验

  • 身份证
  • 测试名称
  • 其他数据
价值观

  • 身份证
  • 价值标签(碳、氢、氮)
  • 其他数据
此外,我还将创建一个包含列的度量(或任何您想要的)表

测量

  • 身份证
  • 测试id(fk将id引用到测试表)
  • value_id((fk将id引用到值表))
该表表示您的测试结构。例如,如果test1有3个要测量的参数,那么表中会出现三个对应的行,每个参数对应一行

然后,您可以创建一个结果表,用于存储测试结果数据。拟议的结构可以是:

结果

  • 身份证
  • 样本id(fk引用样本表上的LabID)
  • 测量id(测量表上的fk参考id)
  • 值(结果的值)

希望不要太复杂

每次测试的结果都是相同的吗?例如,test1始终有3个值-value1、value2、value3-test2始终有2个值-value1、value2或test1可能有2个值用于sample1,5个值用于sample2?否,对每个样本进行的测试的结果不同。想象一下,就像测量一个样品的碳、氢、氮(测试表),另一个样品的数字会不同,其他测试的数字也会不同。是的,这很清楚,我问的是,例如test1是否总是有3个参数需要测量。是的,测试的字段数将保持不变。人怎么了?我诚恳地提出了这个问题,清楚地说明了问题,表达了我的想法,并征求了意见。我一点也不在乎如此多的重复,但为什么这场对否决票的恶作剧不告诉我哪里出了错?