【教学课件】第4章数据库及应用程序开发.ppt
第4章 数据库及应用程序开发,西安交通大学计算机教学实验中心2006,软件开发技术基础,第4章 数据库及应用程序开发,4.1 数据库技术基础数据模型、规范化理论关系数据库标准语言SQL4.2 数据库设计需求分析与概念设计、逻辑结构设计数据库物理设计及实施4.3 数据库编程数据库连接技术利用Visual C+开发应用系统、编程实例,4.1数据库技术基础,4.1.1 数据模型 客观事物 数据模型 计算机处理,1.现实世界的信息化过程,现实世界:事物的客观存在,由事物及其性质反映。信息世界:是对现实世界的抽象,事物在信息世界中称为实体。实体是由属性来描述的。(属性值)反映事物及其之间联系的模型称为(实体)概念模型。数据世界:信息的数据化。用记录和数据项分别描述信息世界中的实体及属性。实体模型数据化后为数据模型。,2、概念模型,概念模型是数据库设计人员对现实世界研究的产物是数据库设计人员与用户进行交流的工具。要能完整地表现设计人员的思想,简单清晰,能实现用户需求,(1)基本概念:实体(Entity)客观存在并可互相区别的事物称为实体。属性(Attribute):实体具有的特性称为属性。多个属性组合起来表征一个实体。属性的具体体现称为属性值,码(Key):唯一标识实体的属性或属性组。(关键字、)域(Domain):属性的取值范围。实体型(Entity Type):具有相同属性的实体所具有的共同特征和性质。用实体名及属性名集合来抽象。例如,学生(学号、姓名、性别、出生年月、系、入学时间)实体集(Entity Set)同种实体的集合。全体学生就是一个实体集。,(2)实体间的联系,实体之间的联系分为三类:一对一联系(1:1):实体集A中的每一个实体最多与实体集B中的一个实体,反之亦然。一对多联系(1:n)实体集A中的每一个实体与实体集B中的n个实体(n=0)联系,而实体集B中的每一个实体与实体集A最多只有一个实体联系。如班级集和学生集是一对多联系。,一对一联系举例,一对多联系(1:n)举例,多对多联系(m:n),实体集A中的每一个实体与实体集B中的n个实体(n=0)联系,而实体集B中的每一个实体与实体集A中的m个(m=0)实体联系。如课程和学生之间的联系。,多对多联系(m:n)举例,(3)概念模型的表示方法,实体联系模型(Entity-Relation)实体:矩形表示 属性:用椭圆表示联系:用菱形表示,概念模型的表示,3、数据模型 关系模型,(1)数据结构 用关系(表)来描述实体及实体之间的联系。关系:表元组:表中的一行属性:表的一列主码:唯一确定元组的属性或属性组。关系的描述方式:关系名(属性1,属性2,属性n)学生(学号、姓名、性别、出生年月、系、入学时间),如学生课程、学生与课程之间的多对多联系:学生(学号、姓名、性别、年龄)课程(课程号,课程名,学分)选课(学号,课程号,成绩)特点:(1)建立在严格的数学基础上。(2)简单:结构简单、清晰易用。(3)存取路径透明。缺点:查询效率不高。,(2)数据操纵,查询操作选择、投影、连接、并、交和差更新操作插入、删除和修改关系操作的特点集合操作方式,操作对象和结果都是集合,而不是单记录的操作方式关系操作语言都是高度非过程的语言,操作容易,效率高关系模型把存取路径向用户隐藏起来,使得数据的独立性大大地提高了,(3)完整性约束,实体完整性规则 关系中元组的关键字不能为空且取值惟一 参照完整性规则 在关系数据库中,关系与关系之间的联系是通过公共属性实现的。这个公共属性是一个关系的关键字,在另一个关系中称为外部关键字,简称外键。关键字的关系称为参照关系,外键在的关系称为依赖关系参照完整性依赖关系中外键的取值必须是参照关系的关键字的值之一。,DBMS保证参照完整性的措施,受限删除:如果删除操作会破坏参照完整性,将禁止删除,即通过限制来保证。级联删除:在删除参照关系中的记录时,同时将依赖关系中的相应记录也全部删除。置空值删除:在删除参照关系中的记录时,同时将依赖关系中的外部关键字置为空值,用户定义完整性规则是针对某一具体数据的约束条件,由具体应用来确定。它反映某一具体应用所涉及的数据必须满足的语义要求。例如,学生成绩应大于等于零,教师教龄不能大于年龄等。,(4)存储结构,在关系数据库的物理组织中,关系以文件形式存储。一些小型的关系数据库管理系统直接利用操作系统的文件实现关系存储一个关系对应一个数据文件。许多关系数据库管理系统采用自己设计的文件结构、文件格式和数据存取机制进行关系存储以保证数据的物理独立性和逻辑独立性,更有效地保证数据的安全性和完整性。,4.1.2 规范化理论,如何构造一个合理的数据模式,使数据库系统无论是在数据存储方面,还是在数据操作方面都具有较好的性能 1.问题的提出 关系:S(no,name,department,dean,course,grade)选课关系(学号,姓名,所在系,系主任,课程,成绩)存在以下问题:,逻辑规则,一个系有若干学生,但一个学生只属于一个系;一个系只有一名系主任;一个学生可以选修多门课程,每门课程有若干学生选修;每个学生所学的每门课程都有一个成绩。,F=SnoDept,DeptMname,(Sno,Cname)Score码:(Sno,Cname),存在的问题,(1)插入异常:如果一个系刚成立,还没有学生,无法将该系及其负责人的信息存入数据库。(2)删除异常:如果一个系的所有学生都毕业了,在删除所有学生选课记录的时候,该系及其负责人的信息也丢失了。(3)冗余大:多少学生选课,该系及其负责人的信息就要出现多少次。造成存储空间的浪费,容易引起数据的不一致性。原因:数据之间的依赖。,2 函数依赖 的概念和性质,(1)函数依赖定义设R(U)是一个关系模式,X和Y是U的两个子集,如果R中的任意两个元组,X上属性值相同时,Y上属性值也必然相同,称Y函数依赖于X,或X函数决定Y。记为XY。,函数依赖的说明,函数依赖不是指关系模式R的某个或某些关系实例满足的约束条件,而是指R的所有关系实例均要满足的约束条件。函数依赖是语义范畴的概念。只能根据数据的语义来确定函数依赖。例如,“姓名年龄”这个函数依赖只有在没有同名的条件下成立。如果有相同名字的人,则“年龄”就不再函数依赖于“姓名”了。若XY,则X称为这个函数依赖的决定属性集。若XY,并且YX,、则记为X Y。若Y不函数依赖于X,则记为XY。,(2)平凡函数依赖与非平凡函数依赖若YX,则称XY为平凡函数依赖平凡函数依赖不反映新的语义。因此若不特别声明,函数依赖将指非平凡函数依赖。(3)完全函数依赖与部分函数依赖 如果对X的任何真子集X1,X1Y不成立,称Y完全函数依赖于X,记为X1Y;否则称Y部分函数依赖于X,记为X1Y。,f,p,f,p,(4)传递函数依赖,设R(U)是一个关系模式,X、Y和Z是U的子集,若XY,YZ,且X不函数依赖于Y,称Z传递函数依赖于X。,(5)码的定义与概念,码:设K为关系模式R(U,F)中的属性或属性组合。若KU,则K称为R的一个候选码。若关系模式R有多个候选码,则选定其中的一个作为主码。组成候选码的属性称为主属性,不属于任何候选码的属性称为非主属性。外码:若关系模式R中属性或属性组X并非R的码,但X是另一个关系模式的码,则称X是R的外部码,也称为外码。,3关系模型的范式,关系数据库中的关系必须满足一定的规范化要求,不同的规范化程度可用范式来衡量范式是符合某一种级别的关系模式的集合,是衡量关系模式规范化程度的标准,达到范式的关系才是规范化的。目前主要有六种范式如果某一关系模式R为第n范式,简记为RnNF一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式的集合,这个过程称为规范化。,(1)第一范式1NF满足最低要求的称为1NF。所有属性都是基本数据项。第一范式是对关系模式的最起码要求。不满足第一范式的数据库模式不能称为关系数据库。,将一个元组拆开为多个元组。,1NF存在数据冗余、插入、删除异常现象。,(2)第二范式2NF,如果R是1NF,并且每个非主属性都完全函数依赖于关键字,则R是2NF。因为:(no,course)是关键字。(no,course)部分决定dean和department。拆分为N_C(no,course,grade)和N_D(no,department,dean),在N_C中,(no,course)是主关键字。(no,course)完全决定grade。N_C,在N_D中,no是主关键字,no完全决定department 和dean。N_D:,(3)第三范式3NF,如果R是2NF,并且每个非主属性都不传递函数依赖于关键字,则R是3NF。N_C(no,course,grade)是3NF,但N_D(no,department,dean)不是3NF,因为department函数依赖于no,dean函数依赖于department,所以dean传递函数依赖于no。将N_D(no,department,dean)拆分为N_D_1(no,department)和D_D(department,dean),N_D1,D_D,(4)其他范式,3NF不能完全消除关系模式中的各种异常情况和数据冗余。可以再分解成BCNF,4NF或者5NF引入更高级的范式,对关系模式的要求越高,发生各种异常的可能性也越小。关系数目的增加,会降低响应时间,使管理变得复杂所以一般要求规范化到3NF即可。,