




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据库第三章第1页数据库设计过程E/R图到关系模式转换关系模式规范化需求分析概念模式设计逻辑模式设计数据库实施E/R图UMLRDBMS模式存放模式数据库运行和维护第2页概念模式设计ER图实体联络模型(Entity-Relationship Model,简称E-R模型)第3页E-R模型基本概念 实体(entity):客观存在,能够相互区分事物称为实体。 实体集(entity set):性质相同同类实体集合,称实体集。 属性(attribute):实体有很多特征,每一个特征称为属性。每一个属性有一个值域,其类型能够是整数型、实数型、字符串型等。 实体标识符(identifier):能惟一标识实体属
2、性或属性集,称 为实体标识符。有时也称为关键码(key),或简称为键。 联络(relationship)是实体之间相互关系。 数据模型: 能表示实体类型及实体间联络模型称为“数据模型”。 第4页E-R图基本组成部分 E/R图有四个主要部分:(1)实体集,用矩形表示。(2)属性,用椭圆形表示。(3)联络,用菱形表示。(4)直线,表示联络类型及实体与实体之间联络;第5页数据联络 联络(relationship)是实体之间相互关系。 二元联络有以下三种类型:一对一联络:实体集E1中每个实体至多和实体集E2中一个实体有联络,反之亦然,那么实体集E1和E2联络称为“一对一联络”,记为“1:1”。一对多联
3、络:实体集E1中每个实体能够与实体集E2中任意个(零个或多个)实体间有联络,而E2中每个实体至多和E1中一个实体有联络,那么称E1对E2联络是“一对多联络”,记为“1:N”。 多对多联络:假如实体集E1中每个实体能够与实体集E2中任意个(零个或多个)实体有联络,反之亦然,那么称E1和E2联络是“多对多联络”,记为“M:N”。 第6页三种联络E-R图实体1实体2联络实体1实体2联络实体1实体2联络 11联络 1n联络 mn联络第7页三种联络E-R图客人飞机座位号联络院系教师联络课程学生联络 11联络 1n联络 mn联络第8页E-R图实例例:设计一个学生选课数据库。要求包含学生(student)、
4、课程(course)和教师(teacher)信息。 实体中存在以下联络: 一个学生能够选修多门课,而每门课也能由多个学生选修;一位教师能够教多门课,每门课也能够由多个教师讲授;用E-R图来描述此数据库。 学生信息:学号(sNo)、学生姓名(sName)、年纪(age)、地址(sAddress)课程信息:课程号(cNo)、课程名(cName)、课程学分(credit)教师信息:工号(tNo)、姓名(tName)、教师地址(tAddress)第9页学生-课程-教师E-R图studentcourseteachertaketeachcreditscNamecNumsAddressagesNamesNo
5、tAddresstNametNoscore注意:假如一个联络含有属性,则这些属性也与该联络连接起来。TeachCourseNo第10页概念模式设计UML从用例图分析出对象StudentStudentstudentNostudentNostudentNamestudentNamesexsexdepartmentIddepartmentIdmajormajor第11页概念模式设计UMLTeacherteacherIdteacherNamesex对象之间关系DepartmentDepartmentIddeptNamelocation工作第12页概念模式设计UML对象之间关系分类一元关系第13页概念模
6、式设计UMLTeacherteacherIdteacherNamesex对象之间关系分类DepartmentDepartmentIddeptNamelocation工作二元关系第14页概念模式设计UMLTeacherteacherIdteacherNamesex关系重数DepartmentDepartmentIddeptNamelocation1.n1重数1.n重数1第15页概念模式设计UML关联2个对象关联产生属性第16页关系模型结构 - 数据模型三要素之一 一个关系逻辑结构是一张二维表,它由行和列组成。关系关系名第17页元组:表中一行即为一个元组或统计;字段:表中一列,列值称为字段值,列名
7、称为字段名值域:字段值取值范围元组 (统计)属性 (字段)第18页主键:能唯一标识一个元组属性集合。外键:若属性组F不是关系R1主键,但它是关系R2主 键,则F称是关系R1外键。主键主键外键第19页关系完整性域完整性 实体完整性 参考完整性 第20页1)第一范式(First Normal Form,1NF) 定义: 假如一个关系模式R全部属性都是不可分基 本 数据项,则关系R属于第一范式。p第21页2)第二范式( Second Normal Form,2NF ) 定义:若关系模式R属于第一范式,且每个非主属性都完 全函数依赖于主键,则R属于第二范式。t第22页3)第三范式定义:假如一个关系R是
8、第二范式,而且每个非主属性 都不传递依赖于主键,则R属于第三范式。 第23页4、E-R(UML)模型到关系模式转换1)实体(对象)到关系模式转换2)联络(关系)到关系模式转换第24页1)实体到关系模式转换 规则:将实体名称作为关系名称,将实体属性作为关系属性,并用下划线标识出主属性。 studentcoursetakesNosnamesaddressage cNo cnamecreditsgradestudent(sNo,sName,sex,age),表示student关系,其中sNo为主键。course(cNo,cName,credits),表示course关系,其中cNo为主键。第25页2
9、)联络到关系模式转换 1:1 若实体间联络是1:1,能够在两个实体转换成两个关系模式后,然后在其中任意一个关系模式属性集中加入另一个关系模式主键和联络本身属性。 也就是说1:1联络不单独转换为一个独立关系。第26页2)联络到关系模式转换 1:N 若实体间联络是1:N,则在N端实体转换成关系模式中加入1端实体主键和联络属性。 一样1:N联络也不独立组成一个关系。TeacherteacherIdteacherNamesexDepartmentDepartmentIddeptNamelocation工作二元关系第27页2)联络到关系模式转换 M:N若实体间联络是M:N,则将联络转换成一个关系模式,其
10、属性为两端实体主键加上联络本身属性,而联络关系主键为一复合键,通常是两端实体主键组合。 第28页对于“学生选课”E/R图课程和学生之间多对多联络,可转换成关系模式: take(sNo,cNo,grade) 主键为复合键sNo,cNo。 studentcoursetakesNosnamesaddressage cNo cnamecreditsgrade例:第29页关系数据库组织表1表2表3DBColumn or FieldRecord第30页SQL 字段类型Char varchar int dateTime第31页字段属性 请与Insert字段长度 对于字符类型,比如char和varchar,定
11、义字段同时能够指定字段存放字符个数,比如定义姓名字段为 name varchar(20),表示该字段最多存放20个字符。数值型字段,除了decimal由用户自己定义长度和小数位数外,其它如int, float等,系统自定义其占用字节数。小数位数 用于decimal和货币类型字段标识种子 用于数据库表统计号自动增加,经惯用于做表中统计主键。用于整型数值.默认值 当表中新增加一个统计时,又不想详细指定某个字段值。能够给它一个默认值。非空限制 用于限制字段值不能为空,比如学生姓名字段,每一个统计都必须有值,因为学生不能没有名字。索引 对字段进行索引,能够经过设定该字段为查询条件来加紧数据检索速度和统
12、计、分组速度。关键字 关系模式中主键,用于唯一标识数据库表中统计。第32页简单SQL 查询语句 Select SELECT 字段1,字段2,| * FROM 表名 WHERE 条件表示式第33页结构化查询语言SQLSQL语言是一个关系数据库语言,是结构化查询语言(Structured Query Language)缩写,它包含查询定义操纵控制SQL使用方法有两种用户交互方式联机使用,称为交互式SQL;另一个是作为子语言嵌入到其它程序设计语言中使用,称为嵌入式SQL。第34页SQL表示式SQL表示式可分为两类:值表示式逻辑表示式。值表示式包含几个:数值表示式:实现数值型数据算术运算;字串值表示式
13、完成了字串操作;日期时间值表示式处理日期时间数据。逻辑运算包含与(AND)、或(OR)、否(NOT)。SQL还提供了比较谓词(=、!=、=)、范围谓词(IN、LIKE、IS)和存在谓词(EXIST)。第35页函数SQL内置函数有三类:统计函数:COUNT、SUM、AVG、MAX和MIN字串处理函数 len, substring(studentName,1,2)大小写转换函数(Upper,Lower)时间日期处理函数。 时间日期处理函数用于返回当前日期与时间。惯用有三个:getDate (返回当前日期时间)。Year, Month, Day函数第36页数据检索语句select 语法格式为: SE
14、LECT ALL|DISTINCT 目标列FROM 基本表 (或视图)as 表别名WHERE 条件表示式GROUP BY 列名 HAVING 条件表示式ORDER BY 列名 ASC/DESC说明 DISTINCT为去掉查询结果中重复行,默认为ALL,既列出全部统计;目标列格式能够写为:列名1 as 别名1,列名n as 别名n,省略别名,返回结果集中以列名标识,不然以别名标识,假如目标列用*表示,则返回表中全部列;From子句指明了从那些表或视图中得到数据,全部列名都必须存在于From后表中,或出现于left join, inner join, full outer join之后表,假如列名
15、存在于From后多个表中,则必须标明该列起源于哪个表,格式为 表名.列名;目标列能够是SQL中库函数或常数表示式。如Sum、Count、Avg等函数。第37页Select 语句Where 子句有双重作用,一是返回需要统计,另一个是建立多表之间内连接联合查询。 GROUP BY 用来对查询结果进行分组,把某一列值相同统计分成一组,与统计函数如Sum、Count等联合使用;在有Group子句时,能够深入使用HAVING子句对分组后记过进行过滤显示,是分组提取条件;ORDER BY 是查询结果排序方式,后面跟ASC为升序,DESC为降序,默认为升序。第38页关系实例studentNonamebirt
16、hdaysexcourseNocourseNamestudentNocourseNoscore030318古待1986-1-2女S01高数一020301F0998020301张名1989-1-1男L02数值算法010101L0278010201张简1981-2-2女J04操作系统010101J0489030501许昌1987-9-8男F09德语010201J0179030502刘放1988-1-9男F01日语010101J0491010101李灿1981-9-2男J01数据库010101J0199010503顾争1988-2-7男02郭洁1988-1-5女学生表 tblStudent 课程表t
17、blCourse 学生修课表 tblSelectCourse第39页SQL例例1:查看学生表中全部数据,即列出全部学生Select * from tblStudent这里 * 代表表中全部列,上述语句等价以下语句:Select studentNo, studentName, birthday, sex From tblStudent这时,表中有多少条统计,数据库系统就列出多少条统计。第40页Where子句子例2:查询学生表tblStudent中全部女生学号、姓名和年纪Select studentNo, studentName, birthdayfrom tblStudent where sex
18、=女例3: 查询学生修课表中成绩大于80分学生:Select * from tblSelectCourse where score80在where条件中,能够使用逻辑运算符和比较关系符,包含:=、!=、=。也能够使用关键字,如:between、like、in等。注意,假如值是字符串或者字符、日期类型,就要用单引号把它括起来,比如例2中where条件。例4 查询操作系统成绩在70到80之间学生学号select studentNo from tblSelectCourse where score between 70 and 80 and courseNo=J003第41页日期型数据处理罗列出每个
19、同学年纪现在有了生日,当前日期能够用getDate()函数取得,日期型字段年份能够用Year函数取得Select year(getDate()- year(birthday)From tblStudent第42页order by 子句 例5:查询02级学生选课信息,按学号从小到大排列。因为学号头两位代表学生年级,所以能够这么完成SQL语句编写:Select studentNo,courseNofrom tblSelectCourse where studentNo like 02% order by studentNo这里%代表任意个字符。第43页group by 和Having子句 例6:求
20、每个学生课程总分(大于260分同学罗列)Select sc.studentNo, studentName, sum(score) as totfrom tblSelectCourse sc, tblStudent s where s.studentNo=sc.studentNo group by sc.studentNo, studentName having sum(score) 260改为 having tot 260 对不对?例7:列出选修课程大于等于三门课程学生,并按学号排序select s.studentName,sc.studentNo, count(*) as courses f
21、rom tblStudent s, tblSelectCourse sc where sc.studentNo=s.studentNo group by sc.studentNo, s.studentName having count(*)=3 order by sc.studentNo第44页内连接查询 例8 查找软件开发课程成绩在80分以上学生姓名、学号、年纪以及详细成绩。分析:直接观察表tblSelectCourse和tblStudent,能够发觉,经过tblSelectCourse能够得到学生学号,但无法得到学生名字和年纪,但缺乏信息能够经过表tblStudent得到,表tblStud
22、ent和tblSelectCoursestudentNo假如统一起来,就能够唯一得到所需要信息Select s.studentNo, studentName, year(getDate()-year(birthday), score from tblStudent s, tblSelectCourse sc where s.studentNo=sc.studentNo and courseNo=J001 and score80第45页例8另外写法Select s.studentNo, studentName, birthday, score from tblStudent sinner joi
23、n tblSelectCourse sc on s.studentNo=sc.studentNo where courseNo=J001 and score80第46页嵌套查询 例9:找出成绩(不分课程)大于80分学生姓名Select studentName from tblStudent where studentNo in (select studentNo from tblSelectCourse where score80)这里,select studentNo from sc where score80返回一个集合,第二个查询使用In关键字,判定表S中studentNo是否在返回结果
24、集中。第47页左连接查询问题:班主任查询班级学生某门课成绩表,假如一个学生没选该课程,用内连接查询能得到什么结果?studentNonamebirthdaysexcourseNocourseNamestudentNocourseNoscore030318古待1986-1-2女S01高数一020301F0998020301张名1989-1-1男L02数值算法010101L0278010201张简1981-2-2女J04操作系统010101J0489030501许昌1987-9-8男F09德语010201J0179030502刘放1988-1-9男F01日语010101J0491010101李灿1
25、981-9-2男J01数据库010101J0199010503顾争1988-2-7男02郭洁1988-1-5女学生表 tblStudent 课程表tblCourse 学生修课表 tblSelectCourse第48页左连接 查询 Left joinSelect studentName, a.studentNo, b.courseNo, courseNameFrom tblStudent aLeft join tblSelectCourse b on (a.studentNo = b.studentNoAnd b.courseNo=F001)Left join tblCourse c on b.courseNo=c.courseNo第49页什么时候用左连接左表在右表中对应统计可能有,也可能没有情况下, 第50页SQL数据更新语句 语法数据更新语句 UpdateSQL数据更新语句Update修改表中原有数据统计与Select 语句不一样,Update语句不存在多表联合操作,每个语句一次只能针对一个表。Update语法格式为:update 表 set 字段名 = 表示式, 字段名=表示式,. where条件第51页Update 例子例 11:将全部学生年纪加1岁update tblStudent set age = age+1 例12:将学号为011101学生J01课程成绩加
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 信托产品设计及风险评估考核试卷
- 玻璃纤维增强塑料在建筑模板的应用考核试卷
- 物理流体力学与航空技术考核试卷
- 网红甜品品牌全国加盟授权及统一原料供应保障合同
- 智能家居系统技术支持与售后服务协议
- 高性能工业机器人示教器租赁与操作手册定制合同
- 荷塘莲藕种植与农产品物流合作委托经营管理合同
- 微信小程序金融理财功能定制开发及服务协议
- 电商平台会员积分体系设计与会员权益保障服务协议
- 消防设备工程配套销售与安全咨询合同
- 医师执业变更注册申请审核表
- 2023建筑施工承插型套扣式钢管脚手架安全技术规程
- (完整版)各档口单品菜品毛利率核算表
- 信息隐藏技术全套教学课件
- 常见颅脑急症的CT、MRI诊断
- 2023年云南省昆明市中考作文真题解析及欣赏:坚持的力量
- 2023年江苏泰州市第四人民医院招考聘用高层次人才11人模拟备考试卷(共1000题含答案解析)
- 工会换届选举请示样式
- 七年级音乐上册 《青少年管弦乐队指南》教学课件
- GB/T 22465-2008红花籽油
- 巴菲特三大经典演讲之二-1998年佛罗里达大学商学院演讲
评论
0/150
提交评论