热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

中级软件设计师(软考)笔记——数据库系统

目录数据库系统1、三级模式-两层映射三级模式两层映射数据库设计过程2、E-R模型3、关系代数4、规范化理论规范化理论键范式模式分解SQL语言并发控制事务并发产生的问题封锁死锁完整性


目录

    • 数据库系统
      • 1、三级模式-两层映射
        • 三级模式
        • 两层映射
        • 数据库设计过程
      • 2、E-R模型
      • 3、关系代数
      • 4、规范化理论
        • 规范化理论
        • 范式
        • 模式分解
        • SQL语言
        • 并发控制
          • 事务
          • 并发产生的问题
          • 封锁
          • 死锁
          • 完整性约束


数据库系统


1、三级模式-两层映射


三级模式


  • 外模式(用户模式,视图级)—— 逻辑 | 是用户与数据库系统的接口,是用户用到的那部分数据的描述
  • 内模式(存储模式,文件级)—— 数据的存储 | 是数据物理结构和存储方式的描述
  • 概念模式(模式,表级) —— 反映数据库的结构及其联系 | 数据库中全部数据的逻辑结构和特征的描述

两层映射


  • 模式/内模式映射 —— 保证数据的物理独立性
  • 外模式/模式映射 —— 保证数据的逻辑独立性
    在这里插入图片描述

数据库设计过程

在这里插入图片描述


2、E-R模型

E-R图中主要构件


构件说明
矩形表示实体集
双边矩形表示弱实体集
菱形表示联系集
双边菱形表示弱实体集对应的标识性联系
椭圆表示属性
线段属性与实体集连接、实体集与联系集连接
双椭圆表示多值属性
虚椭圆表示派生属性
双实线表示一个实体全部参与到联系集中

E-R图向关系模型转换的基本方法1、一个实体转换为一个关系模式,实体的属性就是关系的属性2、如果是多个实体之间的多对多的联系,那么这个联系也要转换为一个独立的关系模式,且该关系模式的属性由各实体的关键字和该联系自身的属性组成,关键字由各实体的关键字组成3、一对一联系,可将联系合并到任意一端实体关系模式中4、一对多联系,可将联系合并到 多 端实体关系模式中

3、关系代数


  • 并:R∪S={t|t∈R∨t∈S}
  • 交:R∩S={t|t∈R∧t∈S}
  • 差:R-S={t|t∈R∧t∉S}
  • 笛卡儿积:R×S={(t_r t_s ) ?|t_r∈R?t_s∈S},R×S列=A列+B列,R×S行=A行×B行
  • 投影:选择列 πA(R)=…
  • 选择:选择行
  • 连接:选择相同属性的行,去掉重复列
    • θ连接,从R与S的笛卡尔积中选取属性间满足一定条件的元组
    • 等值连接,当θ为“=”时,称之为等值连接
    • 自然连接,一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果集中将重复的属性列去掉
      在这里插入图片描述

4、规范化理论


规范化理论


函数依赖:数据依赖指数据之间存在的各种联系和约束




  • 候选键 —— 唯一标识元组,且无冗余
  • 主键 —— 候选键任选一个
  • 外键 —— 其他关系的主键

求候选码

关系模式码的确定,设关系模式R
首先应该找出F中所有的决定因素,即找出出现在函数依赖规则中“→”左边的所有属性,组成集合U1;
再从U1中找出一个属性或属性组K,运用Armstrong公理系统及推论1,使得K→U,而K真子集K′→U不成立;这样就得到了关系模式R的一个候选码,找遍U1属性的所有组合,重复过程(2),最终得到关系模式R的所有候选码

范式


  • 1NF —— 所有属性都是不可分的基本数据项
  • 2NF —— 所有非主属性完全依赖主键(不存在部分依赖)
  • 3NF —— 所有非主属性不依赖于其他非主属性(消除传递依赖)
  • BCNF —— 每个属性都不部分依赖于候选键也不传递依赖于候选键(完全依赖主键)

模式分解


  • 保持函数依赖分解(子模式里满足依赖关系)
  • 无损分解(可以还原)
  • 有损分解(不可还原)

SQL语言

CURD,建表
……


并发控制


事务

  • 原子性
  • 一致性
  • 隔离性
  • 持续性

并发产生的问题

  • 丢失修改
  • 不可重复读
  • 读脏数据

封锁

  • 排它锁(X锁):又称写锁。若事务T对数据对象A加上X锁,只允许T读取和修改A,其他事务不能再对A加任何锁,直到T释放A上的锁
  • 共享锁(S锁):又称读锁。若事务T对数据对象加上S锁,只允许T读取A但不能修改,其他事务只能再对A加S锁,而不能加X锁,直到A上所有的S锁解除。保证了其他事务可以读A,但在T释放A上的S锁之前不能对A进行任何修改
    在这里插入图片描述

死锁

……


完整性约束

  • 实体完整性约束 —— 主键非空,唯一
  • 参照完整性约束 —— 外键为空或者有一个正确的索引
  • 用户自定义完整性约束 ——
  • 触发器 —— 脚本

推荐阅读
  • MySQL索引详解与优化
    本文深入探讨了MySQL中的索引机制,包括索引的基本概念、优势与劣势、分类及其实现原理,并详细介绍了索引的使用场景和优化技巧。通过具体示例,帮助读者更好地理解和应用索引以提升数据库性能。 ... [详细]
  • 作者:守望者1028链接:https:www.nowcoder.comdiscuss55353来源:牛客网面试高频题:校招过程中参考过牛客诸位大佬的面经,但是具体哪一块是参考谁的我 ... [详细]
  • 解析SQL查询结果的排序问题及其解决方案
    本文探讨了为什么某些SQL查询返回的数据集未能按预期顺序排列,并提供了详细的解决方案,帮助开发者理解并解决这一常见问题。 ... [详细]
  • Netflix利用Druid实现高效实时数据分析
    本文探讨了全球领先的在线娱乐公司Netflix如何通过采用Apache Druid,实现了高效的数据采集、处理和实时分析,从而显著提升了用户体验和业务决策的准确性。文章详细介绍了Netflix在系统架构、数据摄取、管理和查询方面的实践,并展示了Druid在大规模数据处理中的卓越性能。 ... [详细]
  • 本文详细探讨了JDBC(Java数据库连接)的内部机制,重点分析其作为服务提供者接口(SPI)框架的应用。通过类图和代码示例,展示了JDBC如何注册驱动程序、建立数据库连接以及执行SQL查询的过程。 ... [详细]
  • 本文探讨了领域驱动设计(DDD)的核心概念、应用场景及其实现方式,详细介绍了其在企业级软件开发中的优势和挑战。通过对比事务脚本与领域模型,展示了DDD如何提升系统的可维护性和扩展性。 ... [详细]
  • 本文探讨了 Spring Boot 应用程序在不同配置下支持的最大并发连接数,重点分析了内置服务器(如 Tomcat、Jetty 和 Undertow)的默认设置及其对性能的影响。 ... [详细]
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
  • PostgreSQL 10 离线安装指南
    本文详细介绍了如何在无法联网的服务器上进行 PostgreSQL 10 的离线安装,并涵盖了从下载安装包到配置远程访问的完整步骤。 ... [详细]
  • Startup 类配置服务和应用的请求管道。Startup类ASP.NETCore应用使用 Startup 类,按照约定命名为 Startup。 Startup 类:可选择性地包括 ... [详细]
  • 使用Pandas高效读取SQL脚本中的数据
    本文详细介绍了如何利用Pandas直接读取和解析SQL脚本,提供了一种高效的数据处理方法。该方法适用于各种数据库导出的SQL脚本,并且能够显著提升数据导入的速度和效率。 ... [详细]
  • 本文探讨了在Windows Server 2008环境下配置Tomcat使用80端口时遇到的问题,包括端口被占用、多项目访问失败等,并提供详细的解决方法和配置建议。 ... [详细]
  • 通过Web界面管理Linux日志的解决方案
    本指南介绍了一种利用rsyslog、MariaDB和LogAnalyzer搭建集中式日志管理平台的方法,使用户可以通过Web界面查看和分析Linux系统的日志记录。此方案不仅适用于服务器环境,还提供了详细的步骤来确保系统的稳定性和安全性。 ... [详细]
  • 20100423:Fixes:更新批处理,以兼容WIN7。第一次系统地玩QT,于是诞生了此预备式:【QT版本4.6.0&#x ... [详细]
  • 在尝试用另一台电脑的MySQL文件替换本地D:\xampp\mysql目录后,MySQL服务无法启动。错误提示显示MySQL意外关闭,可能是由于端口冲突、依赖缺失、权限问题或崩溃等原因引起。 ... [详细]
author-avatar
手机用户2502906317
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有