一个数据表中 50 多个字段,合理吗?
表中明明有关联字段,还要存很多关联表中的其他字段,说是为了查询方便,合理吗?
项目中经常增加一些冗余字段来方便查询,主要看业务场景。不过这个 50 多个字段维护起来确实有点头疼,可以适当拆分成两到按个 tb 去处理
遇到过一个情况,比如说一个订单,有很多货品,然后通过中间表建立关联, 中间表就存了两个 id, 后面当删除了货品,查看订单,就没数据了,所以要么就需要在中间表中存上货品相关的信息,要么就做一个软删除才行
这要看业务了,如果不长更改的字段,为了查询,有少量冗余字段也没所谓,而且查询确实方便,但如果比较容易更改的字段就建议不要这么做,同步数据很麻烦,得不偿失
每个数据库不同,比如 mysql 限制了一个表的最大字段数为 4096
当然由于有 row limit,可能达不到这个数
具体可以参考这里
上百个字段的表目前还没没遇到过,即使是上百个字段也不能说一定不合理,
合理不合理跟你保存什么内容、如何使用等等有关
我觉的应该首先分析这个表 50 个字段导致了哪些问题让你感觉不合理
分析完以后才能判断是不是真的不合理
如果知道是如何变成这样的那就更好,有时候知道原因以后或许有种原来如此的感觉
解决掉不合理的问题,应该就变成了合理了 (暂时)
从实际业务来看,是不是要加冗余字段是根据你的业务逐步发展来看的。 项目刚开始的时候,各个表都严格遵守第三范式,哪怕是好几个表的 join 也没啥问题。 后来数据多了,你发现 join 完了数据量极大,一个 ransack 的查询就要 1 秒多,那必然要看怎么才能快一点。 快一点的话,无非是冗余或者 cache 或者直接搜索切换 es。 所以你的问题如果不带着场景,谁也没法判断合理还是不合理。