第三章关系数据库
第3章 关系数据库

3)用户定义的完整性 ) 由用户自己根据情况, 由用户自己根据情况,对数据库中数据所做的规定称 为用户定义的完整性规则,也称为域完整性规则。 为用户定义的完整性规则,也称为域完整性规则。通 过这些规则来限制数据库中只能接受符合用户定义完 整性约束条件的数据值, 整性约束条件的数据值,从而保证了数据的正确性和 有效性。 有效性。
关系模型的主要特点有: 关系模型的主要特点有: (1)关系中每一分量不可再分,是最基本的数据单位,即不 )关系中每一分量不可再分,是最基本的数据单位, 允许有表中表。 允许有表中表。 (2)每一竖列的分量是同属性的,列数根据需要而定,且各 )每一竖列的分量是同属性的,列数根据需要而定, 列的顺序是任意的。 列的顺序是任意的。 (3)每一横行由一个个体事物的诸多属性构成,且各行的顺 )每一横行由一个个体事物的诸多属性构成, 序是任意的。 序是任意的。 (4)一个关系是一张二维表,不允许有相同的属性名,也不 )一个关系是一张二维表,不允许有相同的属性名, 允许有相同的元组。 允许有相同的元组。
(6)关系模式:对关系的描述,一般表示为:关系名 (属性1,属性2,…,属性n) (7)关键字或码(Key):表中用来唯一确定(标识) 一个元组的某个属性或属性组合。 关键字必须唯一,但它的唯一性不是只对关系的当前元 组构成来确定的。(,)还要考Байду номын сангаас元组构成的将来可能性。 一个关系中,关键字的值不能为空,即关键字的值为空 的元组在关系中是不允许存在的。
3.2.1 传统的集合运算
传统的集合运算,包括并、 传统的集合运算,包括并、差、交、广义笛卡尔积 四种运算。 四种运算。 1、并(Union) 、 ) 关系R与关系 的并记作 关系 与关系S的并记作: 与关系 的并记作: R∪S = { t | t∈R ∨ t∈S } ∪ ∈ ∈ 其结果仍为关系,由属于 或属于 的元组组成。 或属于S的元组组成 其结果仍为关系,由属于R或属于 的元组组成。 2、交( Intersection) 、 ) 关系R与关系 的交记作 关系 与关系S的交记作: 与关系 的交记作: R∩S = { t | t∈R ∧t∈S } ∈ ∈ 其结果关系仍为关系,由既属于 又属于 的元组组成。 又属于S的元组组成 其结果关系仍为关系,由既属于R又属于 的元组组成。
第三章 关系数据库查询语言SQL

20112011-2-25
主讲:王颂华
9
3.2 数据定义
3.2.3 索引的建立与删除
1.建立索引 1.建立索引 索引是数据库随机检索的常用手段,它实际上是记 录的关键字与其相应地址的对应表。借助于索引结构,可 以迅速查找到某个属性A 以迅速查找到某个属性A具有指定值的那些元组。对一个 基本表,可以按需要建立若干个索引,以便提供多种存取 路径。 建立索引的语句格式为: CREATE[UNIQUE][CLUSTER]INDEX<索引名 CREATE[UNIQUE][CLUSTER]INDEX<索引名 > ON<表名>(<列名1>[<次序>],[<列名2>[<次序 ON<表名>(<列名1>[<次序>],[<列名2>[<次序 >]]… >]]…);
3.2 数据定义
2)主关键字的定义 一个关系可能有多个候选关键字,但在定义基本表 时只能定义一个主关键字。一个关系的主关键字由一个或 几个属性构成,在CREATE TABLE中声明主关键字有两 几个属性构成,在CREATE TABLE中声明主关键字有两 种方法: (1)在列出关系模式的属性时,在属性及其类型后加 上保留字PRIMARY KEY,表示该属性是主关键字。 上保留字PRIMARY KEY,表示该属性是主关键字。 (2)在列出关系模式的所有属性后,再附加一个声明: PRIMARY KEY(<属性1>[,<属性2>,…]) KEY(<属性1 ,<属性2>,… 如果关键字由多个属性构成,则必须使用第二种方 法。
20112011-2-25 主讲:王颂华 12
3.3 数据查询
3.3.1 单表查询
第三章 关系数据库标准语言SQL语言

第三章关系数据库标准语言SQL语言一、选择题1. 在SQL语言中授权的操作是通过________________语句实现的。
C A.CREATEB.REVOKEC.GRANTD.INSERT2. 假定学生关系是S(S#,SNAME,SEX,AGE),课程关系是C(C#,CNAME,TEACHER),学生选课关系是SC(S#,C#,GRADE)。
要查找选修“COMPUTER”课程的“女”学生姓名,将涉及到关系____。
DA.S B.SC,C C.S,SC D.S,C,SC3. 在 MS SQL Server中建立了表 Student(no,name,sex,birthday),no为表的主码,其他属性的默认值为 null。
表中信息如图所示:能够正确执行的插入操作是________。
A No Name Sex Birthday 101 张丽丽女 1967/05/07 102 李芳女 1970/04/14103 王朋男 1982/10/27 A.INSERT INTO student (no,sex) VALUES(102,′男′) B.INSERT INTO student (name,sex) VALUES(′王中′,′男′)D.INSERT INTO student VALUES(106,′王中′,′男′,′1984/03/08′) C.INSERT INTO stude nt VALUES(102,′男′,′王中′,′1984/03/08′) 4. SQL语言中,删除一个表的命令是________。
B A. DELETE B. DROP C. CLEAR D. REMORE 5. 为数据表创建索引的目的是________ AA.提高查询的检索性能B.创建唯一索引C.创建主键D.归类6. 在SQL语言中,条件“RETWEEN 20 AND 30”表示年龄在20到30之间,且________A. 包括20岁和30岁B. 不包括20岁和30岁C. 包括20岁不包括30岁D. 不包括20岁包括30岁7. 为了使索引键的值在基本表中唯一,在建立索引语句中应使用保留字________ AA. UNIQUEB. COUNTC. DISDINCTD. UNION 8. 下面关于SQL语言的说法中,哪一种说法是错误的? ________ AA. 一个SQL数据库就是一个基本表B. SQL语言支持数据库的三级模式结构C. 一个基本表可以跨多个存储文件存放,一个存储文件可以存放一个或多个基本表D. SQL的一个表可以是一个基本表,也可以是一个视图二、简答题1. 什么是基本表?什么是视图?两者的区别和联系是什么?【解答】基本表是本身独立存在的表,在SQL中一个关系就对应一个表。
sql 课件 第3章 关系数据库标准语言SQL

山东财政学院计算机信息工程学院
3、默认文件组
在每个数据库中,同一时间只能有一个文件组是默认 文件组(Default Filegroup)。 当进行数据库操作时,如果不指定文件组,则系统自 动选择默认文件组。 可使用Transact-SQL语句中的alter database语句指 定数据库的默认文件组。 在不特别指定的情况下,系统将主要文件组认定为默 认文件组。
山东财政学院计算机信息工程学院
2、扩展盘区
由8个连续页面组成的数据结构称为一个盘区。 是SQL Server分配给表和索引的基本单位。 扩展盘区可分为统一扩展盘区和混合扩展盘区。 统一扩展盘区由一个数据库对象所有。 混合扩展盘区可以为多个数据库所有,即其中最多 可以放8种数据库对象。
山东财政学院计算机信息工程学院
山东财政学院计算机信息工程学院
例:创建具有两个文件组的数据库bank2
CREATE DATABASE BANK2 ON PRIMARY (NAME=BANK2_1_DAT, FILENAME='d:\bank\bank2_f1dat.mdf', SIZE=20MB, MAXSIZE=50MB, FILEGROWTH=5MB), (NAME=BANK2_2_DAT, FILENAME='d:\bank\bank2_f2dat.ndf', SIZE=10MB, MAXSIZE=40MB, FILEGROWTH=5MB),
山东财政学院计算机信息工程学院
3.2 数据定义
3.2.1 数据库的定义 3.2.2 表的定义 3.2.3 索引的定义
山东财政学院计算机信息工程学院
数据定义
SQL Server数据库由包含数据的表集合和其他对象( 如视图、索引、存储过程、触发器、用户、角色等)组 成,支持三级模式结构。其中用户模式对应于视图,逻 辑模式对应于基本表,物理模式对应于存储文件、索引 等。
第3章:关系数据库标准语言SQL

例6:建立一个“课程”表Course. :建立一个“课程” Create table Course (Cno Cpno Char(4) Primary Key, , Char (4) , Cname Char (40) , Ccredit Smallint, , Foreign Key (Cpno) References Course(Cno) );
不论基本表中原来是否已有数据, 不论基本表中原来是否已有数据 , 新增加 的列一律为空值。 的列一律为空值。
例9:将年龄的数据类型改为整型。
ALTER TABLE Student Alter Column Sage Int; ;
修改原有的列定义有可能会破坏已有数据。 修改原有的列定义有可能会破坏已有数据。
group by:此短语将查询结果按某一列或某几 :
列的值进行分组。Having子句用于与group 列的值进行分组。Having子句用于与group by 子句用于与 子句配合使用,用于说明分组条件。 子句配合使用,用于说明分组条件。
查询分类
单表查询 连接查询 嵌套查询 集合查询
CREATE TABLE Student (Sno Ssex Sage Sdept
CHAR(5) NOT NULL UNIQUE,
Sname CHAR(20) UNIQUE, ,
CHAR(1) , INT, , CHAR(15)); ;
修改
Alter table <表名 表名> 表名
Add <新列名> <新列类型> (列宽度)[完整性约束] Drop Column <列名>|<完整性约束名> Alter Column <列名> <列类型> (列宽度) P87例8,例9,例10 , ,
-数据库原理及应用第二版-第3章关系数据库

自然连接是连接中等值连接的特例,是一种 去掉重复属性的等值连接。连接的条件是两 个关系的同名属性。 记作:R*S 班级(班号,班名,班导师) 学生(学号,姓名,性别,班号) 班级*学生
两个重要的连接: 等值连接 θ为“=”,是从关系R和S的广义笛卡尔积中 选取A,B属性值相等的那些元祖。 自然连接 是一种特殊的等值连接,它要求两个关系 中进行比较的分量必须是相同的属性组,并且 在结果中把重复的属性列去掉。
A和B:分别为R和S上度数相等且可比的属性组。前
连接按连接条件分为:等值连接,大于连接和小于连接。 等值连接:就是指连接条件为等号。 大于连接就是指连接条件为>号 小于连接就是指连接条件为<号。 上述三种不同连接都称为连接,并不去掉重复属性和重复 元组。
R.A=S.A 班级(班号,班名,班导师) 学生(学号,姓名,性别,班号) R和S关系的连接,连接条件是R.A=S.A。运算结果是:
例1:学生实体和专业实体可以用下面的关系表示。
学生(学号,姓名,性别,专业号,出生日期) 专业(专业号,专业名)
例2:学生、课程以及学生与课程之间的选课关系可以用如 下三个关系表示:
学生(学号,姓名,性别,专业号,出生日期)
课程(课程号,课程名,学分) 选课(学号,课程号,成绩)
3.4.3 用户定义的完整性
2、属性 图3-1的学生关系中有学号、姓名、年龄、性别和所在系五 个属性,是一个五元关系。
二维表中的列称为属性(或叫字段),每个属性都有一个名字,称为属性名。 二维表中对应某一列的值称为属性值;二维表中列的个数称为关系的元数。
第3章 关系数据库标准语言SQL_第4版(1-3)

学分 Ccredit 4 2 4 3 4 2 4
SC表
学号 Sno
200215121 200215121 200215121 200215122 200215122
课程号 Cno
1 2 3 2 3
成绩 Grade
92 85 88 90 80
§3.3 数据定义
SQL的数据定义功能: 模式定义、表定义、视图 和索引的定义
被参照建立一个“学生选课”表SC CREATE TABLE SC Cno CHAR(4), Grade SMALLINT, 列级完整性约束条件, Sno是外码,被参照表是 Student
(Sno CHAR(9) REFERENCES Student(Sno) , 主码由两个属性构 成,必须作为表级 完整性进行定义
用户数据库投入运行后,可根据需要随时逐步修 改模式,不影响数据的运行。 数据操作符统一
2.高度非过程化
非关系数据模型的数据操纵语言“面向过程”,
必须制定存取路径
SQL只要提出“做什么”,无须了解存取路径。 存取路径的选择以及SQL的操作过程由系统自动 完成。
3.面向集合的操作方式
SQL
数据流(Data) 元数据流(Meta Data) 对应于视图和部 分基本表
视图1
视图2
外模式
对应于基本表
基本表1 基本表2 基本表3 基本表4
数据词典
(元数据)
模式
对应于存储 文件
存储文件1 存储文件2 内模式
SQL的基本概念(续)
基本表(BASE TABLE):
是独立存在的表, 一个关系对应一个基本表,
嵌入式语言:嵌入高级语言如C,COBOL, FORTRAN,PB等
DBS第三章_2

[ORDER BY <列名>[ASC DESC] ] 排序子句
第三章
关系数据库语言SQL
3.3
SQL的数据查询
(2)执行过程 P88
④SELECT ①FROM ②WHERE
读取FROM子句中基表、视图的数据,执行‘×‟
选取满足WHERE子句中所给条件表达式的元组 按GROUP BY子句中指定列的值将元组分组
第三章
关系数据库语言SQL
3.3
SQL的数据查询
(3) SELECT子句中目标表的列名或列表达式
[ ALL | DISTINCT] 列名或列表达式序列
* : 所有列
例: SELECT SNAME, O, GRADE →聚集函数(列名) ,不允许对聚集运算复合使用 常数:SELECT sno, „birth_year:‟, year(age) FROM STUDENT,COURSE,SC 例:查询所有女学生的身高(以厘米表示) 例1:求所有学生的平均身高 改名,AS可省 →列名 AS 别名 FROM … WHERE student 例1: SELECT SELECT SNAME , FROM STUDET; sno AS 学号, sname 100*HEIGHT SELECT AVG(HEIGHT) AS 姓名
③GROUP
BY 选满足HAVING子句中组条件表达式的那些组
按SELECT子句中所给的列或列表达式求值输出
③HAVING ⑤ORDER
BY 按ORDER BY子句对输出的目标表进行排序
第三章 关系数据库语言SQL 3.3 SQL的数据查询
三、有关限定 (1) 通常每条语句以 ‘;’ 结束 (2) 表达式的组成及元素
Π A1,…,An (σF(R1 …Rn))
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第3章关系数据库本章学习目标本章深入地讨论了关系数据库系统的基本概念、函数的依赖关系,并在此基础上介绍了关系规范化理论,以及关系数据库的基本元素,如实体、关系、表、关键字、索引等。
通过本章学习,读者应该掌握以下内容:●掌握函数的依赖关系(完全函数依赖、部分函数依赖和传递函数依赖)●候选关键字,关键字和主属性的基本定义●关系规范化的理论,掌握范式的基本概念和分解方法3.1基本概念按关系数据模型组织的数据库是关系数据库。
其理论基础是集合代数。
按集合代数理论,关系名及其属性序列称为关系模式或关系的型。
一个元组为其所属关系模式的一个值,对应一个实体或一组联系。
元组中每一个分量对应该实体或联系的一个属性值。
例如一个关系名为RELATION,其属性有attrl,attr2,…,attrN则关系模式简单写成,RELATION(attr1,attr2,…,attrN),其一个属性或若干属性取值的集合称为域,同一域中数据是同质的,例如性别域{男,女} ,姓名域{张,王,林,…彭}等。
各域各取一值的完全组合称为这些域的笛卡尔积。
例如图3.1所示,性别域和姓名域的笛卡尔积为C。
一般说来,域D1和域D2的笛卡尔积是一个表,其属性为原D1域和D2域所有属性的集合,其行数为D1域值的个数和D2域值个数的乘职,每一行由D1和D2各取一值组成,所有各行均不重复。
如果给定一组域D1,D2,…D n,这些域中允许有相同的。
则D1*D2*…*Dn={(d1,d2,…dn)︱di∈Di,I=1,2,…n} ,其中每一个元素(d1,d2,…dn)叫做一个N元元组,或简称为元组。
元素中的每一个值叫作元组的一个分量,也是它所对应的那个属性的一个值。
多个属性构成的关系是这些属性所属域的笛卡尔积的子集,一般说来只有其真子集才有意义。
图3.1的关系中同一位老师的性别不可能既为男又为女,因而C中只有一半元组是有意义的。
图3.1 关系的笛卡尔积按数据库理论,所有关系模式的集合(包括关系名,属性名,关键字,完整性约束和安全性要求)称为关系数据库模式,它表示一个关系数据库的逻辑结构。
关系数据库模式中所有关系模式的具体关系的集合称关系数据库。
关系数据库模式是数据的型的表示,而关系数据库则是数据的值的表示。
数据库中的关系应具备如下性质:1.每一列中的分量来自于同一个域,是同一类型的数据。
2.不同的列可来自于同一个域,每一列称为属性,要给予不同的属性名。
3.列的顺序的改变不改变关系。
4.在一个关系中任意两个元组不能全同。
5.元组次序可以任意交换而不改变关系。
6.每一分量必须是不可再分的数据项,即具有原子性,表1.9所示的重复组、向量和表1.10所示重复组结构都是关系不允许的结构。
3.2 函数依赖3.2.1 函数依赖概念关系理论中函数依赖是指关系中属性间的对应关系。
如关系中对于属性(组)X的每一个值,属性(组)Y只有唯一的值与之对应,则称Y函数依赖于X,或称X函数决定Y。
记作X→Y 。
其中,X称为决定因素。
例如表1.2所示“系”关系中:系代码→系名,系代码→系地址,系代码→系电话,系代码→系专业设置如果系名值是唯一的,即各系名均不相同,那么还有函数依赖集还可加入:系名→系代码,系名→系地址,系名→系电话,系名→系专业设置显然系地址对任何其他属性皆不是决定因素,因为系地址为“机电二楼”时对应任何属性都有两个不同值。
决定因素可能为两个以上属性构成的属性组。
例如在表1.7的“成绩”关系中,课程号不是决定性因素,每门课都有许多学生学,同一个课程号有多个学号、多个分数与之对应。
学号也不是决定性因素,同一个学生要学习多门课程,因此一个学号有多个课程号,有多个分数值与之对应。
只要每个学生每门课只有一个成绩,那么学号和课程号的值的集合在这个表中就是唯一的,任何两个元组中学号与课程号的值都不会相同,只要学号和课程号都确定,与之对应的分数值也唯一确定。
因此,学号+课程号→分数。
在表1.6“课程”关系中只有两行的课程名是相同的,但也因此存在这样的情况,当课程名为C 语言时,课程号有两个值与之对应,因而课程名不能唯一确定课程号。
我们在分析函数依赖时一定要全面分析了解在实际应用中属性和属性组全部取值可能,只要存在一个元组的某个属性值不能唯一决定另一个属性的值,另一个属性对这个属性的函数依赖关系就不成立。
在一个关系中,如果一个属性(组)值不唯一,则这个属性(组)与任何属性(组)的函数依赖关系中,它都不是决定因素。
3.2.2 部分函数依赖在一个关系中,可分析出许多依赖关系,但存在依赖程度的不同。
例如表1.6中,显然有课程号→课程名,课程号→开课教研室代码。
从另一角度看,只要课程号一定,同时课程名确定,开课教研室也就唯一确定。
因此课程号+课程名→开课教研室代码。
但它与前述课程号→开课教研室代码是不同的,因为{课程号,课程名}存在真子集:“课程号”,课程号→开课教研室代码。
我们把课程号+课程名→开课教研室代码称为“开课教研室代码”部分函数依赖于课程号十课程名。
定义部分函数依赖为:若X,Y 为关系R 中的属性(组),如X →Y 且X 中存在真子集X ’(X ’≠X ∧X ’∈X),满足X ’→Y ,则称Y 部分函数依赖于X ,记作X p→Y 。
因而表1.6中(课程号+课程名)p→ 开课教研室代码。
3.2.3 完全函数依赖如X,Y 是关系R 中属性(组),X →Y 的任何真子集X’(X’≠X ∧X’∈X ),都有X’ Y ,则称Y 完全函数依赖于X Y 。
我们前面所举的函数依赖例子中,除了“课程号+课程名”与其他属性之间的函数依赖之外的函数依赖皆为完全函数依赖。
3.2.4 传递函数依赖在一个学校中,每门课均是某一位老师教,但有些老师可教多门课,则有关系“教学”如下所示:表3.1 教学表由以上关系不难分析,课程名→职工号、职工号课程名,但职工号和其地属性的函数关系中都是决定因素,即职工号→老师名、职工号→性别,在这种情况下,职称、老师名传递函数依赖于课程名。
一般说来,如X、Y为关系R中属性(组),有X→Y,Y X但Y →Z,则称Z传递函数依赖于X,记作XT→Z。
上例中有:课程名T→职称;课程名T→老师名。
3.3 候选关键字与主属性3.3.1 候选关键字在前面我们曾给关键字定义:在关系R中,如属性(组)X唯一标识一条记录,则X称为关系R 的关键字,显然这个定义是不严密的。
从前面例中我们看到“课程号+课程名”能唯一标识一条记录,因为课程号就能唯一标识一条记录,课程号是关键字,课程号与课程名的集合不是关键字。
关键字的更严密定义是:在关系R中如记录完全函数依赖于属性(组)X,则称X为关系R中的一个候选关键字。
在表1.2中,“系代码”是关系“系”的候选关键字,表1.4中“职工号”是关系”教师”的候选关键字。
在表1.7“成绩”关系中,“学号+课程号”是候选关键字。
候选关键字有如下性质:1.在一个关系中,候选关键字可以有多个。
例如表1.2的系关系中,系代码、系名都是候选关键字。
2.任何两个候选关键字值都是不相同的,因为若有两条记录候选关键字的值相同,它和记录的关系就不是决定因素。
在实际应用中,只有在任何情况下值皆不重复的属性(组)才有可能是候选关键字。
由于同名同姓的人很多,在人事管理中,姓名一般不是候选关键字,我们需要设计代码例如“职工号”作为人事关系的关键字。
3.关键字可能由一个属性构成,也可能由多个属性构成。
关键字不可能再与其他的属性构成新的候选关键字。
我们分析一个关系中有哪些候选关键字时,一般首先一个个属性逐一分析判断,再两两判断,三三判断……等。
4.在任何关系中至少有一个关键字。
因为根据关系的基本要求,在一个关系当中任何二个元组不全同。
因而在一个N元关系当中如单个属性都不是关键字,任何两个属性的属性组也不是关键字,任何K (K<N)个属性的属性组都不是关键字,则该关系全部属性构成的属性组是其关键字。
3.3.2 主属性在一个关系中,如一个属性是构成某一个候选关键字的属性集中的一个属性,则称它为主属性。
如一个属性不是构成该关系任何一个候选关键字的属性集的成员,就称它为非主属性。
例表1.7中,“学号+课程号”是关键字,那么“学号”是主属性,“课程号”是主属性,分数是非主属性。
3.4 关系规范化3.4.1问题的提出设计关系数据库时,一种方法是分析并找出E-R模型再转换为关系数据模型,最后求取关系模式。
称为自上而下设计方法。
另外也有采用自下而上设计方法的。
其方法是首先收集应用对象全部表格、凭证等各类数据,对它们的所有栏目归纳分类。
例如,人事部门的数据表有:●人事卡片,栏目有:职工号、姓名、性别、出生日期、职务、职称、基本工资、政治面貌、所在部门、入校时间,还有爱人有关情况:爱人姓名、单位地址、性别、出生日期…,有社会关系情况:姓名、与本人关系、出生日期、地址…。
●人员报表,栏目有:姓名、性别、年龄、职务、职称、部门、政治面貌。
有关职称职务工资计算办法,例如:处长800元,副处长740元,科长700元…,教授1000元,副教授900元…,同一职工如有职务又有职称,则职务工资取两个标准较高者。
财务部门有工资单,栏目有部门名、姓名、基本工资、职务工资、考勤补扣、行政费补扣、公积金等。
还有其他一些凭证、收据、发票、报表文件等。
对所有表的所有栏目汇总并经过分析可知所在部门、部门和部门名是同一概念,定义完全相同,可统一称之为部门名,年龄可由系统当前日期及出生日期计算得到,年龄依不同年份而不同,但一个人出生日期是只有一个值且不会改变。
职务工资可从职务、职称及有关职务工资计算办法求得。
由此我们可知,人事报表数据源来自人事卡片,工资单有部分数据源来自人事卡片,另有一些数据与生产部门、行政部门相关,且有各自计算方法。
最终可设想系统由三个关系构成:人事卡片(职工号,姓名,性别,出生日期,职务,职称,基本工资,政治面貌,部门名,参加工作时间,爱人名,爱人性别,爱人生日,爱人职务,爱人职称,爱人单位,爱人地址,关系人姓名,关系人年龄,关系人性别,与本人关系,关系人单位,关系人地址)考勤表(职工号,加班天数,早班数,中班数,晚班数,病假天数,旷工天数)行政收费表(职工号,房租费,水电费,电话费,行政扣除,行政奖励)但在按此模式建立数据库后在录入数据时发现有几个问题:①在使用中,对爱人情况和社会关系有关数据查找取用次数极少。
②不少人尚未结婚,但表中仍需留下大量空位,使数据库文件规模扩大,影响效率。
③不少人社会关系人很多,如要对关系人利用数据库系统进行查找,必须对不同关系人数据分段存放,如表3.2所示。
表3.2 人事卡片表显然一个职工数据多行重复存放,出现了严重冗余。
这种冗余使表格文件规模增加了数倍,使检索速度降低,在数据录入和修改时需同时修改多处相关数据,工作量大且易出错。