数据库面试
数据库模型
数据模型构成: 数据结构, 数据操作, 数据完整性条件约束
- 概念模型
- 根据用户观点对数据进行建模, 用于数据库设计
- 逻辑模型和物理模型
- 按计算机观点对数据建模, 用于数据库实现
关系的完整性
- 实体完整性(主属性非NULL)
- 用户自定义完整性(用户定义的 主键, null, )
- 参照完整性(外键)
数据库安全性控制
- 用户身份鉴别
- 口令
- 生物特征
- 智能卡
- 存取控制
- 强制存取控制
标记和数据是不可分的 对数据库定义密级, 对人定义密级, 高于密级的人 不能修改数据库内容, 低于密级的人不能查看数据库 内容
- 自主存取控制
gant all_priviliges on <table> to user; revoke all_priviliges on <table> from user;
- 视图
通过视图可以隐藏保密数据, 可以定义权限 - 审计
将用户进行的所有对数据库的操作写入审计日志- 数据库启动, 关闭
- 数据库增删改查
audit alter, update on <table>;
- 数据库加密
- 存储加密
只有授权用户读取存储数据才能正确解密 - 传输加密
数据传输过程中加密, 到达后解密
- 存储加密
数据库完整性
为了维护数据库的完整性, 数据库系统必须提供一下功能:
定义完整性约束条件的机制 (主码)
提供完整性的检查方法 (外键)
进行违约处理(级联, no action) (空, 唯一, check)
规范化
- 1NF
= 字段不可拆分 - 2NF
- 非主属性完全依赖于候选码
- 3NF
- 非主属性不传递依赖于码 + 2NF
数据库设计
- 需求分析
分析用户需求 - 概念设计
对用户需求进行抽象 ER模型 - 逻辑设计
将概念设计转化为数据模型 - 物理设计
为逻辑结构选择存取方法和存储结构 - 数据库实施
建立数据库 - 数据库运行和维护
运行评估维护
查询优化
数据库恢复技术
- 事务的特性: 原子性, 一致性, 隔离性, 持续性
一致性是通过原子性和隔离性保证的 - 事务故障
- 事务内部故障(数据库出错)
- 强行回滚
- 系统故障 (操作系统出错)
- 重做
- 介质故障 (硬件出错)
- 重装数据库, 重做
- 计算机病毒
- 冗余
- 事务内部故障(数据库出错)
- 数据恢复
静态转储: 当数据库中所有事物都运行完之后, 终止所有事物操作, 将数据备份 动态转储: 实时将数据备份, 期间允许数据修改, 动态转储的数据不一定有效, 因为他不暂停正在运行的事务 日志文件: 记录事务对数据库的更新操作文件 先写日志, 后做操作. 记录并发事务的执行时间次序 日志文件用于系统故障和事务故障, 动态存储的 数据恢复 检查点: 使用日志文件, 恢复到某个检查点