V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
sd8v8v88v
V2EX  ›  Python

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

  •  
  •   sd8v8v88v · 2016-06-15 13:03:15 +08:00 · 2532 次点击
    这是一个创建于 2893 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    请问哪样好?

    zpvip
        1
    zpvip  
       2016-06-15 17:21:07 +08:00
    时间换空间,空间换时间,另外,数据一致性问题能不能保证,要不要保证,自己想明白就好了
    Neveroldmilk
        2
    Neveroldmilk  
       2016-06-15 17:21:52 +08:00
    数据库设计经常碰到这种问题,要么牺牲空间换速度,要么牺牲速度省空间。内有一概而论的答案,要看你是注重速度还是存储空间了。
    petelin
        3
    petelin  
       2016-06-15 18:48:25 +08:00 via Android
    你们倒是说说那个是时间短,那个是存储少啊,查 1 写 2 ,查 2 写 1 那个快?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1881 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 16:27 · PVG 00:27 · LAX 09:27 · JFK 12:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.