表间关系和外键约束 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

相关文章

IDEA自动生成注释模板的配置教程

《IDEA自动生成注释模板的配置教程》本文介绍了如何在IntelliJIDEA中配置类和方法的注释模板,包括自动生成项目名称、包名、日期和时间等内容,以及如何定制参数和返回值的注释格式,需要的朋友可以... 目录项目场景配置方法类注释模板定义类开头的注释步骤类注释效果方法注释模板定义方法开头的注释步骤方法注

数据库面试必备之MySQL中的乐观锁与悲观锁

《数据库面试必备之MySQL中的乐观锁与悲观锁》:本文主要介绍数据库面试必备之MySQL中乐观锁与悲观锁的相关资料,乐观锁适用于读多写少的场景,通过版本号检查避免冲突,而悲观锁适用于写多读少且对数... 目录一、引言二、乐观锁(一)原理(二)应用场景(三)示例代码三、悲观锁(一)原理(二)应用场景(三)示例

SQL表间关联查询实例详解

《SQL表间关联查询实例详解》本文主要讲解SQL语句中常用的表间关联查询方式,包括:左连接(leftjoin)、右连接(rightjoin)、全连接(fulljoin)、内连接(innerjoin)、... 目录简介样例准备左外连接右外连接全外连接内连接交叉连接自然连接简介本文主要讲解SQL语句中常用的表

SQL server配置管理器找不到如何打开它

《SQLserver配置管理器找不到如何打开它》最近遇到了SQLserver配置管理器打不开的问题,尝试在开始菜单栏搜SQLServerManager无果,于是将自己找到的方法总结分享给大家,对SQ... 目录方法一:桌面图标进入方法二:运行窗口进入方法三:查找文件路径方法四:检查 SQL Server 安

MySQL 中的 LIMIT 语句及基本用法

《MySQL中的LIMIT语句及基本用法》LIMIT语句用于限制查询返回的行数,常用于分页查询或取部分数据,提高查询效率,:本文主要介绍MySQL中的LIMIT语句,需要的朋友可以参考下... 目录mysql 中的 LIMIT 语句1. LIMIT 语法2. LIMIT 基本用法(1) 获取前 N 行数据(

SpringValidation数据校验之约束注解与分组校验方式

《SpringValidation数据校验之约束注解与分组校验方式》本文将深入探讨SpringValidation的核心功能,帮助开发者掌握约束注解的使用技巧和分组校验的高级应用,从而构建更加健壮和可... 目录引言一、Spring Validation基础架构1.1 jsR-380标准与Spring整合1

Python虚拟环境终极(含PyCharm的使用教程)

《Python虚拟环境终极(含PyCharm的使用教程)》:本文主要介绍Python虚拟环境终极(含PyCharm的使用教程),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录一、为什么需要虚拟环境?二、虚拟环境创建方式对比三、命令行创建虚拟环境(venv)3.1 基础命令3

使用Node.js制作图片上传服务的详细教程

《使用Node.js制作图片上传服务的详细教程》在现代Web应用开发中,图片上传是一项常见且重要的功能,借助Node.js强大的生态系统,我们可以轻松搭建高效的图片上传服务,本文将深入探讨如何使用No... 目录准备工作搭建 Express 服务器配置 multer 进行图片上传处理图片上传请求完整代码示例

MySQL 分区与分库分表策略应用小结

《MySQL分区与分库分表策略应用小结》在大数据量、复杂查询和高并发的应用场景下,单一数据库往往难以满足性能和扩展性的要求,本文将详细介绍这两种策略的基本概念、实现方法及优缺点,并通过实际案例展示如... 目录mysql 分区与分库分表策略1. 数据库水平拆分的背景2. MySQL 分区策略2.1 分区概念

MySQL高级查询之JOIN、子查询、窗口函数实际案例

《MySQL高级查询之JOIN、子查询、窗口函数实际案例》:本文主要介绍MySQL高级查询之JOIN、子查询、窗口函数实际案例的相关资料,JOIN用于多表关联查询,子查询用于数据筛选和过滤,窗口函... 目录前言1. JOIN(连接查询)1.1 内连接(INNER JOIN)1.2 左连接(LEFT JOI