您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 软件开发技术--数据库-复习
数据库技术第五章数据库设计过程E/R图到关系模式的转换关系模式的规范化需求分析概念模式设计逻辑模式设计数据库实施E/R图UMLRDBMS模式存储模式数据库运行和维护什么是概念数据建模•对系统中数据的描述•描述类间的各种关系概念数据建模过程概念数据建模方法•UML•ER概念数据建模---UMLUseCaseClass1Class2Class2Relation概念数据建模---UML•类被表示为由3个部分组成的矩形•上面部分给出了类的名称,类名用粗体,背景颜色较深。•中间部分给出了该类对象的属性。•下面部分给出了对象的约束条件以及可以应用到这些对象的操作。其中第二和第三个部分之间,用一条线间隔开来。UML例子UML关系表达关系是一个或多个类的对象之间的语义连接一个关系可以是因为实体之间的自然联系而造成的结果,例如,一个教师属于某一个院系也可能是由于发生了某一个事件,例如一个学生选了某门课。关系的度(或元数)•又称关系的元数,指参与一个关系的类的数目一元关系二元关系关系的重数•一个类的对象与另一个类的对象存在的数目上的关系•0..1:表示最小值是0,最大值是1。•*(或0..*):表示范围从0到无穷大。•0..n:最小为0,最大为n。•单个1:代表1..1,表示关系中参与的对象数目恰好是1关系的重数关联•关联是一种关系•关联的2个类间产生属性E-R模型的基本概念实体(entity):客观存在,可以相互区别的事物称为实体。实体集(entityset):性质相同的同类实体的集合,称实体集。属性(attribute):实体有很多特性,每一个特性称为属性。每一个属性有一个值域,其类型可以是整数型、实数型、字符串型等。实体标识符(identifier):能惟一标识实体的属性或属性集,称为实体标识符。有时也称为关键码(key),或简称为键。联系(relationship)是实体之间的相互关系。数据模型:能表示实体类型及实体间联系的模型称为“数据模型”。实体表达E-R图实例例:设计一个学生选课数据库。要求包括学生(student)、课程(course)和教师(teacher)的信息。实体中存在如下联系:一个学生可以选修多门课,而每门课也能由多个学生选修;一位教师可以教多门课,每门课也可以由多个教师讲授;用E-R图来描述此数据库。学生信息:学号(no)、学生姓名(name)、年龄(age)、地址(dddress)课程信息:课程号(no)、课程名(name)、课程学分(credits)教师信息:工号(no)、姓名(name)、教师的地址(address)学生-课程-教师E-R图studentcourseteachertaketeachcreditsnamenoaddressagenamenoaddressnamenoscore注意:如果一个联系具有属性,则这些属性也与该联系连接起来。TeachCourseNo条码白酒容量度数编号销售商联系人地址电话名称销售数量单价E-R图实例白酒销售品名关系描述•关系名(关键属性,属性1,属性2,……,属性N)•Student(studentNo,studentName,birthday,sex)关系基本概念关系:对应通常所说的二维表。元组:表中的一行即为一个元组属性:表中的一列即为一个属性,例如下表有4列,就有4个属性(studentNo,studentName,birthday,sex)。主键:表中的某个属性组(可以多属性组合成主键),它可以唯一确定一个元组,例如,studentNo可以唯一确定一个学生,也就成为学生关系的主键;域:属性的取值范围,例如,大学生性别域是(男,女);分量:元组中的一个属性个数。例如,学生关系分量为4。关系模式:对关系的描述,一般表示为:关系名(属性1,属性2,……,属性N)。关系模型实例关系关系名元组:表中的一行即为一个元组或记录;字段:表中的一列,列值称为字段值,列名称为字段名值域:字段值的取值范围元组(记录)属性(字段)主键:能唯一标识一个元组的属性集合。外键:若属性组F不是关系R1的主键,但它是关系R2的主键,则F称是关系R1的外键。主键主键外键关系模型查询的实现•通过关联表的方式实现良构关系•良构关系包含最小的数据冗余,•允许操作者插入、删除、修改表中的行而不会引起错误或数据的不一致1)第一范式(FirstNormalForm,1NF)定义:如果一个关系模式R的所有属性都是不可分的基本数据项,则关系R属于第一范式。注意:集合、数组和结构都不能为第一范式关系中属性的类型。符合第一范式的关系可能有插入、删除异常。例如:在关系“选课”中,存在着部分依赖:学分→{学号,课程号}将导致插入、删除异常。p2)第二范式(SecondNormalForm,2NF)定义:若关系模式R属于第一范式,且每个非主属性都完全函数依赖于主键,则R属于第二范式。注意:单个属性作为主键的关系自动就是第二范式。第二范式中的关系存在更新异常.例如:(学号、楼号、收费),虽然学号是单属性主键,属于第二范式,而楼号、收费都由学号决定,存在传递依赖关系:“学号→收费”将导致更新异常。t3)第三范式定义:如果一个关系R是第二范式的,并且每个非主属性都不传递依赖于主键,则R属于第三范式。例如:学生住宿关系可以分解为两个关系:学生-楼号关系(学号,楼号)和楼号-收费关系(楼号,收费)。这两个关系属于第三范式。学号楼号10021204130215081802楼号收费25004600250088002500UML到关系模型的转换—类转换•系模式名就是类名,关系模式的属性由原类中的各属性组成,关系模式的主键就是原类的主键Student(studentNo,studentName,sex,birthday)UML到关系模型的转换—关系转换•1:1关联(二元关系重数=1:1)–两个类转换成两个关系模式–在其中任意一个关系模式的属性集中加入另一个关系模式的主键•1:N关联(二元关系重数=1:N)–两个类转换成两个关系模式–在N端的类转换成的关系模式中加入1端关系模式的主键1:N关联转换实例Teacher(TeacherId,teacherName,sex)Deaprtment(DeptId,deptName,location)Teacher(TeacherId,teacherName,sex,deptId)UML到关系模型的转换—关联类•关联两端的对象各转换成一个关系模式•关联本身也产生一个关系模式,其主键用关联两端对象的主键形成复合键关联类转换实例Student(studentNo,…..)Course(courseNo,……)selectCourse(studentNo,courseNo,grade)4、E-R模型到关系模式的转换1)实体(对象)到关系模式的转换2)联系(关系)到关系模式的转换1)实体到关系模式的转换规则:将实体的名称作为关系的名称,将实体的属性作为关系的属性,并用下划线标识出主属性。studentcoursetakesNosnamesaddressagecNocnamecreditsgradestudent(sNo,sName,sex,age),表示student关系,其中sNo为主键。course(cNo,cName,credits),表示course关系,其中cNo为主键。2)联系到关系模式的转换1:1若实体间联系是1:1,可以在两个实体转换成的两个关系模式后,然后在其中任意一个关系模式的属性集中加入另一个关系模式的主键和联系自身的属性。也就是说1:1联系不单独转换为一个独立的关系。2)联系到关系模式的转换1:N若实体间联系是1:N,则在N端实体转换成的关系模式中加入1端实体的主键和联系的属性。同样1:N联系也不独立构成一个关系。TeacherPKteacherIdteacherNamesexDepartmentPKDepartmentIddeptNamelocation工作二元关系2)联系到关系模式的转换M:N若实体间联系是M:N,则将联系转换成一个关系模式,其属性为两端实体的主键加上联系自身的属性,而联系关系的主键为一复合键,通常是两端实体主键的组合。对于“学生选课”E/R图的课程和学生之间的多对多的联系,可转换成关系模式:take(sNo,cNo,grade)主键为复合键{sNo,cNo}。studentcoursetakesNosnamesaddressagecNocnamecreditsgrade例:关系的完整性•域完整性•实体完整性•参照完整性SQL2000字段类型数据类型描述binarybinary用来存储固定格式长度的二进制数据,最多存储8k字节varbinaryvarbinary用来存储可变长度的二进制数据,最多存储8k字节imageImage用来存储超过8k的可变长度的二进制数据,如word、bmp,程序中定义的类对象。char存储固定长度的字符类型的数据,(=8k),实际定义varcharvarchar存储可变长度的字符数据,(=8k)textText用来存储大于8k的ASCII字符。DatatimeDatetime是日期类型,存储从1753年1月1日-9999年12月31日的日期smalldatetime存储1900-1-1到2079-6-6的日期。bigint8字节长整型int4字节整型,表达范围是-2147483648-2147483647。smallint2字节整型tinyint一字节整型Float浮点数,在计算机里面的表达是一个近似植,例如1.683可能表达为1.682999999999decimal浮点数,但表达是一个精确的值money货币类型,8字节smallmoney货币类型,4个字节bit占用一个二进制的位,经常作为布尔类型使用smalldatetime字段的属性字段长度对于字符类型,例如char和varchar,定义字段的同时可以指定字段存放的字符的个数,例如定义姓名字段为namevarchar(20),表示该字段最多存放20个字符。数值型的字段,除了decimal由用户自己定义长度和小数位数外,其他的如int,float等,系统自定义其占用的字节数。小数位数用于decimal和货币类型的字段标识种子用于数据库表的记录号的自动增加,经常用于做表中记录的主键。用于整型数值.默认值当表中新增加一个记录时,又不想具体指定某个字段的值。可以给它一个默认的值。非空限制用于限制字段的值不能为空,例如学生的姓名字段,每一个记录都必须有值,因为学生不能没有名字。索引对字段进行索引,可以通过设定该字段为查询条件来加快数据的检索速度和统计、分组的速度。关键字关系模式中的主键,用于唯一标识数据库表中的记录。SQL表达式SQL的表达式可分为两类:1.值表达式值表达式包括几种:•数值表达式:实现数值型数据的算术运算;•字串值表达式完成了字串的操作;•日期时间值表达式处理日期时间数据。2.逻辑表达式。逻辑运算包括与(AND)、或(OR)、否(NOT)。比较谓词(=、〈、〉、!=、=、=)、范围谓词(IN、LIKE、IS)和存在谓词(EXIST)。函数SQL内置函数有三类:1.统计函数:COUNT、SUM、AVG、MAX和MIN2.字串处理函数len,substring(studentName,1,2)大小写转换函数(Upper,Lower)3.时间日期处理函数。getDate(返回当前日期时间)。Year(dateTime类型字段)Month(dateTime类型字段)Day(dateTime类型字段)数据检索语句—select语法格式为:SELECT[ALL|DISTINCT]目标列FROM表1[,表2,表n](或视图)[as表别名][inner|Left|right|fullouterjoin表on关系表达式][WHERE条件表达式][GROUPBY列名[HAVING条件表达式]][
本文标题:软件开发技术--数据库-复习
链接地址:https://www.777doc.com/doc-4796209 .html