1、3.1 概述概述v数据库设计是指对于一个给定的应用环境,构造数据库设计是指对于一个给定的应用环境,构造最优的数据库最优的数据库模式模式,建立数据库及其应用系统,使之能够有效地存储数据,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求,包括信息需求和处理需求。满足各种用户的应用需求,包括信息需求和处理需求。信息需求信息需求:表示一个单位所需要的数据及其结构,该部分的表示一个单位所需要的数据及其结构,该部分的数据库设计是将应用系统所要用到的所有信息描述成实体、数据库设计是将应用系统所要用到的所有信息描述成实体、属性及实体间的联系,主要用来描述数据之间的联系。属性及实体间的联系
2、,主要用来描述数据之间的联系。处理需求处理需求:表示一个单位需要经常进行的数据处理,该部分表示一个单位需要经常进行的数据处理,该部分的数据库设计是将要进行的数据处理描述为操作的优先次序、的数据库设计是将要进行的数据处理描述为操作的优先次序、操作执行的频率和场合,主要用来描述操作与数据之间的联操作执行的频率和场合,主要用来描述操作与数据之间的联系。系。v信息需求表达了对数据库的内容及结构的要求,是静态要求,信息需求表达了对数据库的内容及结构的要求,是静态要求,处理需求表达了基于数据库的数据处理要求,是动态要求。处理需求表达了基于数据库的数据处理要求,是动态要求。3.1.1 数据库设计的定义数据库
3、设计的定义v 数据库的基本知识和数据库设计技术。数据库的基本知识和数据库设计技术。v 计算机科学的基础知识和程序设计的方法和技巧。计算机科学的基础知识和程序设计的方法和技巧。v 软件工程的原理和方法。软件工程的原理和方法。v 应用领域的知识。应用领域的知识。由于数据库系统的复杂性及其与环境联系的密切性,由于数据库系统的复杂性及其与环境联系的密切性,使得数据库设计成为一个困难、复杂和费时的过程。大型数使得数据库设计成为一个困难、复杂和费时的过程。大型数据库设计和实施涉及多学科的综合与交叉,是一项开发周期据库设计和实施涉及多学科的综合与交叉,是一项开发周期长、耗资巨大、风险较高的工程,因此,一个从
4、事数据库设长、耗资巨大、风险较高的工程,因此,一个从事数据库设计的专业人员至少应该具备以下计的专业人员至少应该具备以下4 4个方面的技术和知识:个方面的技术和知识:3.1.2 数据库设计的任务数据库设计的任务v数据库系统的设计主要包括数据库的结构特性设计以及数据库系统的设计主要包括数据库的结构特性设计以及数据库的行为特性设计。数据库的行为特性设计。设计数据库的结构特性,是为特定应用环境构造出最优的数设计数据库的结构特性,是为特定应用环境构造出最优的数据模型。据模型。设计数据库的行为特性,是建立满足各种用户对数据库应用设计数据库的行为特性,是建立满足各种用户对数据库应用需求的功能模型。需求的功能
5、模型。v设计数据库系统,首先应进行结构设计,数据库结构设设计数据库系统,首先应进行结构设计,数据库结构设计是否合理,直接影响到系统中各个处理过程的性能和计是否合理,直接影响到系统中各个处理过程的性能和质量。另一方面,结构特性又不能与行为特性分离,静质量。另一方面,结构特性又不能与行为特性分离,静态的结构特性的设计与动态的行为特性的设计分离,会态的结构特性的设计与动态的行为特性的设计分离,会导致数据与程序不易结合,增加数据库设计的复杂性。导致数据与程序不易结合,增加数据库设计的复杂性。3.1.3 数据库设计的原则v 不依赖性原则不依赖性原则:指数据库系统对各种原始成果数据的格式和内容进行存储和管
6、指数据库系统对各种原始成果数据的格式和内容进行存储和管理,对数据的存储和管理不依赖于某个特定的软件系统。理,对数据的存储和管理不依赖于某个特定的软件系统。v 开放性原则开放性原则:指系统不限定数据的存储格式,即原则上能存储任意格式的数据,指系统不限定数据的存储格式,即原则上能存储任意格式的数据,在系统中,数据的存储位置、存储方法、数据格式等对系统管理者来说是透在系统中,数据的存储位置、存储方法、数据格式等对系统管理者来说是透明的和开放的,原则上没有数据黑匣子。系统管理员能够知道数据以什么样明的和开放的,原则上没有数据黑匣子。系统管理员能够知道数据以什么样的格式存放在系统中的什么位置,为实现真正
7、意义上的数据管理(特别是数的格式存放在系统中的什么位置,为实现真正意义上的数据管理(特别是数据备份)提供条件。据备份)提供条件。v 可扩展性原则可扩展性原则:随着新数据源的出现和用户需求的增加,今后数据库所包含的随着新数据源的出现和用户需求的增加,今后数据库所包含的数据种类可能会比现在多,因此要求系统具有一定的可扩充性。当增加新种数据种类可能会比现在多,因此要求系统具有一定的可扩充性。当增加新种类的数据时,系统只要在原来的基础上增加一个对新数据的管理模块和若干类的数据时,系统只要在原来的基础上增加一个对新数据的管理模块和若干数据库表后,就可实现对新数据的存储和管理。此外,数据的可扩展性还包数据
8、库表后,就可实现对新数据的存储和管理。此外,数据的可扩展性还包含数据服务的可扩展性,生产出的数据和建立的数据库系统,不仅要能满足含数据服务的可扩展性,生产出的数据和建立的数据库系统,不仅要能满足用户今天的要求,还应该考虑到用户在未来几年内可能提出的从数据的种类用户今天的要求,还应该考虑到用户在未来几年内可能提出的从数据的种类到数据服务的方式等方面的新的需求。到数据服务的方式等方面的新的需求。v 检索和管理的高效性原则检索和管理的高效性原则:数据库系统的重点是对数据的管理和数据的提供,数据库系统的重点是对数据的管理和数据的提供,因此如何高效地实现因此如何高效地实现“知道有什么数据、在什么地方、迅
9、速提取数据并加工知道有什么数据、在什么地方、迅速提取数据并加工成用户所要求的产品成用户所要求的产品”,是进行系统设计时考虑的一个主要因素。,是进行系统设计时考虑的一个主要因素。v 规范设计法规范设计法:比较著名的有新奥尔良方法,它将数据库设计分为比较著名的有新奥尔良方法,它将数据库设计分为4 4个阶段:需求分析(分析用户要求)、概念设计(信息分析和定个阶段:需求分析(分析用户要求)、概念设计(信息分析和定义)、逻辑设计(设计实现)和物理设计(物理数据库设计)。义)、逻辑设计(设计实现)和物理设计(物理数据库设计)。其后,许多科学家对此进行了改进,认为数据库系统设计应分其后,许多科学家对此进行了
10、改进,认为数据库系统设计应分6 6个阶段进行,分别是需求分析、概念结构设计、逻辑结构设计、个阶段进行,分别是需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库实施和数据库运行及维护。物理结构设计、数据库实施和数据库运行及维护。v 基于基于E-RE-R模型的设计方法、基于模型的设计方法、基于3NF3NF(第三范式)的设计方法、基(第三范式)的设计方法、基于抽象语法规范的设计方法等。于抽象语法规范的设计方法等。v 数据库设计工具:数据库设计工具:经过多年努力,数据库设计工具已经实用化和经过多年努力,数据库设计工具已经实用化和产品化。例如,产品化。例如,Design 2000Design 2
11、000和和PowerDesignerPowerDesigner,分别是,分别是OracleOracle公公司和司和SybaseSybase公司推出的数据库设计工具软件,这些工具软件可以公司推出的数据库设计工具软件,这些工具软件可以自动或辅助设计人员完成数据库设计过程中的很多任务,特别是自动或辅助设计人员完成数据库设计过程中的很多任务,特别是大型数据库的设计需要自动设计工具的支持。大型数据库的设计需要自动设计工具的支持。3.1.4 数据库设计的方法数据库设计的方法3.1.5 数据库设计的步骤数据库设计的步骤 在数据库需求分析的基础上,按照规范化、结构化设计方法,将在数据库需求分析的基础上,按照规
12、范化、结构化设计方法,将数据库设计分为以下三个步骤:数据库设计分为以下三个步骤:v逻辑结构设计逻辑结构设计:将系统需求分析的结果设计成数据库的逻辑模式,即适:将系统需求分析的结果设计成数据库的逻辑模式,即适应于某种特定应于某种特定DBMSDBMS所支持的逻辑数据模型,与此同时,还需为各种数据所支持的逻辑数据模型,与此同时,还需为各种数据处理应用领域产生相应的逻辑子模式。这一步设计的结果是处理应用领域产生相应的逻辑子模式。这一步设计的结果是“逻辑数据逻辑数据库库”。v物理结构设计:物理结构设计:根据特定根据特定DBMSDBMS所提供的、依赖于具体计算机结构的多种所提供的、依赖于具体计算机结构的多
13、种存储结构和存取方法等,对具体的应用任务选定最合适的物理存储结构存储结构和存取方法等,对具体的应用任务选定最合适的物理存储结构(包括文件类型、索引结构和数据的存放次序等)、存取方法和存取路(包括文件类型、索引结构和数据的存放次序等)、存取方法和存取路径等。这一步设计的结果是径等。这一步设计的结果是“物理数据库物理数据库”。v验证设计验证设计:在逻辑结构、物理结构设计的基础上,收集数据并具体建立:在逻辑结构、物理结构设计的基础上,收集数据并具体建立一个数据库,运行一些典型的应用任务,来验证数据库设计的正确性和一个数据库,运行一些典型的应用任务,来验证数据库设计的正确性和合理性,当发现问题时,可能
14、需要返回到前面的步骤进行修改。一般一合理性,当发现问题时,可能需要返回到前面的步骤进行修改。一般一个大型数据库的设计过程往往需要经过多次循环反复,因此,在做上述个大型数据库的设计过程往往需要经过多次循环反复,因此,在做上述数据库设计时,就应考虑到今后修改设计的可能性和方便性。数据库设计时,就应考虑到今后修改设计的可能性和方便性。3.2 关系数据库的基本概念关系数据库的基本概念 数据模型是现实世界数据特征的模拟和抽象。在数据库中用数据模型这数据模型是现实世界数据特征的模拟和抽象。在数据库中用数据模型这个工具来抽象、表示和处理现实世界中的数据和信息。数据模型通常由数据个工具来抽象、表示和处理现实世
15、界中的数据和信息。数据模型通常由数据结构、数据操纵和完整性约束三部分组成,称为数据模型三要素。结构、数据操纵和完整性约束三部分组成,称为数据模型三要素。v 数据结构:数据结构:所研究对象类型的集合。这些对象是数据库的组成部分,主要包所研究对象类型的集合。这些对象是数据库的组成部分,主要包括两类:一类是与数据类型、内容、性质有关的对象。另一类是与数据之间括两类:一类是与数据类型、内容、性质有关的对象。另一类是与数据之间联系有关的对象。数据结构是对系统静态特性的描述,是刻画一个数据模型联系有关的对象。数据结构是对系统静态特性的描述,是刻画一个数据模型性质最重要的方面,因此在数据库系统中,人们通常按
16、照其数据结构的类型性质最重要的方面,因此在数据库系统中,人们通常按照其数据结构的类型来命名数据模型。例如,层次结构、网状结构和关系结构的数据模型分别命来命名数据模型。例如,层次结构、网状结构和关系结构的数据模型分别命名为层次模型、网状模型和关系模型。名为层次模型、网状模型和关系模型。v 数据操纵:数据操纵:对数据库中各种对象允许执行的操作集合及有关的操作规则。常对数据库中各种对象允许执行的操作集合及有关的操作规则。常用的数据操纵有检索和更新(包括新增、删除、修改)。数据模型必须定义用的数据操纵有检索和更新(包括新增、删除、修改)。数据模型必须定义这些操作的确切含义、操作符号、操作规则(如优先级
17、)以及实现操作的语这些操作的确切含义、操作符号、操作规则(如优先级)以及实现操作的语言。数据操纵是对系统动态特性的描述。言。数据操纵是对系统动态特性的描述。v 数据的约束条件:数据的约束条件:是一组完整性规则的集合。完整性规则是给定数据模型中是一组完整性规则的集合。完整性规则是给定数据模型中数据及其联系所具有的制约和储存规则,用来限定符合数据模型的数据库状数据及其联系所具有的制约和储存规则,用来限定符合数据模型的数据库状态以及状态变化,以保证数据的正确性、有效性和相容性。态以及状态变化,以保证数据的正确性、有效性和相容性。3.2.2 关系模型关系模型v关系模型的数据结构:关系模型的数据结构:数
18、据结构非常单一,无论是实体还是数据结构非常单一,无论是实体还是实体间的联系,均由单一的结构来表示,该结构是一张规范实体间的联系,均由单一的结构来表示,该结构是一张规范化了的二维表,由行和列组成,称之为关系。化了的二维表,由行和列组成,称之为关系。v关系模型的数据操纵:关系模型的数据操纵:包括查询、新增、删除、修改,其中包括查询、新增、删除、修改,其中查询的表达能力是最主要的部分。关系模型数据操纵的特点查询的表达能力是最主要的部分。关系模型数据操纵的特点是集合操作,即操作的对象和结果都是集合,这种操作方式是集合操作,即操作的对象和结果都是集合,这种操作方式也称为一次一集合方式。也称为一次一集合方
19、式。v关系模型的完整性约束:关系模型的完整性约束:包括实体完整性、参照完整性和用包括实体完整性、参照完整性和用户定义的完整性三大类。其中实体完整性和参照完整性是关户定义的完整性三大类。其中实体完整性和参照完整性是关系模型必须满足的完整性约束条件,由关系系模型必须满足的完整性约束条件,由关系DBMSDBMS自动支持,自动支持,用户定义的完整性是由应用领域需要遵循的约束条件,是具用户定义的完整性是由应用领域需要遵循的约束条件,是具体领域中的语义约束体领域中的语义约束。1.关系的数学定义关系的数学定义v域域(Domain)(Domain):一组具有相同数据类型的值的集合,一组具有相同数据类型的值的集
20、合,如整数、实数等。形式化表示为如整数、实数等。形式化表示为D Dv笛卡尔积笛卡尔积(Cartesian Product)(Cartesian Product):一组域:一组域D D1 1,D,D2 2,D Dn n的笛卡尔积:的笛卡尔积:其中其中(d(d1 1,d,d2 2,d,d3 3,d dn n)称为一个称为一个元组元组,d di i称为一个分量;称为一个分量;若若D Di i的的基数基数(值的个数值的个数)为为M Mi i,则笛卡尔积的则笛卡尔积的基数基数M M为:为:1212.(,.)|,1,2,.nniiD DDd dddD in 1niiMm笛卡尔积笛卡尔积(Cartesian
21、 Product)例如:教师关系中姓名、性别两个域D1、D2分别如下:D1=李力,王平,刘伟D2=男,女则D1、D2的笛卡尔积为:D1D2=(李力,男),(李力,女),(王平,男),(王平,女),(刘伟,男),(刘伟,女)姓名性别李力男李力女王平男王平女刘伟男刘伟女D1和D2的笛卡尔积1.关系的数学定义关系的数学定义v关系:的子集称作在域上的关系,并表示为:。几点说明:几点说明:1.R为关系名,为关系名,n称为关系的目或度(称为关系的目或度(Degree)。)。当n=1时,称为单元关系。当n=2时,称为二元关系。当n=n时,称为n元关系。nDDD21),(21nDDDRv数学上关系是笛卡尔积的
22、任意子集,但在实际应用中关数学上关系是笛卡尔积的任意子集,但在实际应用中关系是笛卡尔积中所取的有意义的子集。系是笛卡尔积中所取的有意义的子集。v例如:教师关系中的两个域姓名例如:教师关系中的两个域姓名D1 D1、性别、性别D2D2分别如下:分别如下:D1=D1=李力,王平,刘伟李力,王平,刘伟,D2=D2=男,女男,女。表。表2 2虽然是表虽然是表1 1的子集,但在实际中却如任何意义。因此可以说的子集,但在实际中却如任何意义。因此可以说关系是关系是有意义的笛卡尔积的子集。有意义的笛卡尔积的子集。姓名性别李力男李力女1.关系的数学定义关系的数学定义姓名性别李力男李力女王平男王平女刘伟男刘伟女表1
23、:D1和D2的笛卡尔积表2:D1和D2的笛卡尔积的一个子集2.关系的基本术语关系的基本术语v元组(元组(TupleTuple):):关系表中每一个横行称作一个元组,关系表中每一个横行称作一个元组,组成元组的元素称为分量。组成元组的元素称为分量。v属性(属性(AttributeAttribute):):关系中的每一列即为一个属性,关系中的每一列即为一个属性,都有一个属性名。一个关系中往往有多个属性,用于刻都有一个属性名。一个关系中往往有多个属性,用于刻画实体的特征,由于关系中的属性名具有标识列的作用,画实体的特征,由于关系中的属性名具有标识列的作用,因而同一关系中的属性名不能相同。因而同一关系中
24、的属性名不能相同。v 候选码(候选码(Candidate KeyCandidate Key)和主码()和主码(Primary KeyPrimary Key):):若关系中若关系中的某一属性组(或单个属性)的值能唯一地标识一个元组,则称的某一属性组(或单个属性)的值能唯一地标识一个元组,则称该属性组(或属性)为候选码。当一个关系有多个候选码时,选该属性组(或属性)为候选码。当一个关系有多个候选码时,选定其中的一个候选码为主码。若关系中只有一个候选码,则这个定其中的一个候选码为主码。若关系中只有一个候选码,则这个唯一的候选码就是主码。唯一的候选码就是主码。主码是关系模型中的一个重要概念。每个关系必
25、需选择一个主码是关系模型中的一个重要概念。每个关系必需选择一个主码,选定以后,不能随意改变。每个关系必定有且仅有一个主主码,选定以后,不能随意改变。每个关系必定有且仅有一个主码,因为关系的元组无重复,至少关系的所有属性的组合可作为码,因为关系的元组无重复,至少关系的所有属性的组合可作为主码。主码。2.关系的基本术语关系的基本术语2.关系的基本术语关系的基本术语v 主属性(主属性(Prime AttributePrime Attribute)和非主属性()和非主属性(Non-Prime Non-Prime AttributeAttribute):):候选码中的属性称为主属性,不包含在任何候选候选
26、码中的属性称为主属性,不包含在任何候选码中的属性称为非主属性。码中的属性称为非主属性。在最简单的情况下,一个候选码只包含一个属性,如学生关在最简单的情况下,一个候选码只包含一个属性,如学生关系中的系中的“学号学号”。在最极终端的情况下,所有属性的组合是。在最极终端的情况下,所有属性的组合是关系的候选码,这时称为关系的候选码,这时称为全码(全码(all-keyall-key)。)。例:图书馆有借书关系例:图书馆有借书关系TCSTCS,分别有三个属性读者编号(,分别有三个属性读者编号(T T)、)、图书编号(图书编号(C C)和借阅时间()和借阅时间(S S)。在这种情况下,)。在这种情况下,T
27、T,C C,S S三三者之间是多对多关系,者之间是多对多关系,(T,C,S)(T,C,S)三个属性的组合是关系三个属性的组合是关系TCSTCS的的候选码,称为候选码,称为全码,全码,T,C,ST,C,S都是主属性。都是主属性。TCST1C12005-4-1v外码(外码(Foreign keyForeign key):):如果关系如果关系R R2 2的一个或一组属性的一个或一组属性X X不不是是R R2 2的主码,而是另一关系的主码,而是另一关系R R1 1的主码,则该属性或属性组的主码,则该属性或属性组X X称为关系称为关系R R2 2的外码,并称关系的外码,并称关系R R2 2为参照关系为参
28、照关系(Referencing(Referencing Relation)Relation),关系,关系R R1 1为被参照关系(为被参照关系(Referenced Referenced RelationRelation)。由外码的定义可知,被参照关系的主码和参)。由外码的定义可知,被参照关系的主码和参照关系的外码必须定义在同一个域上。照关系的外码必须定义在同一个域上。v例:表例:表1 1为学生关系,表为学生关系,表2 2为选课关系。为选课关系。“学号学号”属性是属性是选课关系的外码。学生关系为被参照关系,选课关系为参选课关系的外码。学生关系为被参照关系,选课关系为参照关系。照关系。2.关系的
29、基本术语关系的基本术语4关系的基本性质 1 1)列是同质的。)列是同质的。每一列中的分量是同一类型的数据,来自同一个每一列中的分量是同一类型的数据,来自同一个域。域。2 2)不同列可来自同一个域。)不同列可来自同一个域。每一列为一个属性,不同的属性要给每一列为一个属性,不同的属性要给予不同的属性名。予不同的属性名。3 3)列的位置具有顺序无关性,)列的位置具有顺序无关性,列的次序可以任意交换。由于列顺列的次序可以任意交换。由于列顺序是无关紧要的,因此在许多实际关系数据库产品中,增加新序是无关紧要的,因此在许多实际关系数据库产品中,增加新属性时,一般是插至最后一列。属性时,一般是插至最后一列。4
30、 4)任意两个元组不能完全相同。)任意两个元组不能完全相同。这是由笛卡尔积的性质决定的。这是由笛卡尔积的性质决定的。5 5)元组的位置具有顺序无关性,)元组的位置具有顺序无关性,元组的次序可以任意交换。元组的次序可以任意交换。6 6)分量必须取原子值,)分量必须取原子值,即每一个分量都必须是不可分的数据项。即每一个分量都必须是不可分的数据项。下表是数据库中不允许出现的结构。下表是数据库中不允许出现的结构。SUPERVISORSPECIALITYPOSTGRADUATEPG1PG2张清政张清政刘逸刘逸信息专业信息专业信息专业信息专业李勇李勇王敏王敏刘晨刘晨5关系模式关系模式关系的描述称作关系模式
31、,包括关系名、关系中的属性名、属性向域的映象、属性间的数据依赖关系等,其形式化描述为:R(U,D,dom,F),简记作R(U)或R(A1,A2,An)。R(U,D,DOM,F)关系名关系名属性名集合属性名集合域的集合域的集合属性向域属性向域的映象的映象属性间数据属性间数据的依赖关系的依赖关系v 属性向域的映象一般直接说明为属性的类型、长度等。属性向域的映象一般直接说明为属性的类型、长度等。v 某一时刻对应某个关系模式的内容(元组的集合)称作关系。某一时刻对应某个关系模式的内容(元组的集合)称作关系。v 关系模式是型,是稳定的,静态的。关系是某一时刻的值,是关系模式是型,是稳定的,静态的。关系是
32、某一时刻的值,是随时间不断变化的,是动态的。随时间不断变化的,是动态的。5关系模式关系模式R(U,D,DOM,F)关系名关系名属性名集合属性名集合域的集合域的集合属性向域属性向域的映象的映象属性间数据属性间数据的依赖关系的依赖关系3.3 关系操作关系操作v关系操作:关系操作:包括数据查询、数据维护和数据控制包括数据查询、数据维护和数据控制三大功能。三大功能。v关系操作语言根据其理论(查询的表达方式)的关系操作语言根据其理论(查询的表达方式)的不同可分为以下三类:不同可分为以下三类:关系代数语言:关系代数语言:关系代数语言是一种通过关系的运算关系代数语言是一种通过关系的运算来表达查询要求的语言。
33、来表达查询要求的语言。关系演算语言:关系演算语言:关系演算语言是一种通过查询结果元关系演算语言是一种通过查询结果元组应满足的谓词条件来表达查询要求的语言。组应满足的谓词条件来表达查询要求的语言。基于映象的语言:基于映象的语言:基于映象的语言是一种具有关系代基于映象的语言是一种具有关系代数和关系演算双重特点的语言。数和关系演算双重特点的语言。v关系代数的关系代数的运算对象运算对象是是关系关系,运算结果运算结果也是也是关系关系,关系,关系代数用到的运算符主要包括四类:代数用到的运算符主要包括四类:集合运算符集合运算符:(并),(并),-(差),(差),(交),(交),X X(广义笛卡尔积)。广义笛
34、卡尔积)。专门的关系运算符专门的关系运算符:(选择选择),(投影),(投影),(连接),(连接),*(自然连接),(自然连接),(除)。(除)。算术比较运算符算术比较运算符:(大于),(大于),(大于等于),(大于等于),=,)和逻辑运算符()和逻辑运算符()连接起来的逻辑表达式,结果为逻辑值连接起来的逻辑表达式,结果为逻辑值“真真”或或“假假”。v选取运算实际上是从关系选取运算实际上是从关系R R中选取使逻辑表达式为真的中选取使逻辑表达式为真的元组,是从行的角度进行的运算。元组,是从行的角度进行的运算。1.选取(选取(Selection))(|)(真tFRttRFv投影投影是单目运算。关系是
35、单目运算。关系R R上的投影是从上的投影是从R R中选择出若干属中选择出若干属性列,组成新的关系,从左到右按照指定的若干属性及性列,组成新的关系,从左到右按照指定的若干属性及顺序取出相应列,删去重复元组。记作:顺序取出相应列,删去重复元组。记作:v其中其中A A是是R R中的属性列,中的属性列,为投影运算符,为投影运算符,为为R R中元组中元组相应于属性集相应于属性集A A的分量。的分量。v从其定义可看出,投影运算是从列的角度进行的运算。从其定义可看出,投影运算是从列的角度进行的运算。2.投影(投影(Projection)|)(RtAtRAAt3.连接(连接(Join)v其中,其中,是连接运算
36、符,是连接运算符,为算术比较运算符,也称为算术比较运算符,也称连接;连接;XYXY为连接条件;为连接条件;为为“=”=”时,称为等值连接;时,称为等值连接;为为“”时,称为大于连接。时,称为大于连接。v连接运算是二目运算,它是从两个关系的笛卡尔积中选连接运算是二目运算,它是从两个关系的笛卡尔积中选取属性间满足连接条件的元组,组成新的关系取属性间满足连接条件的元组,组成新的关系。|BtAtStRtttsrsrsr(a)和和(b)分别为关系分别为关系R和关系和关系S,(c)为为 的结果,的结果,图图3-9(d)为等值连接为等值连接 的结果,的结果,ABCa1b15a1b26a2b28BEb23b3
37、7b210AR.BCS.BEa1b15b37a1b15b210a1b26b37a1b26b210a2b28b210AR.BCS.BEa1b26b23a1b26b210a2b28b23a2b28b210v在连接运算中,一种最常用的连接是在连接运算中,一种最常用的连接是自然连接自然连接。所谓自。所谓自然连接就是在等值连接的情况下,当连接属性然连接就是在等值连接的情况下,当连接属性X X与与Y Y具有具有相同属性组时,把在连接结果中重复的属性列去掉。即相同属性组时,把在连接结果中重复的属性列去掉。即如果如果R R与与S S具有相同的属性组具有相同的属性组Y Y,则自然连接可记作:,则自然连接可记作:
38、v自然连接是在广义笛卡尔积自然连接是在广义笛卡尔积R RS S中选出同名属性上符合中选出同名属性上符合相等条件元组,再进行投影,去掉重复的同名属性,组相等条件元组,再进行投影,去掉重复的同名属性,组成新的关系。成新的关系。3.连接(连接(Join)-自然连接自然连接v等值连接不要求相等属性值的属性名相同,而自然连接要求相等属性值的属性名必须相同,即两关系只有在同名属性才能进行自然连接。v等值连接不将重复属性去掉,而自然连接去掉重复属性,也可以说,自然连接是去掉重复列的等值连接。等值连接与自然连接的区别:等值连接与自然连接的区别:3.连接(连接(Join)-自然连接自然连接ABCa1b15a1b
39、26a2b28BEb23b37b210ABCEa1b263a1b2610a2b283a2b2810关系代数关系代数除(Division):除运算是二目运算。给定关系 和 ,其中X、Y、Z为属性组。R中的Y与S中的Y 可以有不同的属性名,但必须来自相同的域集。R与S的除运算得到一个新的关系 ,P是R中满足下列条件的元组在X属性列上的投影:元组在X上分量值x的象集 包含S在Y上投影的集合。记作:其中 ,为x在R中的象集。),(YXR),(ZYS)(XP)(|xyrrYSRtXtSRxYXtxrxY除运算除运算A AB BC CD DE Ea1a1b1b15 5d1d13 3a1a1b1b15 5d
40、2d27 7a1a1b2b25 5d3d31010a2a2b3b35 5d3d32 2a2a2b1b15 5d5d52 2a3a3b2b26 6d1d13 3a4a4b5b56 6d2d27 7a4a4b5b56 6d3d31010a4a4b5b56 6d3d32 2a6a6b6b66 6d5d52 2XY=C CD DE EF F6 6d2d27 7fafa6 6d3d31010 fbfb6 6d3d32 2fcfcYR上分量值上分量值X 的象集的象集Yx包含包含S在在Y上的投影上的投影除运算除运算v关系除法运算的步骤:关系除法运算的步骤:将被除关系属性分为象集属性和结果属性。将被除关系属性
41、分为象集属性和结果属性。对被除关系中,象集属性进行投影,得目标数据集。对被除关系中,象集属性进行投影,得目标数据集。将被除关系分组,与结果属性值一样的元组分为一组。将被除关系分组,与结果属性值一样的元组分为一组。找出结果属性集。找出结果属性集。例例:查询选择了选修了所有课程的学生的学号。查询选择了选修了所有课程的学生的学号。)()(,CourseSCcnocnosno3.3.3 存储过程存储过程v 存储过程是一组预先定义并编译好的的程序,它可以接受参数、存储过程是一组预先定义并编译好的的程序,它可以接受参数、返回状态值和参数值。使用存储过程主要有以下优点:返回状态值和参数值。使用存储过程主要有
42、以下优点:(1 1)存储过程能够提高程序的执行速度。)存储过程能够提高程序的执行速度。因为存储过程只在创建因为存储过程只在创建时进行编译,以后每次执行存储过程都不需再重新编译,所以使时进行编译,以后每次执行存储过程都不需再重新编译,所以使用存储过程可提高数据库执行速度。用存储过程可提高数据库执行速度。(2 2)当对数据库进行复杂操作时,可将此复杂操作用存储过程封)当对数据库进行复杂操作时,可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。而且,存储过程装起来与数据库提供的事务处理结合一起使用。而且,存储过程可以重复使用,从而减少数据库开发人员的工作量。可以重复使用,从而减少数
43、据库开发人员的工作量。(3 3)存储过程能够减少网络流量。)存储过程能够减少网络流量。对于同一个针对数据库对象的对于同一个针对数据库对象的操作,如查询修改,如果这一操作所涉及到的语句被组织成一个操作,如查询修改,如果这一操作所涉及到的语句被组织成一个存储过程,那么当在客户计算机上调用该存储过程时,网络中传存储过程,那么当在客户计算机上调用该存储过程时,网络中传送的只是调用语句,而不是查询过程的所有语句,这就大大降低送的只是调用语句,而不是查询过程的所有语句,这就大大降低了网络的传输量。了网络的传输量。(4 4)安全性高。)安全性高。可设定只有某类用户才具有对指定存储过程的使可设定只有某类用户才
44、具有对指定存储过程的使用权限。用权限。3.3.3 存储过程存储过程v 在关系数据库中,存储过程一般有以下三类:在关系数据库中,存储过程一般有以下三类:1 1)系统存储过程:)系统存储过程:是系统提供的存储过程,可以作为命令进行各是系统提供的存储过程,可以作为命令进行各种操作,并可作为样本存储过程,指导用户如何编写有效的存种操作,并可作为样本存储过程,指导用户如何编写有效的存储过程。系统存储过程在储过程。系统存储过程在mastermaster数据库中,其前缀为数据库中,其前缀为sp_sp_,用来,用来进行系统的各项设定、获取信息及相关管理工作,常用的系统进行系统的各项设定、获取信息及相关管理工作
45、,常用的系统存储过程有:存储过程有:sp_helpsp_help 显示参数清单和其数据类型。显示参数清单和其数据类型。sp_helptextsp_helptext 显示存储过程的定义文本。显示存储过程的定义文本。sp_dependssp_depends 列出存储过程依据的对象或依据存储过程的对象。列出存储过程依据的对象或依据存储过程的对象。sp_stored_proceduressp_stored_procedures 返回当前数据库中的存储过程的清单。返回当前数据库中的存储过程的清单。2 2)扩展存储过程:)扩展存储过程:以以xpxp_ _开头,用来调用操作系统提供的功能,开头,用来调用操作
46、系统提供的功能,如:如:EXEC EXEC master.xp_cmdshellmaster.xp_cmdshell ping 10.8.16.1 ping 10.8.16.1。3 3)用户自定义的存储过程:)用户自定义的存储过程:是用户在数据库中建立存储过程,在是用户在数据库中建立存储过程,在数据库系统中,为特定业务设计的存储过程,能较好的实现业数据库系统中,为特定业务设计的存储过程,能较好的实现业务逻辑,并增强系统执行效率。务逻辑,并增强系统执行效率。3.4 完整性设计完整性设计3.4.1 完整性约束完整性约束1 1实体完整性(实体完整性(Entity IntegrityEntity In
47、tegrity)规则)规则:若属性:若属性A A是基本关系是基本关系R R的主属性,则属性的主属性,则属性A A不能取空值。不能取空值。v 对于实体完整性规则说明如下:对于实体完整性规则说明如下:实体完整性规则能够保证实体的唯一性。实体完整性规则能够保证实体的唯一性。实体完整性规则是实体完整性规则是针对基本表而言的。一个基本表通常对应现实世界的一个实针对基本表而言的。一个基本表通常对应现实世界的一个实体集,而现实世界中的一个实体是可区分的,即它们具有某体集,而现实世界中的一个实体是可区分的,即它们具有某种唯一性标识。相应地,关系模型中以主码作为唯一性标识。种唯一性标识。相应地,关系模型中以主码
48、作为唯一性标识。实体完整性规则能够保证实体的可区分性实体完整性规则能够保证实体的可区分性。主码中的属性即。主码中的属性即主属性不能取空值,所谓空值就是主属性不能取空值,所谓空值就是“无意义无意义”的值,用的值,用“NULL”NULL”表示。如果主属性取空值,就说明存在某个不可标表示。如果主属性取空值,就说明存在某个不可标识的实体,即存在不可区分的实体,这不符合现实世界的情识的实体,即存在不可区分的实体,这不符合现实世界的情况。况。3.4.1 完整性约束2.2.参照完整性(参照完整性(Referential IntegrityReferential Integrity)规则:)规则:若属性若属性
49、(或属性组或属性组)F)F是是基本关系基本关系R R的外码,它与基本关系的外码,它与基本关系S S的主码相对应,则对于的主码相对应,则对于R R中每个元组中每个元组在在F F上的值必须为:或者取空值上的值必须为:或者取空值(F(F的每个属性值均为空值的每个属性值均为空值),或者等于,或者等于S S中某个元组的主码值。中某个元组的主码值。v 例:学生实体和选修实体可以用下面的关系表示,其中主码用下划线例:学生实体和选修实体可以用下面的关系表示,其中主码用下划线标识。标识。学生(学生(学号学号,姓名,性别,所在系,班号,出生日期),姓名,性别,所在系,班号,出生日期)选修(选修(学号,课程号学号,
50、课程号,成绩),成绩)v 这两个关系之间存在着属性的引用,即选修关系引用了学生关系的主这两个关系之间存在着属性的引用,即选修关系引用了学生关系的主码码“学号学号”。显然,选修关系中的。显然,选修关系中的“学号学号”值必须是确实存在的某个值必须是确实存在的某个学生的学号,即选修关系中的学生的学号,即选修关系中的“学号学号”属性的取值需要参照学生关系属性的取值需要参照学生关系的的“学号学号”属性取值。属性取值。v 对于上例,按照参照完整性规则,选修关系中每个元组的对于上例,按照参照完整性规则,选修关系中每个元组的“学号学号”属属性只能取两种值,空值或学生关系中某个元组的性只能取两种值,空值或学生关