第6章 关系数据库
6.1 关系数据库
6.1.1 什么是关系数据
关系数据库是由多张能互相联系的表格组成的数据库,即对象与对象之间的联系。对象与对象之间是通过主键和外键来建立联系的。当各个独立的对象建立了关系以后,就可以通过外键来搜索关联表的数据。比如,学生和班级建立了关联关系,就可以通过学生对象的班级编号来搜索班级对象的数据。
1、主键
对象中有某一个属性(字段)或一组(多个字段)能唯一标识一个实体(记录),该属性组就可以成为一个主键。主键是实体的唯一标识。
比如:
班级(班级编号,班级名称),其中每个班级编号号是唯一的,编号就是一个主键。
学生(学号,姓名,性别,班级编号),其中每个学生的学号是唯一的,学号就是一个主键 。
课程表(课程编号,课程名,学分),其中课程编号是唯一的,课程编号就是一个主键。
成绩表(学号,课程号,成绩),成绩表中单一一个属性无法唯一标识一条记录,学号和课程号的组合才可以唯一标识一条记录,所以学号和课程号的属性组是一个主键。
2、外键
是用来创建对象之间关系而建立的字段,它不是对象本身的主键,而是与该对象建立关系的另一个对象的主键。有了外键,该对象就可以和另一个对象关联起来。
比如:学生对象中的班级编号,它不是学生对象的主键,但它是班级对象的主键,它将学生与班级关联起来了。
同理,成绩表中学号和课程号,将学生与成绩,课程与成绩关联起来。
6.1.2 对象关系的设计
关系数据库中的每个表都有一个可惟一标识记录的字段,该字段称作主键 。主键是定义关系的一部分;另一部分是外键 。如果某个表中的字段值与另一个表中的主键值相同,则该字段就是第一个表的外键。可以将外键当作是另一个表的主键的副本。将一个表中外键的值与另一个表中的主键值相匹配,就可以在两个表之间建立关系。在设计对象之间的关系时,将对象关系分为一对多,多对多关系。
1、一对多关系设计
班级与学生就是一对多关系,一个班级包含多个学生,而一个学生只能归属某一个班级。一对多关系的设计,在“多”表一方添加一个外键字段,对应“一”表的主键。
2、多对多关系设计
学生与课程是多对多关系,一个学生可以选修多门课程,一门课程也可以被多个学生选修。多对多关系的设计,创建一个中间表(中间对象),在中间对象创建两个关联对象的外键,对应两个关联对象主键。同时创建两个关联对象的共同字段(成绩)。共同字段随着关系的存在而存在,关系的消亡和消亡。
6.2 关系定制字段
6.2 .1 什么是关系定制字段
我们可以通过创建从某个对象到另一个对象的“关系定制字段”在对象间创建关联关系。关系字段是对象记录的一个定制字段,它包含一个指向另一个记录的链接。
1、查找关系字段
创建一个将此对象链接到另一对象的关系。关系字段允许用户单击查找图标,以从弹出列表中选择值。另一对象是列表中值的源。例如,在学生对象添加一个指向班级记录的查找关系字段,学生对象的多条记录就会关联到一条班级记录。在成绩表对象添加一个指向学生记录的查找关系字段,多条成绩表记录就会关联到一条学生记录。
2、主—详细关系字段
创建一个此对象(子级或"详细信息")与另一对象(父级或"主")之间的特殊父子关系类型,其中:
- 所有详细信息记录的关系字段必填。
- 详细信息记录的所有权和共享由主记录确定。
- 当用户删除主记录时,将删除所有详细信息记录。
- 您可以在主记录上创建累计汇总字段以汇总详细信息记录。
关系字段允许用户单击查找图标,以从弹出列表中选择值。主对象是列表中值的源。
6.2 .2 创建关系定制字段
1、创建多对一关系
例:创建招聘职位与招聘经理关系:招聘职位与招聘经理是多对一关系,在多表添加外键,即在职位对象添加查找关系字段。
(1)按照新建字段向导,完成关系字段的创建。
(2)字段创建完成后,在职位布局窗口,调整布局,在新建职位时,您将看到如下效果。
2、创建多对多关系
例:创建职位与应聘者关系:职位与应聘者是多对多关系,需要创建一个中间表—职位申请表来创建两个对象间的关系。应聘者在提交应聘材料时,可以创建多个职位申请,一个职位可以被多个应聘者申请,在职位申请表添加职位和应聘者外键。如果还需要跟踪其他信息,比如说应聘者当前是否已经安排了这些职位中某一个的面试,该应聘者是否被录取或拒绝等,这时需要在职位申请表添加状态字段。
(1)创建职位申请对象
(2)创建字段
(3)调整应聘者布局,在相关列表处找到职位申请部分,添加创建日期和职位、状态字段
点击应聘者选项卡,在应聘者窗口可以申请职位。
申请2条职位。
点击应聘者选项卡,在应聘者窗口可以看到如下效果:
(4)创建职位申请选项卡
在职位申请窗口能看到刚才申请的2个职位。
(5)关联操作
在职位选项卡,编辑职位,改变其状态。
再回到应聘者信息窗口,发现状态也已改变。
(6)思考:如下效果
调整职位布局,您将发现什么?
是否可以将职位布局的“新建职位申请”按钮移除?
是否可以按申请编号降序排列?
【总结】
1、关系数据库是由多张能互相联系的表格组成的数据库,即对象与对象之间的联系。对象与对象之间是通过主键和外键来建立联系的。当各个独立的对象建立了关系以后,就可以通过外键来搜索关联表的数据。
2、我们可以通过创建从某个对象到另一个对象的“关系定制字段”在对象间创建关联关系。关系字段是对象记录的一个定制字段,它包含一个指向另一个记录的链接。
【练习】
1、创建班级、学生、课程表、成绩表对象,并创建对象间的关联关系。
班级(班级编号,班级名称)
学生(学号,姓名,性别,班级编号)
课程表(课程编号,课程名,学分)
成绩表(学号,课程号,成绩)