一尘不染

涉及多个表的一对一关系

sql

说,

我有3张表。

User 其中包含有关用户的基本信息。

SectionA 其中包含有关用户的更多信息。

SectionB 其中还包含有关用户的更多信息。

每个用户只能有一个SectionASectionB数据。

我的想法是创建一个像这样的表设计:

id  name   section_a_id   section_b_id
1   matt   1               1

问题是, section_a_id并且section_b_id不能被自动递增,因为它们不是主键。

因此,我尝试了另一种方法,并决定输入的id主键User应该是引用section_a_idand
section_b_id`的外键。但是我无法这样做,因为mysql只允许引用一个表。

那么我应该如何处理这种情况呢?


阅读 115

收藏
2021-05-16

共1个答案

一尘不染

如果是一对一的关系,将三个表合并为一个大表总是很容易的,对于Section表,这些表可以为空。

对于这种方法,我可以看到一些积极的观点:

  • 轻松进行插入,更新和删除操作。
  • 当要使用的联接较少时,数据检索速度更快。
  • 索引空间更少,因为您正在索引一个表而不是三个表的主键。
2021-05-16