什么是外键?为什么要使用外键?

什么是外键?

        外键   ( foreign key )   是用于建立和加强两个表数据之间的链接的一列或多列。通过将保存表中主键值的一列或多列添加到另一个表中,可创建两个表之间的链接。这个列就成为第二个表的外键。 

为什么要使用外键?

        保证数据的参照完整性。

不用会怎样?

       不用也不会怎么样,如果一个健壮的系统,数据库中的数据一定有很好的参照完整性,如果不用外键,就要多写代码对数据的完整性进行额外的判断 。

       外键的作用很重要,最好在数据库中使用。

       下面举一个栗子就会明白。

             比如有两张表格,一个是学生档案,另一个是上学期间的成绩单

             档案中会有:学号,姓名。(学号为主键)   
             成绩单有(这里尽量简化):学期号,学号,平均分数(学期号,学号两个同时为主键,学号同时为外键)   
             为了保证成绩单上的数据有效,所以要求录入学号时,必需保证档案中有这个学号,否则就不能录入。 从而保证了成绩单上的成绩数据的引用完整,否则将会是垃圾数据。   

        如果用程序控制,有很多缺点;录入成绩单时为了保证学号有效,首先要搜索档案,当档案很大时会影响效率。程序控制并不能保证百分之百引用完整性,尤其是并发操作。

        说一个特例(主要是说明程序控制不好): 此例的操作流程正确与否不重要,但说明了程序控制并不是好方法。  
              比如: A录入成绩单,B在编辑档案。   
        当A录入张三的成绩,保存时,搜索张三存在,于是程序下一步就要存盘,但这时B恰好把张三删除了。但A那边的程序并不知道,于是就把一条垃圾数据存进数据库中了。   
        

posted @   李若盛开  阅读(35840)  评论(0编辑  收藏  举报
编辑推荐:
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
阅读排行:
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
点击右上角即可分享
微信分享提示