我对一对一的关系有些怀疑。在我的例子中,我有一家公司,公司有一个地址。 (数据类型是随机的,仅用于举例说明)
选项1:
选项2:
什么是最好的选择?我知道,我可以将所有数据放在同一个表中,但是单个表的属性很多。
答案 0 :(得分:1)
我个人试图避免创建一对一的关系。在您的示例中,您有一家与地址有关系的公司。我只是将外键放在公司表上,这将正式使这成为一对多的关系(即使你永远不会那样使用它)。所以,我首先会问你是否可以接受一个允许两家公司拥有相同地址的模型。
如果不是,一对一关系的可能解决方案是与主键共享相同的值。因此公司表中的ID 1000与地址表中的ID 1000匹配。很多像EF和Hibernate这样的ORM工具都使用这种方法,没有很好的原生SQL支持方式,没有遇到很多问题(级联删除提一个)
答案 1 :(得分:0)
我同意Fredrik Rudberg的观点。除非另一个表代表一个独立的实体(这是特定于问题域),否则不建议将其保持在单独的表中以实现一对一的关系。 您是否有地址表(如果已创建)有助于满足任何其他业务需求?如果没有,那么将地址显示为公司实体(公司表)的属性(列)不是一个好主意吗?
答案 2 :(得分:0)
我在两种情况下创建了1-1关系:
Address
)可以与其他表连接。所以我把它作为一个独立的实体。考虑到这一点,&虽然你的设计不允许第一种情况发生(因为其中有Company_id
列),我会将两个表都推入一个。不要担心桌子的大小。在你的情况下,这不是什么大不了的事。