SQL,范式,事务

数据库范式:

构造数据库必须遵循一定的规则。在关系数据库中,这种规则就是范式。

范式是符合某一种级别的关系模式的集合。数据库中的关系必须满足一定的要求,即满足不同的范式。

满足最低要求的范式是第一范式。在第一范式的基础上进一步满足更多要求的称为第二范式,其余范式以次类推。一般说来,数据库只需满足第三范式就行了。

第一范式(1NF):

在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库。 
所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。

-----第一范式就是无重复的列。

第二范式(2NF):

第二范式是在第一范式的基础上建立起来的,即满足第二范式必须先满足第一范式。第二范式要求数据库表中的每个实例或行必须可以被惟一地区分。

为实现区分通常需要为表加上一个列,以存储各个实例的惟一标识。

-----第二范式就是非主属性非部分依赖于主关键字。

第三范式(3NF):

满足第三范式必须先满足第二范式。简而言之,第三范式要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。

----第三范式就是属性不依赖于其它非主属性。

数据库事务:

数据库事务(Database Transaction) 是指作为单个逻辑工作单元执行的一系列操作。

事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。

举例:

设想网上购物的一次交易,其付款过程至少包括以下几步数据库操作:

更新客户所购商品的库存信息

保存客户付款信息--可能包括与银行系统的交互

生成订单并且保存到数据库中   · 更新用户相关信息,例如购物数量等等 正常的情况下,这些操作将顺利进行,最终交易成功,与交易相关的所有数据库信息也成功地更新。但是,如果在这一系列过程中任何一个环节出了差错,例如在更新商品库存信息时发生异常、该顾客银行帐户存款不足等,都将导致交易失败。一旦交易失败,数据库中所有信息都必须保持交易前的状态不变,比如最后一步更新用户信息时失败而导致交易失败,那么必须保证这笔失败的交易不影响数据库的状态--库存信息没有被更新、用户也没有付款,订单也没有生成。否则,数据库的信息将会一片混乱而不可预测。

数据库事务正是用来保证这种情况下交易的平稳性和可预测性的技术。

begin tran (或transaction)  --开始事务

commit                               --提交事务

rollback                               --回滚事务

事务特性:

A原子性(atomicity)

C一致性(consistency)

I隔离性(isolation)

D持久性(durability)

@@ERROR 是判断事务有没有错的条件,无错时值为0,有错时值不为0。

创建事务及使用:

时间: 2024-08-06 07:58:20

SQL,范式,事务的相关文章

SQL Server 事务隔离级别详解

原文:SQL Server 事务隔离级别详解 标签: SQL SEERVER/MSSQL SERVER/SQL/事务隔离级别选项/设计数据库事务级别 SQL 事务隔离级别 概述 隔离级别用于决定如果控制并发用户如何读写数据的操作,同时对性能也有一定的影响作用. 步骤 事务隔离级别通过影响读操作来间接地影响写操作:可以在回话级别上设置事务隔离级别也可以在查询(表级别)级别上设置事务隔离级别.事务隔离级别总共有6个隔离级别:READ UNCOMMITTED(未提交读,读脏),相当于(NOLOCK)R

Sql Server 事务日志

Sql Server事务日志文件是数据库文件的重要组成部分,事务日志主要用来存放数据库的修改记录.数据库为了得到更高的写入效率和性能,同时保证ACID特性,数据在写入时,会将更新先写入事务日志,因为事务日志是连写的,所以写事务会比较快.简单来说,顺序写入时,磁盘的磁头会保持在一定的区域内连续写入,而数据写入数据文件时,有随机性,磁盘的磁头移动消耗的时间要比数据写入日志文件时多. Sql Server对于事务日志文件的管理,是将日志文件在逻辑上分成若干个文件(VLFS),方便管理. 创建一个1M的

如何截断SQL Server2008+事务日志空间

SQL数据库事务日志记录数据库的任何更改,用户可回滚事务日志来恢复数据,但随着数据库使用时间变长,日志文件也会变得很大. 若要避免数据库的事务日志被填满,例行备份至关重要.做了日志备份后,会释放不活跃的VLF,增加日志的可用空间.但默认情况下备份日志,其日志文件的大小并未变化,如下图 备份前,总大小24.13MB 备份后,总大小仍然为24.13MB,但已用空间占比从93.1%降至11.0% 也就是,已使用日志空间是减小了,但未使用日志空间并未释放.其实,如果磁盘空间足够的话,可以不用收缩空间 那

如何处理SQL Server事务复制中的大事务操作

如何处理SQL Server事务复制中的大事务操作 事务复制的工作机制 事务复制是由 SQL Server 快照代理.日志读取器代理和分发代理实现的.快照代理准备快照文件(其中包含了已发布表和数据库对象的架构和数据),然后将这些文件存储在快照文件夹中,并在分发服务器中的分发数据库中记录同步作业. 日志读取器代理监视为事务复制配置的每个数据库的事务日志,并将标记为要复制的事务从事务日志复制到分发数据库中,分发数据库的作用相当于一个可靠的存储-转发队列. 分发代理将快照文件夹中的初始快照文件和分发数

SQL Server事务执行一半出错是否自动回滚整个事务 【转】

http://www.2cto.com/database/201308/234728.html SQL Server事务执行一半出错是否自动回滚整个事务 大家都知道SQL Server事务是单个的工作单元.如果某一事务成功,则在该事务中进行的所有数据修改均会提交,成为数据库中的永久组成部分.如果事务遇到错误且必须取消或回滚,则所有数据修改均被清除. 所以是不是说事务出错一定会回滚整个事物呢? 先看几个个例子: --createtable create table testrollback(idi

XenDesktop 7 SQL Mirror事务日志增长量的计算

对其事务日志的增长量有一下几方面来进行计算: DDC心跳服务信息 站点心跳服务信息 虚拟机工作心跳服务信息 DDC心跳服务信息 每一台XD7 的DDC服务器都有10个WindowsService每隔30秒就进行一次心跳连接,以证明DDC服务器还活动并且正在运行. 每一个心跳是606 bytes,所以每一台DDC的心跳字节是6060bytes,一个小时是120个心跳,那么每一台DDC一个小时的心跳字节就是727200 bytes. 站点心跳服务信息 有一个用户的登录请求等会话信息是由一台DDC来进

(转)sql server 事务与try catch

本文转载自:http://www.cnblogs.com/sky_Great/archive/2013/01/09/2852417.html sql普通事务 begin transaction tr declare @error int; set @error=0; select * from Car_Brand set @error=@error+@@ERROR select 1/0 set @error=@error+@@ERROR select * from AREA set @error

sql锁 事务

1.数据库并发产生的问题.(这里所说的事务就是普通意义的流程,跟数据库的事务不要关联起来) 1)脏读.一个事读取了一个仍然在另一个未提交事务的范畴内的数据.read committed级别可以避免. 2)不可重复读.一个事务中两次相同的查询却返回了不同的数据.这是因为一个事务在读,然后另一个事务修改了数据,这个事务再去读,发现两次数据不一致. 3)幻读.没有锁定所有读取的行. 4)丢失更新. 2.各种锁(解决这些问题). 1)共享锁.用户在读取的时候其他用户可以读取,但是不能修改.select

SQL Server事务日志分析

SQL Server事务日志分析 fn_dblog()和fn_dump_dblog()函数介绍 SQL Server有两个未公开的函数fn_dblog()和fn_dump_dblog()非常有用并且提供的信息量很大.你可以使用这些函数来获取100多列大量的有用信息. fn_dblog()用于分析数据库当前的事务日志文件,它需要两个参数,分别为事务开始LSN和结束LSN,默认为NULL,表示返回事务日志文件的所有日志记录. 例如: SELECT * FROM fn_dblog(null,null)

SQL Server 事务嵌套

原文:SQL Server 事务嵌套 示例代码: DECLARE @TranCounter INT; SET @TranCounter = @@TRANCOUNT; IF @TranCounter > 0 -- Procedure called when there is -- an active transaction. -- Create a savepoint to be able -- to roll back only the work done -- in the procedure