0

我真的是新来的数据库设计,因为我现在将演示:数据库规范化 - 如何确定没有关系的表?

我有一个MS Sql数据库,我需要添加一个表。该表包含与另一个表有关的信息。但是,主键没有候选项(所有字段都可以重复)。该表唯一会用于保存特定类型查询可能需要的记录,并且可以使用其他表包含的字段(但从不唯一)超级轻松地检索它们。

具体来说,我的主表有一堆化学记录。每个化学记录都与称为质量控制记录的另一组记录相关联(在我的第二个表格中)。它们由称为“BatchID”的字段关联。超容易的部分是,我可以说,“用这个BatchID获取所有记录”,并得到我所需要的。但是在两个表中都可以有多个BatchID的实例(实际上通常有),所以我需要跳过链接来链接它们。从更广泛的意义上讲,理论上,有一张表可以不附着在任何东西上吗?

绝对简单的解决方案是将质量控制放在与化学表无关的分贝中。我需要插入至少一个其他表,以将它与其他任何东西(也许更多)相关联,这样使我的生活复杂化的唯一原因是我不想违反数据库设计的一些重要规则。

我的问题是,是否可以在数据库中有一个自由浮动的表?还是那个出来?

感谢您的任何帮助。

+1

您发布的场景太抽象了,我无法理解。你能举一个更实际的例子吗? (即,“某种查询”是什么意思?)。你确实描述了一种关系(“他们可以使用其他表格也包含的字段来超级轻松地检索”),所以如果你还可以扩展它,这将有助于回答问题。 – Oded

+0

感谢您的回复。我的主表有一堆化学记录。每个化学记录都与称为质量控制记录的另一组记录相关联(在我的第二个表格中)。它们由称为“BatchID”的字段关联。超容易的部分是,我可以说,“用这个BatchID获取所有记录”,并得到我所需要的。但是在两个表中都可以有多个BatchID的实例(实际上通常有),所以我需要跳过链接来链接它们。从更广泛的意义上讲,理论上,有一张表可以不附着在任何东西上吗? – Stanton

+0

您可以编辑问题并将其添加到它的细节,而不是在评论?评论被认为是次要的,有些人可能不会阅读。 – Oded

回答

1

理论上,没有任何外键约束的表是可以的。但是你描述的表格(你描述的两张表)应该是,可能有一个引用批次表的外键。我们期望批量表具有“BatchID”作为其主键。

关系模型要求表具有至少一个候选键。有一个没有候选键的SQL表几乎总是一个坏主意。

+0

谢谢Catcall。 – Stanton