热门标签 | 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的缓存机制,包括主从复制、读写分离以及缓存同步策略等内容。通过理解这些概念和技术,读者可以更好地优化数据库性能。 ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 数据库内核开发入门 | 搭建研发环境的初步指南
    本课程将带你从零开始,逐步掌握数据库内核开发的基础知识和实践技能,重点介绍如何搭建OceanBase的开发环境。 ... [详细]
  • 本文深入探讨 MyBatis 中动态 SQL 的使用方法,包括 if/where、trim 自定义字符串截取规则、choose 分支选择、封装查询和修改条件的 where/set 标签、批量处理的 foreach 标签以及内置参数和 bind 的用法。 ... [详细]
  • 本文详细介绍了如何通过多种编程语言(如PHP、JSP)实现网站与MySQL数据库的连接,包括创建数据库、表的基本操作,以及数据的读取和写入方法。 ... [详细]
  • 在当前众多持久层框架中,MyBatis(前身为iBatis)凭借其轻量级、易用性和对SQL的直接支持,成为许多开发者的首选。本文将详细探讨MyBatis的核心概念、设计理念及其优势。 ... [详细]
  • 本文介绍了如何通过 Maven 依赖引入 SQLiteJDBC 和 HikariCP 包,从而在 Java 应用中高效地连接和操作 SQLite 数据库。文章提供了详细的代码示例,并解释了每个步骤的实现细节。 ... [详细]
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
  • 本文详细介绍了如何使用libpq库与PostgreSQL后端建立连接。通过探讨PQconnectdb()函数的工作原理及其在实际应用中的使用方法,帮助读者理解并掌握建立高效、稳定的数据库连接的关键步骤。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 利用存储过程构建年度日历表的详细指南
    本文将介绍如何使用SQL存储过程创建一个完整的年度日历表。通过实例演示,帮助读者掌握存储过程的应用技巧,并提供详细的代码解析和执行步骤。 ... [详细]
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社区 版权所有