数据库表中字段该不该添加的问题?

solverpeng 发布于 2016/05/20 19:41
阅读 198
收藏 0

问题:数据库表中字段该不该添加?

描述:A,B,C三张表,其中B表通过id关联A表,C表通过id关联B表 。在项目开发的过程中,查询C表的信息和A表id这样的信息,又在C表中添加了A的id,但是C本身和A不存在这样的关系,是人为的给添加的。

讨论:这样的表结构设计是否不合理?之前做过的好多项目或多或少都存在这样的问题,这样做存在什么样的问题?我自己觉得这样不太可取,暂且想到两点:1.虽然这次查询方便了,但是保存C表的时候,得多保存一个A表的id;2.如果遇见每个这样的需求,都通过添加字段来维系,其实并反倒没有降低开发成本,因为还得去维护保存C表对象,还有就是给C表添加n多不是它的属性,这样迭代到后期,其实更加不利于维护。

不明白我这样想对吗,求大神指点迷津。

加载中
1
魔力猫
魔力猫

第一,在你不知道该如何做的时候,先按照规范来。

第二,除非真的有特殊的性能问题,不然不要轻易违反范式。而99.99%的问题,都不是按规范造成的,都是拙劣的设计与SQL编写能力的问题。

1
高山流水情
高山流水情
我建议还是要按范式来设计,不要冗余。sql复杂一点无所谓,性能有要求可以上缓存。
0
tinshen
tinshen
现在存储不值钱。机器运算过剩。
0
tywali
tywali
我是觉得这个得具体问题具体分析,如果从表C关联查询表A的情况比较多,那么表C中不妨存一下表A的ID,如果只是偶尔关联下,那就没必要了。
0
彩云小斯
彩云小斯
我觉得就是不符合范式了吧。有冗余数据,其他没什么。
0
李永china
李永china
实际项目中 遵循第一 第二范式 就行  多表维护会影响性能(特别高并发情况下),所以数据在可控下是可以数据冗余的
0
sss6666
sss6666
这样的做法是因为做冗余数据,会增强某些查询的效率。
返回顶部
顶部