• 关于阿里巴巴开发手册"不得使用外键与级联,一切外键概念必须在应用层解决"的疑惑


    原文地址:http://www.codes51.com/itwd/4517194.html

    问题: 关于阿里巴巴开发手册”不得使用外键与级联,一切外键概念必须在应用层解决”的疑惑
    描述:
    原文如下:

    【强制】不得使用外键与级联,一切外键概念必须在应用层解决。
    说明:以学生和成绩的关系为例,学生表中的 student id 是主键,那么成绩表中的 student id
    则为外键。如果更新学生表中的 student id ,同时触发成绩表中的 student id 更新,即为
    级联更新。外键与级联更新适用于单机低并发,不适合分布式、高并发集群 ; 级联更新是强阻
    塞,存在数据库更新风暴的风险 ; 外键影响数据库的插入速度。

    请问各位数据库是每个表都增加一个业务的编码字段做关联还是直接通过id关联呢?
    我的看法是:如果是小项目单库的话用id关联更方便,自动有主键索引,如果是分布式数据库项目每个表都建一个业务编码字段,通过业务编码字段关联,但是这样需要手动建索引提高查询效率.因为没有大项目的数据库经验,所以想问一下大中型的项目数据库业务关联是直接通过id关联还是增加一个业务编码字段关联呢?

    解决方案1:
    试试通过id关联,只是不在数据库上去约束

    解决方案2:
    就是不让用外键呗。 这个应该大多互联网项目 都不用外键了吧。我09年开始做互联网的项目,就没用过外键了。 至于为什么,楼上回答的好啊, 业务变动,修改数据库的成本很高。最重要的原因 文中说的也很清楚,分布式、高并发集群环境下,容易产生更新风暴。外键影响数据库的插入速度
    不用外键后, 各个数据表的关系维护,通过应用程序来解决。

    解决方案3:
    数据库表的关联,应该按照表的内部id做关联,不推荐用业务编码做主键。
    业务规则的变化是不可预测的,如果因为业务规则的变化导致数据库结构大的变动,甚至还要做数据更新,我认为是失败的设计方案。

    以上介绍了“ 关于阿里巴巴开发手册”不得使用外键与级联,一切外键概念必须在应用层解决”的疑惑”的问题解答,希望对有需要的网友有所帮助。

  • 相关阅读:
    Ionic Cordova 环境配置window
    滚动条超出表格标题,表格标题固定
    逗号分隔查询
    sulin LuceneNet 搜索二
    LuceneNet 搜索一
    Sql 竖表转横表
    div 无缝滚动
    【bfs】【中等难度】wikioi3055 青铜莲花池
    【bfs】【中等难度】tyvj P1234
    【简单思考】noip模拟赛 NTR酋长
  • 原文地址:https://www.cnblogs.com/wei1/p/9582038.html
Copyright © 2020-2023  润新知