关系数据库与范式
一、从现实世界到机器世界:
使用数据库技术的目的就是把现实世界中存在的事物,事物之间的联系在数据库中用数据加以描述,记录并对其进行各种处理,归类可用的信息,然后机器根据这些描述转换为机器可用的信息,数据库模型设计就是这么一个过程。
信息的三个世界的过程是通过研究“过程和对象”,然后建立相应的关系模型来实现的。在这两个转换过程中,需要建立两个模型,一个是概念模型,另一个是数据模型。
关系数据数据模型是关系数据库(Relation Database)的基础。它由数据库结构,数据操作,完整性约束条件三部分组成。创建和使用关系数据库的主要工具是SQL语言(Structured Query Language,结构化查询语言)。
概念模型是从客户的想法和观点出发,结合商业规则和设计人员经验,将现实世界的需求用更直观的方法表达出来。常使用实体和联系方法(Entity-Relationship Approach,E-R方法)来研究和描述逻辑模型。
E-R模型包含如下三要素:
● 实体(Entity):客观存在并且可以相互区别的“事物”成为实体。实体可以是具体的,如一个人,一本书;也可以是抽象的如一堂课,一场球赛。
● 属性(Attribute):描述实体的“特征”称为该实体的属性。如人有姓名,性别,年龄,出生日期等方面的属性;属性有“型”和“值”之分,型即为属性名,值即为属性的具体内容。如(张三丰,男,232,淳佑7年)。
● 联系(Relationship):实体之间的联系。用菱形表示,菱形框内写明联系名并用无向边分别于有关实体联系起来,同时在无向边旁标注上联系的类型或需要注意的事项。
联系的三种类型:
◆ 一对一(1:1)类型:实体集A中的一个实体至多余实体集B中的一个实体相对应;
◆ 一对多(1:n)类型:实体集A中的一个实体至多余实体集B中N(N≥0)个的实体相对应;
◆ 多对多(m:n)类型:实体集A中的一个实体至多余实体集B中N(N≥0)个的实体相对应;反之,实体集B中的一个实体至多余实体集A中M(M≥0)个的实体相对应;
二、关系模型
关系模型是在概念模型的基础上所建立的适用于具体数据库实现的一种数据模型。
关系模型是目前最重要的一种数据库模型。它是实体、属性、关系在数据库中的具体体现。目的是讲概念模型转换为关系模型,需要将实体映射为数据库表,将属性映射为数据序列,将关系映射为表和主键。
关系模型的数据操作:关系模型以关系代数和关系演算为数学基础。
关系代数包括:选择(select)、投影(projection)、连接(join)、除(division)、并(union)、交(intersection)、差(difference)、笛卡尔积(production)。
关系演算包括:元组关系演算和域关系演算。
关系模型的数据操作主要是查询、插入、修改和删除数据。这些操作必须满足关系的完整性约束条件(即实体完整性、参照完整性、用户自定义完整性)。
三、关系数据库的范式理论:
范式:为了保证构造的表既能准确地反应现实世界,又有利于应用和具体操作,还需要对构造的表进行规范化,常用的规范化方法就是对关系应用不同的设计范式。
目前关系数据库有6种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、第4范式(4NF)、BCNF、第五范式(5NF)。
第一范式(1NF):是指数据库表中的每一个列都是不可分割的基本数据项,同一列中不能有多个值;即实体的某个属性不能具有多个值或者不能有重复的属性。表的每一行只包含一个实例信息。例如,对于学生信息表,不能将学生信息都放在一列中显示,也不能将其中的两列或多列存入一行显示;学生信息表中每一行只表示一个学生信息,一个学生的信息在表中只出现一次。经过第一范式(1NF)后,数据库表中的字段都是单一的,不可再分的。
第二范式(2NF):第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须满足第一范式(1NF)。第二范式(2NF)要求数据库中的每个实体或者各个行必须可以被唯一区分。为实现区分各行通常需要为表加上一个列,以存储各个实体的唯一标识。在学生信息表的中加上“学号”一列,每个学生的学号就是唯一的,因此每个学生可以被唯一区分。这个唯一属性列被称为主关键字或主键,主码。第二范式(2NF)要求实体的属性完全依赖主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分属性。简言之,第二范式就是每个非主属性完全依赖于码,消除非主属性对码的部分函数依赖。例如,在选课关系表(学号,课程号,成绩,学分),关键字为组合关键字(学号,课程号),但由于非主属性学分仅依赖于课程号,对关键字(学号,课程号)只是部分依赖,而不是完全依赖,因此此种方式会导致数据冗余以及更新异常等问题,解决办法是将其分为两个关系模式:学生表(学号,课程号,分数)和课程表(课程号,学分),新关系通过学生表中的外关键字课程号联系,在需要时进行连接。消除了数据冗余、更新异常,插入异常和删除异常。
第三范式(3NF):第三范式(3NF)是在第二范式(2NF)的基础上建立起来的,即满足第二范式(3NF)必须满足第一范式(2NF)。要求关系表不存在非关键字对任何一候选关键字列的传递函数依赖。简言之,第三范式要求一个关系表中不包括已在其他表中已包含的非关键字信息。所谓传递函数依赖,就是指如果存在关键字字段X决定非关键字段y,而非关键字段y决定非关系字段z,则称非关系字段z传递依赖于非关系字段x。以学生表(学号,姓名,课程号,成绩)为例,其中学生姓名无重名,所以该表有两个候选码(学号,课程号)和(姓名,课程号),故存在函数依赖:学号——>姓名,(学号,课程号)——>成绩,唯一的非主属性成绩对码不存在部分依赖,也不存在传递依赖,所以属性属于第三范式。
四、常用的关系数据库
目前常用的关系数据库代表有如下类型:1、Oracle数据库,2、Microsoft SQL Server,3、Sybase,4、DB2