数据库基础知识
2009-07-06 11:30
204 查看
事务隔离级别
数据库通过某种机制,在并行的多个事务之间进行分隔,使每个事务在其执行过程中保持独立。数据库操作过程中可能出现三种不确定情况:
脏读取:一个事务读取了另一个并行事务未提交的数据。
不可重复读取:一个事务再次读取之前读过的数据时,发现该数据已经被另一个已提交的事务修改。
虚读:一个事务重新执行一个查询,查询结果包含因为其他最近提交的事务而产生的新记录。
为避免上述情况,SQL规范定义如下4个隔离等级:
Read Uncommitted......最低的事务隔离级别,仅仅保证读取过程中不会读取到非法数据,这种隔离级别,上述三种情况都可能发生。
Read Commited......保证一个事务不会读到另一个并行事务已修改但是未提交的数据,也就是说此隔离级别避免了脏读取,此隔离级别是大多数主流数据 库的默认事务等级。
Repeatable Read......此隔离等级避免了脏读取和不可重复读取情况,意味着一个事务不可能更新已经由另一个事务读取但未提交的数据。此隔离等级带来了更多性 能损失,而且可能出现虚读,如果当前数据库由应用所独享,可以通过乐观锁达到同样的目的。
Serializable......最高级别的事务隔离,可以规避上述三种情况。逻辑上所有事务都处于一个执行队列,依次执行。此事务隔离生产系统中很 少使用,因为会带来昂贵的性能开销。
设计范式
详细解释可参见blog.csdn.net/owenzh/archive/2006/03/26/638692.aspx第一范式:数据库表中的每一列都是不可再分的,原子性的。
第二范式:数据库表中的非主键列必须完全依赖于所有侯选关键字,不存在非关键字段对任一侯选关键字的部分函数依赖。
第三范式:数据库表中的非主键字段对任一侯选关键字段的传递函数依赖。比如学号,姓名, 系号,系名称,系地址。系地址直接信赖于系号,系号信赖于学号,系地址是通过系号间接信赖于主键列的。
第四范式:在一个多对多的关系中,独立的实体不能存放在同一个表格中。比如学生和课程是多对多的关系,应该建立三张表,学生表,课程表和学生课程关系表, 而不能把学生和课程保存在一张表中。
第五范式:原来的表格必须可以通过由它分离出去的表格重新构建,使用这个规定的好处是,可以确保不会在分离的表格中 引入多余的列,所有你创建的表格结构都与它们的实际需要一样大。应用这条规定是一个好习惯,不过除非你要处理一个非常大型的数据,否则你将不需要用到它。
相关文章推荐
- 一句话学习数据库基础知识
- 数据库基础知识参考试题及答案解析
- [数据库]基础知识搜集
- 数据库基础知识 关系
- 数据库事务基础知识。
- 数据库基础知识总结
- 数据库基础知识整理
- 基于C#的MongoDB数据库开发应用(1)--MongoDB数据库的基础知识和使用
- Mysql基础知识:操作数据库
- Java数据库连接——JDBC基础知识(操作数据库:增删改查)
- 数据库基础知识
- 数据库基础知识--数据库知识的一些小总结
- C#基础知识回顾:2.使用DbProviderFactory实现多数据库访问
- 数据库基础知识
- 数据库基础知识
- 数据库基础知识记录
- SQL使用数据库引擎存储过程,系统视图查询,DBA,BI开发人员必备基础知识
- NoSQL数据库的基础知识
- 数据库基础知识整理——关系数据库
- 数据库基础知识复习