数据库
数据库系统(DBS)由4部分组成:
1. 数据库:统一管理、长期存储在计算机内的相关数据的集合
2. 硬件:构成计算机系统包括存储数据所需的外部设备
3. 软件:操作系统、数据库管理系统(DBMS)
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 | 张三 | CS01 | 93 |
001 | 张三 | CS02 | 89 |
002 | 李四 | CS01 | 78 |
… | … | … | … |
这个例子里非主属性姓名,部分依赖于主键,所以不满足第二范式。应该去掉姓名属性,也就不存在冗余列。
第三范式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视频合集
观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
五、实战案例
纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
六、面试宝典
简历模板