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

2016-06-15 13:03:15 +08:00
 sd8v8v88v

比如 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() 在模板来查了。

请问哪样好?

2591 次点击
所在节点    Python
3 条回复
zpvip
2016-06-15 17:21:07 +08:00
时间换空间,空间换时间,另外,数据一致性问题能不能保证,要不要保证,自己想明白就好了
Neveroldmilk
2016-06-15 17:21:52 +08:00
数据库设计经常碰到这种问题,要么牺牲空间换速度,要么牺牲速度省空间。内有一概而论的答案,要看你是注重速度还是存储空间了。
petelin
2016-06-15 18:48:25 +08:00
你们倒是说说那个是时间短,那个是存储少啊,查 1 写 2 ,查 2 写 1 那个快?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/285883

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX