第一节:数据库完整性
1.完整性约束条件的作用对象包括元组、列、表
2.列级约束主要包括:
(1)对数据类型的约束,包括数据类型、长度、精度等
(2)对数据格式的约束
(3)对取值范围或取值集合的约束
(4)对空值的约束
3.关系模型中包括实体完整性、参照完整性、用户自定义完整性三类完整性约束
4.在MySQL中,实体完整性通过主键约束和候选键约束来实现
5.命名完整性约束的方法是在各种完整性约束的定义说明之前加上关键字“constraint”和该约束的名字
6.在MySQL中,指定一个外键时需要遵守的规则包括:
(1)被参照表必须已经用一条create table语句创建了,或者必须是当前正在创建的表,如若是后一种情形,则被参照表与参照表是同一个表,这样的表成为自参照表,这种结构成为自参照完整性
(2)必须为被参照表定义主键
(3)必须在被参照表的表名后面指定列名或列名的组合,这个列或列组合必须是这个被参照表的主键或候选建
(4)尽管主键是不能包含空值的,但允许在外键中出现一个空值。这意味着,只要外键的每个非空值出现在指定的主键中,这个外键的内容就是正确的
(5)外键中的列的数目必须和被参照表的主键中的列的数目相同
(6)外键中的列的数据类型必须和被参照表的主键中的对应列的数据类型相同
第二节:触发器
1.触发器是用户定义在关系表上的一类由事件驱动的数据库对象,也是一种保证数据完整性的方法
2.触发器的主要作用:
触发器的主要作用是实现主键和外键不能保证的复杂的参照完整性和数据一致性,从而有效保护表中的数据
3.在触发器的创建中,每个表每个事件每次只允许一个触发器,所以,每个表最多支持6个触发器,单一触发器不能与多个事件或多个表关联
4.MySQL支持的触发器有:
insert触发器、delete触发器、update触发器
第三节:安全性与访问控制
1.数据库的安全性是指保护数据库以防止不合法的使用而造成数据泄露、更改或破坏
2.在MySQL数据库中,数据库系统对数据的安全管理是使用身份证验证、数据库用户权限确认等访问控制措施,来保护数据库中的信息资源,以防止这些数据遭受破坏
3.MySQL的用户账号及相关信息都存储在一个名为mysql的MySQL数据库中,这个数据库有一个名为user的数据表,包含了所有用户账号,并且它用一个名为user的列存储用户的登录名
4.可以使用grant语句来实现权限的授予,权限的转移可以通过在grant语句中使用with子句来实现。如果将with子句指定为关键字“with grant option”,则表示to子句中指定的所有用户都具有把自己所拥有的权限授予其他用户的权利,而无论其他用户是否拥有该权限。当需要撤销一个用户的权限而又不希望将该用户从系统中删除时,可以使用revoke语句来实现。要使用revoke语句,必须拥有mysql数据库的全局create user权限或者update权限
第四节:事务与并发控制
1.为了保证数据的一致性和正确性,数据库系统必须保证事务具有四个特征(ACID特征),即:
原子性、一致性、隔离性、持久性
2.当多个事务交错执行时,可能出现不一致的问题,这也称为并发操作问题,包括:
丢失更新、不可重复读、和读“脏”数据
3.简述封锁的基本思想:
需要时,事务通过向系统请求对它所希望的数据对象加锁,以确保它不被非预期改变
4.通过粒度来描述封锁的数据单元的大小。DBMS可以决定不同粒度的锁,由最底层的数据元素到最高层的整个数据库,粒度越细,并发性就越大,但软件复杂性和系统开销也就越大
5.两个以上事务循环等待被同组中另一事务锁住的数据单元的情形,成为“死锁”
6.死锁的预防主要有以下方法:
(1)一次性锁请求 每一事务在处理时一次提出所有的锁请求,仅当这些请求全部满足时事务处理才进行,负否则让其等待,这样则不会出现死锁地情况
(2)锁请求排序 将每个数据单元标以线性顺序,然后要求每一事务都按照此顺序提出锁请求
(3)序列化处理 通过应用设计为每一数据单元建立一个”主人“程序,对给定数据单元的所有请求都发送给”主人“,而”主人“以单道的形式运行
(4)资源剥夺 每当事务因锁请求不能满足而受阻时,强行令两个冲突的事务中的一个rollball,释放所有的锁,以后再重新运行。这个方法得注意防止活锁的发生
7.事务划分成以下两个阶段:
(1)发展或加锁阶段
(2)收缩或释放阶段
第五节:备份与恢复
1.造成数据库运行事务异常中断的因素:
计算机硬件故障、计算机软件故障、病毒、人为误操作、自然灾害和盗窃
2.数据库备份是指通过导出数据或者复制表文件的方式来制作数据库的副本;
数据库恢复则是当数据库出现故障或遭到破坏时,将备份的数据库加载到系统,从而使数据库从错误状态恢复到备份时的正确状态