使用一对一表关系有哪些优点?(MySQL)

2022-08-30 20:54:50

与简单地将所有数据存储在一个表中相比,使用一对一表关系有什么优点?我理解并使用一对多,多对一和多对多的关系,但是实现一对一关系似乎是一项繁琐且不必要的任务,特别是如果您使用命名约定将(php)对象与数据库表相关联。

我无法在网络或这个网站上找到任何可以提供一对一关系的现实世界例子的东西。起初,我认为将“用户”分成两个表可能是合乎逻辑的,一个包含公共信息,如个人资料页面的“关于我”,另一个包含私人信息,如登录名/密码等。但是,当您无论如何都可以从该表中选择要选择的字段时,为什么要经历使用不必要的JOIN的所有麻烦呢?如果我显示用户的个人资料页面,显然我只会选择ID,用户名,电子邮件,aboutme等,而不是包含其私人信息的字段。

有人想用一些现实世界的一对一关系的例子来启发我吗?


答案 1

一种可能的用途是当部分信息是可选的。这样,您就不需要在一个大表中有一堆可为 null 的字段,而是可以在逻辑上将其分为强制表和可选表。

其他用途是当某些数据与不同的表共享时。例如,假设您有一个销售计算机零件的网站。您可以将所有组件共享的详细信息放入例如中。“零件”表,但将细节放在“主板”,“cpu”等中,这些细节只会使用具有一对一关系的零件表。


答案 2

我使用一对一关系来扩展现有应用程序中的某些功能,而不会影响应用程序数据库结构。这是扩展现有数据库表的一种不显眼的方法。

使用一对一关系的另一个原因是为了实现类表继承,其中层次结构中的每个类都有一个表,并且对象在他的表类,父类表,祖类表中等中具有相应的行。

例如,请参见“原则 2 类表继承”页


推荐