mysql - 涉及多个表的一对一关系

标签 mysql sql database database-design one-to-one

说,

我有 3 个表。

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

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

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

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

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

id  name   section_a_id   section_b_id
1   matt   1               1

问题是,section_a_idsection_b_id 不能自动递增,因为它们不是主键。

所以我尝试了一种不同的方法,并决定 User 中的 id 主键应该是引用 section_a_id 和 section_b_id 的外键`。但我无法这样做,因为 mysql 只允许引用一个表。

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

最佳答案

如果是一对一的关系,将三个表合并成一个大表总是更容易,Section 表的列可以为空。

我可以看到这种方法的一些积极方面:

  • 更轻松的插入、更新和删除操作。
  • 当使用的连接较少时,数据检索速度更快。
  • 索引空间更少,因为您为一个表而不是三个表索引主键。

关于mysql - 涉及多个表的一对一关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45914666/

相关文章:

php - 公司 vs 员工 ID 困境

sql - 由于 ORDER BY 未使用索引导致 SQL 查询缓慢

php - 如何? PHP & MySQL 在一个函数中排序数据

mysql - CakePHP 数据库 - MyISAM、InnoDB 或 Postgresql

javascript - 如何使用 angularjs 和 PHP 将数组输入值存入数据库

sql - 如何创建一个 Postgres 11 触发器函数,在插入或更新表 'b' 时在表 'a' 中插入新行?

php - MySQL 全词匹配 – 多个词

sql - 用于自定义/预定义 SQL 查询的 Web GUI

database - 如何从 Progress 数据库中获取 ROWID

ruby-on-rails - Rails 连接表或 HABTM 关联