首页 理论教育 数据规范化:关系数据库的规则

数据规范化:关系数据库的规则

时间:2023-11-04 理论教育 版权反馈
【摘要】:从上面的分析可知,轮船关系不是一个“好”的数据库模式。在关系数据库中,这种规则就是范式。关系数据库中的关系必须满足一定的要求,即满足不同的范式。目前关系数据库有7种范式:第一范式、第二范式、第三范式、BC范式、第四范式、第五范式和第六范式。

数据规范化:关系数据库的规则

所谓关系规范化就是按统一标准对关系进行优化,以提高关系的质量,为构造一个高效的数据库应用系统打下基础。例如,有一个反映轮船信息的数据库,由以下8个属性组成:船号、船名、功率、部件号、部件名、型号、重量及用量。将这8个属性构造成一个合适的关系模式,从而构造一个关系数据库,其构造方法很多。最简单的是,将8个属性组成如下关系:

轮船(船号,船名,功率,部件号,部件名,型号,重量,用量)

但是,在对这个关系操作时会有以下3个问题。

1)冗余度大:一艘轮船有N个部件,就有N次重复船号、船名、功率的数据。

2)插入异常:一种部件,如果在某一阶段没有被轮船用到,其对应的信息就无法插入,使数据库在功能上产生了不正常的现象,同时也给用户带来极大的不便。

3)删除异常:一种部件,若只有一艘轮船用到,则删除它的信息,有关它选用的部件信息同时也删除了,从而丢失了该部件的数据。

从上面的分析可知,轮船关系不是一个“好”的数据库模式。一个“好”的模式应当避免发生上述的问题。

规范化理论认为,关系中的各属性是相互关联的,它们互相依赖、互相制约,构成一个结构严谨的整体。因此,构造数据库必须遵循一定的规则。在关系数据库中,这种规则就是范式。范式是符合某一种规范的关系模式的集合。关系数据库中的关系必须满足一定的要求,即满足不同的范式。目前关系数据库有7种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、BC范式(BCNF)、第四范式(4NF)、第五范式(5NF)和第六范式(6NF)。满足最低要求的范式是第一范式(1NF)。在第一范式的基础上进一步满足更多要求的称为第二范式(2NF),其余范式依此类推。一般来说,数据库只需满足第三范式(3NF)就行了。下面举例介绍第一范式(1NF)、第二范式(2NF)和第三范式(3NF)。

1.第一范式

在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库。

所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,即同一列中不能有多个值,也不能出现重复的列。经常看见的表格如部分统计表都是不规范的表格,再如学生信息(学号,姓名,性别,出生时间,联系方式(固定电话、移动电话)备注,备注)中的属性联系方式这一列有两个值,且有两列的列名相同,这是不符合第一范式的,需要将它们分开,改为如下表格:学生信息(学号,姓名,性别,出生时间,固定电话,移动电话,备注1,备注2),这样每一列都不存在重复的值,表中也没有重复的属性,则该关系表为第一范式表。

2.第二范式

第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,要求实体的属性完全依赖于主键。所谓完全依赖是指不能存在仅依赖主键一部分的属性,如果存在,那么这个属性和主键的这一部分应该分离出来形成一个新的表。简而言之,第二范式就是非主属性完全依赖于主键。例如,成绩表(学号,课程编号,成绩,姓名,性别)中,主键是组合属性(学号,课程编号),但姓名和性别属性只依赖主键(学号,课程编号)中的学号,因此不是第二范式的表,可将该表分为成绩表(学号,课程编号,成绩)和学生表(学号,姓名,性别),这两张表都是符合第二范式的表。

3.第三范式

第三范式(3NF)是在第二范式(2NF)的基础上建立起来的。第三范式(3NF)要求一个数据库表中的每一个非主属性不传递依赖于主键。简而言之,第三范式就是表中的任一属性不依赖于其他非主属性。例如,班级表(班级编号,班级名,班主任编号,班主任姓名,班主任电话)中,班级编号是主键,而班主任姓名、班主任电话却依赖非主键班主任编号,而班主任编号依赖于主键班级编号,形成了传递依赖的关系,可以将该表分解为班级表(班级编号,班级名,班主任编号)和班主任表(班主任编号,班主任姓名,班主任电话),这样每张表中都不存在传递依赖关系,即这两张表都满足第三范式的要求。

关系表通过以上的规范化之后可以看到存储在计算机中的数据会大大减少,也可大大缓解数据的插入和删除异常,当然,为了使关系表得到进一步的优化,还可以进一步规范化成BC范式(BCNF)、第四范式(4NF)、第五范式(5NF)和第六范式(6NF)的表。不过,随着表进一步规范化,计算机对表中的数据处理效率会受到影响。因此,关系规范化到哪一级,可以根据应用环境,充分考虑处理效率与资源的利用率后再决定。

读一读

1.基本概念

数据:人们往往将数据理解为数值。其实,数值只是数据的一个子集。凡是需要数量表示的事物,都要用到数据,这是人们熟悉的。但还有大量的事物,不仅需要有数量描述,还要有“陈述”表达。例如关于天气的描述,除温度、风力等用数值描述外,阴、晴、雨等则要用文字陈述。简而言之,数据是事物的反映和记录。这里的数据是广义的概念,包括数字、字符串、报表和图形等。

ANSI(American National Standard Institute)提供了数据的两个定义:

1)数据是以格式化的形式来表示的事实、概念或指示,这种形式有助于通信、解释以及由人或自动手段来处理。

2)数据是被赋予或可被赋予含义的任何表示,如字符和模拟量

数据有两方面的特征:第一,数据是客观事物属性的反映,这是数据的内容。反映客观事物的属性用属性名和属性值。例如,某个职工是一个客观事物,有姓名、性别、年龄、工资等属性,每一属性有相应的属性值。第二,数据是记录的符号,记录符号与内容有一定联系,可用数字、字符串等表示。数据可以通过观察、测量、考核等手段来获得。

信息:人类已进入信息时代,信息概念变得越来越复杂,对信息这个词很难给出精确、全面的定义。有人将信息解释为人得到的知识。有人称信息是人与外界交换的内容。人们通常把通过口头、通信装置或书面传达的消息、情报都称做信息。信息在自然界、社会中以及人体自身都广泛存在着,人类进行的每一社会实践、生产实践和科学实验都在接触信息、获得信息、处理信息和利用信息。根据ISO和ANSI的规定,可将信息定义为“人借助于在数据的表示中所用的已知约定来赋予数据的含义”。可以从不同角度来说明信息,人们主要是从信息处理角度来谈论信息。信息有以下特征:

1)信息具有表征性。信息是表征事物状态、属性和运动特性的一种普遍形式。例如对一个企业生产运营活动的各环节及整个过程的表征和描述。

2)信息具有可用性、可处理性和可替代性。人的感觉是信息的获取,而人的思维则是一种信息处理。信息有描述型、加工型、预测型、控制决策型。

3)信息有可传递性、可存储性和共享性。

4)信息与其表现符号的不可分离性和信息的可转换性。

5)信息是由人主观重新定义的数据,是与人的主观愿望相联系的。

信息与数据的关系和区别:信息与数据是密不可分的,下面从信息处理角度来说明信息与数据的关系。

(1)信息处理是将数据转换为信息的过程

对一个信息处理过程来说,可以把数据看做输入,而信息是数据经加工、处理后产生的输出。但输出的信息有时又作为另一个信息处理过程的输入,这时信息就成为第二个信息处理过程的输入数据。

(2)数据是现象,而信息更反映本质

数据是客观事物的描述和记录,而经过有目的加工后产生的信息,在客观上更能反映客观事物的现实情况,但从实施信息处理的人的主观上来说,处理是按人的某种主观愿望进行的,对数据进行去粗取精、去伪存真的处理,能得到反映事物实质的信息,成为从事某项工作的行动依据。例如反映天气情况的温度、湿度、气压、风力、云量等现象的数据,经气象学方法分析、处理后,可得出明天天气是下雨或不下雨的结论,这个结论是经过对数据进行处理、加工后得出来的,对指导人们明天的工作,有更重要的意义。

(3)数据与信息有区别也有联系

对计算机而言,数据是指一切数字、文字、符号、声音、图形、图像、信号等有意义的组合。信息是经消化、加工过的数据,信息依赖于数据来表示。有时同一信息用不同的数据形式来表示,如下雨,可用文字表示,也可用图形表示,还可用代码表示。有时一种信息用多种数据组合来表示。例如,在电视机上看天气预报,整个画面是从计算机屏幕录制下来的,是用数字、文字、符号、图像等多种数据形式表示的明天天气信息,还可以存储和传输。

数据有独立性,例如数字“2”,可以解释为楼房编号,也可以解释为2路汽车。因此,在结合具体问题的条件、环境时,从数据可以得出不同的信息。

数据和信息是两个不同的概念,但又有着密切的联系,信息开始于数据,数据通过注入主观的解释被转换为信息,信息是主观重新定义的数据,所以它可以传递意义和知识。人们在实际应用时,数据与信息经常是混淆使用的。

信息与管理、决策的关系:在商业企业管理活动中,有大量的数据与信息要表示、传递与处理。对一个企业来说,没有信息就无法管理,信息不够、不准、不及时就难以决策。这里简单说明企业中信息与管理、决策的关系。

企业的活动分为生产活动和管理活动。在生产活动中,流动的是物,从输入、转换到输出,是一股物流。这是企业生产经营活动的主体流程。企业的管理活动是指用组织、计划、领导、控制和协调等各种基本活动,来有效地利用人力、材料、资金、设备等各种资源,发挥最高效率,以实现一个组织所预定的目标和任务。

在管理活动中流动的是信息,从输入、转换到输出是一股信息流。信息流是伴随物流产生的,对生产活动和物流起着主导作用,不充分发挥信息流的主导作用,会导致物流的混乱。从控制论观点看,管理过程是信息的收集、传递、加工、判断和决策的过程。在管理过程的3个阶段都离不开信息。要搞好管理工作,必须重视研究如何搞好信息管理。信息流能根据生产的规律和环境条件,按照管理者的意志来规划、调节物流的数量、方向、速度和目标,使其按照一定的目的和规划运动。信息被中断或传递不及时、不准确,都会给生产带来损失。对企业来说,信息是最重要的资源,是企业经营决策的前提,也是提高企业管理水平的基础。例如有一家网上书店,希望给其会员提供优质的客户服务,该书店保留了每个会员及其网上买书的信息,由此可以推断不同会员的喜好,并有针对性地给会员提供在线新书信息,以提高网上图书的销售量。

数据处理和数据管理:数据处理包括对各种数据进行的收集、存储、加工与传播等一系列活动。其中数据的收集是指在数据的发生处将它们读入到计算机中。数据的存储是指将收集到的数据经过整理后用计算机的存储介质保存起来以备今后使用。数据的加工是指从某些已知的数据出发,推导加工出一些新的数据的过程。数据的传播就是利用计算机通信设备将数据传送给需要的人员。

数据处理也称为信息处理,当把客观事物表示成数据后,这些数据便被赋予了特定的含义,而对这些数据进行加工处理后又可以形成新的数据,这些新的数据又表示了新的信息,从而为人们提供了不必直接观察和度量事物就可以获得有关信息的手段。在数据处理的各种活动中,数据加工是最重要的。这些对数据进行加工处理的活动,有的只涉及简单的数学运算或逻辑运算,如根据每一产品的价格计算所有产品的平均价格,又如将商品单价与销售数量相乘得到销售金额等。这些活动通常在企业经营管理事务处理活动过程中就能完成,并完全可以在预先设计好的计算机程序的指挥下自动实现,这种比较简单的数据加工处理活动称为联机事务处理。另外一些数据加工活动涉及的计算比较复杂,因而必须在人的参与和支配下才能完成,这种加工处理活动称为联机分析处理。

随着数据处理量的日渐增大,需要对数据进行分类、组织、编码、存储、检索和维护,这样的过程称为数据管理,它是数据处理业务的基本环节。数据管理技术的优劣,将直接影响到数据处理的效率。

2.数据管理技术的发展

数据管理技术与数据处理方式有着密切联系,且直接影响着数据处理的效率。在计算机进入数据处理领域后,数据管理技术的发展经历了3个阶段。

(1)人工管理阶段(20世纪50年代中期以前)

这一阶段,计算机主要应用于科学计算。在硬件方面,外存没有直接存取存储设备,只有纸带、卡片和磁带等;在软件方面,只有汇编语言,没有操作系统和数据管理方面的软件;数据处理方式是批处理。人工管理阶段数据管理的主要特点是:

●数据不保存。由于计算机主要用于科学计算,所以数据是不需要保存的。当用户需要计算某一课题时,就临时将有关数据输入内存,计算完毕后输出运算结果,并释放相应内存空间。

●数据由应用程序进行管理,数据与程序不具备独立性。由于没有专门的软件进行数据的管理,数据是由应用程序自己管理的。程序员不仅要在程序中设计数据的逻辑结构,还要规定包括数据的存储结构、存取方法和输入/输出方式在内的物理结构。而当数据的物理结构或逻辑结构改变时,就必须修改相应的程序。

●数据面向应用,不能共享。每个应用程序都只使用自己定义的一组数据,即使有些应用程序使用了相同的一部分数据,也都必须在应用程序中各自定义,这个阶段数据处理的结构如图1-2所示。

(2)文件系统阶段(20世纪50年代后期~20世纪60年代中期)

这一阶段,计算机不仅用于科学计算,也用于数据管理。在硬件方面,已经有了直接存取存储设备,如磁盘、磁鼓等;软件方面,出现了高级语言和操作系统,并在操作系统中包含了专门的数据管理软件——文件系统;数据处理方式有批处理和联机处理。文件系统阶段数据管理的主要特点是:

●数据长期保存在外存的数据文件中,可以进行查询、插入、删除和修改操作。

●数据文件由文件系统进行管理,但程序与数据的独立性仍较差。由于有了文件系统对文件进行管理,程序员在程序中只需用文件名就可与数据打交道,因此不必关心数据的物理存放位置,但文件的逻辑结构仍然是在程序中定义的,所以,当文件的逻辑结构改变时,仍要修改相应的程序,程序与数据的独立性仍较差。这个阶段数据处理的结构如图1-3所示。

978-7-111-36808-3-Chapter01-2.jpg

图1-2 数据的人工管理

978-7-111-36808-3-Chapter01-3.jpg

图1-3 数据的文件系统

●易造成数据的不一致性。由于同一数据重复存储在由不同的应用程序使用和维护的文件中,不能保证其更新的同时性和正确性,以致造成同一数据在不同的文件中有不同的值。例如,某个教师因为某项科研工作有重大贡献而被晋升工资一级,但人事部门忘了通知财务部门,从而造成该教师的工资在人事档案和财务科的工资文件中具有不同的值。

●数据冗余度大。由于一个数据文件只为某个特定的应用程序服务,不同的应用程序使用相互独立的数据文件,因此,相同的数据同时出现在几个数据文件中几乎是不可避免的。例如,职工的姓名、所在部门、工资等数据会同时出现在人事档案和工资文件中。而在一所大学中,教师的姓名、所在系等数据则可能同时出现在人事档案、教务档案、科研档案和工资等文件中。这种数据大量重复的现象,称为冗余,它降低了存储空间的有效利用率。

这种缺点在规模较大的应用系统中尤其明显。美国在20世纪60年代执行阿波罗登月计划时委托Rockwell公司研制了一个基于磁带文件的零部件生产计划管理系统,共用了18盘磁带,其中60%的数据是冗余数据,只能以批处理方式工作,维护十分困难。

(3)数据库系统阶段(20世纪60年代末至今)

这一阶段,计算机的应用更加广泛,管理规模日益扩大,数据量不断增加,而且多个应用要求能共享数据集合,这就给数据管理技术提出了更高的要求。与此同时,磁盘技术突飞猛进,出现了数MB容量和快速存取的磁盘,而且价格也不高。但是由于文件系统的缺点,软件的编制与维护却越来越困难,成本也不断上涨,价格不断攀升,需要有新的数据管理技术来减轻程序员进行软件编制和维护的负担,降低软件的成本,这就导致了数据库系统的产生。数据库系统阶段数据管理的主要特点是:

●数据存放在数据库中,并用数据模型来描述数据本身及数据间的联系。主要的数据模型有层次模型、网状模型、关系模型和面向对象模型,当然这些数据模型是逐步发展起来的。

●数据库中的数据由数据库管理系统进行管理,数据与程序的独立性很高。

●数据是面向系统的,冗余度低,可以共享。

在这个阶段,数据库管理系统提供了以下几个方面的数据控制功能。

●数据安全性控制:保护数据,防止对数据库的非法操作所引起的数据的丢失、泄露和破坏。

●数据完整性控制:保证数据库中的数据永远是正确的、有效的和相容的。

●并发控制:避免因多个用户并发进程同时存取、修改数据库时所引起的相互干扰,保证数据的正确性。

●数据库的恢复:当数据库中的数据由于种种原因(如系统故障、介质故障、计算机病毒等)而变得不正确,或部分甚至全部丢失时,数据库管理系统有能力将数据库恢复到最近某时刻的一个正确状态。

数据库系统的模型如图1-4所示。

978-7-111-36808-3-Chapter01-4.jpg

图1-4 数据库系统模型

3.数据模型(www.xing528.com)

模型是对现实世界的模拟和抽象。在现实世界中人们经常会接触到模型,例如,在购买房屋时,就会看到房产商为来访者展示的房屋设计模型;在参观市政规划馆时,会看到很多城市规划模型;有时,人们还会观看船模航模。这些模型都是对现实世界事物的一种模拟。

存放在数据库里的数据是某个企业、组织或部门的业务活动所涉及的各种数据,这些数据相互之间是有联系的,必须用一定的结构将其组织起来。在数据库中引入了数据模型来描述数据以及它们之间的联系。针对不同的对象和应用目的可以采用不同的数据模型。常用的数据模型包括:层次模型(Hierarchical Model)、网状模型(Network Model)、关系模型(Relational Model)和面向对象模型(Object Oriented Model)等。

(1)层次模型

用树形结构来表示实体及其联系的数据模型称为层次模型。采用层次模型的数据库系统称为层次型数据库系统。层次型数据库系统的典型代表是1968年由IBM公司推出的商用数据库管理系统。

在层次模型中,实体称为记录,实体的属性称为数据项或字段。实体在层次模型中是用结点表示的,实体的属性也在结点中列出;实体间的联系用结点间的有向连线表示。图1-5a就是学校的一个层次模型,这种模型可以用图1-5b中的有向树来表示。

树形结构有以下优点:

●由树的性质可知,自根开始到树中的任一结点均存在且唯一存在一条通路。任何数据操纵均能从根开始在树中通过联系找到所需结果。

●实体集间的联系较为单一。每个实体集(除根集外)均只要给出一个联系。

●树形结构在计算机内实现较为方便。在树形结构中,数据操纵均从根开始,自顶向下,是一种单向的搜索过程。

978-7-111-36808-3-Chapter01-5.jpg

图1-5 学校的一个层次模型及其有向树表示

(2)网状模型

用网状结构来表示实体型及其联系的数据模型称为网状模型。采用网状模型的数据库系统称为网状数据库系统。网状数据库系统的典型代表是DBTG系统,它是由数据系统语言研究会(CODASYL)下属的数据库任务组于20世纪70年代提出的一个系统方案。该方案中提出的很多基本概念、方法和技术对网状数据库系统的研制和发展起着非常重要的指导作用。

与层次模型一样,网状模型中实体也称为记录,实体的属性也称为数据项或字段。记录及其联系也是用结点及结点间的有向连线表示的。

与层次模型不同的是,网状模型去除了层次模型的两个限制,它允许:

●一个以上的结点可以没有双亲结点。

●一个结点可以有多于一个的双亲结点。

因此,层次模型实际上是网状模型的一个特例,网状模型比层次模型更具普遍性,更容易表示现实世界中事物间的复杂联系。如图1-6a所示的教学关系,可用图1-6b表示,这是一个无向图。

978-7-111-36808-3-Chapter01-6.jpg

图1-6 教学关系网状模型及其无向图表示

从上述可以看出网状模型在结构上比较优越,不像层次模型那样要满足严格的条件。在网状模型中,对数据的搜索可以用两种方式:

●可以从网络中任一结点开始搜索。

●可沿着网络中的路径按任意方向搜索。这种搜索方式也比层次模型较为优越。

这种不加任何限制的网状模型在计算机中实现较为困难,因此在网状模型的具体实现时往往要采取一些办法来解决。

(3)关系模型

关系模型是完全不同于前面两种模型的一种新的模型,它的基础不是图形而是表格。表格方法在日常生活中应用非常广泛,可以说,任何一个信息模型均可用二维表的形式表示出来。用表结构来表示实体及实体间联系的模型称为关系模型。采用关系模型的数据库系统称为关系数据库系统。

关系模型是1970年由IBM公司San Jose研究实验室的研究员E.F.Codd提出的,他连续发表了《大型共享数据库数据的关系模型》等一系列论文,提出了关系数据模型,奠定了关系数据库的理论基础。此后,关系数据库系统得到了广泛的应用和普及。典型的关系数据库产品有Oracle、Sybase、DB2、FoxPro、Access和Informix等。关系模型表示客观世界的方式如下:

●用二维表表示实体及其属性。

设一实体集R有属性A1、A2…An。此时,这个实体集可用一个二维表的框架表示出来,而这个表中的每一行内容即构成了实体集中的实体。例如,“教师”、“学生”和“课程”3个实体及属性分别为:教师(工号,姓名,职称),学生(学号,姓名,性别,年龄)和课程(课程号,课程名,学时数)。图1-7列出3个实体的若干取值。

●用二维表表示实体间的联系。

用二维表表示实体间的联系,是关系模型的关键,如果不同实体间确实存在着某种自然联系,那么一定可以通过在相应二维表中设置某个或某些属性使不同二维表发生联系。现假定:“课程”与“教师”两实体间是1︰n联系;“学生”与“课程”两实体间是mn联系;不考虑“学生”与“教师”间的联系。根据这个假定,可以看到实现联系的手段。

978-7-111-36808-3-Chapter01-7.jpg

图1-7 教师、学生和课程3个实体的若干取值

为使“课程”与“教师”间表现为1︰n联系,可在“教师”二维表中增加一个属性,这个增加的属性必须是与“教师”发生联系的“课程”二维表中的关键字“课程号”,它在“教师”二维表中并不是关键字,却是与之相联系的另一个二维表“课程”中的关键字,这叫做外部关键字。这样,“课程号”同时出现在“教师”与“课程”两个二维表中,成为公共属性,正是通过公共属性取值相等的条件使“课程”与“教师”建立起1︰n联系。为便于理解,在图1-8a中给出几个具体取值,图1-8中表明0101号和0102号两个教师担任0213号这一门课程。反之,0213号课程由0101号和0102号这两个教师承担,反映了“课程”与“教师”之间是1︰n的联系。

978-7-111-36808-3-Chapter01-8.jpg

图1-8 用二维表表示“教师”与“课程”、“学生”与“课程”两实体间的联系

为使“学生”与“课程”两实体间表现为mn的联系,可以再构造一个专门起着联系作用的二维表,该二维表中应包含通过它联系的两个二维表中的关键字。分析图1-8b所示“学习”二维表,不难看出它的确表示了“学生”与“课程”间的mn联系;因为201号学生学了0211、0212和0213号3门课程,反之,0211号课程有字号为201和202这两个同学选修过。

由此可见,可用二维表表示实体集及其属性,也可用它表示实体集的联系。这样,用E-R图所构成的任一个信息模型,均可用若干张二维表将其表示出来。

这种二维表在数学中实际上是一个关系,故这种模型称为关系模型。关系模型有如下特性:

●关系模型的基本结构是二维表,二维表是一种极其简单的数据结构,在计算机中实现也极为方便。

●二维表不仅能表示实体也能表示联系,它的表达力极强,这是前两种方法远不能比的。

●用二维表的方法不存在对E-R图的分解问题,一个E-R图可以很快地用二维表形式表示出来。

●二维表的数学基础是关系理论,对二维表进行的数据操纵相当于在关系理论中对关系进行运算。这样,在关系模型中,整个模型的定义与操纵均建立在严格的数学理论基础上,这为研究关系模型提供了极其有力的工具。

(4)面向对象模型

虽然与层次模型和网状模型相比,关系模型有严格的数学基础,概念简单清晰,非过程化程度高,在传统的数据处理领域使用得非常广泛,但是,随着数据库技术的发展,出现了许多如CAD、图像处理等新的应用领域,甚至在传统的数据处理领域也出现了新的处理需求,例如,存储和检索保险索赔案件中的照片、手写的证词等,这就要求数据库系统不仅能处理简单的数据类型,还要处理包括图形、图像、声音、动画等多种音频、视频信息,传统的关系数据模型难以满足这些需求,因而产生了面向对象的数据模型。

在面向对象的数据模型中,最重要的概念是对象(Object)和类(Class)。对象是对现实世界中的实体的抽象。针对不同的应用环境,人们面对的对象也不同。一个教师是一个对象,一本书也可以是一个对象。一个对象由属性集、方法集和消息集组成。其中,属性用于描述对象的状态、组成和特性,而方法用于描述对象的行为特征,消息是用来请求对象执行某一操作或回答某些信息的要求,它是对象与外界联系的界面。共享同一属性集和方法集的所有对象的集合称为类。每个对象称为它所在类的一个实例。类的属性值域可以是基本数据类型,也可以是类。一个类可以组成一个类层次,一个面向对象的数据库模式是由若干个类层次组成的。例如,书类可以包括工具书类和教科书类。其中,书是超类,而工具书类和教科书类是它的子类。子类可以继承其超类的所有的属性、方法和消息。

4.关系数据库

关系数据库是基于关系模型的数据库,是目前各类数据库中最重要、最流行的数据库,它应用数学方法来处理数据库数据。20世纪70年代以后开发的数据库管理系统产品几乎都是基于关系的。

IBM公司的E.F.Codd在发表的论文《关于大型共享数据库数据的关系模型》中首先阐述了关系数据库模型及其原理,并把它用于数据库系统中。他指出关系数据库是指一些相关的表和其他数据库对象的集合,其最大的特点是将每个具有相同属性的数据独立地存储在一个表中,对任何一个表而言,用户可以增加、删除和修改表中的数据,而不会影响表中的其他数据。它解决了层次数据库的横向关联不足的缺点,也避免了网状数据库关联过于复杂的问题。

在关系数据库的定义中包括了三方面的含义:首先,关系数据库中的信息存放在二维表格结构的表中,一个关系数据库包含多个数据表,每个表包含行(记录)和列(字段);其次,数据库中的表之间是有关联的,这种关联由表中的字段的参照关系来实现;再次,数据库中不仅包含表,还包含其他的数据库对象,如视图、存储过程和索引等。

在关系数据库中,用二维表来存储信息,但不是说任何一个二维表都是关系模型。满足下列条件的二维表才可以称为关系表:

●每一列中的分量是类型相同的数据。

●行、列的顺序可以是任意的。

●表中的分量是不可再分割的最小数据项,即表中不允许有子表。

●表中的任意两行不能完全相同。

采用关系数据库来管理数据具有如下一些优点。

●节省存储空间:因为数据库中会有大量的数据是重复的,通过表格结构的优化,可以大大降低数据的重复率,从而节省存储空间。

●可有效防止输入错误:如果重复数据太多,则在输入时难免会有输入错误,通过表格的结构优化,可减少重复数据的输入,从而降低输错的概率。

●方便数据修改:表格的形式比较直观,操作起来比较方便。

5.关系数据库的基本概念

关系数据库的信息是以二维表来存储的,为了描述表的结构以及表与表之间的联系,用到了以下一些专业名词。

●记录:关系数据库中二维表的一行,表示一个实体。

●字段:关系数据库中二维表的列,表示实体的属性、特征。

●主键:主键是被挑选出来的列或列组合,该列或列组合用来唯一标识一行。一个表只有一个主键,且主键必须唯一,并且不允许为NULL或重复。例如,学生的学号可以作为主键,但姓名不能,因为姓名可能重复,如果姓名也是唯一的,也可以用它来作为主键。主键有时也称主关键字。

●外键:如果表中的某一字段与另一表中的主键对应,则将该字段称为表的外键。外键表示了两个表之间的联系。以另一个表的外键作为主键的表称为主表,具有此外键的表称为主表的从表。外键又称做外关键字。如学生表(学号,姓名,年龄,性别,班级编号,籍贯)和班级表(班级编号,班级名称,班主任名),其中班级表是主表,学生表是从表。因为“班级编号”在班级表中是主键,在学生表中是外键。

●数据完整性:数据完整性是指数据的正确性和可靠性。它是为防止数据库中存在不符合语义规定的数据和防止因错误信息的输入/输出造成无效操作或错误信息而提出的。数据完整性分为4类:实体完整性、域完整性、参照完整性、用户自定义的完整性。

实体完整性规定表的每一行在表中是唯一的实体。表中的UNIQUE PRIMARYKEY和IDENTITY约束就是实体完整性的体现。

域完整性是指数据库表中的列必须满足某种特定的数据类型或约束,其中约束又包括取值范围、精度等规定。表中的CHECK、FOREIGN KEY约束和DEFAULT、NOT NULL定义都属于域完整性的范畴。

参照完整性是指两个表的主键和外键的数据应对应一致。它确保了有主键的表中对应其他表的外键的行存在,即保证了表之间的数据的一致性,防止了数据丢失或无意义的数据在数据库中扩散。参照完整性是建立在外键和主键之间或外键和唯一性关键字之间的关系上的。在SQL Server中,参照完整性作用表现在如下几个方面:

1)禁止在从表中插入包含主表中不存在的关键字的数据行。

2)禁止会导致从表中的相应值孤立的主表中的外关键字值改变。

3)禁止删除在从表中的有对应记录的主表记录。

用户自定义的完整性是针对某个特定关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。SQL Server提供了定义和检验这类完整性的机制,以便用统一的系统方法来处理它们,而不是用应用程序来承担这一功能。其他的完整性类型都支持用户自定义的完整性。归纳总结

通过以上内容的学习,可以了解数据库的基本知识,掌握数据库设计的基本方法,学会利用E-R图描绘目标项目的数据关系,掌握将E-R图转化为关系表的方法及关系表的规范化,为数据库的实现和管理打下良好的基础。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈