我的问题比任何其他问题更具概念性。我正在设计一个数据库的模式,我将使用SQLAlchemy(一个用于sql数据库的python工具包,http://www.sqlalchemy.org/)来创建,我遇到过这样一种情况,在数据库的两个表之间,存在一对一的关系。为了具体化,我有一个名为“Identification”的表,它包含两列:1)内部id(用作主键),以及2)对象ID。这个表与我们可以称之为“分析”的另一个表有一对一的关系,它代表了我在每个对象上亲自生成的数据的唯一查找表(通过我的研究)。
我的问题是,一对一关系的存在是否意味着我应该将“识别”和“分析”结合到一个表中?我为sql数据库查看的每个模式都显示了一对多或多对多类型的方案。在数据库的表之间建立一对一的关系在概念上是错误还是坏?我甚至追求这个的原因是因为我所执行的这种分析可能是我想对每个对象进行的许多类型的分析之一,并且将识别表与数据分开会很好我从每次分析中回来。
感谢任何意见或评论!
答案 0 :(得分:4)
这很容易双管齐下。
在您所描述的情况下,它似乎是一对一的,第一个表只包含标识符,我会说最好对表进行规范化(组合它们),因为这样可以删除连接从有效的每个查询中需要的内容。
一般来说,只要有一对一的有效关系,我就会称之为真。话虽如此,还有另一种变体,即0..1到1.在这种情况下,例如,在表a中有一行可能在表b中有1行,或者没有。在这种情况下,将它们分开是有利的,因为否则您的列可能不适用于每一行而只是空着。
一般来说,在设计数据库时,问自己一个问题:“如果我不将它们合并,那么我将通过保持这些内容而获得什么?”在第一种情况下,你获得的收益很少而且失去了表现。