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
alvy
V2EX  ›  Python

数据表设计问题

  •  
  •   alvy · 2017-12-18 15:06:45 +08:00 · 1953 次点击
    这是一个创建于 2517 天前的主题,其中的信息可能已经有所发展或是发生改变。
    比如商品,商品分好几种类型,不同类型有自己的独有属性,那么设计的时候两种方案:
    1. 一个类型设计一张表
    2. 一张表,然后有个类型字段,属性都放这个表里面

    优劣比较:
    1. 逻辑清晰,但是维护多张表会麻烦,比如修改删除会操作多张表
    2. 只需对一张表操作,但是字段属性看着会比较乱

    还需要考虑什么呢?如何取舍?
    6 条回复    2017-12-20 13:48:55 +08:00
    jtsai
        1
    jtsai  
       2017-12-18 15:13:50 +08:00 via Android
    属性要分表
    alvy
        2
    alvy  
    OP
       2017-12-18 15:14:23 +08:00
    @jtsai 然后呢
    yuhuigreed
        3
    yuhuigreed  
       2017-12-18 15:41:58 +08:00
    一张属性表、一张商品表。商品表里面有个属性 ID 字段关联属性。
    yang2yang
        4
    yang2yang  
       2017-12-18 15:59:56 +08:00
    方法一:一张属性表、一张商品表。属性表里面有个外键关联商品。不过这种方式每次都要 join 操作。如果还有其他表关联,以后会 join 越来越多的表。找数据很麻烦。
    方法二:野方法。直接在商品表里面弄个属性字段,这个字段放一个 json 串来表示属性,这种方式每次只要查一种表,但是以后会越来越乱,不合适,可能适合一些小功能的实现吧。
    saulshao
        5
    saulshao  
       2017-12-18 16:07:46 +08:00
    下面是扩展性比较好的设计:
    1. 商品类型表 - 这个表只保存商品类型本身的信息,例如英文名字,ID,中文名字等等
    2. 商品类型可能有的属性表: - 这个表保存商品具备的所有属性,你可能还需要一个表来维护属性的"属性"(主要给开发用)
    3. 商品和商品类型的对应关系表: - 商品和商品类型的对应关系。
    3. 商品对应的属性值表: - 保存商品与属性值对应关系。
    alvy
        6
    alvy  
    OP
       2017-12-20 13:48:55 +08:00
    谢谢楼上几位,我再思考思考
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1012 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 19:43 · PVG 03:43 · LAX 11:43 · JFK 14:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.