计算机三级——数据库技术
计算机三级——数据库技术
一、考试内容及要求
- 掌握数据库技术 的基本概念、原理、方法和技术。
- 能够使用SQL语言实现数据库的基本操作(增删改查)
- 基本数据库系统安装配置以及数据库管理及维护的基本技能。
- 掌握数据库管理和维护的方法。
- 掌握数据库性能优化的方法。
- 了解数据库系统的生命周期及设计和开发过程。
- 了解常用的数据库管理和开发工具,具备用指定的工具管理开发简单数据库应用系统的能力。
- 了解数据库的最新发展。
二、考试题型
- 选择题——30小题(40分);
- 应用题(填空题)——10小题(30分);
- 设计与应用题——三大题(30分)。
- 画E-R图(考试带有工具 ),范式,SQL语句
三、考试环境
1.软件:SQL service 2008
2.只需在正确答案的前面选中即可(都为单选题) ,在应用题中一空可能会有多个答案选项,在填写答案时要全部写上且要用顿号(、)隔开
3.考试时间为120分钟(上机考试 ),考试结束前5分钟系统会报警提醒考生存盘,考试时间为0自动交卷。
第一章 数据库应用系统开发方法
①掌握数据库的基本概念。
②了解软件工程和数据库技术
③理解DBAS生命周期模型
第一节 基本概念
1.数据
1)数据:是数据库中存储的基本对象。
定义:描述事物的符号序列。
数据的种类:数字、文字、图形、图像声音以及其他特殊符号。
2)计算机中的数据分为两个部分:①临时性数据(程序运行时产生的数据,保存在内存中,内存在断电时所有的数据都回消失);②持久化数据(存储在磁盘中的数据)
3)数据有型和值的划分
型表示数据的类型(例如整型,字符型等等);值表示给出了符合给定型的值。
2.数据库(DataBase)——DB
1)数据的集合,**具有统一的结构形式并存放在统一存储介质中**,是多种应用数据的集成,可被多个应用程序所共享。
2)按照数据提供的数据模式存储
3)数据库的体现——二维表
3、数据库应用系统——DBAS
组成:数据库系统,应用程序,应用界面
第二节 软件工程与数据库技术
一)定义
软件工程是由工程、科学和数学的原则与方法来开发和维护计算机软件的相关技术和管理方法。
组成:软件工程由方法、工具、过程组成——这就是软件工程的三要素。
二)软件生命周期
定义:一般来说,软件产品从定义开始,经过开发、使用和维护,直到退役的全过程称为软件生命周期。
三)数据库工程
1、数据库应用系统的开发本身就是软件工程但是又有自己的特点,所以特称为数据库工程。数据库工程分为两个部分:①数据库设计;②是数据库相应的应用的设计与实现
2、数据库应用系统的设计开发必须要有软件过程模型作为指导
3、典型的软件开发模型:瀑布模型、快速原型模型、螺旋模型、增量模型等等
第三节 DBAS的生命周期模型
1、参照软件开发模型的瀑布模型,DBAS的生命周期模型有项目规划、需求分析、系统设计、系统实现与部署、运行管理与维护。
2、根据DBAS的软件组成和各自的功能,数据组织与存储设计(后台)、数据访问与处理设计、应用设计三条设计主线,分别用于设计数据库、数据库事务和应用程序。
3、根据数据库三级模式(外模式,概念模式(模式),内模式),DBAS设计阶段分为概念设计,逻辑设计和物理设计三个步骤。
DBAS生命周期模型图
4、规划与分析的主要工作内容:系统规划与定义、可行性 分析、项目规划
5、需求分析(干什么)的主要工作:数据需求分析。功能需求分析、性能需求分析、其他需求分析。
6、系统设计(怎么干)
第一章例题
(1)下列属于数据库设计内容的是 ( B )
A.需求分析和维护
B.概念结构设计和逻辑结构设计
C.功能设计和测试用例设计
D.结构设计和行为设计
(2)下列不属于DBAS可行性分析的是 ( C )
A技术可行性
B操作可行性
C.结构可行性
D.经济可行性
(3)下列不属于运行维护工作的是 ( C )
A.系统监控
B系统性能优化
C.应用系统重写
D.系统升级
(4) 第四题答案为 A
(5) 第五题答案为 B
(6)第六题答案为 A
(7)第七题答案为 D
第二章 需求分析
- 了解需求分析的概念和获取需求的方法
- 了解需求建模的方法
- 结构化分析案例——教材购销系统
第一节 需求分析的概念
一、概念和需求获取
1、需求:是指用户对软件的功能和性能的要求,就是用户想要软件干什么,完成什么样的功能,达到什么性能。
2、需求分析是计算机系统的软件功能分配和软件设计之间起重要桥梁作用的软件工程活动。描述待开发的系统要完成的功能。
需求分析时指明软件和系统其他元素的接口并建立软件必须要满足的的约束。
3.注意:①软件功能越复杂,需求分析的工作就越复杂;②用户需求的不明确性导致需求的可变性,从而导致需求分析工作的复杂;③软件产品的不可见性——即开发人员对具体的需求不了解(例如在开发人员开发系统时不了解取款机取款三次密码错误就会吞卡等等)。
4、需求获取的方法
①面谈
②实地观察——在别人已有的产品或者产品对换环境有依赖时;
③问卷调查——访谈对象多时且需要许多的细节问题需要了解时,时间尽可能的短,最好是单选题且有自己的答案;
④查阅资料——向对象公司借阅他们的资料了解
二、需求分析
1、需求分析的过程(该步骤建立在已经获取了需求的基础上)
①标识问题—>②建立需求模型—>③描述需求—>④确认需求
2、需求分析的方法
1)结构化分析及建模方法(SAD)——如DFD模型(数据流图)、IDEF模型;
①注意:结构化分析及设计方法是瀑布模型的首次实践。
②结构化分析的任务:建立分析模型—>编写需求规格说明书(SRS)—>结构化分析的指导思想(抽象与分解)
注意SA表示结构化分析
2)面向对象分析和建模方法(OOA)——UML用例建模(第五章讲)
3、DFD需求建模方法——核心是数据流。
1)DFD的常用图形符号
2)数据流(数据流动的方向)——数据在系统内传播的路径,因此由一组成分固定的数据组成;就是流动中的数据,由名词或者名词短语来命名。
3)数据源和数据加工(处理)
4)注意:DFD图(数据流程图)主要是对功能进行建模,就是业务流程
5)DFD图(数据流程图)的具体建模的过程和步骤:明确目标和确定系统边界(将用户对目标系统的功能需求完整、准确、一致的描述出来 )—>建立顶层DFD图 (顶层DFD只有一张),顶层DFD是对系统的一个大概的概括,没有具体的细节,说明系统的边界(系统的输入和输出)——>构建第一层DFD分解图(中间层DFD )——>开发DFD层次结构图(底层DFD原则:保持均匀的深度模型,按困难程度进行选择),由不可再分的过程组成。
6)确认DFD的五条规则:
4、常用的IDEF0~IDEF4:
①IDEF0:描述系统功能及其相互关系
②IDEF1:系统信息及其数据的关系
③IDEF2:系统模拟,动态建模
④IDEF3:过程描述及获取方法
⑤IDEF4:面向对象设计
5、UML用例模型
★例题:
1)教材购销系统:
解答:顶层DFD
中间层和底层DFD
2)
3)
4)
5)
第三章 数据库结构设计
第一节 数据库概念设计
数据库概念设计是数据库设计的核心环节。通过对用户的需求进行综合、归纳与抽象,形成一个独立于DBMS的概念模型。
一、数据库概念设计的目标
二、概念设计的依据与过程
一)依据
数据库概念设计以需求分析的结果为依据,即需求说明书、DFD图以及在需求阶段收集到的应用领域中的各类报表。
二)结果
概念设计的结果是概念模型(E-R图)以及概念设计说明书。
三)过程
①明确建模目标(模型覆盖范围);②定义实体集(自底向上识别和定义实体);③定义联系(实体间的关联关系);④建立信息模型(构建ER模型);⑤确定实体的属性(属性描述实体的特征和性质);⑥对信息模型进行集成与优化(检查和消除命名不一致、结构不一致)
概念模型是对现实世界的抽象和模拟。
四)概念模型设计
概念设计目前采用的最广泛的是E-R建模方法。将现实世界抽象为具有属性的实体及联系。
五)与E-R建模有关的的概念
1)实体:客观存在并可相互区分的事物叫实体;实体集:同型实体的集合称之为实体集;属性:实体具有的某一特性,一个实体具有若干个属性来刻画,每个属性的取值范围称为域(用来描述实体的性质和特征);码或键:实体集中唯一标识每个实体的属性或属性组合;主键或主码:用来区别同一个实体集不同实体的键(主码的值不能相同)。
2)联系:描述实体间的相互关系;联系集:同类联系的集合称之联系集 ;三类联系:一对一(1:1)、一对多(1:n)、多对多(m:n)
IDEF1X是数据建模的方法
第二节 数据库逻辑设计
一)逻辑设计的任务
将概念模型(ER图)转换为DBMS支持的数据模型(关系模型),并对其进行优化。
二)数据模型
有三种:层次模型、网状模型、关系模型(当前最流行的数据模型)
三)关系模型
关系模型用二维表来表示;关系的描述称为关系模式;关系模式由五部分组成,即五元组:R(U,D,DOM,F)
E-R图到关系模式的转换:
四)关系数据库数据的核心是关系模式的设计
五)数据依赖
六)数据依赖的类型
①函数依赖(Functional Dependency,FD)
这种依赖关系类似于数学中的函数y=f(x),自变量x确定之后,相应的函数值y也就唯一地确定了。
如关系:公民(身份证号,姓名,地址,工作单位)
身份证号一确定,则其地址就唯一确定,因此地址函数依赖身份证号。而姓名一确定,不一定能确定地址。
②多值依赖(Multivalued Dependency,MD)
教师号可能多值依赖课程号,因为给定一个(课程号,参考书号)的组合,可能有对应多个教师号。这是因为多个老师可以使用相 同或不同的参考书上同一门课。
简单点讲,函数就是唯一确定的关系;多值依赖却不能唯一确定。
七)函数依赖的几种特例
1、平凡函数依赖与非平凡函数依赖
如果X→Y,且Y ⊄ X,则X→Y 称为非平凡函数依赖。
若Y ⊆ X ,则称X→Y为平凡函数依赖。
由于Y ⊆ X 时,一定有X→Y,平凡函数依赖必然成立,没有意义,所以一般所说的函数依赖总是指非平凡函数依赖。
举例:
例:Sno代表学生的学号,Cno代表课程号,Grade代表成绩。
在关系 SC(Sno, Cno, Grade)中,
非平凡函数依赖:(Sno, Cno)→Grade 即Grade不包含于(Sno, Cno)
平凡函数依赖:(Sno, Cno)→Sno 即Sno包含于(Sno, Cno)
(Sno, Cno)→Cno
2、完全函数依赖与部分函数依赖
如果X→Y ,且对于任何X’ ⊂ X,都有X’
Y,则称y完全依赖于x,记作X->Y(箭头上有个大写f)。
如果X→Y,但Y不完全依赖于X,则称Y部分函数依赖于X,记作X->Y(箭头上有个大写P)。
例:选课(学号,课程号,课程名,成绩)
(学号,课程号) X->Y(箭头上有个大写f) 成绩 即(学号,课程号)两者都为主键且共同决定成绩,缺一不可
(学号,课程号)X->Y(箭头上有个大写P) 课程名 因为课程号→课程名 即(学号,课程号)两者都为主键且课程号可以单独决定课程名。
推论:如果X→Y ,且X是单个属性,则X->Y(箭头上有个大写f)
3、传递函数依赖
如果X→Y , Y→Z,且Y 不包含于X, Y 不依赖 X,则称Z传递函数依赖于X。记作X 传递→Z 。
例:学生(学号,姓名,系名,系主任)
显然系主任传递函数依赖于学号,因为学号→系名,系名→系主任
思考题:已知关系模式R(学生学号,课程名,学生专业号,专业名,成绩),说出下面是什么关系?
(学生学号,课程名,学生专业号) 成绩 (部分函数依赖)
学生学号 专业名 (传递函数依赖)
(学生学号,专业名) 成绩 (不是依赖关系)
(学生学号,课程名) 成绩 (完全函数依赖)
(课程名,专业名,成绩) (课程名,成绩) (平凡函数依赖)
八)数据规范化
关系数据库的设计主要是关系模式设计。关系模式设计的好坏直接影响到数据库设计的成败。将关系模式规范化,是设计较好的关系模式的惟一途径。
关系模式的规范化主要是由关系范式来完成的。
关系模式的规范化:把一个低一级的关系模式分解为高一级关系模式的过程。
关系数据库的规范化理论是数据库逻辑设计的工具。
目的:尽量消除插入、删除异常,修改复杂,数据冗余的问题。
九)范式
范式:关系模式满足的约束条件称为范式。根据满足规范化的程度不同,范式由低到高分为1NF,2NF,3NF,BCNF,4NF,5NF。
①1NF:如果关系模式R,其所有属性都是不可再分的基本数据项,则称R属于第一范式,R∈1NF。1NF要求数据库表中的字段都是单一属性的,不可再分。即元素具有原子性。
②2NF:如关系模式R∈1NF,且每个非主属性完全函数依赖于主码,则称R属于第二范式,R∈2NF。2NF要求实体的属性完全依赖于 主关键字。首先关系要满足第一范式。
例:判断R (学号,姓名,年龄,课程名称,成绩,学分)是否属于第二范式。
主码:(学号,课程名称)
非主属性:姓名,年龄,成绩,学分
存在如下决定关系:
(学号, 课程名称)→(姓名,年龄,成绩,学分)
但(课程名称)→(学分)
(学号)→(姓名, 年龄)所以R不属于2NF
③第三范式:如果关系模式为2NF,并且R中的每个非主属性不传递依赖于R的主键,则称关系R是是属于第三范式,即R∈2NF。
范式之间的关系:
十)数据库逻辑模型的产生(ER图转换为关系模式)
①一个实体转换成一个关系模式;②一个1:1联系可以转换为一个独立的关系模式,也可以于任意一端对应的关系模式合并;
③一个1:n联系可以转化为一个独立的关系模式,也可以于n端对应的关系模式合并;④一个n:m转换为一个关系模式;⑤三个或三个以上实体的多元联系转换为一个关系模式;⑥同一实体集实体间的联系可以按照1:1、1:n、n:m三种情况进行处理。
举例:
①1:1联系的E-R图转换为关系模式较为简单,不在列举,总共有情况;
②1:n联系的E-R图转换为关系模式,有两种方案;
方案一:仓库(仓库号、地点、面积)、产品(产品号、产品名、价格)、仓储(仓库号、产品号、数量)
方案二:仓库(仓库号、地点、面积)、产品(产品号、产品名、价格、仓库号、数量)
③m:n联系的E-R图转换为关系模式,有一种方案;
方案一:学生(学号、姓名、年龄、性别)、课程(课程号、课程名、学时数)、选修(学号、课程号、成绩)
④三个及三个以上实体:
⑤同实体集1:n联系转换为关系模式
第三节 数据库物理设计
1、物理设计概述
数据库物理设计是设计数据库的存储结构和物理实现方法。
目的:将数据的逻辑描述转换为技术规范,设计数据存储方案以便提供足够的好的性能以便确保数据库数据的完整性、安全性、可靠性
2、数据库的物理结构
一)①物理设备上的存储结构与存取方法称为数据库的物理结构;②数据库中的数据一文件形式存储在外存储介质上。
二)数据库的物理结构设计需要解决的问题:文件组织、文件结构、文件存取、索引技术
3、索引——数据库持久化设计(数据的存取)
1)①索引是数据库中独立的存储结构其作用是提供一种无须扫描每个页面(存储表格数据的物理块)而快速访问数据页的方案。
②索引技术(Indexing)是一种快速数据访问技术
③索引技术的关键:建立记录域取值到记录的物理地址间的映射关系,即索引。
④索引能够提高性能(减少时间),但是需要付出额外的空间、在维护时也需要付出多余的时间
2)索引技术的分类
有序索引:又分为聚集索引和非聚集索引、稠密索引和稀疏索引;散列索引(哈希表存储);主索引;唯一索引、单层索引和多层索引
3)数据库的物理设计
目标:略;
环节:(1)数据库逻辑模式描述(关系模式-基本表);(2)文件组织与存取设计(基本原则:①将易变部分与稳定部分、存储频率较高的部分与存储频率较低的部分分开存放,以提高系统性能;②分析理解数据库事务访问特性);(3)数据分布设计(分布式数据库系统的数据划分:垂直划分和水平划分(各自的含义));(4)确定系统配置;(5)物理模式评估(对数据库的**时间和空间(存取时间、存储空间)**的效率进行评估)
3)什么是存取路径
选择存取路径主要是指确定如何建立索引。对同一个关系我们要建立多条索引路径。
4)DBMS常用的存取方法:索引方法(B+树索引方法)、聚簇方法、HASH方法
第三章 例题讲解
1)
2)
3)
4)
5)
6)重点:第三章出现的设计与应用题
第四章 数据库系统功能设计于是实施
总述:DBAS功能设计包括应用软件设计中的数据库事务设计和应用程序设计。
功能设计过程分为:总体设计、概念设计、详细设计;具体到数据库事务设计分为:事物概要设计、事物详细设计
第一节 软件体系结构与设计过程
一、软件体系结构与设计过程
一)软件体系结构:又称为软件架构是软件系统中最本质的东西,良好的软件体系结构必须是普适、高效和稳定的;软件体系结构={构件(软件系统的各个模块),连接件(接口和过程调用)、约束(完整性约束和规则)}
软件体系结构类型:分层体系结构、MVC(模型-视图-控制器)体系结构、客户端/服务器(B/S、C/S)体系结构
二)软件设计过程
1)软件开发有设计、实现、测试三个环节组成;包含概要设计(任务:软件总体结构图设计)和详细设计(任务:数据设计、过程设计及人机界面设计)
2)设计原则:模块化、信息隐藏、抽象和逐步求精
3)软件设计可选用的方法:结构化设计方法、面向对象方法、面向数据设计方法
第二节 DBAS整体设计
DBAS整体设计的任务:确定系统整体框架;涉及的内容包括:DBAS体系结构设计、软件体系结构设计、软件硬选型与配置设计、业务规则初步设计
一、DBAS体系结构设计
1)常见的DBAS体系结构:客户服务器体系结构(C/S)、浏览器服务器体系结构(B/S)
2)三层客户服务器体系结构(C/S):表示层、功能层(业务:应用服务器)、数据层(DB:数据库服务器)
二、软件体系结构设计
1)DBAS软件包括:操作系统、数据库管理系统、开发环境中间件、应用软件(数据库事务和应用程序)
2)可用模块结构图(模块+调用+控制+转接)表示总体结构和分层模块结构(体系结构的情况)
三、软件硬选型与配置设计
总体设计阶段需要对软硬件设备做出合理选择,并进行初步配置设计。
四、业务规则初步设计
关键:业务流程图——总体设计阶段
第三节 DBAS功能概要设计
1) DBAS功能概要设计在总体设计的基础上进一步细化模块/子模块,组成应用软件的系统—子系统—模块—子模块结构,并从结构、行为、数据三方面进行设计。
2)从功能角度,DBAS系统通常划分为四个层次:表示层、业务逻辑层、数据访问层、数据持久层
一、表示层概要设计
1)人机界面设计,影响系统易用性(目前第四代为WIMP与web技术多任务处理技术相结合)
2)设计原则:对用户友好;用户自主控制;反馈及时上下文感知;容错与错误恢复;界面标准常规;输入灵活;界面简洁、交互及时。
二、业务逻辑层概要设计
1)设计原则:高内聚低耦合
2)设计内容:结构、行为、数据、接口等等
三、数据访问层概要设计
1)事物概要设计核心:在于辨识和设计事物自身的处理逻辑、注意流程
2)一个完整的事物概要设计包括:事务名称、访问的关系表和数据项、事务逻辑、事务用户
四、事务
1)事务的概念(Transaction):事务是访问并可能更新数据库中各种数据项的一个程序执行单元
2)事务的特性:原子性、一致性、隔离性、持续性;称为ACID特性
原子性:一个不可分割的工作单位;一致性:从一个一致性状态变到另一个一致性状态;隔离性:执行不能被其他事务干扰;持久性:永久性,他对数据库的改变是永久的。
五、数据持久层概要设计
第三章内容
第四节 DBAS功能详细设计
一、表示层详细设计
人机界面采用原型迭代法。
二、业务逻辑层详细设计
1)设计各模块内部处理流程和算法、具体数据结构和详细接口。
第五节 应用系统安全架构设计
一、数据安全设计
安全性保护、完整性保护、并发性保护、数据备份与恢复、数据加密传输
1)数据库的安全性保护
(1)主要保护方法:用身份鉴别、权限控制
2)数据库的完整性保护
定义:数据库的完整性保护是指数据库中的正确性、一致性
及相容性
方法:设置完整性检查(即对数据设置一些约束条件(实体完整性、参考完整性、用户自定义完整性))
完整性条件作用对象:列、元组、关系
DBAS中的完整性约束功能包括:完整性约束条件设置和检查。
3)数据库的并发控制
并发控制:事务在空间上重叠执行。
并发控制机制是衡量一个DBAS性能的一个重要标志;实现并发控制常用的方法是封锁技术(就是Java里面的锁)。
基本锁类型:排他锁(X锁)—写锁、共享锁(S锁)—读锁
死锁:是两个或者两个以上的事务之间的循环等待。
避免死锁的原则: ①按照同一顺序访问资源。(如第一个事务提交或回滚后第二个事务进行) ②避免事务交互性 ③采用小事务模 式,缩短长度和占用时间。 ④尽量使用记录级别的所(行锁),少用表级别锁。 ⑤使用绑定连接,同一用户打开的两个或多个连接 可以互相合作。
4)数据的备份与恢复
数据库恢复的基本原理:
数据库备份与恢复的策略:双机热备、数据转储(数据备份)、数据加密存储(针对高敏感数据)
7)数据加密传输常见的传输手段:数字安全证书、对称密钥加密、数字签名、数字信封
二、环境安全设计
漏洞与补丁、计算机病毒防护、网络环境安全(防火墙)、物理环境安全
三、制度安全设计
管理层安全措施
第六节 DBAS实施
一、DBAS实施工作
1)创建数据库、2)数据装载、3)编写调试应用程序、4)数据库系统运行(功能测试、性能测试)
第四章 例题
1、
2)
3)
4)
5)
6)
7)
8)
第五章 UML与数据库应用系统
内容摘要:
①了解DBAS建模方法;②掌握DBAS业务流程与需求表达方法;③掌握DBAS系统内部结构的表达方法;④掌握DBAS微观设计的表达方法;⑤了解DBAS宏观设计的表达方法;⑥了解DBAS系统实现与部署的表达方法。
第一节 DBAS建模
一、统一建模语言(UML)
1)UML是面向对象的可视化的通用语言,他是一种建模语言不是建模方法。
2)建模方法包括建模语言与建模过程;①建模语言:提供这种方法用于表示建模结果的符号(图形符号:可视化);②建模过程:吗iOS建模时需要遵循的步骤。
二、UML的组成
1)由**语义(自然语言)与表示法(可视化标准符号)**组成。
四层建模概念框架:元元模型、元模型、模型层(类模型或类型模型)、用户模型(实例模型:具体的对象)
2)UML的五种视图:结构、实现、行为、环境、用例视图
3)UML 2.0分为静态结构图和行为图
第二节 DBAS业务流程图与需求表达
一、业务流程与活动图
活动图最适合描述系统或子系统的工作流程。
二、系统需求与用例图
三、关系说明
1)角色之间的关系——通用化关系(继承:extends)带三角符号的箭头
2)用例与角色之间的关系——连接关系(关联关系)
3)用例之间的关系——扩展(extends)关系、包含(use、include)(使用)关系、组合(关联)关系、泛化关系
第三节 DBAS系统内部结构的表达
一、类图
1)类与类的关系:关联关系、继承、依赖、精化(实现)
2)组成:类名、属性、方法(操作、行为)
二、顺序图-行为建模
1)顺序图主要用于描述系统内对象之间的消息发送和接收序列;
2)顺序图中出现的元素一定是在类图中出现的;用来强调时间。
三、通信图(协作图)
第四节 DBAS系统微观设计的表达
一、对象图
对象图是类图的实例,描述特定时间中所有对象在系统中的结构,是一个快照
矩形框上面的左边为对象名——后面为所属的类
二、状态图
1)状态图用来描述有关事件或对像的状态转移;只能有一个开始状态可以有多个结束状态。
2)状态图的转移由事件驱动。
三、时间图
当状态的转换由时间因素决定时,使用时间图来描述状态的变化。
第五章 DBAS系统宏观设计的表达
一、包图
二、交互概述图
交互概述图相当于活动图和顺序图的结合
三、复合结构图
复合结构图适用于系统间的沟通接口,进行系统架构设计和系统维护时。
第六节 DBAS系统实现与部署的表达
一、组件图
组件时逻辑中定义的概念和概念在物理架构中的实现。
二、部署图(配置图)
1)描述系统中软硬件的物理配置情况与系统结构。
2)部署图说明实体组件如何执行程序,将如何部署到实际的计算机中——在集成测试之前。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EZPS9LIT-1616819653259)(]
第五章例题
1)
2)
3)
4)
5)
6)
7)
第六章 数据库以及数据库对象
第一节 创建及维护数据库
一、SQL server数据库分类
1)系统数据库(系统自动创建):master、msdb、tempdb、model、resource
2)用户数据库
二、SQL server数据库的组成
1)SQL server将数据库映射为一组操作系统文件。
2)数据文件:①.mdf:主要数据文件,不能小于3M。只有一个;②.ndf:次要数据文件,0个或多个;
日志文件:.ldf:事务日志文件,至少有一个日志文件。
三、数据库存储空间的发分配
1)数据存储的最小单位是数据页(也就是页),一页是一块8KB的连续磁盘空间。
2**)页的大小决定了数据库表中一行**(一个记录、元组)数据的最大值—不能超过8KB
3)行不能跨页存储,一页可以存放多行数据但是不能超过8KB
四、数据库文件组
1)类型:主文件组(系统定义,主要数据文件和如何没有明确分配的其他文件)、用户定义文件组(使用FILEGROUP关键字定义)
五、创建数据库
1)通过图形可视化工具直接创建
2)通过T-SQL语言创建
举例:
七、修改数据库
八、分离和附加数据库
一)分离数据库
1)作用:就是将数据库从一台数据库服务器转移到另一台数据库服务器,不需要重建(类似于剪切)
2)使用的语句:sp_detach_db实现系统存储过程
二)附加数据库
将分离的数据库重新安装到数据库管理系统中,必须指定主要数据文件的物理存储位置和文件名。
2)语句:CREATE DATABASE …(数据库名) ON(存储位置) FOR ATTACH
第二节 架构
一、架构(模式)
1)架构是数据库下的一个逻辑命名空间,是数据库对象的容器,一个数据库包含一个或多个架构,同一个数据库内架构命名唯一
2)定义架构语句:CREATE SCHEMA [<架构名>] AUTHORIZATION [<用户名>]
3)删除架构:DROP SCHEMA [<架构名>]
第三节 分区表
一、基本概念
1)分区表是将表中的数据按水平分割成不同的子集,并将数据子集存储在数据库一个或多个文件组中。
2)物理上将大表分成好几个小表,逻辑上还是一个大表;合理使用分区能提高数据库性能。
二、创建分区表
实例:
第五节 索引视图
1)创建索引
2)删除索引
一、基本概念
1)标准视图(也称虚拟表):返回结果集与标准表一致,标准视图的结果集不永久存放。
2)索引视图(也称物化视图):建立唯一聚集索引的视图;视图结果存放在数据库中。
二、索引视图使用与限制
1)适用场合:①很少更新的基础数据;②基础数据使用批处理定期更新且作为只读数据
2)
三、定义索引视图
创建索引视图必须满足的条件:①视图只能引用基本表,不能是其他的视图;②引用的基本表和视图在同一歌数据库中;③必须用SCHEMABINDING选项创建视图;④视图中的表达式引用的所有函数必须确定。
第六章例题
1)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-h5AUySgD-1616819653276)(C:\Users\潘仕毅\AppData\Roaming\Typora\typora-user-images\image-20210224184633675.png)]
2)
3)
4)创建唯一约束后面必须要字段
5)
6)
注意:在数据库设计题有怎么创建数据库
第七章 高级数据库查询
第一节 数据查询功能扩展
一、查询语句–SELETE(具体看荣莹数据库-第五章)
1)SELETE语句的格式和含义
SELECT [DISTINCT] [TOP n] select_list ——查询指定的列、DISTINCT消除重复元组
[INTO new_table]——将查询结果创建到新表
[FROM table_source]——查询的目标表
[WHERE search_conditition]——查询的条件
[GROUP BY group_by_expression]——指定分组查询的条件
[HAVING search_condition]——指定组或聚合函数查询的条件
[ORDER BY order_expression [ASC|DESC]]——指定表的数据的升降序
[COMPUTE expression] ——在结果集得到末尾生成汇总数据
2)WHERE 条件表达式中可使用下列运算符:
Ø算术比较运算符:<、<=、>、>=、=、<>或!=。
Ø逻辑运算符:AND、OR、NOT(AND和 OR来联结多个查询条件可多次出现、 AND的优先级高于OR、 可以用括号改变优先级)。
Ø集合运算符:IN(DNAME IN ( ‘计算机’,‘电子’)表示取DNAME为’计算机’,’电子‘的结果集)、NOT IN(与前面相反)。
Ø谓词:EXISTS(存在量词)、ALL、SOME、UNIQUE(并)、BETWEEN … AND(在某个范围)、NOT BETWEEN … AND(不在这个范围) 。
Ø聚合函数:AVG、MIN、MAX、SUM、COUNT。
Ø F中运算对象还可以是另一个SELECT语句,即SELECT语句可以嵌套。
二、使用TOP限制结果集
1)TOP n [percent] [WITH TIES]
• Top n 前n行
• Top n [percent]前n%行
• [WITH TIES]:包括最后一行取值并列的结果。
2)TOP的使用:SELECT TOP 3 WITH TIES 。。。。
三、使用CASE函数
1)语法:
CASE
WHEN 布尔表达式1 then 结果表达式1
WHEN 布尔表达式2 then 结果表达式2
……
WHEN 布尔表达式n then 结果表达式n
[ELSE 结果表达式n+1]
2)使用举例
SELECT a.GoodsID,商品销售类别=CASE
WHEN COUNT(b.GoodsID)>10 THEN ‘热门商品’
WHEN COUNT(b.GoodsID)BETWEEN 5 AND 10 THEN ‘一般商品’
WHEN COUNT(b.GoodsID)BETWEEN 1 AND 4 THEN ‘难销商品’
ELSE ‘滞销商品’
END
FROM Table_Goods a LEFT JOIN Table_SaleBillDetail b
ON a.GoodsID=b.GoodsID GROUP BY a.GoodsID
四、将查询结果保存到新表中
SELECT 查询列表序列 INTO <新表名>
FROM 数据源……(其他行过滤、分组语句)
注意:表名前加**#为局部临时表,##为全局临时表**,只有表名为永久表。
例子:SELECT * INTO #HD_Customer FROM Table_Customer WHERE ……
注意:局部临时表和全局临时表只在当前查询中一次有效
第二节 查询结果的交、并、差运算
①在FROM子句中给出多个表名,即可完成笛卡尔积运算。
②建立几个表连接的方法:在FROM子句中列出需连接的表名,在WHERE子句给出连接条件或连接谓词
一、并运算
1)并运算(UNION):将多个查询结果合并为一个结果集。。
语法:
SELECT 语句1UNION [ALL]SELECT 语句2UNION [ALL]
2)使用UNION注意:
Ø要进行合并的查询,SELECT中列数必须相同,语义相同。
Ø每个相对应列的数据类型隐式兼容,如char(20)与varchar(40)。
Ø合并后结果采用第一个SELECT语句的列标题。
Ø若需排序,则GROUP BY语句写在最后一个SELECT之后,且排序的一句是第一个SELECT中的列名。
3)举例:求选修了课程C2或C4的学生的学号和姓名
二、交运算
1)交运算:返回同时在两个集合中出现的记录。
语法:
SELECT 语句1INTERSECT SELECT 语句2INTERSECT ……SELECT 语句n
2)举例:求选修了课程C2和C4的学生的学号和姓名
三、差运算
1)差运算:返回第一个集合中有而第二个集合中没有的的记录。
语法:
SELECT 语句1EXCEPT SELECT 语句2EXCEPT……SELECT 语句n
2)举例:求选修了课程C2但没有选修课程C4的学生的学号和姓名
第三节 子查询
一、单值子查询
1)WHERE子句中的条件表达式可以是标量数据 ,也可以是一个SELECT-FROM-WHERE查询块构成的子查询。
SELECT <属性名1> /*外层查询 /父查询*/FROM <表名1>WHERE
(SELECT <属性名2> /*内层查询/子查询*/
FROM <表名2>
WHERE<条件2 >)
2)①子查询的限制:不能使用ORDER BY子句;②层层嵌套方式反映了 SQL语言的结构化,③有些嵌套查询可以用连接运算替代
3)举例:求选修了数据结构的学生的学号
SELECT语句:
SELECT SNO FROM SCWHERE CNO =
(SELECT CNO //子查询语句返回的结果集要与父查询语句的条件的名称(语义)相同,但是为不同的表
FROM C
WHERE CNAME= ' 数据结构‘);
也可以用自身连接完成前例查询要求
SELECT SNO
FROM SC, C
WHERE SC.CNO = C.CNO AND C.CNAME= '数据结构';
二、包含多值的子查询
1)子查询的结果不是单一值,而是多个值,即一个集合(记为R)。与子查询结果比较,可使用以下运算符:
① EXISTS R是一个条件,当且仅当R非空时,该条件为真。
EXISTS相当于离散数学中的存在量词。
② s IN R为真,当且仅当s等于R中的一个值。类似地,s NOT IN R为真,当且仅当s不等于R中的值。
IN的含义相当于集合论中的“属于”(∈)。类似地,s NOT IN R,表示s不属于R。
③ s>ALL R为真,当且仅当s大于关系R中的每一个值。同样可以使用其他五个比较运算符(>=、=、<、<=、<>)。
例如,s<>ALL R,表示s NOT IN R。
④ s>ANY R为真,当且仅当s至少大于关系R中的一个值。同样可以使用其他五个比较运算符(>=、=、<、<=、<>)。
例如,s = ANY R表示s IN R。
2)例一:查询选修了课程号为‘C4’的学生的SNO和SNAME
SELECT SNO,SNAME FROM SWHERE SNO IN
(SELECT SNO
FROM SC
WHERE CNO=‘C4’ );
举例二:查询选修了“数据结构”的学生的SNO和SNAME
执行过程:
三、使用EXISTS的子查询
一、EXISTS
1)EXISTS—>①相当于离散数学中的存在量词;
②带有EXISTS谓词的子查询不返回任何数据,只产生逻辑真值“true”或逻辑假值“false”。
③若内层查询结果非空,则外层的WHERE子句返回真值;若内层查询结果为空,则外层的WHERE子句返回假值
④由EXISTS引出的子查询,其属性名表达式通常都用* ,因为带EXISTS的子查询只返回真值或假值,给出属性名无实际意义。
2)举例:查询所有选修了C2号课程的学生姓名
SELECT SNAMEFROM SWHERE EXISTS //与上述子查询不同的是在**EXISTS**前没有任何的属性(列名、语义),子查询语句返回为真才会有结果集
( SELECT *
FROM SC
WHERE S.SNO=SC.SNO AND CNO='C2');//只有S.SNO=SC.SNO相等并且CNO为'C2'时才为真。
执行过程:先将S表中的SNO拿出来与 SC中的SNO一一对比;②当S.SNO=SC.SNO相等时,再判断CNO是否为’C2’,若为’C2’则返回真(因为子查询执行的结果集不为空);③所以在父查询执行完毕后会有相应的结果集出现。
3)执行结果为:
二) NOT EXISTS
1)若内层查询结果非空,则外层的WHERE子句返回假值;若内层查询结果为空,则外层的WHERE子句返回真值
2)例:用NOT EXISTS求没有选修C3课程的学生的姓名。
SELECT SNAMEFROM S
WHERE NOT EXISTS
( SELECT *
FROM SC
WHERE S. SNO=SNO AND CNO='C3');
3)执行过程与 EXISTS 的执行过程差不多,只不过是为空时为真;返回的结果为没有选修C3课程的学生的姓名。
三) NOT EXISTS与 NOT EXISTS 结合举例:
- 查询没有选修全部课程的学生姓名。
思路分析:(将课程表视为一个分组,用来判断是否全部选修)
①本查询涉及S、C和SC三个关系
②在S关系中依次取每个元组的学号SNO
③从C关系中依次取出每个元组的课程号CNO
④在SC关系中查询学号SNO是否选修课程号CNO,若未选修,则将该元组的SNAME放入查询结果集
SELECT SNAMEFROM SWHERE EXISTS(SELECT *FROM CWHERE NOT EXISTS(SELECT *FROM SCWHERE SC.SNO= S.SNOAND SC.CNO= C.CNO));
// 查询选修了全部课程的学生姓名。
SELECT SNAMEFROM SWHERE NOT EXISTS(SELECT *FROM CWHERE NOT EXISTS(SELECT *FROM SCWHERE SC.SNO= S.SNOAND SC.CNO= C.CNO));
例: 查询选修了学生S4选修的全部课程的学生学//想象三张表
SELECT DISTINCT SNO //最终返回的结果集,若存在则返回;不存在则说明数据都没有
FROM SC AS SC1
WHERE NOT EXISTS
(SELECT *FROM SC AS SC2WHERE SC2.SNO=‘S4’(确定学生S4选修的全部课程) AND NOT EXISTS(SELECT * //返回确定的结果集,只是会返回true或falseFROM SC AS SC3WHERE SC3.SNO = SC1.SNO(选中学生的SNO学号)AND SC3.CNO= SC2.CNO (判断每个学生选修的课程与学生S4选修的全部课程是否相等)));
查询所有学生都选修的课程的课程名。SELECT CNAMEFROM CWHERE NOT EXISTS(SELECT *FROM SWHERE NOT EXISTS(SELECT *FROM SCWHERE SC.SNO= S.SNOAND SC.CNO= C.CNO));
总结:①EXISTS 和 NOT EXISTS 想象为一个圈,EXISTS 是在圈里面,NOT EXISTS在圈外面(圈指的是子查询结果);②在进行设计时要思考题目中出现的关键字以关键字来确定选择 EXISTS 或者 NOT EXISTS ;③思考题目中出现的关键字涉及到那些表,以确定在进行设计时需要哪些表。
四、使用ANY(SOME)或ALL的子查询
1)子查询返回标量值时可以用比较运算符
返回多值要使用比较运算符,则需要配合ANY或ALL
ANY:任意一个值
ALL:所有值
2)含义:
> ANY 大于子查询结果中的某个值 (存在大于)
> ALL 大于子查询结果中的所有值(比最大值还大)
< ANY 小于子查询结果中的某个值 (存在小于)
< ALL 小于子查询结果中的所有值 (比最小值还小)
>= ANY 大于等于子查询结果中的某个值 (存在大于或等于)
>= ALL 大于等于子查询结果中的所有值 (应该为一个与子查询相同大小的集合)
<= ANY 小于等于子查询结果中的某个值 (存在小于或等于)
<= ALL 小于等于子查询结果中的所有值 (应该为一个与子查询相同大小的集合)
= ANY 等于子查询结果中的某个值 (存在等于关系)
=ALL 等于子查询结果中的所有值(通常没有实际意义)
!=(或<>)ANY 不等于子查询结果中的某个值
!=(或<>)ALL 不等于子查询结果中的任何一个值
3)举例: 查询其他系中比计算机系任意学生年龄小的SNAME和AGE
SELECT SNAME,AGEFROM SWHERE AGE < ANY (SELECT AGE FROM SWHERE DNAME= ‘ 计算机 ')//子查询,确定为计算机系的学生的年龄;整个语句的意思是确定比计算机系任意学生年龄小的学生AND 所在系 <> ‘计算机 ' ; //选择返回结果为其他系的学生
第四节 其他形式的子查询
一、替代表达式的子查询
在SELECT的选择列表中嵌入了一个只返回一个标量值的子查询。
实例:
SELECT Cname,Address,
(SELECT COUNT(*) FROM Table_Customer b ON a.CardID=b. CardID WHERE CustomerID=‘C001’)AS TotalTimes FROM Table_Custmer Where CustomerID=‘C001’;
二、派生表
1)也称为内联视图,是将子查询作为一个表处理,产生的新表为“派生表”。
2)实例:查询至少买了C001和C002两种商品的顾客号和顾客名。
SELECT CustomerID,CName FROM (SELECT * FROM Table_SaleBill a JOIN Table_SaleBillDetail b ON a.SaleBillID=b. SaleBillID WHERE GoodsID=‘G001’) AS T1JOIN (SELECT * FROM Table_SaleBill a JOIN Table_SaleBillDetail b ON a.SaleBillID=b. SaleBillID WHERE GoodsID=‘G002’) AS T2ON T1.CardID=T2.CardID JOIN Table_Customer c ON c.CardID=T1. CardID
复习:聚集函数
原文链接:https://blog.csdn.net/u010327460/article/details/80527568
聚集函数是以值得一个集合(集或多重集)为输入、返回单个值得函数。
固有的聚集函数
SQL提供了五个固有的聚集函数
平均值 :avg
最小值: min
最大值:max
总和: sum
计数: count
一、基本聚集
查询1. 平均数
找出Computer Science 系教师的平均工资。select avg(salary)
from instructor
where dept_name = 'Comp. Sci.';
查询2. as 重命名平均数
将查询1中的查询属性赋予一个有意义的名字select avg(salary) as avg_salary
from instructor
where dept_name = 'Comp. Sci.';
注意: 在计算平均数时,保留重复元组很重要。
查询3. distinct 使用的情况。
找出在2010年春季学期讲授一门课程的教师总数:select count(distinct ID)
from teaches
where semester = 'Spring' and year = 2010;
有些情况下,计算聚集函数需要先删除重复元组。可以使用distinct。
查询4. count(*)
找出course关系中的元组数:select count(*)
from course;
SQL中不允许使用count(*)的时候使用distinct。使用max和min时,可以使用distinct
二、分组聚集
使用 group by 将聚集函数作用于一组元组集上。
理解:group by 子句中给出的一个或多个属性是用来构造数组的。在 group by 子句中的所有属性上取值相同的元组被分在一个组中。
查询5.
找出每个系的平均工资select dept_name, avg(salary) as avg_salary
from instructor
group by dept_name;
查询6.整个关系作为一个分组
找出所有教师的平均工资select avg(salary)
from instructor;
查询7:
每个系在2010年春季学期讲授一门课程的教师人数
from instructor natural join teaches
where semester = 'Spring' and year = 2010
group by dept_name;
重要结论:出现在select语句中但没有被聚集的属性,只能是那些出现在group by 子句中那些的属性。换句话说,任何没有出现在group by 中的属性,如果出现在select子句中,它只能出现在聚集函数内部,否则这样的查询就是错误的。
查询8. 一个错误的查询
/* 错误的查询*/
select dept_name, ID, avg(salary)
from instructor
group by dept_name;
分析:ID出现在select子句中,且不是聚集函数的参数,却没出现在group by,查询错误。换个思路,一个分组有多个教师,每个教师有不同的ID,每个分组只输出一个元组,那么就无法确定输出哪一个ID。
三、having子句
having子句是对分组的限定(就是where,条件)。
查询9. having子句
找出系平均工资超过42000美元的那些系中的教师的平均工资。select dept_name, avg(salary) as avg_salary -----步骤④
from instructor -----步骤①
group by dept_name -----步骤②
having avg(salary) > 42000; -----步骤③
having子句使用 having avg_salary 会有什么不同?
任何出现在having子句中,但没有被聚集的属性必须出现在 group by 子句中,否则查询就被当成错误的。
包含聚集、group by或having子句的查询
包含聚集、group by或having子句的查询的含义可通过下述操作序列来定义:
- 最先根据 from 子句计算出一个关系;
- 如果出现 where 子句, where 子句 中的谓词将应用到 from子句 的结果关系上;
- 如果出现了group by 子句, ①满足 where 谓词的元组通过group by 子句形成分组。 ②如果没有 group by 子句,满足where谓词的整个元组集被当做一个分组。
- 如果出现了 having子句,它将应用到每个分组上;不满足having子句谓词的分组将被抛弃。
- select 子句 利用剩下的分组产生出查询结果中的元组,即在每个分组上应用聚集函数来得到单个结果元组。
查询10.同时使用having和where子句
“对于在2009年将受的每个课程段,如果该课程段至少2名学生选课,找出选修该课程段的所有学生的总学分(tot_cred)的平均值”。student(ID, name, dept_name, tot_cred)
takes(ID, course_id, sec_id, semester, year, grade)select course_id, sec_id, semester,year,avg(tot_cred) //⑤对大表进行分割,返回的结果集
from takes natural join student //①自然连接
where year = 2009 //②该条件先确定了时间段为2009年
group by course_id,semester,year,sec_id //③找出了2009年段的数据后根据 course_id,semester,year,sec_id 分组
having count(ID) >= 2; //④对分组的数据进行选择
对空值和布尔值的聚集
四、聚集函数处理空值规则如下:
- 除了count(*) 外的所有聚集函数都忽略输入集合中的空值;空值被忽略有可能造成参加函数运算的输入值集合为空。
规定空集的count运算值为0 ;其他所有聚集运算在输入为空集的情况下返回一个空值。
SQL:1999 中 引入了布尔数据类型,可以取true, false, unknown 三个值。有两个聚集函数some 和 every。
开窗函数
原文链接:https://www.cnblogs.com/lihaoyang/p/6756956.html
一、开窗函数
与聚合函数一样,开窗函数也是对行集组进行聚合计算,但是它不像普通聚合函数那样每组只返回一个值,开窗函数可以为每组返回多个值,因为开窗函数所执行聚合计算的行集组是窗口。在 ISO SQL 规定了这样的函数为开窗函数,在 Oracle 中则被称为分析函数。
数据表(Oracle):T_Person 表保存了人员信息,FName 字段为人员姓名,FCity 字段为人员所在的城市名,FAge 字段为人员年龄,FSalary 字段为人员工资
CREATE TABLE T_Person (FName VARCHAR2(20),FCity VARCHAR2(20),FAge INT,FSalary INT)
向 T_Person 表中插入一些演示数据:
[](javascript:void(0)
计算机三级——数据库技术相关推荐
- 计算机数据库技术应用了什么,2018年全国计算机三级数据库技术考试考什么内容...
根据<全国计算机等级考试三级数据库技术考试大纲(2018年版)>,全国计算机三级数据库技术考试内容主要包括:数据库应用系统分析及规划.数据库设计及实现.数据库存储技术.数据库编程技术等7项 ...
- 全国计算机三级答案,全国计算机三级数据库技术笔试试题(附正确答案)
全国计算机三级数据库技术笔试试题(附正确答案) (21页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.9 积分 杖蹭昭象刹给埔荤恃财诬枪记逢絮蹈费 ...
- 一个月的时间准备计算机三级数据库技术,够吗?
去年九月考了计算机三级数据库技术,花了不到一个月的时间学了下,有些经验心得,打算把它记录下来,回顾一下学习历程,同时也希望能给其他小伙伴一些小经验吧~ 学习之前一定要有的装备 (1)关注"计 ...
- 计算机三级数据库备考,2017年计算机三级数据库技术备考习题及答案
2017年计算机三级数据库技术备考习题及答案 平时的练习对我们的考试来说十分重要,练习做得多了自然熟能生巧.下面是百分网小编为大家收集整理的2017年计算机三级数据库技术备考习题及答案,希望对大家学习 ...
- 2017计算机三级数据库试题,2017年计算机三级数据库技术考试试题及答案
2017年计算机三级数据库技术考试试题及答案 导语:三级数据库技术是全国计算机等级考试中三级的一类.它要求三级数据库技术合格考生应具备计算机的基础知识,了解和掌握数据结构.操作系统的基本原理和方法.数 ...
- 计算机三级mysql好考吗_经验分享|一个月如何考过计算机三级数据库技术?
哈喽大家好,我是鲈鱼.去年九月考了计算机三级数据库技术,花了不到一个月的时间学了下,有些经验心得,打算把它记录下来,回顾一下学习历程,同时也希望能给其他小伙伴一些小经验吧~ 我的学习经验包括了我自己在 ...
- 计算机三级数据库技术 第14章 数据仓库与数据挖掘
14.1 决策支持系统的发展 14.1.1 决策支持系统及其演化 ➢般将数据分为: 分析型数据 操作型数据:由企业的基本业务系统产生的数据,用于联机处理环境(OLTP). ➢决策支持系统(DSS):综 ...
- 计算机三级数据库技术知识点
要想过计算机三级,首先你得了解分值:选择题40分(前20题1分后10题20分)+填空题30分(每题2分)+ 操作题30分(一题10分)接下来就是我平时积累的一些错题,祝大家三级一次过: 1.在数据库调 ...
- 计算机三级数据库技术自学第二节课
系统设计 任务: "怎么干" 概念模型 : 数据库概念模型设计,系统总体设计 逻辑设计: 数据库逻辑结构设计, 应用程序设计 数据库事物概要设计 物理设计: 数据库物理设计 数据库 ...
- 计算机三级数据库技术——第一章 数据库应用系统开发方法学习笔记
第一章 数据库应用系统开发方法 概述 数据库应用系统 术语 英文缩写 含义 数据库系统 DBS 数据的组织,存储,访问等数据管理功能 数据库应用系统 DBAS 数据管理之外,通过数据库应用程序的数据处 ...
最新文章
- 优秀的缓存工具Memcached
- Shell练习(七)
- python 多进程管道 消息式通信
- QTextEdit 总结
- 拉取数据_Apache Kafka-数据写入过程
- 【译】在 Linux 上不安装 Mono 构建 .NET Framework 类库
- javaScript学习笔记之类型转换
- Eclipse怎么全局搜索替换(整个项目)
- java 数组map_Java之数组array和集合list、set、map
- 845芯片组SMM 控制寄存器
- Gstreamer之gst_buffer_map()用法(十七)
- mysql 联合索引底层结构_MySQL联合索引底层数据结构
- S(Stockwell)变换的Matlab代码
- 微信收藏服务器,微信收藏功能常见问题存储空间上限了
- 安利一个很棒的html背景图片网站
- Hairpin流量, 发卡流量怎么理解
- Git - 学习/实践 - 以及相关操作
- 十万部冷知识:“沙特”为什么能赢“阿根廷”
- oracle索引创建及删除
- 路由器以太网口静态链路聚合