2

我的问题比其他任何问题都更具概念性。我正在为即将使用 SQLAlchemy(用于 sql 数据库的 python 工具包,http: //www.sqlalchemy.org/ )创建的数据库设计架构,并且我遇到了两个表之间的情况数据库之间存在一对一的关系。具体来说,我有一个名为“Identification”的表,其中包含两列:1)一个内部 id(用作主键),2)一个对象 ID。该表与我们可以称为“分析”的另一个表具有一对一的关系,它代表了一个独特的查找表,用于查找我个人在每个对象上生成的数据(通过我的研究)。

我的问题是,一对一关系的存在是否意味着我应该将“识别”和“分析”组合到一个表中?我为 sql 数据库查看的每个模式都显示了一对多或多对多类型的场景。在数据库表之间建立一对一关系在概念上是否存在错误或坏处?我什至追求这一点的原因是因为我执行的这种分析可能是我想对每个对象进行的多种类型的分析之一,将识别表从数据中分离出来会很好我从每个分析中回来。

任何意见或意见表示赞赏!

4

1 回答 1

4

这很容易双向进行。

在您所描述的情况下,它似乎是一对一的并且第一个表只包含标识符,我会说最好对表进行规范化(组合它们),因为这允许您从否则在每个查询中都需要。

一般来说,只要存在有效的一对一关系,我就会认为这是真的。话虽如此,还有另一种变体,即 0..1 到 1。在这种情况下,例如,表 a 中的一行可能在表 b 中具有 1 行,或者没有。在这种情况下,将它们分开是有利的,因为否则您的列可能不适用于每一行并且只是空的。

一般来说,在设计数据库时,问自己一个问题:“将它们分开我会获得什么,如果我不合并它们会失去什么”。在第一种情况下,您获得的收益很少并且性能下降。

于 2013-07-25T18:40:08.540 回答