当前位置: 首页 > backend >正文

【2025软考高级架构师】——数据库系统(10)

摘要

本文主要介绍了数据库模式和分布式数据库的相关知识。在数据库模式部分,阐述了数据库的三级模式结构,包括用户级数据库、概念级数据库和物理级数据库,以及关系的三种类型和数据库视图的特点及优点。在分布式数据库部分,介绍了分布式数据库的特点,如数据独立性、集中与自治共享结合的控制结构、适当增加数据冗余度等,以及硬件系统、系统软件和应用软件对数据库优化的影响,还涉及了集中式数据库优化和分布式数据库优化的方法。

1. 数据库模式

2. 分布式数据库

在分布式数据库系统中,除了集中式数据库的外模式、概念模式和内模式外,还引入了分片模式分布模式等额外模式以管理数据的分布特性。题目要求选择定义数据整体逻辑结构、使数据使用如同未分布的模式:

  • 全局概念模式(D):描述分布式数据库中所有数据的整体逻辑结构,屏蔽了数据的物理分布细节,为用户提供统一的访问接口,使其感知不到数据的分片与分布。这是符合题意的核心答案。
  • 分片模式(A):定义数据如何分片(如水平/垂直划分),属于物理分布的设计,而非整体逻辑结构。
  • 分布模式(C):描述数据在物理节点上的分布情况,属于存储层面的设计。
  • 全局外模式(B):通常是全局概念模式的子集,针对不同用户群体定义外部视图,并非整体逻辑结构。

3. 数据库设计

  1. 需求分析阶段:收集用户需求,明确数据范围和功能,不涉及具体结构设计。
  2. 概念设计阶段:通过ER图描述实体、属性及关系,关注高层次逻辑结构,尚未涉及表的分解与规范化。
  3. 逻辑设计阶段
    • 将概念模型转换为关系模型(如设计表结构、定义主键/外键)。
    • 应用关系规范化理论(如1NF、2NF、3NF等),消除冗余数据,避免更新异常。
    • 核心目标是优化数据结构,确保逻辑合理性与高效性。
  1. 物理设计阶段:关注存储引擎、索引、分区等物理实现细节,与规范化无关。

在数据库设计的需求分析阶段,核心任务是明确用户需求和数据需求,产出物主要包括描述数据流程及定义的文档。以下是对各选项的分析:

  • A. E-R图:属于概念设计阶段的产物,用于建模实体、属性及关系,需求分析阶段尚未涉及具体结构设计。
  • B. 关系模式:属于逻辑设计阶段,将概念模型转换为具体的表结构(如定义主键、外键),与需求分析无关。
  • C. 数据字典和数据流图
    • 数据字典:详细定义数据元素(如字段名称、类型、约束),明确数据含义与规则。
    • 数据流图:描述系统中数据的流动、处理过程及存储,帮助理解业务流程和数据需求。
      这两者是需求分析阶段的核心文档,用于清晰表达数据需求和系统功能。
  • D. 任务书和设计方案
    • 任务书:通常属于项目初期规划文档(如立项或合同要求),非需求分析阶段产出。
    • 设计方案:属于后续设计阶段(如总体架构设计),需基于需求分析结果制定。

4. 概念设计

5. 数据模型

6. 逻辑结构设计

在数据库逻辑结构设计中,将E-R模型转换为关系模型时,三个不同实体集之间的多对多联系(m:n:p)通常指三元联系(即三个实体两两之间均存在多对多关联)。根据转换规则:

  1. 每个实体集需转换为一个独立的关系模式(表),共 3个
  2. 三元联系需单独转换为一个关系模式,包含三个实体的主键作为外键,共 1个

因此,最少需要转换为 3(实体) + 1(三元联系) = 4 个关系模式

答案:C. 4

关键解析:

  • 实体转换:每个实体对应一个表,存储其属性及主键。
  • 三元联系处理:多对多联系无法通过外键直接关联,必须单独建表,包含所有参与实体的主键。
  • 最少情况:若联系为严格的三元关联(非多个二元联系组合),则必须单独建表,无法进一步合并。

总结:三个实体及其三元联系共需 4个关系模式

7. 关系代数

8. 规范化

9. ACID特性

10. 分库分表设计

11. NoSQL数据库

博文参考

http://www.xdnf.cn/news/3751.html

相关文章:

  • SpringBoot上传文件到阿里云OSS对象存储
  • 数据赋能(211)——质量管理——数据可验证性原则
  • 【Mytais系列】介绍、核心概念
  • 【浅学】Windows下ffmpeg+nginx+flv将本地视频推流在本地搭建的Web前端页面中播放,超详细步骤
  • C++ 抽象工厂模式详解
  • [Vue]编程式导航
  • C++ 单例模式详解
  • React18组件通信与插槽
  • 数模竞赛的坑,你踩了几个?
  • 源码编译Qt StateMachine
  • 如何在 CentOS 7 命令行连接 Wi-Fi?如何在 Linux 命令行连接 Wi-Fi?
  • 力扣面试150题--二叉树的最大深度
  • 最大子段和 Java
  • 【计算机网络-应用层】解析HTTP会话保持:Cookie与Session的原理与实践
  • 学习黑客网络安全法
  • 26考研 | 王道 | 计算机网络 | 第三章 数据链路层
  • 第一章 初识SpringMVC
  • RUST变量学习笔记
  • 命令模式(Command Pattern)详解
  • 使用 Lux Algo + ATR Zones + IIIX 的黄金剥头皮策略(2025 年更新)
  • 抽象工厂模式(Abstract Factory Pattern)
  • c++26新功能——gcc15.1的支持
  • 第1章 Python 解释器安装(Anaconda/Pyenv 推荐)
  • 生成式 AI 的重要性
  • 第6章 Python 基本数据类型详解(int, float, bool, str)细节补充
  • GPU平台-优云智算
  • 机器学习中的分类和回归问题
  • thonny提示自动补全功能
  • 《Qt C++ 项目中升级 GCC 版本的完整指南》
  • 用Suno V4.5试了一下1850字的歌词进行创作出来了6分钟的歌曲