明天上考场,现在最需要的不是刷新题,而是把高频考点、易错细节、答题模板过一遍。作为去年压线飘过(上午71,下午65)的“实战派”,我把考前熬夜整理的核心考点清单+案例题模板+避坑红榜全整理出来,帮你用最短时间抓最稳的分!

一、基础概念篇:这些“必考题”必须刻进DNA(上午题30%分值)

1. 数据库系统核心术语(选择题重灾区)

  • 数据模型三层体系结构(常考选择):

    • 外模式(用户视图,如某个用户看到的表结构)→ 模式(全局逻辑结构,如数据库所有表的定义)→ 内模式(物理存储结构,如索引、文件存储方式)。
    • 两级映射:外模式/模式(保证逻辑独立性)、模式/内模式(保证物理独立性)。
      口诀:外-模→逻辑独立;模-内→物理独立
  • 候选码 vs 主码 vs 外码(必背!):

    • 候选码:能唯一标识元组的最小属性集(可能有多个,如学生表中“学号”和“身份证号”都是候选码)。
    • 主码:从候选码中选一个(唯一,如选“学号”作为主码)。
    • 外码:其他表的主码(如选课表中的“学号”是学生表的外码)。

2. 范式判断:从“蒙圈”到“秒选”(上午+下午都考)

关键步骤:找主码→确定非主属性→检查部分依赖→检查传递依赖→检查主属性依赖。

示例1:判断关系R(学号, 姓名, 课程号, 成绩)的范式
  • 主码:(学号, 课程号)(因为只有两个属性组合才能唯一确定一条记录)。
  • 非主属性:姓名、成绩。
  • 部分依赖?姓名只依赖“学号”(部分依赖主码)→ 不满足2NF(只满足1NF)。
示例2:关系R(学号, 姓名, 系别, 系主任)
  • 主码:学号(唯一标识元组)。
  • 非主属性:姓名、系别、系主任。
  • 传递依赖?学号→系别,系别→系主任→ 系主任传递依赖学号→ 不满足3NF(只满足2NF)。
示例3:关系R(仓库, 商品, 数量, 管理员),已知管理员→仓库
  • 主码:(仓库, 商品)(组合唯一标识)。
  • 主属性:仓库、商品;非主属性:数量、管理员。
  • 主属性依赖?管理员→仓库(仓库是主属性,但依赖于非主属性管理员)→ 违反BCNF(因为BCNF要求所有决定因素都包含候选码)。

二、数据库设计流程:下午题的“命门”(占分≥30%)

1. 需求分析→概念设计→逻辑设计→物理设计(每步输出要记死)

阶段 核心任务 关键输出 常考问题
需求分析 收集用户需求 数据流图(DFD)、数据字典(DD) “DFD的四个基本元素是?”(加工、数据源、数据流、数据存储)
概念设计 抽象业务模型 ER图(实体-联系-属性) “ER图中联系的类型?”(1:1/1:n/m:n)
逻辑设计 ER图转关系模式 关系模式(带主码、外码) “m:n联系如何转表?”(新建联系表,主码为两端主码组合)
物理设计 确定存储结构和索引 索引方案、文件存储方式 “聚集索引 vs 非聚集索引?”(聚集索引决定数据物理顺序,一个表只能有一个)

2. ER图转关系模式:手把手教你写(下午题必得分)

步骤1:实体转表
实体的所有属性作为表的字段,主码是实体的标识符(如学生实体→学生表(学号, 姓名, 年龄),主码=学号)。

步骤2:处理联系

  • 1:1联系:任选一端表中加入另一端主码作为外码(如部门和经理是1:1,可在部门表中加“经理ID”外码REFERENCES员工表(员工ID))。
  • 1:n联系:在n端表中加入1端主码作为外码(如部门和员工是1:n,员工表加“部门ID”外码)。
  • m:n联系:必须新建联系表(主码=两端主码的组合,外码分别指向两端表)。

案例:学生(学号,姓名)、课程(课程号,名称)、教师(工号,姓名),其中学生和课程是m:n(选课),教师和课程是1:n(一门课由一个教师教)。
→ 关系模式:

  • 学生表(学号, 姓名) [主码:学号]
  • 课程表(课程号, 名称, 工号) [主码:课程号;外码:工号 REFERENCES 教师表(工号)]
  • 选课表(学号, 课程号, 成绩) [主码:(学号, 课程号);外码:学号 REFERENCES 学生表(学号),课程号 REFERENCES 课程表(课程号)]

三、SQL实战:下午题“直接抄”的模板(占分20%+)

1. 约束条件:写对就能得分(别漏关键字!)

CREATE TABLE 学生 (
    学号 CHAR(10) PRIMARY KEY,  -- 主码约束
    姓名 VARCHAR(20) NOT NULL,  -- 非空约束
    年龄 INT CHECK(年龄>0 AND 年龄<100),  -- 自定义检查约束
    系别 CHAR(20) REFERENCES 系表(系别代码)  -- 外码约束(系别代码是系表的主码)
);

2. 复杂查询:高频考点+示例(窗口函数必考!)

示例1:分组统计(求各班级平均分≥80的学生)
SELECT 班级, AVG(成绩) AS 平均分
FROM 学生表
GROUP BY 班级
HAVING AVG(成绩) >= 80;  -- 注意:过滤分组用HAVING,不是WHERE
示例2:窗口函数(按成绩排名,相同分数并列)
SELECT 学号, 成绩,
       DENSE_RANK() OVER(ORDER BY 成绩 DESC) AS 排名  -- DENSE_RANK()处理并列(如两个90分都排第1,下一个85排第2)
FROM 学生表;
示例3:多表连接(查选了“数据库”课程的学生姓名)
SELECT 学生.姓名
FROM 学生
JOIN 选课 ON 学生.学号=选课.学号
JOIN 课程 ON 选课.课程号=课程.课程号
WHERE 课程.名称='数据库';

四、事务与并发控制:案例题的“送分点”(下午常考)

1. 事务状态与故障类型(选择题常考)

  • 事务状态:活动→部分提交→提交/失败→终止。
  • 故障类型:
    • 事务内部故障(如运算错误,需回滚)。
    • 系统故障(断电,需Undo未提交事务+Redo已提交事务)。
    • 介质故障(磁盘损坏,需恢复备份+日志)。

2. 封锁协议与隔离级别(避坑!)

  • 一级封锁协议:写数据时加X锁,直到事务结束(防“丢失修改”)。

    • 反例:事务T1读数据A=10,事务T2读A=10并修改为20(未加锁),T1再修改A=30→最终A=30(丢失T2的修改)。
  • 三级封锁协议:一级+读数据时加S锁直到事务结束(防“丢失修改+脏读+不可重复读”)。

    • 脏读场景:事务T1修改A=20(未提交),事务T2读A=20(加S锁但读完释放),T1回滚→T2读到脏数据。

五、备份与恢复:案例题“按模板答”(下午必背)

1. 备份策略选择(根据场景选)

  • 完全备份:适合数据量小、恢复要求高(如财务系统,每天凌晨全备)。
  • 增量备份:适合数据变化频繁(如日志系统,全备+每日增量)。
  • 差异备份:折中方案(全备+每日差异,恢复时只需全备+最后一次差异)。

2. 恢复步骤(按顺序写!)

  • 系统故障恢复
    1. 撤销所有未提交事务(Undo):反向扫描日志,将事务修改过的数据恢复到旧值。
    2. 重做所有已提交事务(Redo):正向扫描日志,将事务修改过的数据恢复到新值。

六、最后1天:这些“小细节”决定你过不过!

  • 上午题:遇到“CAP定理”别慌(C一致性、A可用性、P分区容忍性,分布式系统中P必选,所以选CP或AP)。
  • 下午题:ER图用矩形(实体)、椭圆(属性)、菱形(联系),联系要标类型(如1:n)。
  • SQL题:关键字大写(如SELECT、FROM),表名/列名用中文时加引号(如WHERE 姓名='张三')。
  • 计算题:范式判断、主码计算写清步骤(“主码是(学号,课程号),因为…”),别直接写结论。

最后提醒:软考是通过性考试,90分就过!别纠结偏题怪题,把这份笔记里的高频点过2遍,错题本翻1遍,明天稳住心态,你一定能过!等你考完回来报喜~ 🎉

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐