数据库

数据库系统(DBS)由4部分组成:

  1. 1. 数据库:统一管理、长期存储在计算机内的相关数据的集合

  2. 2. 硬件:构成计算机系统包括存储数据所需的外部设备

  3. 3. 软件:操作系统、数据库管理系统(DBMS)

  4. 4. 人员:系统分析和数据库设计人员、用户、数据库管理员DBA

数据库管理系统(DBMS)的功能:

实现对共享数据有效的组织、管理和存取。包括数据定义、数据库操作、数据库运行管理、存储管理、数据库的建立和维护等。

三级模式

数据库三级模式

1. 内模式

管理如何存储物理等数据,对影具体物理存储文件

2. 概念模式

即使用的基本表,根据应用、需求将物理数据划分成一张张表

3.外模式

对应数据库中的视图级别,将表进行一定的处理后再提供给用户使用

两级映像

1. 外模式-概念模式映像

表和视图之间的映射,存在于概念级和外部级之间,若表中数据发送了修改,只需要修改此映射,无需修改应用程序。

2. 概念模式-内模式映像

表和数据的物理存储之间的映射,存在于概念级和内部级之间,若修改了数据存储方式,只需要修改此映射,而不需要修改应用程序。

数据库设计

需求分析:分析数据存储的要求,产出物有数据流图、数据字典、需求说明书

概念结构设计:设计E-R(实体-关系)图,与物理实现无关

逻辑结构设计:将E-R图转换成关系模式,转换成实际的表和表中的列属性

物理设计:根据生成的表等概念,生成物理数据库

数据模型三要素:数据结构(对象类型的集合)、数据操作(对象的实例允许的操作集合)、数据的约束条件(一组完整性规则的集合)

E-R图

椭圆:属性

长方形:实体

菱形:联系

E-R图

关系模型

T(C1, C2, C3)

关系代数运算

并:结果是两张表中所有记录数合并,相同结果只显示一次

交:结果是两张表中相同的记录

差:S1-S2,结果是S1表中有而S2表中没有的记录

笛卡尔积×:S1 × S2,结果包括S1和S2中的所有属性列,并且S1中每条记录和S2中每条记录组合成一条记录,最终属性列为S1+S2,记录数为S1*S2

投影π:按条件选择某关系模式中的某列,列也可以用数字表示– select

选择σ:按条件选择某关系模式中的某条记录– where

自然连接⋈:显示全部的属性列,相同的只显示一次,显示两个关系模型中属性相同且值相同的记录

函数依赖

给定一个X,能唯一确定一个Y,就称X确定Y,或者Y依赖于X。

完全函数依赖

(A,B)可以确定C,(A,B)的子集(A)和(B)都不能确定C,则称C完全依赖于(A,B)

部分函数依赖

A可确定C,(A,B)也可确定C,(A,B)的子集(A)也可以确定C,则称C部分依赖于(A,B)

传递函数依赖

A和B不等价,当A可确定B,B可以确定C时,A能确定C,则A,C满足传递依赖

键与约束

超键:能唯一标识此表的属性的组合

候选键:超键中去掉冗余的属性,剩余的属性就是候选键

主键:任选一个候选键,即可作为主键

外键:其他表的主键

主属性:候选键内的属性为主属性,其他属性为非主属性

实体完整性约束:主键约束,主键值不能为空,也不能重复

参照完整性约束:外键约束,外键必须时其他表中已经存在的主键的值,或者为空。

用户自定义完整性约束:自定义表达式约束

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UFUnTtBK-1692021288408)(https://mmbiz.qpic.cn/mmbiz_png/z5wHYsauz7JDuwCNrzudAmPzATMp2qgAMbJ4lgqLwIbv2mq38LmPMo9L4JNm0SOLO6nGLWmZ9mvm8DqxpHzOYA/640″ />范式

第一范式1NF

所有属性都不可再分割,比如地址字段Address:XX省XX市XX区XX街道XXX就不满足第一范式,因为还可以细分为Province、City、District、Street等字段。

第二范式2NF

满足第一范式的前提下,每一个非主属性完全依赖于主键(不存在部分依赖)。即每一列都与主键相关,且不能只与主键(联合主键)的一部分相关。

比如一个学生成绩表,学生学号和课程号作联合主键

学号姓名课程号成绩
001张三CS0193
001张三CS0289
002李四CS0178

这个例子里非主属性姓名,部分依赖于主键,所以不满足第二范式。应该去掉姓名属性,也就不存在冗余列。

第三范式3NF

满足第二范式的前提下,没有非主属性传递依赖于主键。

比如员工信息表,员工号作唯一主键

员工号姓名部门部门地址
1001张三财务XX大厦XX层xx号

存在员工号 -> 部门 -> 部门地址的传递依赖

BC范式BCNF

  • • 所有非主属性都完全函数依赖于每个候选键

  • • 所有主属性都完全函数依赖于每个不包含它的候选键

  • • 没有任何属性完全函数依赖于非候选键的任何一组属性

满足3NF不一定满足BCNF,满足BCNF一定满足3NF。

事务

事务特性ACID

原子性Atomic:要么全部执行,要么全部不执行

一致性Consistents:事务发生后数据是一致的

隔离性Isolation:事务的更新操作直到其成功提交的整个过程对其他事务是不可见的,不同事务相互隔离

持续性Duration:事务完成后,对数据库数据的修改将被持久性存储

三级封锁协议

排他所X:事务T对数据D加排他锁X,只允许事务T读取和修改数据D, 其他事务不允许再加排他锁X和共享锁S。

共享锁S:事务T对数据D加共享锁S,事务T只能对数据D进行读取(共享锁也叫读锁),其他事务只能对数据D加共享锁S,不能加排他锁,知道T释放共享锁。

数据库故障

故障类型故障原因
事务内部故障本身逻辑、运算溢出
系统故障系统停止运行任务事件,如操作系统故障、停电
介质故障物理介质损坏,几率小破坏性大
计算机病毒人为大故障和破坏

数据库备份

静态转储:冷备份,在转储期间不允许对数据进行任何存取、修改操作

  • • 优点:快速、简单

  • • 缺点:只能提供某一时间点上的恢复,不能按表或按用户恢复

动态转储:热备份,在转储期间允许对数据进行存取、修改操作

  • • 优点:可在表空间或数据库文件级备份,数据库仍可使用,可达到秒级恢复

  • • 缺点:不能出错

完全备份:备份所有数据

差量备份:仅备份上一次完全备份之后变化的数据

增量备份:备份上一次备份之后变化的数据

—————————END—————————

题外话

“不是只有程序员才要学编程?!”

认真查了一下招聘网站,发现它其实早已变成一项全民的基本技能了。

连国企都纷纷要求大家学Python!

世界飞速发展,互联网、大数据冲击着一切,各行各业对数据分析能力的要求越来越高,这便是工资差距的原因,学习编程顺应了时代的潮流。

在这个大数据时代,从来没有哪一种语言可以像Python一样,在自动化办公、爬虫、数据分析等领域都有众多应用。

更没有哪一种语言,语法如此简洁易读,消除了普通人对于“编程”这一行为的恐惧,从小学生到老奶奶都可以学会。

《2020年职场学习趋势报告》显示,在2020年最受欢迎的技能排行榜,Python排在第一。

它的角色类似于现在Office,成了进入职场的第一项必备技能。

如果你也想增强自己的竞争力,分一笔时代的红利,我的建议是,少加点班,把时间腾出来,去学一学Python。

因为,被誉为“未来十年的职场红利”的Python,赚钱、省钱、找工作、升职加薪简直无所不能!

目前,Python人才需求增速高达**174%,人才缺口高达50万,**部分领域如人工智能、大数据开发, 年薪30万都招不到人!

感兴趣的小伙伴,赠送全套Python学习资料,包含面试题、简历资料等具体看下方。

CSDN大礼包:全网最全《Python学习资料》免费赠送!(安全链接,放心点击)

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。


二、Python必备开发工具

工具都帮大家整理好了,安装就可直接上手!

三、最新Python学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

四、Python视频合集

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

五、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

六、面试宝典

简历模板