数据库期末复习二DB DBA DBS DBMS1. DBADatabase Administrator数据库管理员定义DBA是**“人”**或角色是负责数据库的规划、设计、维护和管理的专业人员或团队。DBA具体做什么他们是数据库的“大管家”主要职责包括日常维护监控数据库运行状态处理死锁和慢查询。性能调优决定在哪些字段上建索引决定了内模式调整SQL执行效率。权限管理给不同用户分配不同的查看权限决定了谁能看哪些外模式。备份与恢复制定备份策略在数据丢失时进行灾难恢复。结构变更当业务变化时执行修改表结构DDL语句的操作。注意在我们的上一题中实现物理数据独立性如换硬盘、建索引主要就是由DBA在内模式层操作的。2. DBSDatabase System数据库系统定义DBS是**“整体系统”**是指计算机系统中引入数据库后的整个系统。DBS包含什么它是一个大集合其组成部分可以用公式清晰记忆DBS 计算机硬件 操作系统 DBMS数据库管理系统 数据库DB DBA数据库管理员 应用程序 用户硬件运行数据库的服务器、磁盘阵列等。软件包括操作系统、DBMS如MySQL、以及各种连接驱动。数据存储在磁盘上的实际业务数据DB。人员包括DBA、系统开发人员以及最终操作用户。3. 对比DBS vs DBMS vs DB vs DBA术语中文全称本质生活类比餐厅DB数据库数据本身存放数据的仓库后厨冷冻柜里储存的食材肉、菜、调料。DBMS数据库管理系统管理数据的软件MySQL、Oracle厨师用来处理食材的操作台和工具案板、灶台。DBA数据库管理员管数据库的人专业人士负责采购、冷藏、清理库存的后厨总管。DBS数据库系统整个大环境硬件软件数据人整个餐厅包括后厨设备、食材、厨师、收银系统、顾客。4. 与前面知识点的联动三级模式在三级模式结构中角色分工非常明确DBA管理员负责定义和修改内模式决定数据怎么物理存储和概念模式定义表结构。普通用户/应用程序只接触外模式只能看视图不能动底层。DBMS软件负责维护两级映射贯穿全局。DBS数据库系统包含了上述所有内容是容纳三级模式、DBMS和DBA的大环境。DBS数据库系统最大包含 DBMS软件和 DB数据而 DBA管理员是 DBS 中负责管理这一切的人。即DBS DB DBMS DBA 其他硬件/应用/用户数据独立性物理数据独立性改变内模式存储方式不影响概念模式表结构和外模式用户视图。逻辑数据独立性改变概念模式表结构不影响外模式用户视图和应用程序。1. 物理数据独立性Physical Data Independence定义当数据库的物理存储结构如索引类型、数据压缩方式、存储分区、磁盘更换发生改变时概念模式和外模式保持不变应用程序无需修改。靠什么实现靠“概念模式/内模式映射”。DBMS在中间做翻译物理存哪里、怎么存只有DBMS知道表结构对此一无所知。图书馆类比图书馆仓库从人工按编号排序改成自动化立体仓库图书的物理位置完全变了。但馆长手里的“总馆藏登记册”概念模式和读者面前的“检索目录”外模式完全不用重印因为工作人员DBMS知道新位置在哪。实际例子程序员视角DBA数据库管理员今天给订单表加了一个B树索引明天又把数据压缩格式改了后天把历史数据迁移到了新的磁盘阵列。作为Java或Python程序员你写的SQL查询语句SELECT * FROM orders WHERE id 100一行都不需要改照样正常运行。2. 逻辑数据独立性Logical Data Independence——更高级更难实现定义当数据库的全局逻辑结构即概念模式如增加字段、合并表、修改字段类型发生改变时外模式和应用程序保持不变。靠什么实现靠“外模式/概念模式映射”。DBMS通过修改视图的定义把新的表结构“伪装”成旧的样子给用户看。图书馆类比馆长决定把“作者”这一个字段拆分成“姓氏”和“名字”两个字段概念模式变了。但图书馆的微信小程序检索界面外模式依然只显示一个“作者姓名”框给读者输入。为什么因为程序员修改了小程序后台的视图定义映射拼接了这两个字段读者完全感觉不到底层结构变了。实际例子程序员视角产品经理要求把用户表Users拆分成User_Basic和User_Detail两张表概念模式剧变。如果没有逻辑独立性所有查询这两张表的几百个接口都要重写。有了逻辑独立性DBA只需要创建一个视图View_Users把两张表Join起来并保持视图字段名和原来一模一样原有的应用程序SQL就不需要修改。3. 两者的核心区别与难度对比对比维度物理数据独立性逻辑数据独立性改变了什么内模式存储/索引/压缩/分区概念模式表结构、字段、关系什么保持不变概念模式 外模式外模式用户视图对应的映射概念模式 / 内模式 映射外模式 / 概念模式 映射实现难度相对容易存储层对上层透明较难表结构变化常牵涉上层语义主要受益者DBA数据库管理员方便优化性能程序员和用户减少代码改动量典型操作建索引、分区表、更换硬盘存储增加/删除字段、拆分或合并表4. 为什么逻辑数据独立性更“珍贵”在考试和实际应用中逻辑数据独立性被认为是关系数据库最伟大的贡献之一。物理独立改变存储方式本质上没改变数据的“含义”DBMS很容易帮你兜底。逻辑独立改变表结构本质上改变了数据的“含义”例如把生日改成年龄这对应用程序的语义冲击很大。DBMS只能通过视图映射来“强行兼容”但复杂的逻辑变更如删除一个核心字段往往还是会导致部分应用报错因此完全的逻辑独立性在实际中很难100%实现教材中也指出它比物理独立性更难实现。数据模型数据模型是数据库系统的核心和灵魂。如果说数据库是存放数据的“仓库”那么数据模型就是设计这个仓库的**“施工图纸”和“摆放规则”**。1. 数据模型的“三要素”必考概念任何一个数据模型都由这三部分组成缺一不可数据结构Static描述数据对象以及对象之间的静态特征。比如你的数据是“二维表格”还是“树状结构”它决定了系统能存什么类型的数据。数据操作Dynamic描述对数据可以执行哪些增、删、改、查操作。比如关系模型中标准的SELECT查、UPDATE改等。完整性约束Rules描述数据必须遵守的规则。比如学生学号必须唯一实体完整性选课表中的学生ID必须存在于学生表中参照完整性。2. 数据模型的三个层级与三级模式完美对应层级对应数据库模式面向对象典型代表作用概念数据模型概念模式全局逻辑面向用户需求分析阶段E-R模型实体-联系图把现实世界抽象成实体学生、属性姓名、联系选课不涉及任何计算机实现细节。逻辑数据模型概念模式/外模式面向DBA和程序员关系模型表格、层次模型、网状模型、面向对象模型在计算机系统中具体实现的数据结构是DBMS真正处理的对象。我们平常说的“数据库模型”通常指这一层。物理数据模型内模式面向DBMS和操作系统存储结构B树、索引、分区描述数据在磁盘、磁带上的存储格式和存取路径对用户完全透明。关键点E-R图属于概念模型而MySQL里的表结构属于关系模型逻辑模型考试经常会混淆这两者。3. 逻辑数据模型的历史演变回顾历史结合你问的第一个问题数据库发展史逻辑数据模型经历了这几代演变层次模型Hierarchical树形结构。像公司组织架构一个节点只有一个父节点。优点是查询快缺点是无法表示多对多关系典型代表IBM IMS。网状模型Network图结构。允许一个节点有多个父节点更灵活但结构太复杂用户难以掌握典型代表IDS。关系模型Relational二维表格结构。由E.F.Codd在1970年提出是目前统治全球的模型。它把数据抽象成简单的行记录和列字段通过SQL操作极大降低了用户门槛典型代表Oracle、MySQL、SQL Server。面向对象模型Object-Oriented融合了面向对象编程思想支持类、继承、封装但并未完全取代关系模型。NoSQL模型互联网时代的产物为了应对海量数据和高并发放弃了关系模型的某些严格约束如事务ACID包括键值模型Redis、文档模型MongoDB、列族模型HBase、图模型Neo4j。为什么关系模型应用广泛关系模型之所以成功是因为它把数据独立性做到了极致用户看到的只是逻辑上的二维表不需要关心底层指针或存储路径。DBMS负责把用户对表的操作转换成对物理文件的读写这就是我们上一题讲的物理数据独立性。结构简单统一数学基础严谨基于集合论和谓词逻辑因此SQL语言能高效运作。总结数据模型 描述数据的样子结构、动作操作和规矩约束。概念模型E-R图画给老板/用户看逻辑模型关系模型/表格是程序员写的代码物理模型索引/存储是DBA管的硬盘。目前关系模型依然是主流而NoSQL文档、键值、图等是特定场景下的补充。