数据库重要概念简述

数据库系统的三级模式

模式:概念模式或逻辑模式,一个数据库只有一个概念模式。

外模式,:子模式, 一个数据库可以有多个外模式。

内模式,: 存储模式, 一个数据库只有一个内模式。

数据库的二级映像功能:

外模式/模式映像,对应于同一个模式可以有任意多个外模式。

模式/内模式映像, 数据库中只有一个模式,也只有一个内模式,所以模式/内模式映像是唯一的。


范式

关系数据库有六种范式: 1NF > 2NF > 3NF > BCNF > 4NF > 5NF

满足最低要求的范式是1NF。一般说来,数据库只需满足3NF就行了。越高的范式数据库的冗余度就越低。

1NF 第一范式:无重复的列

2NF 第二范式:符合1NF,并且有主键,非主键字段依赖主键

3NF 第三范式:符合2NF,并且非主键属性不能相互依赖

BCNF 符合3NF, 并且主属性不依赖于主属性

4NF 第四范式:符合3NF,并且要求把同一表中的多对多的关系删除

5NF 第五范式:符合4NF,并且将表分割成尽可能小的块,为了排除在表中所有的冗余

 
聚集索引和非聚集索引

索引系统多采用平衡树B-Tree。

聚集索引中的键值的逻辑顺序决定了表中的相应行的物理顺序。

非聚集索引中索引的逻辑顺序与磁盘上行的物理存储顺序不同。

群集索引通常比非群集索引快

仅在将得到高级别选择行的列上放置非聚集索引。

所有的数据操作语言(DML insert, update, delete, select)语句可以通过索引获益,但是插入删除和更新会因为索引而变慢。索引有助于查询的查找过程,但是任何修改数据的行为将有额外的工作要做。(除了实际数据外,还要维护索引)

索引会占用空间。

仅当索引中的第一类和查询相关时才使用索引。

索引的负面影响和它的正面影响一样多—了解为什么建立索引,以及为什么只建立需要的索引。

索引可为非结构化的XML数据提供结构化的数据性能,但是要记住,和其他索引一样,这会涉及系统开销。

第一,对于那些在查询中很少使用或者参考的列不应该创建索引

第二,对于那些只有很少数据值的列也不应该增加索引。

第三,对于那些定义为text, image和bit数据类型的列不应该增加索引。

第四,当修改性能远远大于检索性能时,不应该创建索引。

 

事务

使用事务,可以确保需要发生的事情作为一个单元发生,或者什么也不做。

ACID: 原子性,一致性,隔离性和持久性。

事务三种模型: 隐式事务(每一条数据操作语句)、显式事务、自动事务。

并发操作可以带来数据的不一致性:丢失更新,读脏数据,不可重复读,产生幽灵数据。

 
Join

数据库常见的join方式有三种:inner join、left outter join、right outter join(还有一种full join,因不常用)

inner join:将两表中符合on条件的所有记录都找出来。

Left outter join: 将左表的所有记录列出,右表中只要符合on条件的,与左表记录相拼合,不符合条件的,填以null值。

right outter join: 将右表的所有记录列出,左表中只要符合on条件的,与右表记录相拼合,不符合条件的,填以null值。

 

避免不一致性的方法和技术就是并发控制。最常用的并发控制技术是封锁技术。

基本的封锁类型有两种 : 排它锁(Exclusive Locks,简称X锁,写锁) 和共享锁(Share Locks,简称S锁,读锁)。

X锁:用于不更改或不更新数据的操作(只读操作),如SELECT 语句。

S锁:用于数据修改操作,例如 INSERT、UPDATE 或 DELETE。确保不会同时同一资源进行多重更新。

sqlserver中还有更新锁,意向锁(意向共享锁,意向排他锁,共享意向排他锁),模式锁(模式修改锁,模式稳定性锁定),批量更新锁。

 

避免死锁的方法:

按相同的顺序使用对象;使食物尽可能简短并且在一个批处理中;尽可能使用简短并且在一个批处理中;进可能使用最低的事务隔离级别;在同一事务中不允许无限度的终端(用户交互,批处理分离);在控制环境中,使用绑定连接;

 
故障恢复方法

基本原理:建立数据冗余, 数据转储和日志文件

防止介质故障,可以数据库镜像

数据库高可用性可以采用双机热备(分主从active/standby, 互备active/active)和多点集群技术。

 

存储过程

存储在数据库中的完成特定功能的SQL语句集,可以通过名字带参数调用执行。

 
触发器

特殊的存储过程,通过事件(增删改)进行触发而被执行的。其在表中数据发生变化是自动强制执行。

常见的有两种:after(for) 表示执行代码后执行触发器,instead of表示执行代码前,用已经写好的触发器代替你的操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值