数据库完整性
正确性、有效性、相容性
完整性约束
主键约束
外键约束
属性约束
域约束
断言约束
触发器约束
数据库安全性
指数据库的任何部分都不允许受到恶意侵害或未经授权的存取和修改
层次:物理层、操作系统层、网络层、人员层、数据库系统层
技术:
身份认证:用户名加口令、生物特征识别技术、基于USB Key的身份认证方法
存取控制:不同用户可以被授权使用相同或不同的数据库数据集合,通过数据库系统的存取控制机制实现
建立视图:隐藏用户不需要看见的数据,其构造基于基本表或视图
数据加密:根据一定的算法将原始数据变换为不可是别的格式,从而使得不知道解密算法的人无法获知数据的内容
审计跟踪:即监视功能
事物:
用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位
特性:
原子性:事物的所有操作要么都做,要么都不做
一致性:事物单独执行时,即在没有和其他事物并发执行的情况下,保持数据库的一致性
隔离性:一个事物的执行不能被其他事物干扰
持久性:一个事物一旦提交成功后,他对数据库中的数据的改变应该是永久的,即使系统出现故障
并发控制:在多个事物对数据库并发操作的情况下,对数据库实行的管理和控制
并发控制的好处:1.提高吞吐量和资源利用率2.减少等待时间
带来的数据不一致性问题:
丢失更新:事物并发执行时,一个事物的提交的结果破坏了另外一个事物提交的结果,导致一个修改丢失
不可重复读:一事物读取数据后,另一事物执行更新操作,使上一个事物无法在重复前一次的结果
读“脏”数据:事物1修改了某一数据并将其写回磁盘,事物2读取同一数据后,事物1由于某种原因被撤销,这时事物1将已修改过的数据恢复原值,事物2读到的数据就与数据库中的数据不一致,这种读也称为脏读
原因:事物执行时收到其他事物干扰,破坏了事物的隔离性
解决方法:封锁技术和时标技术
封锁:
排他锁(X锁):只用获得了数据的X锁的事物才可以对数据进行读取与修改,也不能再对该数据加其他锁
共享锁(S锁):获得数据共享锁的事物可读但不可修改数据,其他事物只能加S锁不能加X锁
封锁协议(三级):
一级封锁协议:事物T在修改数据A前必须先对其加X锁,直到事物结束才释放,可解决更新丢失,不能解决后两个问题
二级封锁协议:一级的基础上,事物T在对数据A进行读操作前必须先对A加S锁,读完后马上释放S锁,可防止读“脏”数据
三级封锁协议:一级的基础上,事物T在对数据A进行读操作前必须先对A加S锁,事物完成后释放S锁,可防止不可重复读与读“脏”数据
活锁:无限等待,得不到封锁,设置优先级
死锁:事物均等待对方解除封锁
预防:一次加锁法,顺序加锁法
诊断:事物依赖图
解除:选择一个处理死锁代价最小的事物,将其撤销,恢复对数据库的改变
故障:事物故障、系统故障、介质故障、计算机病毒
恢复:数据转储、日志文件