资源描述
第四章 建立表之间的关系,本章要点: 关系数据模型 Access中的关系类型 主键的概念 在Access 2003中创建关系,4.1 关系数据模型,数据库是各种企业、国家机关和事业单位等部门进行企业管理和处理数据的集合,它不仅反映数据自身的特点,而且反映数据和数据之间的联系。在数据库的研究中,用数据模型来模拟和抽象的表示、处理现实世界中的各种信息。根据模型应用的不同目的,一般分为网状模型、层次模型、关系模型等。 数据模型通常由数据结构、数据操作和完整性约束三个要素组成。,4.1.1 关系数据模型,关系模型是目前最重要也是研究最为广泛的一种模型。 下面举例说明关系模型的数据结构。 关系模型的数据结构 关系:图4-1是关于学生信息的一张二维表,这就是通常所说的关 系,它由行、列组成,关系 名为“学生表”。 属性:即表中的列,一列就是一个属性,该关系有5个属性。 域 : 即属性的取值范围,例如图中的云彩标注,给每一列注明了 属性值,“学号”属性值为整数,“姓名”属性为字符串,“性 别”属性为“男”或“女”,学生年龄为“16,17,18, 19”,“民族”属性为“满,汉,回”。,元组:即表中的行,一行就是一个元组,该关 系有7个 元组。 主码:用来惟一标识一个元组的属性组。例 如,“学号”是学校中惟一确定每一个学 生且不出现重复的一个字段,在该关 系中就成为主码。,学生表,属性(列),域,图4-1关系模型数据结构示例,2. 关系模型的操作与完整性约束,关系数据模型的操作主要包括查询和编辑数据。这些操作必须满足关系的实体完整性和参照完整性规则。,4.2 Acces 2003中的关系,4.2.1 一对一关系 一对一关系: 是比较简单的一种关系,这种关系仿佛一一映射,表1中的每一条记录只能且只能对应表2中的一条记录,同理,表2中的每一条记录也只能且只能对应表1中的一条记录。例如,“联系人”示例数据库中的关系中存在一个1:1的关系。如图4-6所示。,图4-6 “联系人”示例数据库中的关系,“公司”表中的“公司编号”字段和“发售”表中的“公司编号”字段创建了1:1的关系。这种关系一般很少被应用,因为这样的两个表是可以合并的。但也有特例。例如,上例中的“发售”表好像一个发票一样,公司发售的所有信息都被记录在“发售”表中。,4.2.2 一对多的关系,一对多关系: 是使用很广泛的一种关系,大多数关系都属于一对多关系,例如,图4-5中的“学生”表和“成绩”表,“课程”表和“成绩”表都属于一对多的关系。因为每一名学生都有不只一门课程的多个成绩,反过来,有多门成绩对应着一个学生。同理,每一门课程都有多个同学选修,同时就会出现多个成绩与之对应,反之,多个成绩也对应着一门课程。因此,一对多的关系是把表1中的一条记录与表2中的多条记录关联起来。,多对多关系: 相对较复杂,是指表1中的一条记录对应表2中的多条记录,表2中的一条记录也对应表1中的多条记录。在这种关系中,通常把它看成两个一对多的关系,它们之间通过一个中介表连接起来,中介表中至少包含两个字段,作为其他两个表的外键。例如,图4-5中“学生”表和“课程”表之间就是多对多的关系。“成绩”表作为一个中介表,其中的“学号”字段就是“学生”表的外键,“课号”字段是“课程”表的外键。学生表与成绩表之间通过“学号”字段创建了1:的关系,课程表与成绩表之间通过“课号”字段创建了1:的关系。 中介表的主键是一个复杂主键,它是通过把两个表的主键连接起来而创建的。,4.3 主键与外键,“键”是表中的字段或列,用来标识记录。“主键”是一个字段或一组字段,用于惟一标识表中的记录。它确保每个记录是惟一的。表的“主键”可以在创建表本身时指定,也可以先创建完表结构,在用户需要的时候自行创建。例如学生表中,“学号”字段是主键,每个学生都有一个不同的学号。 组合键:即两个或多个字段组合起来,以惟一标识表中的记录(也叫联合主键)。例如,上例的成绩表中“学生课程ID”可以分解为“学号+课程名称”,实际上就是用一个组合键来标识每个成绩的。,外键:我们可以这样理解外键,即把A表的主键或惟一键放在B表中,作为B表的一部分,并作为这两个表的关联字段。例如,学生表中“学号”字段是主键,而在成绩表中,“学号”字段只是该表的一个字段,而且二个表通过“学号”字段创建了一对多的关联关系。所以“学号”在学生表中是主键,在成绩表中就是外键。ACCESS提供了一项称为“参照完整性”的功能,它确保了从表中的外键已经存在于主表的主键字段中。,4.4 参照完整性,表与表之间的关系经常被用来彼此引用,参照完整性规则要求关系中“不引用不存在的实体”。例如:,计算机系教师信息表:,职称表:,图4-7 教师与职称之间的关系,在上例中,加黑且带下划线的字段是表中的主键,这两个表中存在着关系的引用。计算机教师信息表引用了职称表中的“职称编号”字段,每一名教师的职称必须与职称表中的职称相对应,不允许职称编号出现空值或引用职称表中不存在的值的现象。“职工号”是计算机系教师信息表的主键,“职称编号”是职称表的主键,也是计算机系教师信息表的外键,即参照完整性限定外键与主键必须定义在一个相同的属性(组)里,该属性(组)可同名也可不同名,但是在表中的意义是相同的。,4.5 创建、编辑与删除关系,1. 创建关系 表之间关系的创建基于各表的主键与外键字段,二者字段名一般取相同。 【例4-1】创建学生表、课程表与成绩表之间的关系 在创建关系之前应关闭掉学生表和成绩表,因为在打开表的状态下无法创建和修改关系。 步骤: (1)打开Student.mdb数据库,单击工具栏中的关系图标“ ”,或选择“工具”“关系”命令,屏幕上面出现“关系”窗口,如图4-8所示。,图4-8 关系窗口,(2)选择“关系”“显示表”,或单击工具栏的“ ”图标,弹出显示表窗口,如图4-9所示。,图4-9 显示表窗口,(3)用鼠标分别选中三个表并分别单击“添加”按钮,然后单击“关闭”按钮,关掉显示表窗口,将三个表添加到关系窗口中。如图4-10所示。,图4-10 将表添加到关系窗口,(4)鼠标选中“学号”字段,使其加亮显示,并按住鼠标左键拖动该字段至成绩表的“学号”字段,并释放鼠标左键,弹出“编辑关系窗口”,如图4-11所示。,图4-11 编辑关系窗口,(5)“编辑关系窗口”中显示创建关系的字段分别来自于 “学生表”和“成绩表”(图中灰色显示),字段名字都 为“学号”,关系类型为“一对多”,并有三个复选框待 选,分别是: 实施参照完整性:描述主键与外键的规则,控制 参照表与被参照表之间的记录操作的正确性。 及联更新相关字段:只要主表中主键字段更新 了,与其相关联的表中该字段值也随着更 新。 及联删除相关记录:只要主表中记录被删除了, 与其相关联的表中相同字段值的记录自动被删除。 在此,选中三个复选框(均打上对钩),如图4-11所示。,(6)单击“创建”按钮,弹出图4-12对话框。,图4-12 创建学生表与成绩表之间的关系,从图中看到一条黑色线条连接在学生表和成绩表的“学号”字段之间,并在线的两端分别显示“1”和“”,表示这种关系类型为“一对多”的关系。,(7)用鼠标选中课程表的“课号”字段并拖至成绩表的“课号”字段,在随后弹出的“编辑关系窗口”中选中实施参照完整性、及联更新相关字段、及联删除相关记录。单击“创建”按钮,该关系创建完毕。关系窗口如图4-13所示。,图4-13 创建学生表、成绩表和课程表之间的关系,2. 编辑关系,在编辑关系窗口状态下,选中“关系”“编辑关系”命令,可以重新编辑“编辑关系窗口”,如图4-11所示。单击“联接类型”按钮,弹出图4-14对话框,可重新编辑各联接属性,在单击“新建”按钮,弹出图4-15对话框,可以新建各表之间的其他类型的关系,图4-14 联接属性对话框,图4-15 新建关系对话框,删除关系:在关系窗口中,鼠标定位在关系连线处,右键单击选该关系,在弹出的快捷菜单中选中“删除”,在系统弹出提示信息框,询问是否确定删除该关系,如图4-16所示。选中“是”,将删除该关系。,图4-16 提示信息框,
展开阅读全文