尝试在软考66天前开始成为软件设计师-数据库系统

三级模式-两级映射

层次型架构设计  ---便利,应变能力↗

  • 外模式  (用户与数据库系统的接口       视图
  • 概念模式 (数据库中全体数据的逻辑结构和特征
  • 内模式    (数据物理结构和存储方式

外模式/模式映像。

该映像存在于外部级和概念级之间,实现了外模式到概念模式之间的相互转换。(逻辑独立性

模式/内模式映像

该映像存在于概念级和内部级之间,实现了概念模式到内模式之间的相互转换。(物理独立性)

 数据库设计

需求分析

产出:数据流图,数据字典,需求说明书

概念结构设计

产出:ER模型   看数据实体-联系

逻辑结构设计

转换规则,规范化理论-->关系模式

物理设计

ER模型

实体,属性,联系

通常从局部开始 集成为一个ER图

集成时产生的冲突:

  • 属性冲突: 属性域冲突&属性取值冲突
  • 命名冲突:同名异义&异名同义。
  • 结构冲突:同一对象在不同应用中具有不同的抽象,同一实体在不同ER图中属性个数属性排列次序不完全相同

ER图转换为关系模式

一个实体转成一个关系模式

1:1 联系可以随任意一方

1:n 记录在多的一方 (部门:员工|1:n|记录在员工

n:n 联系单独记录成一个关系模式 

C

 关系代数

 

 \pi投影看列 \sigma选择看行( \pi向下看列,\sigma向右看行

连接操作\triangleright \triangleleft,一般下面写条件 

规范化理论

 函数依赖

类似于y=ax  Y函数依赖于X,X函数决定Y

学号-->姓名   姓名(同名)确定不了学号

 部分函数依赖  为例 (学号,课程号)-->姓名

主键一个部分就能确定属性

传递函数依赖同理

价值与应用

非规范化的关系模式,可能存在的问题包括:数据冗余、更新异常、插入异常、删除异常
 

数据冗余--D01代表计算机系

 

  • 超键   (唯一标识元组)
  • 候选键  (不存在冗余,唯一标识元组)

(学号,姓名,性别)    学号-->性别     (学号,姓名)-->性别   都是超键

但 (学号,姓名)不能为候选键,有学号在内冗余

  • 主键  (候选键任意一个)
  • 外键   部门有作外键--职员
求候选键

关系模式画成图形(有向图)

寻找入度为0的属性(A1只有一条出度), 能遍历整图便是候选键 例一A

例二  (ABCD)组合键

例三 如果没有入度为0的结点,  找能到其他结点的  A和B

范式

规范化程度越高,数据密度越小弊端

  • 1NF

属性值都是不可分的原子值

  • 2NF

消除非主属性对候选键的部分依赖

  • 3NF (实际)

消除了非主属性对候选键的传递依赖

  • BCNF

消除了主属性对候选键的传递依赖

1NF

只包含原子值

不满足,高级职称人数可以再分

2NF

每一个非主属性完全依赖主键  (不存在部分依赖)

例: 学号,课程号,课程分,学分

        课程号 -->学分 部分依赖  (学号,课程号)-->课程分

解决方案:分离出一个新的

3NF

 没有非主属性传递依赖于码

单属性不存在部分依赖,已满足2NF

 DNAME 和LOCATION 冗余

DNO,DNAME,LOCATION组成新

BC范式

每个依赖决定因素 必定包含某个候选键

  

 模式分解

保持函数依赖分解 

分解后依赖依然存在 ,不保持冗余的函数依赖

例: A->B->C  分解成 A->B , B->C 保持函数依赖

而分解 A->B , A->C  就没有保持

无损分解

有损不能还原,无损可以还原

无损联接分解:指将一个关系模式分解成若干个关系模式后,通过自然联接和投影等运算仍能还原到原来的关系模式

并发控制

 事务--e.g.: 银行转账,要求转账到账一致进行

存在问题

  • 丢失更新 
③丢失,被④覆盖
  • 不可重复读

本用来演算,但演算过程中数被改

  • "脏"数据

不应该读成70

封锁协议

X锁 写锁; S锁读锁    

排他锁(Exclusive Locks,简称X锁)共享锁(Share Locks,简称S锁

  • 一级封锁协议

事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放. 防丢失修改

  • 二级封锁协议

 一级协议+读取数据之前加S锁,读完释放   防丢失修改+防脏数据

  • 三级封锁协议

二级+结束才释放S锁  防丢失修改+防脏数据+防重复读

  • 两段锁协议

可串行,可产生死锁

封锁协议就可能产生死锁

数据库完整性约束

实体完整性约束

约束主键

参照完整性约束

约束外键,填入外键时 必须根据那个主键

用户自定义完整性

完整性确保数据正确

触发器 可以写脚本 保证复杂的完整性

数据库安全

  1. 用户标识
  2. 存取控制(用户授权)
  3. 密码存储&传输
  4. 视图保护 (操作哪些区域)
  5. 审计 (记录操作,事后处理)

数据备份

冷备份

静态备份,将数据库关闭,进行备份 ,速度快,复杂度低

热备份

动态备份,使用备份软件,正常运行时进行备份,   不能出错

  • 完全备份  (全部
  • 差量备份  (上次"完全备份"之后变化的数据
  • 增量备份   (上次备份之后变化的数据

增量备份,需要之前完全备份恢复完后,再次才能恢复备份内容  麻烦

  • 静态海量转储      全部
  • 静态增量转储      上次转储后更新过的数据
  • 动态海量转储
  • 动态增量转储

日志文件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/36494.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Hadoop•常用命令

听说这是目录哦 操作命令🥯退出清屏切换工作目录移动文件查看创建删除复制文件内容查看编辑解压缩其它命令技巧 系统命令🍕vim操作命令(命令模式下)光标移动复制粘贴(vi编辑器内部)删除、撤销 若vi,vim,ls找不到命令⚠️能量站&am…

linux之 内存管理(1)-armv8 内核启动页表建立过程

一、内核启动时,页表映射有哪些? Linux初始化过程,会依次建立如下页表映射: 1.恒等映射:页表基地址idmap_pg_dir; 2.粗粒度内核镜像映射:页表基地址init_pg_dir; 3.fixmap映射:页表基地址为…

IntelliJ IDEA 快捷键系列:重命名快捷键详解

目录 引言一、默认重命名快捷键1. Windows 系统‌2. Mac 系统‌ 二、操作步骤与技巧1. 精准选择重命名范围‌2. 智能过滤无关内容‌ 三、总结 引言 在代码重构中,‌重命名变量、类、方法‌ 是最常用的操作之一。正确使用快捷键可以极大提升开发效率。本文针对 ‌Ma…

Swagger-告别手写文档

文章目录 1. 引言2. Swagger是什么?3. SpringBoot2.7.3集成Swagger4. 常见注解 1. 引言 在RESTful API开发中,维护准确、易读的接口文档是团队协作的核心挑战,通常接口文档分为离线的和实时的。离线的接口文档工具有 YAPI等,其中…

深入解析 C++ Vector:全面掌握 STL 核心容器的原理与高效实践

一、Vector 的核心概念与特性 Vector 是 C 标准库中最常用的动态数组容器,其底层基于连续内存存储元素,兼具数组的高效访问与动态扩容的灵活性。以下是其核心特性: 1.1 核心特性对比 特性普通数组Vector 容器内存分配静态固定动态增长访问效…

element-plus中DatePicker 日期选择器组件的使用

1.选择某一天 代码&#xff1a; <el-date-pickerv-model"invoice_date"type"date"placeholder"请选择日期"style"width: 200px;"clearable /> 运行效果&#xff1a; 问题所在&#xff1a;这个数据的格式不是我们后端需要的那种&…

Python Bug修复案例分析:Python 中常见的 IndentationError 错误 bug 的修复

在 Python 编程的世界里&#xff0c;代码的可读性和规范性至关重要。Python 通过强制使用缩进来表示代码块的层次结构&#xff0c;这一独特的设计理念使得代码更加清晰易读。然而&#xff0c;正是这种对缩进的严格要求&#xff0c;导致开发者在编写代码时&#xff0c;稍有不慎就…

Deal - DbC、检查Python 值、异常和副作用

文章目录 一、关于 Deal特点 二、安装三、30秒内使用 Deal四、其它贡献 一、关于 Deal Deal 是用于 design by contract (DbC) 和 检查值、异常和副作用的Python库。简而言之&#xff0c;交易使您能够编写bug的代码。 通过在代码中添加一些装饰器&#xff0c;您可以获得免费测…

Linux 一步部署DHCP服务

#!/bin/bash #脚本作者和日期 #author: PEI #date: 20250319 #检查root权限 if [ "$USER" ! "root" ]; then echo "错误&#xff1a;非root用户&#xff0c;权限不足&#xff01;" exit 0 fi #防火墙与高级权限 systemctl stop firewa…

MyBatis操纵数据库-XML实现(补充)

目录 一.多表查询二.MyBatis参数赋值(#{ }和${ })2.1 #{ }和${ }的使用2.2 #{ }和${ }的区别2.3 SQL注入2.3 ${ }的应用场景2.3.1 排序功能2.3.2 like查询 一.多表查询 多表查询的操作和单表查询基本相同&#xff0c;只需改变一下SQL语句&#xff0c;同时也要在实体类中创建出…

【Java篇】一气化三清:类的实例化与封装的智慧之道

文章目录 类和对象&#xff08;中&#xff09;五、对象的构造及初始化5.1 如何初始化对象5.2 构造方法5.2.1 构造方法的概念5.2.2 构造方法的特性 5.3 默认初始化5.4 就地初始化 六、封装6.1 封装的概念6.2 访问限定符6.3 封装扩展之包6.3.1 包的概念6.3.3导入包6.3.3全类名6.3…

深入解析 `SQL_SMALL_RESULT`:MySQL 的“小优化”大作用

深入解析 SQL_SMALL_RESULT&#xff1a;MySQL 的“小优化”大作用 在 MySQL 的查询优化工具箱中&#xff0c;SQL_SMALL_RESULT 是一个容易被忽略但可能带来小幅性能提升的关键字。它适用于特定场景&#xff0c;尤其是涉及 GROUP BY 或 DISTINCT 计算的小数据集查询。本文将深入…

python-leetcode 48.括号生成

题目&#xff1a; 数字n代表生成括号的对数&#xff0c;设计一个函数&#xff0c;用于生成所有可能并且有效的括号组合。 方法一&#xff1a;回溯 可以生成所有 2**2n 个 ‘(’ 和 ‘)’ 字符构成的序列&#xff0c;然后检查每一个是否有效即可 为了生成所有序列&#xff0c…

用css绘制收银键盘

最近需求说需要自己弄个收银键盘&#xff0c;于是乎直接上手搓 主要基于Vue3写的&#xff0c;主要是CSS <template><view class"container"><view class"info"><image class"img" src"" mode"">&l…

C# | 超简单CSV表格读写操作(轻松将数据保存到CSV,并支持读取还原)

C# | 超简单CSV表格读写操作&#xff08;轻松将数据保存到CSV&#xff0c;并支持读取还原&#xff09; 文章目录 C# | 超简单CSV表格读写操作&#xff08;轻松将数据保存到CSV&#xff0c;并支持读取还原&#xff09;一、上位机开发中的CSV应用背景二、CSV读写实战教学1. 基本对…

14:00面试,15:00就出来了,问的问题过于变态了。。。

从小厂出来&#xff0c;没想到在另一家公司又寄了。 到这家公司开始上班&#xff0c;加班是每天必不可少的&#xff0c;看在钱给的比较多的份上&#xff0c;就不太计较了。没想到3月一纸通知&#xff0c;所有人不准加班&#xff0c;加班费不仅没有了&#xff0c;薪资还要降40%…

友思特应用 | 行业首创:基于深度学习视觉平台的AI驱动轮胎检测自动化

导读 全球领先的轮胎制造商 NEXEN TIRE 在其轮胎生产检测过程中使用了基于友思特伙伴Neurocle开发的AI深度学习视觉平台&#xff0c;实现缺陷检测率高达99.96%&#xff0c;是该行业首个使用AI平台技术推动缺陷检测自动化流程的企业。 将AI应用从轮胎开发扩展到制造过程 2024年…

09 python函数(上)

一、函数的介绍 什么是函数&#xff1f; 函数的诞生为了解决两个问题&#xff1a;可读性、重复性。使用函数可以将一些代码放在一起成为一个功能&#xff0c;方便调用&#xff0c;出现了函数也方便用户阅读代码。 函数是组织好的&#xff0c;可重复使用的&#xff0c;用来实现…

Androidstudio出现警告warning:意外的元素

这些警告信息通常与 Android SDK 或系统镜像的配置文件有关&#xff0c;可能是由于 SDK 工具或系统镜像的版本不兼容或配置文件格式发生了变化。以下是解决这些警告的步骤&#xff1a; 1. 更新 Android SDK 工具 确保你使用的是最新版本的 Android SDK 工具&#xff1a; 打开…

性能调优疑难问题解决-completablefuture造成oom

一 案例 1.1 背景描述 对公交易服务使用了热点资源组件&#xff0c;出现了在高并发下触发线程池资源耗尽&#xff0c;任务堆积&#xff1b;出现内存oom。 1.2 模拟场景 public class OrderSystemCrash {// 模拟高并发场景public static void main(String[] args) {for (int…