数据库需不需要冗余字段?

比如 Topic 表一个回复数的字段, Reply 表有一个楼层的字段。

(我用的是 Flask Sqlchemy )

这样每次增加一条回复,查一次写两个表

t = Topic.query.get(1)
r = Reply(楼层=t.回复数+1)
t.回复数 += 1

这样可以直接用 t.回复数 在模板查询,

如果去掉这个字段,查两次写一次

t = Topic.query.get(1)
r = Reply(楼层=t.reply.count())

但是这样只能用 t.reply.count() 在模板来查了。

请问哪样好?

阅读 3.9k
3 个回答

看业务的需求,如果业务中如果使用冗余比不冗余更方便,那么数据库就可以冗余。只能说没有完全的不冗余,能接受一定程度上的冗余。

如果查的次数肯定会大于更新的次数,那就冗余

你可以参考“反范式设计”。

推荐问题