数据库教学中关系规范化理论的研究与实现

2019-03-05 01:37孟凡荣闫秋艳
现代计算机 2019年3期
关键词:规范化数据库函数

孟凡荣,闫秋艳

(中国矿业大学计算机科学与技术学院,徐州221116)

0 引言

数据库技术产生于20 世纪60 年代末70 年代初,其主要目的是有效地管理和存取大量的数据资源。数据库技术主要研究如何存储、使用和管理数据[1]。数年来,数据库技术和计算机网络技术的发展相互渗透,相互促进,已成为当今计算机领域发展迅速,应用广泛的两大领域。数据库技术不仅应用于事务处理,并且进一步应用到情报检索、人工智能、专家系统、计算机辅助设计等领域[2]。

从20 世纪60 年代末期开始到如今,数据库技术已经发展了半个多世纪。在这发展历程中,人们在数据库技术的理论研究和系统开发上都取得了辉煌的成就,而且已经开始对新一代数据库系统的深入研究[3]。数据库系统已经成为现代计算机系统的重要组成部分。数据库最初是在大公司或大机构中用作大规模事务处理的基础。后来随着个人计算机的普及,数据库技术被移植到PC(Personal Computer,个人计算机)上,供单用户个人数据库应用,接着,由于PC 在工作组内连成网,数据库技术就移植到工作组级。如今,数据库正在Internet 和内联网中广泛使用[4]。

数据库技术是通过研究数据库的结构、存储、设计、管理以及应用的基本理论和实现方法,并利用这些理论来实现对数据库中的数据进行处理、分析和理解的技术[5]。即:数据库技术是研究、管理和应用数据库的一门软件科学[6]。数据库技术研究和管理的对象是数据,所以数据库技术所涉及的具体内容主要包括:通过对数据的统一组织和管理,按照指定的结构建立相应的数据库和数据仓库;利用数据库管理系统和数据挖掘系统设计出能够实现对数据库中的数据进行添加、修改、删除、处理、分析、理解、报表和打印等多种功能的数据管理和数据挖掘应用系统;并利用应用管理系统最终实现对数据的处理、分析和理解[7]。

在数据库技术中,一个关键的步骤就是数据库的逻辑设计,数据库设计的好坏会直接影响数据存储和处理的性能[8]。所以,为了解决数据库中数据的插入、删除、修改异常等问题,必须形成一系列规范化的规则,称为关系规范化理论[9]。关系规范化理论是数据库逻辑设计的指南和工具,其涉及到考查关系模型的函数依赖关系、确定范式等级和对关系模式进行合并或分解[10]。关系规范化理论提供了判断关系逻辑模式优劣的理论标准,帮助预测模式可能出现的问题,是产生各种模式的算法工具,因此是设计人员的有力工具[11]。而在实际教学中,关系规范化理论往往较为抽象,且计算较为复杂,为了使教学人员在教学中可以方便地得到关系规范化理论的结果,提高教学质量和水平,本文对关系规范化理论中的最小覆盖、函数依赖保持和无损分解问题进行了程序实现,只要输入关系模式和函数依赖关系,就可以得到相应的结果输出,从而可以极大提高课堂教学效果,保证教学质量和水平。

1 实验程序

本文针对最小覆盖、函数依赖保持、无损分解进行代码实现,并展示程序运行结果。本文程序基于Python 2.7.9 语言编写,并在2.94GHz、3GB 内存配置的Windows 7 上运行。

1.1 最小覆盖

定义3:如果函数依赖集F 满足下列条件,则称F是一个极小函数依赖集或最小覆盖。

(1)F 中每一个函数依赖的右部都是单个属性。

(2)对F 中任一函数依赖X→A,F-{X→A}都不与F 等价。

(3)对于F 中的任一函数依赖X→A,{F-{X→A}}∪{Z-A}都不与F 等价,其中Z 为X 的任一子集。

设有关系模式R(U,F),其中U 表示表示属性集合,F 表示函数依赖,求F 最小覆盖的步骤如下。

(1)将F 的所有函数依赖的右部分解成单一属性,并去掉重复属性。

(2)分别F 中考察各个函数依赖,去掉冗余的函数依赖。

(3)去掉F 中冗余的属性。

由于该材料碳含量高、碳化物数量多,因此预热可以减少热应力从而减少零件的变形和开裂倾向。对于航空等精度要求高、形状复杂的锻件,为防止开裂,淬火后可先在100℃左右进行去应力处理。

求F 最小覆盖的实验代码如下。

1.2 函数依赖保持

检验一个分解是否具有函数依赖保持性,其实就是检函数依赖集是否和原函数集F 等价,其判断函数依赖集等价的步骤如下。

其实验代码如下。

1.3 无损分解

分解的无损连接性是通过构建属性表的方式来判断,其算法步骤如下。

输出:确定ρ 是否是一个连接不失真分解。

(1)构造一个n 列k 行表,第i 行对应于Ri,第j 列对应于属性Aj。

(2)填表:若Ai∈Ri,则第i 行第j 列上填入aj,否则填入bij。

(3)修改表:逐一检查F 中每一个函数依赖X →Y,如果在对应于X 的那些属性的所有列上X 的符号相同,就使这些符号相同的行中对应于Y 的那些属性的所有列上的符号相同。即如果其中有aj,则将bij改为aj;若无aj,则将它们全改为bij。一般说,i 是其中最小行号。

(4)反复进行步骤3,如发现某一行变成a1,a2,…,ak,则此分解具有连接不失真性。

其实验代码如下。

2 结语

本文针对关系规范化理论中最小覆盖、函数依赖保持和无损分解判断问题,基于Python 语言进行了程序实现,从而使教学人员在实际教学中只需要进行简单的输入,就能得到最小覆盖、函数依赖保持和无损分解判断问题的结果,提高了数据库关系规范化理论教学的质量和水平,减轻了教学人员的讲解和课业负担,有利于数据库技术教学的改进。

猜你喜欢
规范化数据库函数
时间都耗在表表、牌牌上 变味的规范化令人厌烦
谁“捆住”基层的手脚?——泛滥的规范化和标准化
地方立法调研规范化建设探析
数据库
关于函数的一些补充知识
数据库
高中数学中二次函数应用举隅オ
数据库
数据库
无独有偶 曲径通幽