基本概念
属性(Attribute):在现实世界中,要描述一个事物常常取若干特征来表示。这些特征称为属性
域(Domain):每个属性的取值范围对应一个值的集合,称为该属性的域
目或度(Degree):目或度指的是一个关系中属性的个数
候选码(Candidate Key):若关系中的某一属性或属性组的值,能唯一地标识一个元组,则称该属性或属性组为候选码
主码(Primary Key):或称主键,若一个关系有多个候选码,则选定其中一个作为主码
主属性(Prime Attribute):包含在任何候选码中的属性称为主属性
外码(Foreign Key):如果关系模式 R 中的属性或属性组不是该关系的码,但它是其他关系的码,那么该属性对关系模式 R 而言是外码
全码(All-key):关系模型的所有属性组是这个关系模式的候选码,称为全码
关系代数运算
关系代数的运算符有 4 类:集合运算符、专门的关系运算符、算术比较符和逻辑运算符
集合运算符和专门的关系运算符
外连接运算符
关系数据库设计基本理论
完全函数依赖
X->Y,如果不存在X的子集X'能决定Y,则是完全依赖
部分函数依赖
X->Y,如果存在X的子集X'能决定Y,则是不完全依赖
传递依赖
若X->Y,Y->C,则X->C
函数依赖的公理系统(Armstrong 公理系统)
从已知的一些函数依赖,可以推导出另外一些函数依赖,这就需要一系列推理规则,这些规则常被称作“Armstrong 公理”
推理规则
传递律
若X->Y,Y->Z,则X->Z
合并规则
若X->Y,X->Z,则X->YZ
伪传递规则
若X->Y,WY->Z,则XW->Z
分解规则
若X->Y,Z是Y的子集,则X->Z
关系数据库的规范化
第一范式1NF
属性不可以再分解
举例:家庭信息里几口人、住址,不应该以逗号分隔方式放到一个属性里,应该拆分成多个属性
第二范式2NF
不存在非主属性对候选码的部分函数依赖
举例:订单的金额和时间应该放在主表,不应该冗余在订单明细表
第二范式需要确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关(主要针对联合主键而言)。
第三范式3NF
任何非主属性不依赖于其它非主属性(在2NF基础上消除传递依赖)
举例:订单表里只存储下单人id即可,不需要存储下单人姓名、手机号,这俩个属性依赖下单人id,不依赖订单号
第三范式需要确保数据表中的每一列数据都和主键直接相关,而不能间接相关
巴斯-科德范式BCNF
消除主属性对码的部分函数依赖和传递函数依赖
举例:仓库的管理员和存储物品不能都放到仓库明细表,应该拆成仓库管理员表和仓库物品表
BCNF范式排除了任何属性(不光是非主属性,2NF和3NF所限制的都是非主属性)对候选键的传递依赖与部分依赖
事务管理
DBMS 运行的基本工作单位是事务,事务是用户定义的一个数据库操作序列,这些操作序列要么全做,要么全都不做,是一个不可分割的工作单位。
特性:
原子性(Atomicity):事务是数据库的逻辑工作单位,事务的所有操作在数据库中要么全做,要么全都不做。
一致性(Consistency):事务的执行使数据库从一个一致性状态变成另一个一致性状态。
隔离性(Isolation):一个事务的执行不能被其他事务干扰。
持久性(Durability):指一个事务一旦提交,它对数据库的改变必须是永久的,即便系统出现故障时也是如此。<br>
并发控制
在多用户共享系统中,许多事务可能同时对同一数据进行操作,称为并发操作
并发控制子系统负责协调并发事务的执行,保证数据库的完整性不受破坏,同时避免用户得到不正确的数据
并发控制的主要技术是封锁,主要有两种类型的封锁:
共享型封锁(S 封锁)
读锁阻塞其他事务写操作,不阻塞其他事务读操作
数据库的备份与恢复
备份(转储)与恢复:
备份是指通过数据转储和监理日志文件的方法监理冗余数据,DBA定期地将整个数据库复制到磁带或另一个磁盘上保存起来的过程
这些备用的数据文本称为后备副本
数据库的恢复是指把数据库从错误状态恢复到某一个已知的正确状态的功能
备份分类包括以下 4 种:
静态备份:指备份期间不允许(或不存在)对数据库进行任何存取、修改活动。
动态备份:指备份期间允许对数据库进行存取或修改,即备份和用户事务可以并发执行
海量备份:指每次备份全部数据库
增量备份:指每次只备份上次备份后更新过的数据。如果数据库很大,事务处理又十分频繁,则增量备份方式是很有效的
数据库的 4 类故障:事务故障、系统故障、介质故障、计算机病毒
事务故障的恢复有两个操作:撤销事务(UNDO)和重做事务(REDO)
介质故障的恢复由数据库管理员装入数据库的副本和日记文件副本,再由系统执行撤销和重做操作。<br>