首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Rails 5.2主键和外键现在是大整数了吗?理由是什么呢?

Rails 5.2主键和外键现在是大整数了。在Rails 5.2版本中,主键和外键默认都被设置为大整数(bigints)。这个改变是为了解决在处理大型数据集时可能出现的主键和外键溢出的问题。

主键和外键是关系数据库中非常重要的概念。主键用于唯一标识表中的每一行数据,而外键用于建立表与表之间的关联关系。在之前的版本中,Rails默认将主键和外键设置为整数类型(integers),这意味着它们的取值范围有限,当处理大型数据集时可能会出现溢出的问题。

将主键和外键设置为大整数类型(bigints)的优势是可以支持更大范围的数值,避免了溢出的问题。这对于处理大型数据集或者需要长期维护的应用程序非常重要。

Rails 5.2中的这个改变也带来了一些应用场景的变化。例如,在处理需要大量数据的应用程序时,使用大整数类型的主键和外键可以更好地支持数据的存储和查询。此外,对于需要与其他系统进行数据交换的应用程序,使用大整数类型的主键和外键可以更好地保持数据的一致性。

对于Rails 5.2版本,腾讯云提供了一系列与Rails开发相关的产品和服务。其中,推荐的产品是腾讯云数据库MySQL版(TencentDB for MySQL),它提供了高性能、高可用性的MySQL数据库服务,可以满足Rails应用程序的数据存储需求。您可以通过以下链接了解更多关于腾讯云数据库MySQL版的信息:

请注意,以上答案仅基于Rails 5.2版本的情况,对于其他版本可能会有所不同。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

MySQL必须知道的点!

5.禁止存储大文件或者照片 当人员照片较多时,分页查询速度明显变慢,之前1秒内响应,加了照片字段后,需要4~5秒左右才能响应。...大文件照片存储在文件系统,数据库里存URI更好 6.表必须有主键,例如自增主键 a)主键递增,数据行写入可以提高插入性能,可以避免Page分裂,减少表碎片提升空间内存的使用。...7.禁止使用,如果有完整性约束,需要应用程序控制 会导致表与表之间耦合,Update与Delete操作都会涉及相关联的表,十分影响SQL的性能,甚至会造成死锁。...>、NOT IN、NOT LIKE等,会导致全表扫描 b)%开头的模糊查询,会导致全表扫描 (4)禁止表使用JOIN查询,禁止表使用子查询 理由:会产生临时表,消耗较多内存与CPU,极大影响数据库性能...(5)禁止使用OR条件,必须改为IN查询 理由:旧版本Mysql的OR查询是不能命中索引的,即使能命中索引,为何要让数据库耗费更多的CPU帮助实施查询优化

69330
  • 阿里面试官必问的12个MySQL数据库基础知识,哪些你还不知道?

    数据库三范式是什么 mysql有关权限的表都有哪几个 MySQL的binlog有有几种录入格式?分别有什么区别?...数据库三范式是什么 第一范式:每个列都不可以再拆分。 第二范式:在第一范式的基础上,非主键列完全依赖于主键,而不能是依赖于主键的一部分。...第三范式:在第二范式的基础上,非主键列只依赖于主键,不依赖于其他非主键。 在设计数据库结构的时候,要尽量遵守三范式,如果不遵守,必须有足够的理由。比如性能。...并且还提供了行级锁的约束。它的设计的目标就是处理大数据容量的数据库系统。 MyIASM引擎(原本Mysql的默认引擎):不提供事务的支持,也不支持行级锁。...Innodb:更新(删除)操作频率也高,或者要保证数据的完整性;并发量高,支持事务。比如OA自动化办公系统。 最后 欢迎大家一起交流,喜欢文章记得关注我点个赞,感谢支持!

    1.4K00

    《深入浅出SQL》问答录(六)

    问答录 先看花絮 Q:如果是NULL,它右什么作用吗?有办法确定已经连接到父了吗? A:为NULL,表示在父表中没有相符的主键。...A:其实可以,但创建成约束后,就只能插入已经存在于父表中的值,有助于加强两张表间的连接。 ---- Q:加强连接?是什么意思?...如果我们试着删除主键表中的行或者是改变主键值,而这个主键是其他表的约束时,你就会收到错误警告。 ---- Q:所以上面说的那种,我就不能删除了是吗?...A:还是可以的,先移除外行即可。 ---- Q:遇到多对多关系的时候,一定要用中间件吗? A:不然?...插入列的值必须已经存在与父表的来源中,这是引用完整性。 创建作为表的约束提供了明确的优势,如果违反了规则,约束会阻止我们破坏表。 不一定要是父表的主键,但是要具有唯一性。

    1.1K20

    《深入浅出SQL》问答录

    有办法确定已经连接到父了吗? A:为NULL,表示在父表中没有相符的主键。但我们可以确认包含有意义、已经存储在父表中的值,请通过约束实现。...不能单纯的使用另一张表的,称之为,而不加上约束吗? A:其实可以,但创建成约束后,就只能插入已经存在于父表中的值,有助于加强两张表间的连接。 加强连接?是什么意思?...如果我们试着删除主键表中的行或者是改变主键值,而这个主键是其他表的约束时,你就会收到错误警告。 所以上面说的那种,我就不能删除了是吗? A:还是可以的,先移除外行即可。...插入列的值必须已经存在与父表的来源中,这是引用完整性。 创建作为表的约束提供了明确的优势,如果违反了规则,约束会阻止我们破坏表。 不一定要是父表的主键,但是要具有唯一性。 ?...有使用左连接取代右外联接的理由吗? A:一般来说,固定使用一种联接的习惯会让事情更简单,这样不容易搞混。

    2.9K50

    为什么不推荐数据库使用

    让我们来看看数据库可以没有的原因。首先一个简短的免责声明(因为文章引发了一些关于LinkedIn群体的争议):下面的理由绝不鼓励不要在数据库中使用约束。...这可以通过在重新加载时禁用来绕过。 然而,这引入了额外的逻辑复杂性以及另一个失败点。如上所述,对性能有负面影响。通常,成本大于收益,开发人员不用担心。...ORM(对象关系映射)框架或Ruby on Rails框架就是这种情况。 这些工具负责参照完整性,并与RDBMS一起创建更高级别的数据库引擎。这些框架可以自己创建数据库表,而不总是创建。...5.跨数据库关系 这可能不是数据库没有的正确理由,一些数据库跨越更多的物理数据库甚至引擎,并且在技术上可能不能创建跨越数据库的它不能在同一台服务器上的两个数据库上创建key。...也许这个原因以前一样,或者是下一个原因: 8.懒惰的架构师 在创建数据库时,如果要存储数据,则需要创建一些表列。这是最低限度。但是,您不必创建保持数据一致性的结构,如主键,唯一或约束。

    1.8K20

    数据库不推荐使用的 9 个理由

    让我们来看看数据库可以没有的原因。首先一个简短的免责声明(因为文章引发了一些关于LinkedIn群体的争议): 下面的理由绝不鼓励不要在数据库中使用约束。...这可以通过在重新加载时禁用来绕过。然而,这引入了额外的逻辑复杂性以及另一个失败点。如上所述,对性能有负面影响。通常,成本大于收益,开发人员不用担心。...ORM(对象关系映射)框架或Ruby on Rails框架就是这种情况。这些工具负责参照完整性,并与RDBMS一起创建更高级别的数据库引擎。这些框架可以自己创建数据库表,而不总是创建。...5.跨数据库关系 这可能不是数据库没有的正确理由,一些数据库跨越更多的物理数据库甚至引擎,并且在技术上可能不能创建跨越数据库的它不能在同一台服务器上的两个数据库上创建key。...也许这个原因以前一样,或者是下一个原因: 8.懒惰的架构师 在创建数据库时,如果要存储数据,则需要创建一些表列。这是最低限度。但是,您不必创建保持数据一致性的结构,如主键,唯一或约束。

    1.7K30

    “王者对战”之 MySQL 8 vs PostgreSQL 10

    有哪些不同之处? 现在,我们只剩下一个问题 —— 那么,选择一个而不选另一个的原因是什么? 生态系统是其中一个因素。...由于引用 JOIN 将触发主键查找,所以影响可能非常,这将导致大量查询。...但是,如果按照现代表设计的约定,将一个自动增量整数作为主键[1]——它被称为代理——那么拥有一个 聚集索引几乎总是可取的。...那么当你在一个列中有一个大型 JSON 对象时会发生什么? Postgres 使用 TOAST,这是一个专用的影子表(shadow table)存储。当行列被选中时,大型对象就会被拉出。...您不必为接受我说的——实际上在官方wiki上已经有对它的讨论,这表明现在是时候从InnoDB身上学回来一些好的想法了。

    4.1K21

    数据库不使用的 9 个理由

    让我们来看看数据库可以没有的原因。首先一个简短的免责声明(因为文章引发了一些关于LinkedIn群体的争议): 下面的理由绝不鼓励不要在数据库中使用约束。...这可以通过在重新加载时禁用来绕过。然而,这引入了额外的逻辑复杂性以及另一个失败点。如上所述,对性能有负面影响。通常,成本大于收益,开发人员不用担心。 4....ORM(对象关系映射)框架或Ruby on Rails框架就是这种情况。这些工具负责参照完整性,并与RDBMS一起创建更高级别的数据库引擎。这些框架可以自己创建数据库表,而不总是创建。...跨数据库关系 这可能不是数据库没有的正确理由,一些数据库跨越更多的物理数据库甚至引擎,并且在技术上可能不能创建跨越数据库的它不能在同一台服务器上的两个数据库上创建key。...也许这个原因以前一样,或者是下一个原因: 8. 懒惰的架构师 在创建数据库时,如果要存储数据,则需要创建一些表列。这是最低限度。但是,您不必创建保持数据一致性的结构,如主键,唯一或约束。

    1.2K10

    数据库不推荐使用的9个理由

    让我们来看看数据库可以没有的原因。首先一个简短的免责声明(因为文章引发了一些关于LinkedIn群体的争议): 下面的理由绝不鼓励不要在数据库中使用约束。...这可以通过在重新加载时禁用来绕过。然而,这引入了额外的逻辑复杂性以及另一个失败点。如上所述,对性能有负面影响。通常,成本大于收益,开发人员不用担心。...ORM(对象关系映射)框架或Ruby on Rails框架就是这种情况。这些工具负责参照完整性,并与RDBMS一起创建更高级别的数据库引擎。这些框架可以自己创建数据库表,而不总是创建。...5.跨数据库关系 这可能不是数据库没有的正确理由,一些数据库跨越更多的物理数据库甚至引擎,并且在技术上可能不能创建跨越数据库的它不能在同一台服务器上的两个数据库上创建key。...也许这个原因以前一样,或者是下一个原因: 8.懒惰的架构师 在创建数据库时,如果要存储数据,则需要创建一些表列。这是最低限度。但是,您不必创建保持数据一致性的结构,如主键,唯一或约束。

    2.1K10

    MySQL8PostgreSQL10功能对比

    现在MySQL 8PostgreSQL 10已经发布,现在是重新审视两个主要的开源关系数据库如何相互竞争的好时机。...也就是说,如果您在30台服务器上运行Rails应用程序,其中每台服务器具有16个CPU内核32个Unicorn worker,则您有960个连接。...使用聚合索引时,当您通过主键查找记录时,单个I / O将检索整行,而非聚集索引始终通过遵循引用至少需要两个I / O。由于引用联接将触发主键查找,因此影响可能很大,这将占查询的绝大多数。...但是,考虑到现代惯例,将自动递增的整数作为主键[1](称为代理),几乎总是希望拥有聚合索引。...MySQL上的压缩不仅适用于页面对象,而且适用于所有页面。它是通过在稀疏文件中使用打孔来实现的,稀疏文件受ext4或btrfs等现代文件系统支持。

    2.7K20

    MySQL(五)之DDL(数据定义语言)与六约束

    那怎么办?...,像这样的字段,就符合的特点,就可以使用约束,使该字段只能够存储另一张表的主键。     ...2)检的特点       2.1)、约束可以描述任意一个字段(包括主键),可以为空,并且一个表中可以有多个。但是字段中的值必须是另一张表中的主键。       ...2.3)、子表被约束修饰的字段必须父表的主键字段的类型一样。     注意:一个表中有被修饰的字段,就称该表有(是“有”。...tableAtableB两个表,被约束修饰的字段为tableB中的deptId,主键字段为tableA中的id  4.3、非空约束     NOT NULL:被该约束修饰了的字段,就不能为空,主键约束中就包括了这个约束

    1.9K90

    浅谈数据库主键策略

    因为主键的第二个作用是让其他表的引用自己,从而实现关系结构。一旦某个表的主键发生了变化,就会导致所有引用了该表的数据必须全部修改。...很多Web应用的数据库并不是强约束(仅仅引用主键但并没有设置约束),修改主键会导致数据完整性直接被破坏。 业务字段不可用于主键 所有涉及到业务的字段,无论它看上去是否唯一,都决不能用作主键。...那么,主键应该使用哪个字段主键必须使用单独的,完全没有业务含义的字段,也就是主键本身除了唯一标识不可修改这两个责任主键没有任何业务含义。...我们先看使用整数的问题。 使用整数有两个选择:数据库自增自己生成。 自己生成其实也是自增,无非就是把上次使用的值保存到某个地方,下次使用的时候继续自增。...为啥64位整数除掉时间戳只能用后面的fffff位

    1.5K100

    【自然框架】元数据的数据库结构的详细说明示例(二):数据库描述部分

    把这些都记录下来,并且加上说明关联,我觉得是很有必要的。...主键;3: ColSysName 字段名称 nvarchar 50 _ 数据库里的名称 ColName 对外名称 nvarchar 50 _ 显示给用户看的名称 ColType 字段类型 nvarchar...在表单里对应的控件 CheckKindID 验证类型 int 4 1 。...0 如果该字段是,则记录对应的表的名称 ForeignColumnID 对应字段名 int 4 0 如果该字段是,则记录在外表里对应的字段的名称 这个表里要记录一个项目里所有的字段的信息...60万、100万级别的数据,都不会有什么慢的感觉,小一点的项目才几十个表、一千不到的字段,怕什么?即使大一点的项目,几百个表、上万个字段,也只不过是“万”级别的数据,也没有什么可担心的。

    66050

    数据库知识学习,数据库设计优化攻略(一)

    1.3.3 主键的设计 ➢ 主键是必要的,SQL SERVER 的主键同时是一个唯一索引,而且在实际应用中,我们往往选择最小的组合作为主键, 所以主键往往适合作为表的聚集索引。...➢ 在有多个的表,主键的选择也比较重要,一般选择总的长度小的,小的的比较速度快,同时小的可以使主键 的 B 树结构的层次更少。...➢ 主键的选择还要注意组合主键的字段次序,对于组合主键来说,不同的字段次序的主键的性能差别可能会很大,一般 应该选择重复率低、单独或者组合查询可能性的字段放在前面。...1.3.4 的设计 ➢ 作为数据库对象,很多人认为麻烦而不用,实际上,在大部分情况下是很有用的,理由是: ➢ 是最高效的一致性维护方法,数据库的一致性要求,依次可以用、CHECK...我这里说的谨慎,是因为级联删除级联更新有些突破了传统的关于的定义,功能有点 太过强大,使用前必须确定自己已经把握好 其功能范围,否则,级联删除级联更新可能让你的数据莫名其妙 的被修改或者丢失。

    45830

    MySQL【一】基本使用----超详细教学

    :唯一标记每一行的记录 1.3.3约束: 主键primary key:foreign key: 简单来说: 主键:是这每组数据中唯一一个能定位到这一组数据的元素。...:这一组元素中该数据是另一个表中的主键,则称为。...,所以 学号课程号的属性组是一个主键 成绩表中的学号不是成绩表的主键,但它学生表中的学号相对应,并且学生表中的学号是学生表的主键,则称成绩表中的学号是学生表的 同理 成绩表中的课程号是课程表的...定义主键主要是为了维护关系数据库的完整性,总结一下: 1.主键是能确定一条记录的唯一标识,比如,一条记录包括身份正号,姓名,年龄。...比如,A表中的一个字段,是B表的主键,那他就可以是A表的

    75420

    数据库知识学习,数据库设计优化攻略(九)

    3.2.3 索引 索引是一个表优化的重要指标,在表优化中占有极其重要的成分,所以将单独写一章”SQL 索引一步到位“去告诉大家如何建立优化索引 3.2.4 主键的必要性 主键的设计,在全局数据库的设计中...因为:主键是实体的抽象,主键的配对,表示实体之间的连接。...主键的选择还要注意组合主键的字段次序,对于组合主键来说,不同的字段次序的主键的性能差别可能会很大,一般应该选择重复率低、单独或者组合查询可能性的字段放在前面。...作为数据库对象,很多人认为麻烦而不用,实际上,在大部分情况下是很有用的,理由是:是最高效的一致性维护方法数据库的一致性要求,依次可以用、CHECK 约束、规则约束、触发器、客户端程序...我这里说的谨慎,是因为级联删除级联更新有些突破了传统的关于的定义,功能有点太过强大,使用前必须确定自己已经把握好其功能范围,否则,级联删除级联更新可能让你的数据莫名其妙的被修改或者丢失。

    58430

    MySQL数据库知识点

    常用SQL语句 SQL语句主要分为哪几类 超、候选主键分别是什么? SQL 约束有哪几种?...数据库三范式是什么 第一范式:每个列都不可以再拆分。 第二范式:在第一范式的基础上,非主键列完全依赖于主键,而不能是依赖于主键的一部分。...并且还提供了行级锁的约束。它的设计的目标就是处理大数据容量的数据库系统。 MyIASM引擎(原本Mysql的默认引擎):不提供事务的支持,也不支持行级锁。...超、候选主键分别是什么? 超:在关系中能唯一标识元组的属性集称为关系模式的超。一个属性可以为作为一个超,多个属性组合在一起也可以作为一个超。超包含候选主键。...:在一个表中存在的另一个表的主键称此表的。 SQL 约束有哪几种? SQL 约束有哪几种? NOT NULL: 用于控制字段的内容一定不能为空(NULL)。

    76320

    【数据库设计SQL基础语法】--表的创建与操作--创建表的语法实例

    这种关系性是关系数据库的重要特征,支持数据的关联连接操作。 数据完整性: 表可以定义各种约束,如主键、唯一约束、等,以确保数据的完整性一致性。这有助于维护数据库中的高质量数据。...PRIMARY KEY, FOREIGN KEY是约束,分别表示主键。...4.3 创建包含主键的表 创建一个包含主键的表,例如,一个存储学生课程信息的表。...通过执行以上CREATE TABLE语句,就创建了三个表,其中student_courses表包含了主键,用于表示学生课程的关系。...在设计时需注意数据类型选择和约束的合理使用,以确保数据完整性、性能一致性。通过示例,了解了创建简单表、包含约束的表包含主键的表的语法。

    26510

    ​第十击 | 数据库理论20题

    FLOATDOUBLE在不指 定精度时,默认会按照实际的精度来显示,而DECIMAL在不指定精度时,默认整数为10,小数为0。 5 超、候选主键分别是什么?...超:在关系中能唯一标识元组的属性集称为关系模式的超。一个属性可以为作为一个超,多个属性组合在一起也可以作为一个超。超包含候选主键。 候选:是最小超,即没有冗余元素的超。...主键:数据库表中对储存数据对象予以唯一完整标识的数据列或属性的组合。一个数据列只能有一个主键,且主键的取值不能缺失,即不能为空值(Null)。 :在一个表中存在的另一个表的主键称此表的。... 是相对于主键的,比如在学生记录里,主键为学号,在成绩单表中也有学号字段,因此学号为成绩单表的,为学生表的主键。所以,主键为候选的子集,候选为超的子集,而外的确定是相对于主键的。...缺点是什么 它的可移植性差,存储过程不能跨数据库移植,比如在 MySQL、Oracle SQL Server 里编写的存储过程,在换成其他数据库时都需要重新编写。

    58630
    领券