SQL Server是一个关系数据库管理系统,当数据库中包含多个表时,需要通过主关键字建立表间的关系,使各表之间能够协调工作。
关系是通过匹配键列中的数据而工作的,而键列通常是两个表中具有相同名称的列,在数据表间创建关系可以显示某个表中的列连接到另一个表中的列。表与表之间存在3种类型的关系,所创建的关系类型取决于相关联的列是如何定义的。表与表之间存在的3种关系如下。
一对一关系。
一对多关系。
多对多关系。
一对一关系是指表A中的一条记录确实在表B中有且只有一条相匹配的记录。在一对一关系中,大部分相关信息都在一个表中。此关系的特点主要体现在以下几个方面。
分割一个含有许多列的表。
出于安全考虑而隔离表的某一部分。
存储可以很容易删除的临时数据,只需删除表即可删除这些数据。
存储只应用于主表子集的信息。
如果两个相关列都是主键或具有唯一约束,创建的就是一对一关系。
在学生管理系统中,Course表用于存放课程的基础信息,这里定义为主表;teacher表用于存放教师信息,这里定义为从表,且一名教师只能教一门课程。下面介绍如何通过这两张表创建一对一关系。
“一名教师只能教一门课程”,在这里不考虑一名教师教多门课程的情况。例如,英语专业的英语老师,只能教英语。
操作步骤如下。
(1)启动SQL Server Management Studio,连接到SQL Server中的数据库。
(2)在“对象资源管理器”中展开“数据库”节点,展开指定的数据库db_Test。
(3)右击Course表,在弹出的快捷菜单中选择“设计”命令。
(4)在表设计器界面中,右击Cno字段,在弹出的快捷菜单中选择“关系”命令,打开“外键关系”对话框,单击“添加”按钮,如图4.19所示。
(5)在“外键关系”对话框中,单击“常规”下面“表和列规范”文本框后的 按钮,添加表和列规范属性,在弹出的“表和列”对话框中设置关系名及主、外键表,如图4.20所示。
图4.19 “外键关系”对话框
图4.20 一对一关系“表和列”对话框
(6)在“表和列”对话框中,单击“确定”按钮,返回“外键关系”对话框,单击“关闭”按钮,完成一对一关系的创建。
创建一对一关系之前,tno、Cno都应该设置为这两个表的主键,且关联字段类型必须相同。
一对多关系是最常见的关系类型,是指表A中的行可以在表B中有许多匹配行,但是表B中的行在表A中只能有一个匹配行。
如果在相关列中只有一列是主键或具有唯一约束,则创建的是一对多关系。例如,Student表用于存储学生的基础信息,这里定义为主表;Course表用于存储课程的基础信息,一个学生可以学多门课程,这里定义为从表。下面介绍如何通过这两张表创建一对多关系。
操作步骤如下。
(1)~(4)与一对一关系操作步骤相同。
(5)在“外键关系”对话框中,单击“常规”下面“表和列规范”文本框后的 按钮,选择要创建一对多关系的数据表和列。弹出“表和列”对话框,在该对话框中设置关系名及主、外键表,如图4.21所示。
图4.21 一对多关系“表和列”对话框
(6)在“表和列”对话框中,单击“确定”按钮,返回“外键关系”对话框,单击“关闭”按钮,完成一对多关系的创建。
多对多关系是指关系中每个表的行在相关表中具有多个匹配行。在数据库中,多对多关系的建立是依靠第3个表即连接表实现的,连接表包含相关的两个表的主键列,然后从两个相关表的主键列分别创建与连接表中匹配列的关系。
例如,通过“商品信息表”与“商品订单表”创建多对多关系。首先需要建立一个连接表(如“商品订单信息表”),该表中包含上述两个表的主键列,然后“商品信息表”和“商品订单表”分别与连接表建立一对多关系,以此实现“商品信息表”和“商品订单表”的多对多关系。