关系数据模型2 |: ?* X; c) ]+ H3 S
1.2 关系数据库
6 d. s$ z9 B1 @2 P, R 自20 世纪80年代以来,新推出的数据库管理系统几乎都支持关系数据模型,Access就是一种关系数据库管理系统。本节将结合Access来集中介绍关系数据库系统的基本概念。
5 o- L3 f* d% Y# ]% n 1.2.1 关系数据模型
& w) c p9 s7 ^" { 关系数据模型的用户界面非常简单,一个关系的逻辑结构就是一张二维表。这种用二维表的形式表示实体一和实体一间联系的数据模型称为关系数据模型。
( O4 ?6 e$ J3 S0 ^3 l 一、关系术语& g. P4 Z3 v, I4 O) A7 U5 O& N2 z
. d `5 j4 ]8 Z9 H 在Access中,一个“表”就是一个关系。圈1.5给出了一张教师表,图1.6 给出了一张工资表,这是两个关系。这两个表中都有唯一标识一名教师的属性——编号,根据教师编号通过一定的关系运算可以将两个关系联系起来。
+ l2 ^0 h3 a' G% P 1.关系" T3 n" w U( f- U' ] p
—个关系就是一张二维表,每个关系有一个关系名。在Access中,一个关系存储为一个表, 具有一个表名。
/ {8 [% P: x" Z1 @' J 对关系的描述称为关系模式,一个关系模式对应一个关系的结构。其格式为:
/ l/ P/ }6 I# Y4 O9 z0 r. g 关系名(属性名1,属性名2,……,属性名n)& W! I1 ^) U; d6 D
在Access中,表示为表结构:
/ s% P. `2 \/ N- W: a$ u 表名(字段名1,字段名2,……,字段名n)
% G$ w, L/ z6 c8 B4 m 2.元组# E* ]4 l2 m. `0 }9 T7 ^
在一个二维表(一个具体关系)中,水平方向的行称为元组,每一行是一个元组。元组对应表中的一条具体记录。例如,教师表和工资表两个关系各包括多条记录(或多个元组〉。
! T! Q1 R$ v4 t' T& \* Y 3.属性& G$ H/ J6 u+ B1 s
二维表中垂直方向的列称为属性,每一列有一个属性名,与前面讲的实体属性相同。在Access中表示为字段名。每个字段的数据类型、宽度等在创建表的结抅时规定。例如,教师表中的编号、姓名、性别等字段名及其相应的数据类型组成表的结构。1 {! q: r2 ~) ]1 N
4.域
1 Z' x* _, I2 j0 c0 q$ C3 e 属性的取值范围,即不同元组对同一个属性的取值所限定的范围。例如,姓名的取值范围是文字字符;性别只能从“男”、“女”两个汉字中取一;逻辑型属性婚否只能从逻辑真或逻辑假两个值中取值。$ h& Z8 \: P3 l1 V, n
5.关键字5 L0 a/ z- x. o( R$ N# r* _
其值能够唯一地标识一个元组的属性或属性的组合。在Access中表示为字段或字段的组合,教师表中的编号可以作为标识一条记录的关键字。由于具有某一职称的可能不止一人,职称字段不能作为唯一标识的关键字。在Access中,主关键字和候选关键字就起到唯一标识一个元组的作用。
) c/ J L2 w: M6 M/ G6 D 6.外部关键字' F: k5 `+ v5 O @0 O
如果表中的一个字段不是本表的主关键字,而是另外一个表的主关键字和候选关键字,这个字段(属性)就称为外关键字。+ X1 D2 ~) @& V9 k' }
从集合论的观点来定义关系,可以将关系定义为元组的集合。关系模式是命名的域性集合。元组是属性值的集合。一个具体的关系模型是若干各有联系的关系模式的集合。
% b3 I( N/ y8 m/ t/ W: s 在Access中,将相互之间存在联系的表放在一个数据库中统一管理。例如,在“教学管理”数据库中可以加人教师表、学生表、课程表和成绩表等。
* N8 d/ i. K! h x# \. e0 ? 二、关系的特点
3 A1 s F* p ~ a/ t- i: s. J 关系模型看起来简单,但是并不能将日常手工管理所用的各种表格,按照一张表一个关系直接存放到数据库系统中。在关系模型中对关系有一定的要求,关系必须具有以下特点:
8 Z, W) Z7 u7 `2 @; v2 h 1.关系必须规范化。所谓规范化是指关系模型中的每一个关系模式都必须满足一定的要求。最基本的要求是每个属性必须是不可分割的数据单元,即表中不能再包含表。
& T7 Y5 M9 G) A+ K8 m 手工制表中经常出现如表1.1所示的复合表。这种表格不是二维表,不能直接作为关系来存放,只要去掉表1.1中的应发工资和应扣工资两个表项就可以了。如果有必要,在数据输出时可以另行设计打印格式,从而满足用户的要求。
8 Q. S/ R$ s3 e) y7 N
0 _7 v) \8 _( \8 ^; h ! a# k2 o1 j& M
2.在同一个关系中不能出现相同的属性名。在Access中不允许一个表中有相同的字段名。
: a6 B! i& A+ S# J# C' S) `$ Q 3.关系中不允许有完全相同的元组,即冗余。在Access的一个表中不能有两个完全相同的记录。
, E2 ^/ W- W, g4 b! w' ? 4.在一个关系中元组的次序无关紧要。也就是说,任意交换两行的位置并不影响数据的实际含义。日常生活中常见到的“排名不分先后”正反映这种意义。; N7 I6 Z- }3 P/ g/ |) C) x" S
5.在一个关系中列的次序无关紧要。任意交换两列的位置不影响数据的实际含义。例如,工资单里奖金和基本工资哪一项在前面都不重要,重要的是实际数额。
9 e4 b! N) o H 三、实际关系模型" L0 D$ y/ ^, m: D/ p4 O
一个具体的关系模型由若干个关系模式组成。在Access中,一个数据库中包含相互之间存在联系的多个表。这个数据库文件就对应一个实际的关系模型。为了反映出各个表所表示的实体之间的联系,公共字段名往往起着“桥梁”作用。这仅仅是从形式上看,实际分析时应当从主义上来确定联系。
. G' z1 C8 d" [' A* U 例1.1 学校职工管理数据库中教师-工资关系模型和公共字段名的作用。- s: y( M& E& t2 F
设学校职工管理数据库中包含教师表和工资表:0 v( X4 K* T: C' c) m
教师(编号,姓名,性别,工作时间,……)
" Y, X5 _$ u. ?! W8 R 工资(编号,姓名,基本工资,奖金,……)" ^5 l# V* h% X# E( p/ b% K) g: Q
学校职工管理数据库中的教师表和工资表如图1.5和图1.6所示,教师表和工资表的关系模型如图1.7所示。
* C' y% G) K$ T4 T9 k& x& Y8 ?
8 o* F5 C& p7 G. Z! \- N! L) R8 y$ O 在关系数据库中,基本的数据结构是二维表,表之间的联系常通过不同表中的公共字段来体现。通过教师-工资关系模型可以得到教师的工资情况,如图1.8所示。
0 W/ f' `: y: k' Q: L+ G
5 @- U' A# }% C Q 例1.2 教学管理中学生表-选课表-课程表关系模型。 |