当前位置:网站首页>数据库基础笔记
数据库基础笔记
2022-06-28 21:46:00 【Yuyy】
本文最后更新于 687 天前,其中的信息可能已经有所发展或是发生改变。
涵盖内容
ACID,NULL,MVCC,约束、概念模型、第三范式、连接
1. ACID
数据库管理系统中事务(transaction)的四个特性(分析时根据首字母缩写依次解释):原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability) 所谓事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。(执行单个逻辑功能的一组指令或操作称为事务)
详解
1. 原子性
原子性是指事务是一个不可再分割的工作单元,事务中的操作要么都发生,要么都不发生。 可采用“A向B转账”这个例子来说明解释 在DBMS中,默认情况下一条SQL就是一个单独事务,事务是自动提交的。只有显式的使用start transaction开启一个事务,才能将一个代码块放在事务中执行。
2. 一致性
一致性是指在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。这是说数据库事务不能破坏关系数据的完整性以及业务逻辑上的一致性。 如A给B转账,不论转账的事务操作是否成功,其两者的存款总额不变(这是业务逻辑的一致性,至于数据库关系约束的完整性就更好理解了)。 保障机制(也从两方面着手):数据库层面会在一个事务执行之前和之后,数据会符合你设置的约束(唯一约束,外键约束,check约束等)和触发器设置;此外,数据库的内部数据结构(如 B 树索引或双向链表)都必须是正确的。业务的一致性一般由开发人员进行保证,亦可转移至数据库层面。
3. 隔离性
多个事务并发访问时,事务之间是隔离的,一个事务不应该影响其它事务运行效果。 在并发环境中,当不同的事务同时操纵相同的数据时,每个事务都有各自的完整数据空间。由并发事务所做的修改必须与任何其他并发事务所做的修改隔离。事务查看数据更新时,数据所处的状态要么是另一事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看到中间状态的数据。 事务最复杂问题都是由事务隔离性引起的。完全的隔离性是不现实的,完全的隔离性要求数据库同一时间只执行一条事务,这样会严重影响性能。 关于隔离性中的事务隔离等级(事务之间影响),参见相应博文
4. 持久性
这是最好理解的一个特性:持久性,意味着在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。(完成的事务是系统永久的部分,对系统的影响是永久性的,该修改即使出现致命的系统故障也将一直保持) write ahead logging:SQL Server中使用了WAL(Write-Ahead Logging)技术来保证事务日志的ACID特性,在数据写入到数据库之前,先写入到日志,再将日志记录变更到存储器中。
2. MVCC
3. 五大约束
1、主键约束(Primay Key Coustraint) 唯一性,非空性 2、唯一约束 (Unique Counstraint)唯一性,可以空,但只能有一个 3、检查约束 (Check Counstraint)对该列数据的范围、格式的限制(如:年龄、性别等) 4、默认约束 (Default Counstraint)该数据的默认值 5、外键约束 (Foreign Key Counstraint)需要建立两表间的关系并引用主表的列
4. 概念模型
- 概念模型:
- 定义:现实世界到信息世界的第一层抽象,确定领域实体属性关系等。
- 表示方式:E-R图。
- 逻辑模型:
- 定义:
- 将概念模型转化为数据模型。
- 根据选定的DBMS,将E-R图转换成相应的逻辑模型。
- 实质:E-R图向关系模型的转换是要解决如何将实体和实体间的联系转换为关系,并确定这些关系的属性和码。
- 转化规则:
- 一个实体转换为一个关系,实体的属性就是关系的属性,实体的码就是关系的码。
- 一个联系也转换为一个关系,联系的属性及联系所连接的实体的码都转换为关系的属性,但是关系的码会根据联系的类型变化,如果是: 1:1联系,两端实体的码都成为关系的候选码。 1:n联系,n端实体的码成为关系的码。 m:n联系,两端实体码的组合成为关系的码。
- 定义:
- 物理模型:
- 定义:逻辑模型对应到具体的数据模型的机器实现。
- 实质:物理模型是对真实数据库的描述。
- 如关系数据库中的一些对象为表、视图、字段、数据类型、长度、主键、外键、索引、约束、是否可为空、默认值。
5. 三范式
- 一范式保证每列的原子性 数据库表中的所有字段值都是不可分解的原子值
- 第二范式:保证一张表只描述一件事情 消除非主属性之间的依赖
- 第三范式----保证每列都和主键直接相关 消除传递依赖
Post Views: 397
边栏推荐
- Pat 1024 palindromic number (25 points) sum of large integers
- wrk压力测试工具介绍
- 城市大脑知识图谱构建及应用研究
- Is it safe to open an account on great wisdom
- Postman introduction and installation steps
- Openfire 3.8.2 cluster configuration
- 犹豫的根音
- 6月底了,让我康康有多少准备跳槽的
- After reading the list of global patent and chip buyers, I understand that high innovation can lead to high profits
- If you are a C developer, look at these three explicit programming techniques
猜你喜欢

Safety innovation practice | Haitai Fangyuan was invited to participate in the technical exchange Seminar on "network information innovation and value co creation in the digital age"

Study on luminiprobe non fluorescent azide -- 3-azido propanol

河狸生存记:90后女博士与AI开发者们

运维体系建设思考 - 稳定性篇

Microsoft's exclusive payment function has also been perfectly unlocked

Survival of beaver: post-90s female doctors and AI developers

In one sentence, I will tell you the meaning of select 1, 2 and 3 in SQL injection, and explain the meaning of each part of SQL injection in detail

Interface use case design

安全 创新 实践|海泰方圆受邀参加“数字时代的网信创新与价值共创”技术交流研讨会

华为云的AI深潜之旅
随机推荐
Golang JSON serializing and deserializing strings deserializing to map[string]interface{}
Openfire 3.8.2 cluster configuration
SqlTransaction
Deploy grafana to realize graphical monitoring
Adding a markdown editor to lavel
Manual backup and restore of DHCP server
Activate function
Competition rules for the "network security" event of the secondary vocational group in the skills competition of Guangxi Vocational Colleges in 2022
LeetCode121. The best time to buy and sell stocks
LeetCode122. The best time to buy and sell stocks II
Leetcode56. consolidation interval
Web automation tool selection
E-commerce is popular, how to improve the store conversion rate?
别再问我,UI自动化测试怎么做了……
If you are a C developer, look at these three explicit programming techniques
Rust language survey results in 2021
Google search is dying | DKB
阿海的忠告
LeetCode986. Intersection of interval lists
在亿学学堂开通证券账户是安全可靠的吗?