数据库里面不建立主外键关系有什么好处

数据库里面不建立主外键关系有什么好处,第1张

不建立主外键的好处就是数据可以随意写入或删除,但这样的同时会造成数据容易出现错误。可举例说明:

主表

aid name

1 张三

2 李四

副表

id aid money

1 1 100

2 1 40

3 2 50

如上图,是有主外键的情况,其中副表的aid是主叫aid的外键,这样就能形成一种约束,如果在主表中没有的aid是绝不会出现在副表中,可如果副表中有一条(4 3 100)的数据,那么其中这个3在a表不存在,如果今后用于统计,这个是会造成系统的误差。

所以要合理利用好主外键关系,比如要删除主表中的aid=2的数据,那么要先删除副表中aid=2的数据,但是前提一定要对数据库的关系了解,否则容易造成误删。

保证数据的参照完整性外键的作用很重要,最好在数据库中使用。举一个例子比较明白。比如有两张表格,一个是学生档案,另一个是上学期间的成绩单档案中会有:学号,姓名。(学号为主键)成绩单有(简化过的):学期号,学号,平均分数(学期号,学号两个同时为主键,学号同时为外键)为了保证成绩单上的数据有效,所以要求录入学号时,必需保证档案中有这个学号,否则就不能录入。从而保证了成绩单上的成绩数据的引用完整,否则将会是垃圾数据。用程序控制,有很多缺点;录入成绩单时为了保证学号有效,首先要搜索档案,当档案很大时会影响效率。程序控制并不能保证百分之百引用完整性,尤其是并发 *** 作。说一个特例(主要是说明程序控制不好):A录入成绩单,B在编辑档案。当A录入张三的成绩,保存时,搜索张三存在,于是程序下一步就要存盘,但这时B恰好把张三删除了。但A那边的程序并不知道,于是就把一条垃圾数据存进数据库中了。此例的 *** 作流程正确与否不重要,但说明了程序控制并不是好方法。

不必须,可以了解一下外键的作用

外键的设计初衷是为了在数据库端保证对逻辑上相关联的表数据在 *** 作上的一致性与完整性。

优点:

精简关联数据,减少数据冗余

避免后期对大量冗余处理的额外运维 *** 作。

降低应用代码复杂性,减少了额外的异常处理

相关数据管理全由数据库端处理。

增加文档的可读性

特别是在表设计开始,绘制 ER 图的时候,逻辑简单明了,可读性非常强。

缺点:

性能压力

外键一般会存在级联功能,级联更新,级联删除等等。在海量数据场景,造成很大的性能压力。比如插入一条新记录,如果插入记录的表有 10 个外键,那势必要对关联的 10 张表逐一检查插入的记录是否合理,延误了正常插入的记录时间。并且父表的更新会连带子表加上相关的锁。

其他功能的灵活性不佳

比如,表结构的更新等。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10826708.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-11
下一篇 2023-05-11

发表评论

登录后才能评论

评论列表(0条)

保存