一:数据库设计之模式设计
数据库模式设计是数据库逻辑设计的基础;
模式分解包括:
1>无损连接:保证依赖关系R可以被分解成的Ri恢复;
2>保持函数依赖:关系模式的FD集在分解后仍然在数据库模式中保持不变;
3>无损连接加保持函数依赖:上述两者的综合;
ER模型:包括实体,属性,实体与实体间的联系;
数据库设计的原则:实体尽可能少,能作为属性的就不要作为实体。
数据字典包括:数据项,数据结构,数据流,数据存储,数据处理。
二:数据库上的索引结构
1>顺序索引结构
(1)密集索引:查找索引项,跟踪指针即可;
(2)稀疏索引:一般情况为块的第一个建立索引项;
(3)多级索引:索引上再加索引;
2>辅助索引:无序,索引只能用密集索引;如果有重复的键值,就利用间接桶,节省空间。
3>倒排索引:应用于文档检索,与辅助索引思想类似,为每个检索词建立间接桶;
4>B+树索引:所有节点格式相同,n个关键字,n+1个指针;适用于主索引也适用于辅助索引;查找时,从根节点开始沿指针一直到达叶子节点,然后顺序查找;
5>散列索引:利用hash的思想简历索引;利用率在50%~80%之间最好; 对于文件增长可采用动态散列表方法解决:包括:可扩展散列表(成倍增加桶的个数) 线性散列表( 线性增加)
三:查询优化
1>语法分析:构造语法分析树(根据SQL语句生成)
2>初始逻辑计划生成:将语法分析树转化为逻辑表达式树---逻辑查询计划
3>查询重写:将初始查询计划转化为优化的逻辑查询计划
4>查询计划代价估计:中间关系代价估计,I/O代价估计,物理查询计划生成;
5>物理查询计划选择
四:数据库恢复
数据库保护通过四方面来体现:
1>数据库的恢复技术;
2>并发控制技术;
3>完整性控制技术;
4>安全性控制技术;
事务的ACID性质(atomicity,consistency,isolation,durability):
原子性:事务要么都做要么都不做;
一致性:事务的结果必须让数据库从一个一致性状态到另一个一致性状态;
隔离性:多个并发事务之间要相互隔离;
持久性:事务一旦被提交,数据库的改变就是永久性的;
日志恢复:undo日志,redo日志,undo/redo日志;
五:并发控制:通过锁进行控制,分为slock(share lock)和xlock(写锁)update lock,多粒度锁;