请问使用这么多外键真的符合当下的实际开发环境吗?
来源:2-4 实体类设计与表创建C

无火的余烬
2019-06-12
看到建表用了这么多外键,于是去网上搜了一下关于实际开发中外键的应用,发现以下建议
1:在大数量的情况下,使用外键约束会导致很差的性能。一般互联网应想都不要去想外键这种东西了,连表连接查询最好都不要使用
2:大数据量时进行表的水平切分,像外键约束、触发器、存储过程这些都是禁区
3:数据完整性是业务的需要,因此得由业务层的应用程序来控制
4:外键会导致表结构非常混乱,几乎是动都不能去动,一层套一层的外键约束,在表很多的情况下很可能会导致循环约束
写回答
1回答
-
同学好,阿里规约也有说,尽量避免使用外键。但是我想说,黑猫白猫,能抓住老鼠的就是好猫,存在即合理,没有一成不变的规则。这里先解释一下为什么互联网的大型项目不用索引。原因是因为数据量太大,超出了id的取值范围,所以单表是容纳不下的,进而就要依据id去去模等方法去做表的划分,这也就意味着服务于单表的外键约束变得没有意义。但是针对我们这种比较小的项目,服务的是当地的市场,店铺数量和商品数量都极其有限,建立外键也就是建立索引,除了能约束我们创建商品的时候必须指名是哪家店铺之外,还能够加快获取数据的效率(具体可以查查索引的作用)。针对大的项目,主外键约束确实会让管理变得混乱,但是对于只有10张表左右的项目,主外键约束反而起到很好的帮助,关系明确,你也能快速了解到某个表的数据是依据哪张表的数据存在的前提才得以创建的。
412019-06-14
相似问题