`
wusuoya
  • 浏览: 641434 次
  • 性别: Icon_minigender_2
  • 来自: 成都
社区版块
存档分类
最新评论

数据库事务和范式

 
阅读更多

数据库事务四大特性:原子性、一致性、分离性、持久性

原子性(Atomicity):一个事务它所做的对数据修改操作要么完整执行,要么完全不执行。

一致性(consistency):在一个事务执行之前和执行之后数据库都必须处于一致性状态。

隔离性(Isolation):对于任何一对事务T1和T2,在事务T1看来,T2要么在T1开始之前执行,要么在T1完成之后才开始执行,这样,每个事务都感觉不到系统中有并发事务执行。

持久性(Durability):一个事务一旦成功完成,它对数据库的改变必须是永久的,即使是在系统遇到故障的情况下也不会丢失,数据的重要性决定了事物的持久性的重要。

 

原 子性:(all or nothing的问题)指一个事务中,包含若干个数据操作,这些操作是一个整体,要么一起完成,要么一起不完成,不能只完成其中的一部分。比如你去银行转 帐,从一个账户转帐到另一个账户,这是一个完整的事务,包括两个操作,从你第一个账户读数,增加到第二个账户,并减去第一个账户中的钱,如果这些操作有一 个失败了,整个事务都必须还原成最开始的状态。
一致性:是指数据库从一个完整的状态跳到另一个完整的状态,是用于保护数据库的完整性的。比如你修 改数据库的某个外键值,如果没有和相应的主键对应,就违反了数据库的一致性。另外,还有读一致性,如:你刚写入一个数到数据库中,但还没有提交,这时候有 人要读这个数,就涉及完整性问题,要保证读取的数据在整个数据库中是处于和其他数据一致的一个状态。

 

*******************************************范式****************************************************************

范式(Normalization)要按照要求使用以提高性能。Normalization做的不够会导致数据冗余,而过度Normalization 会导致太多的join和数据表,这两种情况都会影响性能。

数据库范式:是为了消除重复数据减少冗余数据,从而让数据库内的数据更好的组织,消除了数据冗余、更新异常、插入异常和删除异常(删除某个字段信息后其他属性也被删除),让磁盘空间得到更有效利用的一种标准化标准,满足高等级的范式的先决条件是满足低等级范式。

◆ 第一范式(1NF):强调的是列的原子性,即列不能够再分成其他几列(粒度问题)。
考虑这样一个表:【联系人】(姓名,性别,电话)
如果在实际场景中,一个联系人有家庭电话和公司电话,那么这种表结构设计就没有达到 1NF。要符合 1NF 我们只需把列(电话)拆分,即:【联系人】(姓名,性别,家庭电话,公司电话)。1NF 很好辨别,但是 2NF 和 3NF 就容易搞混淆。


◆ 第二范式(2NF):首先是 1NF,另外包含两部分内容,一是表必须有一个主键;二是没有包含在主键中的列必须完全依赖于主键,而不能只依赖于主键的一部分。
考虑一个订单明细表:【OrderDetail】(OrderID,ProductID,UnitPrice,Discount,Quantity,ProductName)。
因 为我们知道在一个订单中可以订购多种产品,所以单单一个 OrderID 是不足以成为主键的,主键应该是(OrderID,ProductID)。显而易见 Discount(折扣),Quantity(数量)完全依赖(取决)于主键(OderID,ProductID),而 UnitPrice,ProductName 只依赖于 ProductID。所以 OrderDetail 表不符合 2NF。不符合 2NF 的设计容易产生冗余数据。
可以把【OrderDetail】表拆分为【OrderDetail】 (OrderID,ProductID,Discount,Quantity)和【Product】 (ProductID,UnitPrice,ProductName)来消除原订单表中UnitPrice,ProductName多次重复的情况。


◆ 第三范式(3NF):首先是 2NF,另外非主键列必须直接依赖于主键,不能存在传递依赖。即不能存在:非主键列 A 依赖于非主键列 B,非主键列 B 依赖于主键的情况。
考虑一个订单表【Order】(OrderID,OrderDate,CustomerID,CustomerName,CustomerAddr,CustomerCity)主键是(OrderID)。
其 中 OrderDate,CustomerID,CustomerName,CustomerAddr,CustomerCity 等非主键列都完全依赖于主键(OrderID),所以符合 2NF。不过问题是 CustomerName,CustomerAddr,CustomerCity 直接依赖的是 CustomerID(非主键列),而不是直接依赖于主键,它是通过传递才依赖于主键,所以不符合 3NF。
通过拆分【Order】为【Order】(OrderID,OrderDate,CustomerID)和【Customer】(CustomerID,CustomerName,CustomerAddr,CustomerCity)从而达到 3NF。
第二范式(2NF)和第三范式(3NF)的概念很容易混淆,区分它们的关键点在于,2NF:非主键列 是否完全依赖于主键 ,还是依赖于主键的一部分;3NF:非主键列 是直接依赖于主键,还是直接依赖于非主键列

分享到:
评论

相关推荐

    数据库设计三大范式.pdf

    数据库设计是信息系统构建的核心环节,其中的三大范式——第一范式、第二范式和第三范式,是...通过理解和应用这些范式和事务处理原则,我们可以创建出高效、可靠且易于维护的数据库系统,有效地存储和管理大量数据。

    数据库范式理解例题.doc

    数据库范式是关系数据库设计中的一种规范约束规则,用于确保数据库的逻辑一致性和数据的完整性。下面是对数据库范式的理解和例题: 1. 属性的分类: 在关系数据库中,属性可以分为主属性和非主属性。主属性是包含...

    数据库与事务处理

    数据库的设计通常遵循范式理论,如第一范式(1NF)、第二范式(2NF)和第三范式(3NF),以减少数据冗余和提高数据独立性。此外,关系型数据库使用表、列和键值对来组织数据,而NoSQL数据库则支持更灵活的数据模型,...

    经典SQL语句大全,sql基础培训资料,数据库设计三范式

    数据库设计的三范式包括第一范式(1NF)、第二范式(2NF)和第三范式(3NF)。它们是确保数据库逻辑结构合理、减少数据冗余和异常的关键原则。 11. **事务处理** 事务是一系列数据库操作的集合,具有原子性、一致...

    数据库三范式 & 事务

    数据库三范式是数据库设计中常用的一套规范,旨在确保数据库结构的最优化,从而避免数据异常和更新异常。 1. 第一范式(1st NF - 列都是不可再分) 第一范式要求数据库表的每一列都必须是不可分割的基本数据项,也...

    数据库三范式最简单最易记的解释.docx

    数据库三范式是关系数据库设计的基本原则,目的是为了消除数据冗余、提高数据的一致性和完整性。下面是对数据库三范式的详细解释: 第一范式(1NF) 第一范式的要求是:字段不可分。也就是说,一个字段不能再被...

    C#项目数据库设计有关和三大范式

    接下来,我们来深入探讨数据库设计中的三大范式:第一范式(1NF)、第二范式(2NF)和第三范式(3NF)。这些范式是数据库规范化理论的基础,旨在减少数据冗余,提高数据一致性,防止数据异常。 1. 第一范式(1NF)...

    SQL基础语法+数据库设计与范式+数据查询与筛选+数据排序与分组+SQL函数与表达式+子查询与嵌套查询+连接查询等全套教程

    数据库设计与范式 数据查询与筛选 数据排序与分组 SQL函数与表达式 子查询与嵌套查询 连接查询:内连接与外连接 事务处理与SQL 视图与存储过程 索引与优化查询 数据库安全性与权限管理 SQL与大数据处理 SQL在Web开发...

    数据库 三范式最简单最易记的解释

    数据库的三范式是设计和优化关系型数据库的关键理论,它确保了数据的规范化,减少了数据冗余,避免了更新异常、插入异常和删除异常等问题。以下是对三范式的详细解释: 1. 第一范式(1NF:First Normal Form)——...

    数据库思维导图,数据库复习必看,附两份满分笔记

    3. **范式**:范式是衡量关系数据库设计质量的标准,主要包括第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)和第四范式(4NF)等。每个更高的范式都减少了数据冗余,降低了更新异常的...

    数据库应用技术 题和答案

    数据库设计通常遵循范式规则,如第一范式(1NF)、第二范式(2NF)、第三范式(3NF)和BCNF(巴斯-科德范式),以减少数据冗余和提高数据一致性。 五、事务处理 数据库中的事务是逻辑上的一组操作,要么全部执行,...

    数据库资料数据库的资料

    6. 数据库范式理论:范式是衡量数据库设计规范化程度的标准,如第一范式(1NF)、第二范式(2NF)、第三范式(3NF),以及更高的BCNF(Boyce-Codd范式)和第四范式(4NF)。遵循这些范式可以减少数据冗余,提高数据...

    Accp8.0\S2\使用Java实现数据库编程 第二章

    4.事务管理:学习在Java中处理数据库事务的概念,如ACID属性(原子性、一致性、隔离性和持久性),以及如何设置事务的隔离级别。 5.批处理:掌握使用PreparedStatement的批处理功能,提高批量数据操作的效率。 6....

    数据库系统及应用 崔巍(高教)

    5. **数据库设计**:涵盖需求分析、概念设计(ER模型)、逻辑设计(转换为关系模式)和物理设计,强调数据库的规范化理论,如第一范式(1NF)、第二范式(2NF)、第三范式(3NF)和BCNF。 6. **数据库完整性**:...

    Java数据库面试题

    在设计数据库时,需要注意三大范式的要求,即第一范式、第二范式和第三范式。第一范式要求每个字段只能存储一个值,第二范式要求每个属性只依赖于关键字,第三范式要求不包含传递依赖性。遵守这三大范式可以确保...

    哈尔滨理工大数据库试题

    10. 数据库事务处理:在登录日志文件时,通常先登录日志,后写数据库,以确保即使系统崩溃,也能通过日志恢复数据。 在试题的简答题部分,讨论了数据库可能遇到的故障类型(事务故障、系统故障、介质故障、计算机...

    数据库系统概论电子教案

    8. 数据库事务: 事务是一系列数据库操作的逻辑单元,必须全部成功或全部失败。ACID属性(原子性、一致性、隔离性和持久性)确保事务处理的正确性。 9. 数据库备份与恢复: 为了防止数据丢失,数据库需要定期备份...

    吉林大学数据库ppt和实验报告.zip

    - `ch16.ppt`: 可能涵盖了数据库备份与恢复技术,讨论了事务日志、差异备份和增量备份等策略,以及如何在数据丢失或系统故障后恢复数据。 - `ch17.ppt` 和 `ch19.ppt`: 这些章节可能探讨了更高级的主题,如数据库...

    数据库参考数据库试题大全

    试题可能会要求你进行数据库的规范化设计,如第一范式(1NF)、第二范式(2NF)、第三范式(3NF)和BCNF(巴斯-科德范式)。 5. **数据库安全性与完整性**:这部分可能涉及访问控制、权限管理、角色分配、视图的...

    数据库作业和试卷

    在设计数据库时,我们遵循规范化理论,这包括第一范式(1NF)、第二范式(2NF)、第三范式(3NF)和BCNF(巴斯-科德范式)。这些范式帮助我们减少数据冗余,提高数据的一致性和完整性。此外,数据库设计还包括ER模型...

Global site tag (gtag.js) - Google Analytics