数据库中的外键有用吗?

我编程时,用到数据库都没有设置外键,那实际项目中,请问遇到外键的情况多吗?外键到底用来做什么,谢谢?

当然有用了.

有两个表.
表1:(存放的是用户资料)
包含3列:id,姓名,性别
表2:(存放的是的成绩)
包含3列:userid,课程,成绩.
外键关系:
表2.userid==表1.id

当你在表2中插入成绩时,数据库会自动检查用户是否在表1中存在.
如果外键有级联删除时删除表1的用户时,会同时自动删除表2的相关数据.
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-10-27

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

优点:

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

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

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

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

    增加文档的可读性

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

    缺点:

    性能压力

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

    其他功能的灵活性不佳

    比如,表结构的更新等。

第2个回答  2007-03-16
之所以很多数据库没有FK是因为,这些程序一般无需直接操作数据库,而是通过程序来完成的,这就是说只要程序没有漏洞有没有FK都一样

外建的作用主要是约束用,防止出错
比如表a中有一个类型字段只允许表b中有的数据
这种情况下可以关联一个FK,有FK的话,一旦想向表a中的那个字段插入表b中没有的数据的话就会直接报外键约束的错误本回答被提问者采纳
相似回答