Ruby on rails Rails-向模型中添加额外的列或创建额外的关联(表)?

Ruby on rails Rails-向模型中添加额外的列或创建额外的关联(表)?,ruby-on-rails,performance,optimization,Ruby On Rails,Performance,Optimization,我的应用程序上有两种型号:person和person\u bio person\u bio有4个字段: 一个人关联(外键)、一个文本列、一个源id(外键)和一个生物url 一位同事建议我将所有新字段改为放在person上,因为这样可以减少插入/更新的复杂性和工作量 考虑到person拥有数百万条记录,最好的选择是什么 bio是可选的,这意味着,如果在person上插入列,我们会有许多空值,这会影响mysql的性能吗?虽然这取决于很多事情,但一般来说,如果person和person\u bio之间

我的应用程序上有两种型号:
person
person\u bio

person\u bio
有4个字段:

一个人关联(外键)、一个文本列、一个
源id
(外键)和一个
生物url

一位同事建议我将所有新字段改为放在
person
上,因为这样可以减少插入/更新的复杂性和工作量

考虑到
person
拥有数百万条记录,最好的选择是什么


bio是可选的,这意味着,如果在
person
上插入列,我们会有许多空值,这会影响mysql的性能吗?

虽然这取决于很多事情,但一般来说,如果
person
person\u bio
之间的关系是一对一,将
person\u bio
字段放在
person
中更有意义,因为这样可以降低复杂性。

答案只取决于您访问数据的方式,即,如果每次检索某人的信息时,您还需要检索此人的bio,然后将所有信息放在一起,如果你只在某些情况下需要生物信息,请将它们放在单独的表格中

这是考虑到数据库性能的


显然,如果您正在创建某种API,您可以使用两个不同的端点来检索人员信息和人员信息及其个人资料。

尽管这是一个基于意见的问题,但除非一个人有多个PesonBios,否则将其全部放在人员上是最有意义的。这个数据不需要单独的表。一个人只能有一个BIO。你最常用的查询是什么?拉所有的人或人登录并查看/编辑他们的BIO。看起来所有的属性(列)似乎是实体的一部分(列)似乎是实体的一部分(代码)>人< /代码>。谢谢大家,当你创建一个新的关联时,你会考虑什么,而不是把更多的信息放进模型中?仅用于一对多的关联?看看你的评论,如果“一个人只能有一个bio”意味着该人可能没有任何bio,那么将其分为两个表的方法更合适。最好将它们分开,而不是在元组中有很多空属性。是的,一个人可能有一个,但最初,我们会有一堆空值。天哪。。现在我很困惑。