为了账号安全,请及时绑定邮箱和手机立即绑定

我应该在所有相关表中包含自动增量 id 吗?

我应该在所有相关表中包含自动增量 id 吗?

PHP
qq_遁去的一_1 2021-12-03 15:24:39
我在 Laravel 应用程序中有多个表,具有 1 对 1 的关系,例如users, users_settings,user_financial还有一些一对多的关系,比如 users_histories我的问题是:1. 我应该总是首先包含增量id吗?例如id,下面的表#2 中是否有必要?表格1:id (primary,increments) , name, email, password表 2:id (primary,increments), user_id, something_extra ^ why does every guide include this? // e.g. https://appdividend.com/2017/10/12/laravel-one-to-one-eloquent-relationships/我不能只使用 user_id 作为主键并跳过增量键吗?因为我想在表 1 中插入数据后立即将其自动插入表 2。2. tablesLaravel 中的1-to-1 和 1-to-many 应该如何命名?`我搜索但没有找到任何不同类型关系的命名约定......目前我这样做:users带有主键的表id是基础。一对一: users_settings外键user_id一对多: users_histories foreign_keyuser_id多对多: users_groups foreign_keyuser_id前两个表应该命名为settings/ setting,histories/history吗?对不起,我在这里有点困惑。
查看完整描述

2 回答

?
慕的地8271018

TA贡献1796条经验 获得超4个赞

我实际上在两天前问了一个类似的问题。这取决于你,但我会说是的。在我的情况下,如果我不自动增加相关表中的所有 ID,数据将不会与正确的用户相关联。然而,有一种说法认为在这种情况下不应使用 auto_increment 列,但它们对其他事情很有用。根据某些人的说法,这些关系可能没有那么有意义,因此关系的意义取决于您和数据表的具体情况。无论如何,在决定要做什么之前,您应该更多地研究 auto_incrementing 相关表中所有 ids 的优点,以及可能的缺点。无论哪种方式都很好,但它们提供了不同的优点和缺点-您


查看完整回答
反对 回复 2021-12-03
?
尚方宝剑之说

TA贡献1788条经验 获得超4个赞

  1. 这是一个关于主键的争论不休的话题。恕我直言,不,你不应该。数据库中的每一列都应该有一个用途。在此之后,对于您的示例,我同意 auto_increment id 是多余的,这仅仅是因为它没有目的。第二个表仍然唯一地描述用户,因此主键应该是 user_id。

    除了上述之外,还有一个原则让我决定是否需要auto_increment id:是否可以将表视为实体。例如,用户显然是一个实体,但关系不是(在大多数情况下),即组合键可以达到目的。但是,当关系表扩展为具有更多属性并且它具有 auto_increment id 开始变得有意义时。

  2. 我对 Laravel 没有太多经验,但数据库表的命名不应该由框架决定。比较 history 和 user_history,新 DBA 或开发人员在不查看其数据的情况下对这两个名称有何期望?user_history 更准确地描述了该表


查看完整回答
反对 回复 2021-12-03
  • 2 回答
  • 0 关注
  • 170 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信