- 内模式对应的数据库的物理结构和存储方式。
- 当模式改变时,由数据库管理员对各个外模式/模式的映像作相应的改变,外模式可不变。
- 应用程序是根据外模式编写的,从而应用程序不必修改。
- 关系模式描述关系的静态结构,是静态的、稳定的,而关系是动态、跟随用户对数据库操作而变化。【区分关系模式&模式】
- 数据库系统设计6阶段:
- 需求分析
- 概念结构设计
- 逻辑结构设计
- 物理结构设计
- 数据库实施阶段
- 数据库运行和维护阶段
- 数据库应用系统逻辑设计阶段工作内容:
- 数据库逻辑结构设计
- 数据库事务概要设计
- 应用程序概要设计
- 数据库物理设计阶段的目标:设计一个存储空间占用少、数据访问率高和维护代价低的数据库物理模式。
- 数据库概念设计的目标:定义和描述应用领域涉及的数据范围;获取应用领域或问题域的信息模型;描述清楚数据之间的关系;定义和描述数据约束;说明数据的安全性要求;支持用户各种数据处理需求;保证信息模型方便转换成数据逻辑结构(数据库模式),同时也便于用户理解。
- 标识属性的值不能重复且不为空
- 人机界面设计可采用原型迭代法,初步设计-----用户界面细节设计------原型设计与改进
- 日志文件记录数据库的操作记录。
- 手动删除tempdb中的日志文件则将会破坏数据库的安全性和可靠性
- 复制数据库的方法:
- 使用复制数据库向导在服务器之间复制或移动数据库
- 还原数据库的备份,若复制整个数据库,可以使用backup和restore transaction --SQL语句。通常还原数据库的完整备份用于因各种原因将数据库从一台计算机复制到另一台计算机
- 用户自定义完整性:
- 可以用check短语指定列值应满足的条件
- 也可用触发器约束。通过服务器自动激活相应的触发器,对数据进行完整性控制。
【注意】default约束不能实现用户自定义的完整性,只能表示实体/参照完整性
- 用户若想在SQL server访问数据库的表,必须同该表建立一个连接才可以。
- Db-datawriter角色可以对表中的数据执行插入、删除、更新操作。【无查询】
- 有系统数据库master、model、msdb、tempdb、用户数据库。
- master、model、msdb 很少被修改,每次修改及时备份
- Tempdb 系统临时文件的数据库,无需备份
- 用户数据库。定期备份
- 文件备份:主要对数据库中数据文件的备份,不对日志文件备份。因此,在备份完后再对日志文件备份。
- 介质故障(硬故障):物理设备损坏导致数据库无法运行。
- 系统故障:造成系统停止运转的任何事件,使系统需要重启。
- 在分布式数据库查询中,连接和并操作导致数据传输通信代价大。
- 分布式数据库的分布透明性:
- 分片透明性【最高层次的透明性】【分片透明性位于全局概念模式与分片模式之间】
- 位置透明性
- 分配透明性
- 局部数据模型透明性
- 在分布式数据中,如果用户编写程序时不必了解数据分片在各个场地的分配情况,则称该分布式数据库系统具有位置透明性。
- 分布式数据库系统的目标是本地自治、非集中式管理、高可用性、位置独立性、数据分片独立性。【区分并行数据库系统】
- 分布式数据库中位置透明性最高级别的透明性,保证用户在编程时只需考虑数据分片情况,不用关心分片在各场地的分配情况。
- 分布式数据库的事务管理包括恢复控制和并发控制。
- 恢复控制一般采用策略是基于两阶段提交协议。
- 分布式数据中数据分布策略可从数据分片和数据分配两个角度,先数据分片,后数据分配。
- 数据水平分片是在关系中从行(元组),每一行必须至少属于一个片段,可通过选择方法重构关系。
- 数据垂直分片是从列(属性)划分,各片段包含主码,可通过连接方法恢复关系。
- 并行数据常用的划分技术:
- 轮转法 n%m 【适合扫描整个表关系,可并行从几个磁盘读取数据,负载平衡,充分发挥并行性】
- 散列划分 【函数,适合点查询、顺序扫描关系】
- 范围划分 【利于范围查询和点查询】某个属性取值范围
- 多维划分 【总表按分店号与时间划分成子表】
- 数据字典:对系统中各类数据描述的集合。
- 数据字典包括:
- 数据项
- 数据结构
- 数据流
- 数据存储
- 处理
- 数据定义语句经DDL(数据定义语言)编译器编译后,对象的描述信息存放在数据库的数据字典中。
- 数据模型三要素:
- 数据结构:表述客观世界中数据对象之间的联系 。静态特征。【选择题】
- 数据操作:检索和更新(增删改)动态特征。
- 完整性约束:是一组完整性规则的集合,规定数据库状态及状态变化所应满足的条件:正确性、有效性、相容性。
- 触发器:保证数据完整性,是与表事件相关的特殊的存储过程,触发器经常用于加强数据的完整约束和业务规则等。
- 事务:以可控的方式对数据资源进行访问的一组操作,事务的隔离性使得事务之间的交互程度有严格的定义,保护了数据的完整性。
- 数字签名:用于数据防止篡改
- 定义主码:用于实体的完整性
- 关系数据要求主码不空,属于数据模型三要素中的完整性约束。
- UML图:
- 用例图:描述角色与角色和用例之间的连接关系。说明是谁要使用系统,可以做什么。【用户需求】
- 类图:描述系统中的类,各类之间的关系的静态视图。【系统具体实现】【系统结构】
- 对象图:是类图的实例,显示类的多个对象实例,非实际类。描述的不是类之间的关系。而是对象之间的关系。
- 活动图:描述用例、系统、程序模块要求所要进行的活动,及活动间的约束关系,先后执行次序、并行次序。
- 状态图:对类图的补充
- 序列图(顺序图):显示你的参与者如何一系列顺序的步骤与系统的对象交互的模型。展示对象间的交互。消息被发送和接收 【行为】
- 协作图(组件图):可以是一个文件、产品、可执行文件/程序和脚本
- 部署图(配置图):用来建模系统的物理部署。如计算机和设备。
- 结构图:
- 类图、对象图、组件图、部署图
- 行为视图:
- 顺序图、交互图、状态图
- 在UML 中,描述状态之间的转换时,用时间图来体现时间因子的作用。
- 【空菱形:聚合。
实心菱形:合成】
- Unique约束允许空值,不允许重复。
- 授予log1 具有创建数据库权限:
- Exec sp_addsrvrolemember ‘log1’, ‘dbcreator’
- sp_addsrvrolemember:登录账户权限之意。作用:为登录账户赋角色权限
| 执行bulk insert 语句 |
| 创建、修改、删除、还原数据库 |
| 管理磁盘文件 |
| 管理在SQL server 实例中运行的进程 |
| 管理服务器登录账户 |
| 配置服务器范围的设置 |
| 添加和删除链接服务器 |
| 在SQL server中进行任何活动,该角色的权限跨越所有其他固定服务器角色 |
- 数据库管理系统一般通过周期性检查事务等待图来实现死锁检测
- 多个用户并发读取一个数据造成不一致性,包括丢失修改、不可重复读、读“脏”数据,原因是破坏了事务的隔离性。
- 并行数据服务器分为两种结构:
- 完全共享资源结构
- 完全不共享资源结构 :高功能计算机系统由多个较小的系统替代,每个站点都要实现全局数据目录,每个站点有独立的内存和磁盘对应该站点的服务器。【无共享结构】
- 并行数据的目标:
- 高性能
- 高可用性
- 通过多个处理节点并行执行数据库任务,提高整个数据库的性能和可用性。
- 数据仓库:数据是面向主题的、集成的、非易失的、随时间变化的。
- 粒度:数据仓库的数据单位中保存数据的细化/综合程度的级别。
- 细化程度越高,粒度级越小,数据量大,能回答的查询多。
- 概念数据模型:
- 不依赖于具体的计算机系统和数据库管理系统
- 便于用户理解,是数据库设计人员与用户交流的工具,主要用于数据库设计。
- 是现实世界到信息世界的第一层抽象,强调语义与表达功能。
- 【注意】与数据库管理系统无关,没有描述数据库的完整性约束
- 数据库应用系统的生命周期:
- 数据库系统设计阶段
- 需求分析
- 系统设计
- 概念结构设计:系统总体框架设计,自下而上的er图设计
- 逻辑结构设计:工作内容(数据库逻辑结构设计、数据库事务概要设计、应用程序概要设计)在ER图确定数据库关系模式,定义数据的约束条件。
- 物理结构设计:
- 要考虑radio级别,radio10比radio5在写数据上更稳定,速度快,尽量避免存储在radio5的磁盘存储系统中。
- 要考虑操作系统的文件管理机制,进行文件组织和存储设计、数据库管理系统支持的索引类型。
- 若存在多表连接操作,可考虑这些基本组织为聚集文件。
- 根据功能将系统设计分为四个层次:
- 表示层:显示数据和接收用户输入的数据(Windows应用程序/web应用程序)
- 业务逻辑层
- 数据的传递和处理
- 主要任务:构件的设计。
- 概要设计的主要任务:梳理DBAS的各项业务活动,将其表现为各种系统架构。
- 概要设计的原则主要体现在:一个构件/模块只负责完成一项任务,单一责任原则。
- 业务逻辑层概要设计包括:
- 结构、行为、数据结构、故障处理、安全设计、系统维护与保障等方面的内容。
- 数据访问层
- 对数据保护和读取操作。
- Create procedure命令定义的存储过程属于数据访问层。
- 数据持久层(物理层和数据访问层)
- 数据组织与存储,如索引设计,数据完整性保护
- 主要任务:进行应用系统的存储结构设计。
- 系统实现与部署
- 进行应用系统的编码和编码测试,编码测试可以使用白盒测试/黑盒
- 执行DDL代码建立数据库结构
- 信息录入和导入程序。
- 运行与维护(数据库管理员)
- 监控
- 数据库空间
- 数据缓冲区命中率、数据库锁情况
- 数据库用户会话情况
- 数据库CPU使用情况
- 索引使用情况
- 运行和维护
- 定期完整备份
- 定期转储数据
- 使用信息录入/导入程序,将新商品加到清单
- 调整数据库商品清单和价格
- 数据库完整性、安全性控制
- 数据库性能检测与改善
- 数据库的重组和重构
- 监控
- 数据库系统设计阶段
- 聚集文件:一种 具有多种记录类型的文件,存储了来自多个关系表的数据,每个关系表对应文件中的一种记录类型。【常与join使用】
- 聚集文件将不同关系表中有关联的记录存储在同一磁盘块内,从而减少数据库多表查询操作时的磁盘访问次数,提高I/O速度和查找处理速度。
- 数据库管理员的职责:
- 数据库的转储和恢复
- 数据库安全性、完整性控制
- 数据库性能的检测和改善
- 数据库的重组和重构
- 存储管理器:
- 负责检查用户是否具有数据访问权限
- 将部分内存用于数据缓冲,同时用算法对内存缓冲区的数据块置换。
- 以事务的方式管理用户对数据的访问,确保数据库并发访问的正确性。
- B/S结构数据库应用系统特点
- 浏览器与web应用服务器间的通信使用超文本传输协议(HTTP)
- ER模型(实体联系模型)
- 建模时,无需考虑数据库在计算机中的存储和处理特性。
- 函数依赖研究一个关系中属性之间的依赖关系。
- 数据类型与大小存储
- Tinyint 1B 0-255
- Smallint 2B 2^15
- Int 4B 2^31-1
- Bigint 8B 2^63-1
- PL/SQL 主要两种类型
- 命名块。(存储过程和函数),被编译后保存到数据库,可反复调用,运行速度快。
- 匿名块。每次执行都要编译,不能被存储到数据库中,也不能在其他的PL/SQL 调用。
- Create procedure 过程名(参数列表) as 《PL/SQL块》
- 参数列表可为输入参数、输出参数、均可多个。
- Check约束若只涉及对某一列的约束可放在该列后面,若涉及两个列以上,则为对整个数据表的约束,放在表的最后面。
- 数据库管理系统可采用先来先服务的方式防止出现活锁。
- 当数据库管理系统检测到死锁后,可采用撤销死锁事务的方式解除死锁。
- 【索引的设置】主索引是根据对象的主键建立索引,它们决定了被索引记录的位置,而辅索引没有这样的限制,可用于任何索引项目的并且可查找多个数据文件存放的位置。
- 位图索引一般在范围查询时使用。
- 数据库系统要求日志的写入顺序必须与并行事务执行时间次序一致,这样才能在数据库恢复时进行redo/undo,从而保持数据一致性,不产生脏数据
- 为保证数据库可恢复,先写日志文件后写数据库
- 日志文件中检查点记录的主要作用是提高系统出现故障后的恢复效率
- 系统故障恢复与事务故障恢复 都要日志文件
- 数据恢复次序:
- 完全备份
- 差异备份
- 日志备份
- 日志备份:
- 日志备份仅备份日志,不备份数据
- 日志备份的执行效率通常比差异备份和完整备份高
- 日志备份的时间间隔通常比差异备份短
- 备份日志时使用norecovery来备份尾日志,这样备份日志时数据库处于恢复状态,别的进程不能再访问数据库,日志就不会增加。
- 还原备份时,若想同时还原之后的日志,必须加上norecovery才可还原,若有多个日志备份,除了最后一个日志备份外,其他日志也要加上。
- Master数据库只能完全备份。
- 并行数据库:
- 层次结构可分为两层,顶层是无共享结构,底层是共享内存/共享磁盘结构。
- 无共享结构通过最小化共享资源降低资源竞争,有很高的可扩展性,适用于OLTP应用。
- 经常通过负载均衡的方法来提高数据库系统的业务吞吐率。
- 分布式数据库分配方式:
- 集中式
- 所有数据片段都在同一个场上
- 分割式
- 所有数据只有一份,被分割成若干逻辑片段,每个逻辑片段被指派到一个特定的场地
- 全复制式 【冗余大】
- 每个场都有一个完整的数据副本
- 混合式
- 全局数据被分割成几个数据子集,子集在不同场地
- 介于分割式和全复制式
- 集中式
- OLTP(联机事务处理)
- 是对数据库联机的日常操作,对一条记录的查询和修改,要求快速相应客户请求,对数据的安全性、完整性及事务吞吐量要求高。
- 【微观操作】中下层
- OLAP(联机分析处理)
- 【查询、分析】对海量历史数据的查询和分析,要访问的数据量非常大,查询和分析操作非常复杂。
- 【宏观分析】中上层、决策者使用
- 常用的OLAP多维分析操作有:
- 切片
- 切块
- 旋转
- 钻取:引入其他数据
- 卷起:
- OLAP实现的三种方式:
- MOLAP
- ROLAP
- HOLAP
- 监督学习:有标签、样本集、测试集【分类】
- 无监督学习:无标签 【类聚】
- 类聚算法,类聚工具
- 分类算法,分类器
- 关联规则算法,规则集
- 多维分析算法,OLAP工具
- Identity
- identity表示该字段的值会自动更新,不需要我们维护,通常情况下我们不可以直接给identity修饰的字符赋值,否则编译时会报错
列名 数据类型 约束 identity(m,n)
m表示的是初始值,n表示的是每次自动增加的值
如果m和n的值都没有指定,默认为(1,1)
要么同时指定m和n的值,要么m和n都不指定,不能只写其中一个值,不然会出错
- 数据转储(数据备份)
- 完全转储
- 差量转储 :对上次完全转储后对所有文件修改/删除的记录的转储
- 增量转储 :复制上次转储后变化的整个文件
- 静态转储保证数据有效性,降低可用性。
- 静态转储恢复过程不需要日志文件
- 动态转储提高了数据库可用性,但是数据有效性得不到保证。为保一致性,要日志文件和动态转储结合。
- With ties:
- with ties一般是和Top , order by相结合使用的,会查询出最后一条数据额外的返回值(如果按照order by 参数排序TOP n返回了前面n个记录,但是n+1…n+k条记录和排序后的第n条记录的参数值(order by 后面的参数)相同,则n+1、…、n+k也返回。n+1、…、n+k就是额外的返回值)。
- DDL:数据定义语言:create、drop、alter。数据库内部
- DML:数据操纵语言:insert、update、delete。表内部
- DQL:数据查询语言:select、from、where
- DCL:数据操控语言:grant、revoke 设置/更改数据库用户使用权限
- 物理设计这样与数据库底层物理存储与存取,与操作系统和硬件环境及数据库管理系统密切相关。
- 常用的数据放在高速读写的磁盘上。
- 物理设计过程需要考虑设置合理的数据库管理系统参数和操作系统相关参数。
- 物理设计阶段要考虑raid级别、操作系统的文件管理机制、数据库管理系统支持的索引类型。
- RAID(独立冗余磁盘阵列)
- Raid 0 :
- 至少需要2块磁盘
- 数据条带式分布
- 没有冗余,性能最佳(不存储镜像、校验信息)
- 不能应用于对数据安全性要求高的场合
- 首先考虑磁盘的速度和容量,忽略了安全。只要其中一个磁盘出问题,整个阵列的数据都会不保。
- Raid 1:
- 至少需要2块磁盘
- 提供数据库冗余
- 性能好
- 又称镜像方式,即数据的冗余。在整个镜像过程中,只有一般的磁盘容量是有效的(另一半磁盘容量来存放同样的数据)。与raid0 相比,容量减少,速度不变。
- Raid 5 :
- 至少3块磁盘
- 数据条带式分布
- 以奇偶校验作冗余
- 适合多读少写的情景,是性能与数据冗余最佳的折中方案
- RAID5把数据和相对应的奇偶校验信息存储到组成RAID5的各个磁盘上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上,其中任意N-1块磁盘上都存储完整的数据,也就是说有相当于一块磁盘容量的空间用于存储奇偶校验信息。因此当RAID5的一个磁盘发生损坏后,不会影响数据的完整性,从而保证了数据安全。当损坏的磁盘被替换后,RAID还会自动利用剩下奇偶校验信息去重建此磁盘上的数据,来保持RAID5的高可靠性。
- Raid 10:(raid 1+0)
- 至少需要4块磁盘
- 先按raid 0 分成两组,再分别对两组按 raid 1 方式镜像
- 兼顾冗余(提供镜像存储)和性能(数据条带式分布)
- 在实际应用中较为常用
- Raid 0 :
【10比5在写数据上更稳定,速度更快】
- SSH:Struts(表示层)+spring(业务层)+hibernate(持久层)
- 表示层(UI):用户界面操作
- 业务逻辑层(BLL):根据传入的值返回用户想得到的值,或者处理相关的逻辑。
- 数据访问层(DAL):根据传入的值来操作数据库,增、删、改、查。
- B/S:Internet。维护工作量
- 三层架构 browser:web浏览器、webAPP服务器端、DB数据库服务端
- C/S:运行速度、数据安全、人机交互 【胖客户端架构】
- 二层架构
- Client/server客户端/服务器端
- 服务器端:数据库服务器端/socket服务器端
- 关系数据语言分为:
- 关系代数语言
- 关系演算语言
- 兼具两种特点的语言:SQL
- 非过程化:做什么,而不是怎么做
【都是非过程化的集合操作语言】
- SQL语句不会检查数据的完整性约束
- Case
- When grade between 90 and 100 then ‘good’
- When.....
- Else ‘bad’
- End
- SQL server 2008 架构:
- 在一个数据库中,一个用户可以拥有一个架构,一个架构属于对个用户。【用户:架构=1:M】
- 架构相当于数据库对象的容器,在同一个数据库架构中不能重名
- 架构是数据库中的逻辑命名空间,同一个数据库的不同架构中可以存在同名表
- 在同一个架构中可以定义表、视图等不同数据对象
- SQL server agent 是一个任务规划器和警报器,包括几个主件:
- 作业
- 警报
- 操作
- 用户数据库包含许多系统信息,这些信息必须在主要数据文件中
- 主要数据文件必须存在primary 文件组中
- SQL SERVER 实例==后台进程+数据文件集合
- SQL SERVER 4 个系统数据库
- Master:最重要。记录所有系统信息,登录/系统设置信息。若不可以用,则SQL server不可用。
- Model:实例创建的模板。
- Msdb:代理服务数据库。为报警、任务调度和记录操作员的操作提供存储空间
- Tempdb:临时数据库。
- 仅具有登录权限的用户对SQL server只能进行系统信息有关查询:master、msdb
- 数据导出:【查看权限】
- 数据导入:【写入权】
- 并发事务执行时,几种情况:
- 丢失修改:AB读入同一数据,B提交破坏了A,A的修改被丢失
- 读脏数据:A对数据修改,B读取数据,A异常回滚,B读的数据为“脏数据”
- 不可重复读:A读数据后,B执行更新操作,A无法再提前一次读取。
- 三段加锁协议:
- 共享锁(S锁):只读操作,select
- 排他锁(X锁):修改操作,insert、update、delete
- 一级封锁协议解决丢失修改
- 二级封锁协议解决读脏数据
- 三级封锁协议不可重复读
- 检测死锁方法:
- 超时法
- 等待图法。事务等待图法反应所有事务的等待情况,并发控制的子系统周期性地生成事务等待图检测,但不是每个事务都检测
- 死锁解除方法:
- 资源掠夺法。
- 撤销进程法
- 进程回退法
- 差异备份:上一次完整备份到当前变化的数据+日志
- 支持度S(X--->Y) = (X U Y)/N
- 置信度C(X--->Y) = (XUY)/X
- 元数据:描述了数据的结构、内容、链、索引。【DBMS的数据字典、数据表结构说明文档】
- 元数据分类:
- 技术元数据【技术领域相关概念、关系和规则的数据】
- 业务元数据【业务术语、信息分类、指标定义和业务规则信息】
- 管理元数据【人员角色、岗位职责、管理流程】
- 聚集索引:数据文件记录排列顺序与索引文件中索引项的排序顺序一致。
- 聚集索引的键值可以重复!!!
- @@fetch_status:用于判断游标数据提取状态的全局变量。
- 游标声明语句:
- Declare vendor_cursor cursor for
- Select....
- 游标:
- 每个游标都有一个当前行指针,当游标打开后,当前行指针自动指向结果集的第一行。
- 如果声明游标未指定insensitive选项,则已提交的对基表的更新都会反映在后面的提取操作中
- 当@@fetch-status=0时,表明fetch成功
- 当@@fetch-status=-1时,失败/行不在结果集中
- 当@@fetch-status=-2时,提取的行不存在,关闭游标之后,可通过open语句再打开该游标
- 关系数据库中的视图提供了逻辑数据独立性。
- 在UML中,用例模型由用例、角色、系统组成。
- A购买过但B没购买过,except。
- 计算两个日期之差的函数:datadiff()
- Select datadiff(datapart,‘startdata’、‘enddata’)as diffdata
- 集合操作:并union、交intersect、差except。
- 1B(字节) = 8b(比特)1KB=1024B
- 1GB=1024KB 1MB=1024KB
- B-->KB-->MB-->GB
- 数据库角色是被命名的一组与数据库操作相关的权限,角色是权限的集合。以下9个内置角色。
| 执行任何操作的权限(配置、维护数据库、删除数据库) |
| 角色的成员可从数据库中增加/删除用户权限 |
| 备份数据库、备份日志的权限 |
| 有查询数据库中所有用户数据的权限 |
| 具有插入、删除、更新数据库中所有用户权限 |
| 执行数据定义语言权限 |
| 不允许查询数据库所有用户数据权限 |
| 不有插入、删除和修改数据库中所有用户数据权限 |
| 具有管理数据库角色、角色成员以及数据库中语句和对象的权限 |
| 默认角色 |
- 数据库系统中的故障类型分类:
- 事务内部故障
- 预期事务内部故障【运算溢出、并发事务锁死而被撤销回滚、某些完整性限制】
- 非预期事务内部故障
- 系统故障【重新启动】
- 介质故障【硬件损坏】
- 计算机病毒
- 事务内部故障
- 两段加锁协议可以保证事务调度的可串行性。
- 在分布式数据库中,采用 半 连接操作可减少场地之间的数据传输能量。
- 在进行多维分析时,如果将年销售额投入到每个月来观察,这种分析动作成为 钻取。
- 常用的建模方法:
- DFD
- IDEF0
- UML
- DFD建模方法也被称作过程建模和功能建模方法,其核心是:数据流。
- 数据库三级模式结构:
- 内模式【存储模式/物理模式】
- 模式【逻辑模式】,是数据库的中间层,不涉及数据的物理存储细节和硬件环境,与具体应用和所使用的的开发工具及高级程序设计语言无关。
- 外模式【子模式/用户模式】
- 数据流图DFD(data flow diagram):便于用户理解系统数据流程的图形表示。
- DFD特征:
- 抽象性。在DFD中具体的组织结构、工作场所、物资流等已经去掉,只剩下信息和数据存储、流动、使用以及加工的情况。
- 概括性。把系统对各种业务的处理过程联系起来考虑,形成一个总体,可反映出数据流之间的概括关系。
- DFD图自顶向下逐步细化的结构化分析方法。
- 逻辑设计所包含的活动:
- 将ER图转换为关系模式
- 定义数据的约束条件
- 数据库物理设计阶段活动包括:
- 数据库逻辑模式
- 选择或配置基本关系表的文件组织形式,为基本关系表设计数据存取方法/路径
- 数据分布设计
- 安全模式设计
- 确定系统配置
- 物理模式评估
- 创建必要的索引
- 数据库物理设计的目的:将数据的逻辑模式转换为现实技术规范,其目标是设计数据存储方案、以便提供足够好的性能并确保数据库的完整性、安全性、可恢复性。
- 查询处理器和存储管理器是数据库管理系统中的核心模块。
- 查询处理器中的DML编译器会对用户提交的DML语句进行优化,并将其转化成能执行底层数据库操作指令。
- 存储管理器中的缓冲区管理器负责将从磁盘读取出的数据块放入内存缓冲器,同时也负责对缓冲区中的数据块进行维护。
- 查询处理器中的DDL编译器/解析用户提交的DDL语句,并将生成的元数据存在数据库的数据字典中。
- 创建索引视图的步骤:
- 使用schemabinding子句来创建一个视图。这个视图必须符合许多要求:
- 只能引用同一个数据库中的基表,不能是其他标准视图
- 所有引用的函数必须正确性的,行集函数、派生表和子查询都不能在索引视图中使用
- 在视图上创建一个唯一索引。这个索引的叶子级由视图的完整结果集组成。
- 聚集索引的基础上根据需求创建非聚集索引。非聚集索引可以按平常的方式创建
- 创建并使用索引视图
- 使用schemabinding子句来创建一个视图。这个视图必须符合许多要求:
- Filegrowth如果加上%是百分比。默认增加单位是MB
- 索引视图可增加查询类型的性能:
- 处理大量行的联接和聚合
- 许多查询经常执行联接和聚合操作
- 决策支持工作负荷
- 索引视图不会提高性能的查询:
- 有大量写操作的OLTP系统
- 大量更新的数据库
- 不涉及聚合/联接的查询
- Group by键具有高基度数的数据聚合【多列查询】
- 在基本表的列建立索引:
- 查询语句where子句中引用率比较高的列
- 经常参与连接操作的列
- 经常在order by/group by 子句中出现的列
- Guest用户:
- 没有对应的登录账号
- 通过授权语句可启用数据库中的guest用户
- 任何SQL 登录账户都可以访问guest用户的数据库
- 数据库恢复数据顺序:
- 恢复最近完全数据库备份
- 恢复完全数据库备份后的差异备份
- 恢复最近完全/差异数据备份之后的所有日志备份
- XML数据库需要对XML文档进行解析,因为XML文档本身标记只是文档本身的描述,需要加工解析才能达到具体用途。
- XML数据库主要包括:
- XEDB
- NXD
- HXD
- 数据库管理系统为用户和应用程序提供了DDL语言,定义数据库的模式结构,但执行后的结果不能回滚。
- 当用户在一个关系表的某列建立一个非聚集索引(该表无聚集索引),数据库管理系统会自动为该索引维护一个索引结构,该索引结构中的记录是由索引列列值和它对应的指针构成的。
- 三种用户自定义函数:
- 标量函数 【可出现在select目标列中】
- 内嵌表函数 【必须在from 之句中,下同】
- 多语句表值函数
- 设置不允许U对T表的删除权限:deny delete on T to U.
- 收回User对T 表的数据更改权限,下述是实现该功能的语句。Revoke update on T from User
- 在OLAP的实现方式中,以多维数组作为存储结构称为:MOLAP
- 子查询不能使用order by
- 水平分割后,查询数据要用union
- 垂直分割后,用join
- Recordset对象用于操作来自提供者的数据
- Addnew:创建一条新纪录
- Cancel:撤销一次执行
- Close:关闭一个recordset
- Delete:删除一条记录/一组记录
- Movenext:把记录指针移动到下条记录
- 只有创建某个临时表的连接中才能查询当前临时表的数据,并U创建的该表连接未断开才能访问。
操作型数据 | DSS分析型数据 |
表示业务处理的动态情况 | 表示业务处理的静态情况 |
在存取的瞬间是正确的 | 代表过去的数据 |
可更新,可由录入人员更新 | 不可更新,终端用户的访问权限是只读 |
处理细节问题 | 关注结论性数据、综合的/提炼的 |
需求事先可知,系统可按预计工作量来优化 | 事先不知,永远不知下一步用户要做什么 |
有许多事务,每个事务影响数据的一小部分 | 有数目不多的一些查询,每个查询可访问大量数据 |
面向应用,支持日常操作 | 面向分析,支持管理需求 |
用户不必理解数据库,只是输入数据库 | 用户需要理解数据库,便从数据中得出有意义结论 |
- 查询优化需要考虑:
- 通信代价 【更重要】
- I/O代价
- CPU代价
- 调度:
- 串行调度:(特点:一个事务所有操作执行完成后才开始另一个事务)
- 并发调度
- 事务:构成数据库应用中一个独立逻辑单元的操作集合,也是访问并可能更新数据库中各种数据项的一个程序执行单元。
- 管理和执行事务是DBMS的基本功能。
- 事务的四大特征:
- 原子性(要么都做,要么都不做)
- 一致性(事务成功就全部提交,必须所有数据一致,其中一个失败,所有的全部撤销)
- 隔离性(并行结果正确性)
- 持久性(事务提交后数据库的改变永久的)
- 数据库系统的监控分类:
- 手动监控机制
- 自动监控机制
- 数据仓库的数据来源于多个数据源,格式也不同,需要对数据进行转换。(粒度,不一致的数据)
- 堆文件(无序文件):记录随机存储在文件物理空间中,新插入的记录存储在文件的末尾。
- DBAS需求分析阶段的一项重要工作是分析DBAS应具有的性能指标,主要包括:
- 数据操作响应时间/数据访问响应时间
- 系统吞吐量,即指系统在单位时间内可完成的数据事务或查询的数量
- 允许并发访问最大用户数
- 每TPS(price per TPS)代价值
- 硬件容错最完全的方法是设计两套相同的数据库系统同时工作,数据的变化也同步,空间也有一定的距离,因此同时破坏两套的概率几乎为零。
- Check约束只能实现同一表的列之间的取值约束。
- 系统总体设计的主要内容包括:
- 确定DBAS体系结构
- 软硬件选型和配置设计
- 应用软件总体设计
- 业务规则初步设计
- 在分布式数据库中,使用分配模式来描述各分片段到物理存放场地的映像
- SQL server 中有5种约束类型,分别是主键约束、外键约束、唯一性约束、缺省约束、检查约束。
- Select 商品号 from 购买表 where 顾客号=‘1’
- Except
- Select 商品号 from 购买表 where 。。。
- Select 城市 from 作者
- Where 作者.城市 not in
- (select 城市 from 出版商表)
- UNION可以把两个/多个select语句的查询结果组合成一个结果集,使用时要求所有select语句的列数应相同,对应列的数据类型相容。
- 如果事务长时间交互,坏处:
- 不会破坏数据的一致性。
- 降低系统的并发度
- 增加死锁的数量
- 影响检查点的效果
- 集合操作符:
- In
- Except
- Intersect(两个集合都存在的数据)
- Union
- UML类图一对多用1:* 表示,ER图用 1:M 表示
- 类聚算法:将一个数据集中的数据进行分组,使得每一组内的数据尽可能相似,而不同组间的数据尽可能不同。
- 【区别 分类算法】类聚强调同一个组的对象有较高的相似度,不同组的对象间差别大。
- 分类事先知道有哪些类可以分。
- 类聚事先不知道将要分成哪些类,需要类聚算法来自动确定。
- 范围划分明显有利于范围查询和点查询,S包含数据较少,适合对S 采用复制的方法。
- 包含into子句的select语句格式:select 查询列表序列 into《新表名》from 数据源
- 数据库系统实施活动包括:
- 创建数据库
- 装载数据
- 应用程序的编码和测试
- 数据库的运行
- 数据库性能优化和数据库的外部环境有很大的关系,例如在网络带宽过窄的情况下导致数据库速度访问缓慢时,则单独对数据库本身优化无法取得很好的效果;物化视图是预先计算并保存表连接或聚集等耗时较多的操作结果,这样在执行查询时大大提高读取速度。
- 物化视图&&索引很相似:
- 使用物化视图目的是:为了提高查询性能
- 物化视图对应用透明,增加和删除物化视图不会影响应用程序中SQL语句的正确性和有效性
- 物化视图需要占用存储空间,当基表发生变化,物化视图可以手动刷新也可定时自动刷新
- 存储过程相当于加载到数据库上的模块,所以再次运行时不用重新编译,但与数据库管理系统绑定,因此如果在更改数据库管理系统时,需要重新绑定存储过程。
- ODS体系:
- ODSI,第一类,数据更新频率是S秒级,即操作型系统中的数据发生变化后几乎立即传送到ODS中,这类建设难度大
- 第二类,H小时类,4H更新一次
- 第三类是天级,一般是隔夜后。
- 第四类,根据数据来源方向和类型划分,不近包含来自操作型环境的数据,也包含由数据仓库和数据集市层的应用反馈给ODS的一些决策结果或一些报表信息
- 数据库镜像:
- 增强数据保护功能。数据库镜像提供完整/接近完整的数据冗余,具体取决于运行模式是高安全性模式还是高性能模式
- 提高数据库的可用性。发生灾难时,在具有自动故障转移功能的高安全性模式下,自动故障转移可快速使数据库的备用副本在线(而不会丢失数据)。在其他运行模式下,数据库管理员可以选择强制服务(可能丢失数据),以代替数据库的备用副本
- 提高生产数据库在升级期间的可用性。因为数据库镜像技术需要额外存放数据的空间,所以会增加应用成本。
- 内联表值函数:
- 没有相关联的返回变量。返回值是一个表,该表的内容是一个查询语句的结果。
- 使用与视图非常相似,调用时,在from语句中。
- 通过select语句填充函数返回的表值
- 公共云:当云以即用即付的方式提供给公众
- 私有云:不对公众开放的企业/组织内部数据中心的资源
- UML的语义是定义在一个四层建模概念框架中,这四层是:元元模型层、元模型层、模型层、用户模型层。
- 在UML中聚集是一种特殊形式的关联,它表示类之间的关系是整体与部分的关系。
- 数据吞吐量指的是系统在单位时间内可完成的数据库事务量。
- 对于更新操作的触发器,系统将产生两张逻辑工作表:deleted表、inserted表
- Goole的云数据库是一个分布式的结构化数据库存储系统,称作bigtable
- 知识发现主要由三个步骤组成,它们是数据准备、数据挖掘、结果的解析评估。
- 主要数据文件必须建立在主文件组中。
- 不同的数据库管理系统采用的日志文件格式不完全一样,概括起来主要有以记录为单位的日志文件和以数据块为单位的日志文件两种。
- 全部的不重复的城市:Union
- 删除用户自定义的函数使用 drop function 语句来实现
- 数据库完整性包括实体完整性、参照完整性、用户自定义完整性
- 实体完整性:在create table 中用primary key 定义。
- 参照完整性:create table 用foreign key 短语定义哪些列为外码,用reference短语指明这些外码参照哪些表的主码。
- 用户自定义完整性:在create table 中定义属性的同时也可以根据应用要求,定义属性上的约束条件,即属性值限制,包括:列值非空(not null)、列值唯一(unique)和检查列值是否满足一个布尔表达式(check短语)
- ER图向关系模式转换涉及到两方面:实体的转换和实体间联系的转换。
- 实体的转换:从ER图向关系模式时,一个实体就转换成一个关系模式,实体的属性就是关系模式的属性,实体的键就是关系的主键
- 实体间联系的转换:实体间存在三种联系,即1:1,1:多,M:N。
- 需求分析:
- 数据需求分析
- 数据处理需求分析:从对数据组织与存储的设计角度,辨识应用领域所管理的各类数据项和数据结构,与数据处理需求分析结果在一起,组成数据字典,形成“数据规范说明书”
- 功能需求分析(数据处理分析与业务规则需求分析)
- 性能需求分析
- 其他需求分析:存储需求、安全性需求等
- 存储需求分析:存储需求分析是指估计DBAS系统需要的数据存储量,如DB所存储的数据总量
- 安全需求分析:主要用于数据库安全设计,避免被非法使用和攻击。
- 在需求分析阶段规定好不同用户所允许访问的视图,这属于数据库应用系统的:功能需求分析。
- 安全性相关的措施:
- 用户身份鉴别
- 权限控制
- 视图机制
- 双机热备:属于数据库恢复技术内容,当介质被破坏后能保证数据的完整性
- 散列文件:是指利用散列存储方式组织的文件,也称直接存取文件。
- 优点:文件随机存放,记录不需进行排序;插入、删除方便;存取速度快;不需要索引区,节省存储空间。
- 缺点:不能进行顺序存取,只能按关键字随机存取,且询问方式只限于简单询问
- 堆文件:数据库中的一个基本表的数据量很少,并且插入、删除、更新等操作 非常频繁,那么该基本表可以采用堆文件组织形式。因为堆文件无需建立索引,维护代价非常低。虽然堆文件的数据访问效率低,但数据量很少时,定位文件记录的时间短。
- 顺序文件:指的是文件信息存放在若干连续的物理块中。
- 优点:简单、支持顺序存取和随机存放,顺序存取速度相对较快。
- 缺点:文件不能动态增长、不利于文件插入和删除。如果用户的查询条件定义在查找码上,则顺序文件是适合的文件结构。
- 聚集文件:将不同关系表中有关联关系的记录存储在一起。如果某些重要而频繁的用户查询经常需要进行多表连接操作,可以考虑聚集文件,来改善查询效率。
- 有效减少死锁发生数量:
- 按相同顺序访问资源。将复杂、大的事务分解成多个简单、小的事务
- 减少事务中的用户交互
- 使用绑定连接
- 按同一顺序访问对象
- 事务隔离性级别
- 灵活使用显示加锁技术