重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇文章主要介绍sql设计表结构的常见问题有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
创新互联长期为上千多家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为荣县企业提供专业的做网站、成都网站制作,荣县网站改版等技术服务。拥有十余年丰富建站经验和众多成功案例,为您定制开发。
简单说就是有个表,字段经常变动,表结构该怎么设计?
例子:入金订单表(已经有29个字段)。因业务发展,入金订单有了拓展业务,有了三个拓展业务,paygo入金订单,自营入金订单,话费入金订单。paygo入金,需要增加4个字段(ADDRESS,LONGITUDE,LATITUDE,DEVICE_NO)。自营入金拓展需要增加7个字段(COUNTER_NO,BRANCH_NO,BUSINESS_CREATE_TIME,BUSINESS_ORDER_NO,BRANCH_NAME,SERVICE_FEE,ORDER_FEE)。话费入金订单需要增加1个字段。
不知道我说明白这件事情了吗?就是说,一个表经常增加字段,增加的字段又不是所有数据都用到。
暂且称之为key-value方法。Ext_key存储增加字段名,ext_value存储字段值。
这个设计带来了很大灵活性,但是用起来,编写sql就不容易。设计到行转列,列转行。维护扩展起来不会方便。
来看下其中一个业务的sql:
如果统计的话会更复杂了。后期维护也会困难。
再增加一个订单扩展表1,把经常变动的扩展字段放到扩展表。这样设计之后,可以想到,就变成了订单表和扩展表的简单join了,sql也更加清爽了。
(1)经常改表结构,会不会锁表?当然会。但是目前oracle,包括MySQL(5.7),增加表字段,增加字段速度很快。
(2)数据很多冗余。可以想到,paygo入金和自营入金相互用不到对方的字段,对应列就是空数据。空数据占用空间不大,我觉得可以忽略这个问题。
(3)假设这样一种情况,paygo入金订单扩展有1千万数据,自营入金订单扩展有500数据,话费入金订单扩展500条数据,paygo订单扩展表显得很冗余哦。遇到这种问题我觉得可以拆分:入金订单扩展表,paygo入金订单扩展表。这样编写sql的时候,也是非常简单的3表join.
以上是“sql设计表结构的常见问题有哪些”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注创新互联行业资讯频道!