Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 将表划分为子表的缺点和优点_Ruby On Rails_Database_Database Design - Fatal编程技术网

Ruby on rails 将表划分为子表的缺点和优点

Ruby on rails 将表划分为子表的缺点和优点,ruby-on-rails,database,database-design,Ruby On Rails,Database,Database Design,假设我有一个包含100个字段的表,可以细分为许多子表,使用公钥外键可以连接这些表 table_a: field1, field2, field_3, field_3_sub_field1, field_3_sub_field2, ....field_100 现在,我可以保持原样,也可以创建另一个表field3: field3: field_3_sub_field1, field_3_sub_field2, 并得到一个简化的表a: table_a: field1, field2, ....f

假设我有一个包含100个字段的表,可以细分为许多子表,使用公钥外键可以连接这些表

table_a: field1, field2, field_3, field_3_sub_field1, field_3_sub_field2, ....field_100
现在,我可以保持原样,也可以创建另一个表
field3

field3: field_3_sub_field1, field_3_sub_field2, 
并得到一个简化的
表a

table_a: field1, field2, ....field_100, field_3_id

现在我的问题是,这种方法的优点和缺点是什么?

在一般情况下,我看不出将表分成几个表有什么好处

但是,在某些情况下,例如,如果您知道对于
field3
,您将有一些重复的值(对于主表的几行,相同的
field3
field3\u sub…
),那么将主表划分为多个表将允许您通过规范化数据来赢得空间(即,在您的
表\u a
中,几个
字段\u 3\u id
将是相同的,并指向相同的数据)


您应该更具体地说明存储在表中的内容,以获得更精确的答案。

在一般情况下,我不认为将表划分为多个表有任何好处

但是,在某些情况下,例如,如果您知道对于
field3
,您将有一些重复的值(对于主表的几行,相同的
field3
field3\u sub…
),那么将主表划分为多个表将允许您通过规范化数据来赢得空间(即,在您的
表\u a
中,几个
字段\u 3\u id
将是相同的,并指向相同的数据)


您应该更具体地说明存储在表中的内容,以获得更精确的答案。

除了一些专业目的外,您应该根据关系原则设计数据库模式,适当使用规范化和约束


在某些情况下,偏离这一点可能会带来好处,但在不了解具体情况的情况下,实际上不可能给出有意义的建议。关于这一主题的一般性建议可能会产生误导。

除了某些专业目的外,您应该根据关系原则设计数据库架构,并在优先使用规范化和约束


在某些情况下,偏离这一点可能会带来好处,但实际上,在不了解具体情况的情况下,给出有意义的建议是不可能的。关于这一主题的一般性建议可能会产生误导。

就我个人而言,如果你知道你的桌子倾向于成长分而治之

就个人而言,我想说的是,你想做的缺点不是一个好的做法,如果你知道你的表趋向于成长分而治之

为什么你让你的数据库变得那么大?通常10-12行会让人不舒服,20行非常大。100%同意这个问题无法得到有效的回答,因为目前还有一个更大的问题hand@Makoto:你的意思是“列”,对吗?当然,这是胡说八道。一个表有300-500列并不是什么大问题(前提是这是你需要的).数据库可以毫无问题地处理它。但是,在这种情况下,这里似乎确实存在架构设计错误。为什么让数据库变得那么大?通常10-12行会让人不舒服,20行非常大。100%同意Makoto的观点,这个问题无法有效地回答,因为此时有一个更大的问题hand@Makoto你是说nt“列”,对吗?这当然是胡说八道。一个表有300-500列(如果这是您所需要的)并不是什么大问题.数据库可以毫无问题地处理它。但是,在这种情况下,这里似乎确实存在架构设计错误。根据我的理解,您想说的是,如果每次我需要调用“表”时都调用了
sub_table
,在这种情况下,它不会带来任何好处,另一方面,如果不经常调用
sub_table
,那么将它们分开是个好主意。是吗?不,我是说这个问题是模糊的和假设的,因此不值得以当前形式回答,你应该遵循好的原则关系数据库设计。根据我的理解,您想说的是,如果每次我需要调用“表”时都调用了
sub\u table
,在这种情况下,它不会带来任何好处,另一方面,如果不经常调用
sub_table
,那么将它们分开是个好主意。是吗?不,我是说这个问题是模糊的和假设的,因此不值得以当前形式回答,你应该遵循好的原则关系数据库设计。