表间关系和外键约束 SQL Server系列教程(七)

2023-10-18 09:08

本文主要是介绍表间关系和外键约束 SQL Server系列教程(七),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

外键,也称为Foreign Key,它是用于建立和加强两个表数据之间的链接的一列或多列。我们在前面的课程中讲到了“主键”这个概念,“外键”与主键虽然不是同一个概念,但是它们之间有着紧密的联系。通过将保存表中主键值的列或多列添加到另一个表中,可以创建两个表之间的链接。这样,这个列就成为了第二个表的外键。

  我们来举个例,说明外键的作用。数据库“School Information” 中的班级表 “Class” 和学生表 “Student” 表之间存在着连接,因为在班级和学生之间存在逻辑联系。

  我们先建立好学生表“Student”,表的结构如图1 中所示。

图1

  其中StudentID为主键,将标识种了标识自增量都设为1。“Class ID”列与班级表“Class”中的主键“Class ID”相对应。这样,班级表中的“Class ID”主键列就是学生表的外键列。这个列是不允许空值存在的,所以我们将“允许空”这个选框中的勾去掉。

  点击工具栏上面的“管理关系”按钮,打开“Student”表的“属性”对话框,并且切换到“关系”选项卡。在“关系”选项卡中,点击“新建”按钮。系统会增加一个表示表间关系的外键,这个关系的名称为“FK Student Class”。在“Class”表与“Student”表之间,“Class”表是主键所在的表,而“Student”是外键所在的表。在“Class”表下面的下拉框中选择“Class ID”列,在“Student”表下面的下拉框中也选择“ClassID”,因为我们要让这两个表之间通过“ClassID”来建立链接。如图2所示。

图2

  在下方的几个复选框中有向个选项。“创建中检查现存数据”这个选项设置我们在创建这个外键的时候,是否要检查表中已经存在的数据。另外,当一个班级被删除了之后,这个班级的学生也是没有意义的。那么,我们设想一下,如果在这个班级被删除之后,系统能够自动删除这个班级的所有学生的资料,在一些情况下,这个功能无疑是很有吸引力的。“级联删除相关的记录”这个选项就是指的这项功能。我们勾选上这个选项之后,我们只要在“Class”表中删除一个班级,“Student”表中的所有属于这个班级的学生就会自动被删除。

  点击“关闭”按钮,回到设计视图中,再在“设计视图”中,点击工具栏上面的“保存”按钮。在弹出的“保存提示”对话框中,显示“下列表将保存到您的数据库中。您想继续吗?”。大家可以看到,上面显示有两个表将被保存到数据库中。如图3 。

图3

  在前面的几步操作中,我们只打开了“Student”表的设计视图,并修改了这个表的结构,我们并没有对“Class”表作任何修改。而在这里的提示则说明“Class”表和“Student”表都已经被修改,这就说明,我们已经为“Class”表和“Student”表之间建立了一个“表间联系”了。点击“是”按钮即可。

  点击“关闭”按钮,关闭“Student”表的设计视图,我们已经完成了“Student”表的外键设计了。

 

这篇关于表间关系和外键约束 SQL Server系列教程(七)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/231595

相关文章

MySQL中On duplicate key update的实现示例

《MySQL中Onduplicatekeyupdate的实现示例》ONDUPLICATEKEYUPDATE是一种MySQL的语法,它在插入新数据时,如果遇到唯一键冲突,则会执行更新操作,而不是抛... 目录1/ ON DUPLICATE KEY UPDATE的简介2/ ON DUPLICATE KEY UP

MySQL分库分表的实践示例

《MySQL分库分表的实践示例》MySQL分库分表适用于数据量大或并发压力高的场景,核心技术包括水平/垂直分片和分库,需应对分布式事务、跨库查询等挑战,通过中间件和解决方案实现,最佳实践为合理策略、备... 目录一、分库分表的触发条件1.1 数据量阈值1.2 并发压力二、分库分表的核心技术模块2.1 水平分

Python与MySQL实现数据库实时同步的详细步骤

《Python与MySQL实现数据库实时同步的详细步骤》在日常开发中,数据同步是一项常见的需求,本篇文章将使用Python和MySQL来实现数据库实时同步,我们将围绕数据变更捕获、数据处理和数据写入这... 目录前言摘要概述:数据同步方案1. 基本思路2. mysql Binlog 简介实现步骤与代码示例1

基于C#实现PDF转图片的详细教程

《基于C#实现PDF转图片的详细教程》在数字化办公场景中,PDF文件的可视化处理需求日益增长,本文将围绕Spire.PDFfor.NET这一工具,详解如何通过C#将PDF转换为JPG、PNG等主流图片... 目录引言一、组件部署二、快速入门:PDF 转图片的核心 C# 代码三、分辨率设置 - 清晰度的决定因

Python 基于http.server模块实现简单http服务的代码举例

《Python基于http.server模块实现简单http服务的代码举例》Pythonhttp.server模块通过继承BaseHTTPRequestHandler处理HTTP请求,使用Threa... 目录测试环境代码实现相关介绍模块简介类及相关函数简介参考链接测试环境win11专业版python

使用shardingsphere实现mysql数据库分片方式

《使用shardingsphere实现mysql数据库分片方式》本文介绍如何使用ShardingSphere-JDBC在SpringBoot中实现MySQL水平分库,涵盖分片策略、路由算法及零侵入配置... 目录一、ShardingSphere 简介1.1 对比1.2 核心概念1.3 Sharding-Sp

Java Scanner类解析与实战教程

《JavaScanner类解析与实战教程》JavaScanner类(java.util包)是文本输入解析工具,支持基本类型和字符串读取,基于Readable接口与正则分隔符实现,适用于控制台、文件输... 目录一、核心设计与工作原理1.底层依赖2.解析机制A.核心逻辑基于分隔符(delimiter)和模式匹

MySQL 表空却 ibd 文件过大的问题及解决方法

《MySQL表空却ibd文件过大的问题及解决方法》本文给大家介绍MySQL表空却ibd文件过大的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录一、问题背景:表空却 “吃满” 磁盘的怪事二、问题复现:一步步编程还原异常场景1. 准备测试源表与数据

Mac电脑如何通过 IntelliJ IDEA 远程连接 MySQL

《Mac电脑如何通过IntelliJIDEA远程连接MySQL》本文详解Mac通过IntelliJIDEA远程连接MySQL的步骤,本文通过图文并茂的形式给大家介绍的非常详细,感兴趣的朋友跟... 目录MAC电脑通过 IntelliJ IDEA 远程连接 mysql 的详细教程一、前缀条件确认二、打开 ID

MySQL的配置文件详解及实例代码

《MySQL的配置文件详解及实例代码》MySQL的配置文件是服务器运行的重要组成部分,用于设置服务器操作的各种参数,下面:本文主要介绍MySQL配置文件的相关资料,文中通过代码介绍的非常详细,需要... 目录前言一、配置文件结构1.[mysqld]2.[client]3.[mysql]4.[mysqldum