# 软考软件设计师题目总结_2026-07-05
软考软件设计师题目总结_2026-07-05下半年备考倒计时111天 | 基础精读第7天今日专题SQL高级应用与数据库规范化设计深度精讲 2026新考纲五大核心变化全面总结一、2026新考纲五大核心变化全面总结1. 需求工程模块权重提升↑至25%变化点旧考纲新考纲业务流程建模仅UML用例图新增BPMN 2.0流程建模用户需求简单需求文档新增用户故事地图INVEST六原则需求变更简要提及场景化案例增多优先级排序方法需求规格说明书了解级别掌握级别能结合真实业务场景产出备考要点BPMN核心符号事件圆圈、活动圆角矩形、网关菱形XOR/AND/OR用户故事地图三层用户活动→任务→故事INVEST原则Independent独立/Negotiable可协商/Valuable有价值/Estimable可估算/Small小/Testable可测试2. 系统设计强调架构演进与云原生↑至22%考点具体内容重要度微服务拆分原则单一职责独立部署数据自治★★★★★容器化部署Docker容器vs虚拟机对比★★★★API网关路由/限流/认证/熔断★★★★C4模型Context→Container→Component→Code四层★★★★分布式一致性CAP理论实际应用CP vs AP秒杀★★★★★Serverless无服务器架构优劣对比★★★3. 编程技术与新技术融合Python数据处理AI辅助编码实操题比重增加Go语言并发编程goroutine/channel成为新增亮点低代码平台OutSystems、翼飞等概念首次纳入4. 项目管理与质量保障敏捷实践Scrum/Kanban占比提高代码审查Code Review成为必考CI/CD流水线持续集成→持续交付→持续部署完整链路DevOps文化核心协作自动化度量共享5. 安全与合规强化数据隐私保护GDPR类要求零信任架构永不信任、始终验证个人信息保护法案例分析题预计大增国密算法SM2/SM3/SM4对比二、SQL高级查询全面精讲2.1 连接查询四种类型等值连接SELECT * FROM A JOIN B ON A.id B.id 最常用 非等值连接SELECT * FROM A JOIN B ON A.score BETWEEN B.low AND B.high 自连接 SELECT e.name, m.name AS mgr FROM emp e JOIN emp m ON e.mgr_id m.id 左外连接SELECT * FROM A LEFT JOIN B ON A.id B.id 保留左表全部 右外连接SELECT * FROM A RIGHT JOIN B ON A.id B.id 保留右表全部 全外连接SELECT * FROM A FULL JOIN B ON A.id B.id 保留两侧MySQL不支持用UNION替代性能要点连接字段必须建索引否则大表全表扫描2.2 GROUP BY与HAVING核心规则SQL执行顺序关键考试必考 FROM → WHERE → GROUP BY → 聚集计算 → HAVING → SELECT → ORDER BY对比项WHEREHAVING作用阶段分组前过滤原始行分组后过滤聚合结果能否用聚集函数❌ 不能✅ 可以能否用列别名❌ 不能✅ 可以部分数据库使用场景过滤原始数据过滤分组结果经典秒杀-- 查询平均分80的部门SELECTdept_id,AVG(score)ASavg_scoreFROMstudentGROUPBYdept_idHAVINGAVG(score)80;-- 不能用WHERE AVG(score)80-- 统计每个部门人数3的部门SELECTdept_id,COUNT(*)AScntFROMempGROUPBYdept_idHAVINGCOUNT(*)3;2.3 子查询分类与性能分类返回值关联运算符示例单行子查询一个值, , WHERE salary (SELECT AVG(salary) FROM emp)多行子查询多个值IN, ANY, ALLWHERE dept_id IN (SELECT id FROM dept WHERE city‘北京’)多列子查询多列通常用于组合匹配WHERE (dept_id, job) IN (SELECT dept_id, job FROM emp WHERE name‘张三’)EXISTS vs IN 秒杀-- EXISTS只关心有无结果不关心具体值效率通常更高SELECT*FROMdept dWHEREEXISTS(SELECT1FROMemp eWHEREe.dept_idd.id)-- IN需要返回完整结果集大数据量时效率低SELECT*FROMdept dWHEREd.idIN(SELECTdept_idFROMemp)相关子查询 vs 非相关子查询非相关子查询独立执行效率高 → 先执行子查询相关子查询依赖父查询的值为每一行重复执行 → 大数据量用连接替代三、SQL数据定义与更新3.1 五大约束类型约束关键字作用考试频率主键约束PRIMARY KEY非空唯一保证实体完整性★★★★★外键约束FOREIGN KEY … REFERENCES保证参照完整性★★★★★非空约束NOT NULL不允许NULL值★★★唯一约束UNIQUE允许NULL但必须唯一★★★★检查约束CHECK自定义业务规则★★★外键级联操作ONDELETECASCADE-- 父表删除时自动删除子表相关行ONDELETESETNULL-- 父表删除时子表外键设为NULLONUPDATECASCADE-- 父表更新时自动级联更新子表3.2 视图、索引、DML对比操作DDL定义DML操纵特点视图CREATE VIEWSELECT虚拟表不存数据存查询定义索引CREATE INDEX-加快查询降低写入速度INSERT-插入数据需提交事务才生效UPDATE-更新数据WHERE不可遗漏DELETE-删除数据删数据不删结构DELETE vs DROP vs TRUNCATE操作作用可回滚速度DELETE删除数据行✅ 可回滚慢TRUNCATE清空整表数据❌ 不可回滚快DROP TABLE删除表结构数据❌ 不可回滚最快四、函数依赖理论规范化基础4.1 三种函数依赖完全函数依赖X→F Y Y完全依赖X去掉X的任何部分都不能决定Y 部分函数依赖X→P Y Y只依赖X的一部分 传递函数依赖X→T Z X→Y, Y→Z, Y⊄X, Y↛X经典真题秒杀关系 SC(Sno, Cno, Grade) (Sno, Cno) → Grade → 完全函数依赖去掉Sno或Cno都不能决定Grade 关系 S(Sno, Cno, Sname) (Sno, Cno) → Sname → 部分函数依赖Sno就能决定Sname 关系 Student(Sno, Dno, Dname) Sno → Dno → Dname → 传递函数依赖4.2 候选键求解四步法步骤1将属性分为四类 L类仅出现在FD左部 → 一定属于候选键 ✅ R类仅出现在FD右部 → 一定不属于候选键 ❌ N类FD左右都没出现 → 一定属于候选键 ✅ LR类FD左右都出现 → 需判断 步骤2LN类属性作为候选键基础 步骤3尝试与LR类属性组合看能否推导出所有属性 步骤4求闭包验证真题演练R(A,B,C,D,E)F{A→C, BC→D, D→B, C→E} L类A R类无 N类无 LR类B,C,D,E A {A} → A→C → {A,C} → C→E → {A,C,E} 无法推出B,D AB {A,B} → A→C → {A,B,C} → BC→D → {A,B,C,D} → C→E → {A,B,C,D,E} ✅ AD {A,D} → A→C → {A,C,D} → D→B → {A,B,C,D} → C→E → {A,B,C,D,E} ✅ 候选键AB、AD五、范式判定完整流程考试必考范式判定三步法第一步先求候选码属性分类法 第二步判断是否满足2NF → 检查非主属性对候选码是否存在【部分函数依赖】 → 单属性候选码天然满足2NF无真子集无部分依赖 → 复合候选码需逐一检查 第三步判断是否满足3NF → 检查非主属性对候选码是否存在【传递函数依赖】 → 即是否存在候选码 → 非主属性Y → 非主属性Z范式核心对比表范式消除什么判断方法数据异常1NF不可分属性所有属性都是原子值全部异常2NF部分函数依赖非主属性完全依赖候选码插入/删除/更新异常3NF传递函数依赖非主属性直接依赖候选码大部分消除BCNF主属性的部/传递依赖所有FD的决定因素包含候选键完全消除FD范围范式判断真题完整演练关系模式R(U_no, U_name, Dept_no, Dept_head, Course_no, Score) 函数依赖集 U_no → U_name 学号→姓名 U_no → Dept_no 学号→院系 Dept_no → Dept_head 院系→院长 (U_no, Course_no) → Score 学号课号→成绩 第一步求候选码 L类U_no, Course_no R类U_name, Dept_head, Score N类无 LR类Dept_no U_no {U_no} → U_name → {U_no, U_name} → Dept_no → {U_no, U_name, Dept_no} → Dept_head → {U_no, U_name, Dept_no, Dept_head} 推不出Course_no, Score (U_no, Course_no) {U_no, Course_no} → Score → {U_no, Course_no, Score} → U_name, Dept_no, Dept_head 全部推出 ✅ 候选码(U_no, Course_no) 第二步判断2NF 非主属性U_name, Dept_no, Dept_head, Score - U_no → U_name部分依赖U_no是候选码的子集能决定U_name❌ → 不满足2NF需要分解 分解到2NF R1(U_no, Course_no, Score) — 保留候选码完全依赖 R2(U_no, U_name, Dept_no, Dept_head) — 提取部分依赖 第三步R2是否满足3NF R2候选码U_no单属性天然2NF Dept_no → Dept_head传递依赖❌ → 不满足3NF需要分解 分解到3NF R2a(U_no, U_name, Dept_no) R2b(Dept_no, Dept_head) 最终3NF分解 R1(U_no, Course_no, Score) R2a(U_no, U_name, Dept_no) R2b(Dept_no, Dept_head)六、SQL高级考点速记卡6.1 SQL执行顺序选择题常考① FROM → 确定数据源 ② WHERE → 过滤行分组前 ③ GROUP BY → 分组 ④ HAVING → 过滤组分组后 ⑤ SELECT → 选择列可含聚集函数 ⑥ ORDER BY → 排序 ⑦ LIMIT → 限制行数6.2 NULL值处理陷阱运算NULL行为记忆NULL 1NULLNULL参与运算结果为NULLCOUNT(*)计数NULL行COUNT(*)统计所有行COUNT(列)忽略NULLCOUNT(列名)跳过NULLSUM/AVG忽略NULL聚集函数自动跳过NULLWHERE 列NULL❌ 匹配不到必须用 IS NULLWHERE 列 IS NOT NULL✅正确写法6.3 关联更新与删除-- 关联更新将dept_id1的员工工资涨10%UPDATEempSETsalarysalary*1.1WHEREdept_idIN(SELECTidFROMdeptWHEREdept_name研发部);-- 关联删除删除没有员工的部门DELETEFROMdeptWHEREidNOTIN(SELECTDISTINCTdept_idFROMempWHEREdept_idISNOTNULL);6.4 嵌套事务与隔离级别级别脏读不可重复读幻读MySQL默认Read Uncommitted✅✅✅-Read Committed❌✅✅-Repeatable Read❌❌✅✅Serializable❌❌❌-七、每日10题精练选择题1.在SQL中以下关于HAVING子句的描述正确的是 A. HAVING子句用于过滤分组前的数据B. HAVING子句可以使用聚集函数C. HAVING子句可以独立使用不需要GROUP BYD. HAVING子句的执行顺序在SELECT之后答案B。HAVING作用于分组后可以使用聚集函数过滤聚合结果。执行顺序GROUP BY→聚集计算→HAVING→SELECT2.关系模式R(A,B,C,D)函数依赖集F{A→B, B→C, C→D}则R的候选码是 A. A B. AB C. AC D. AD答案A。A{A}→B→{A,B}→C→{A,B,C}→D→{A,B,C,D}A单独可推导所有属性3.设有关系模式R(X,Y,Z)F{XY→Z, Z→Y}则R的最高范式是 A. 1NF B. 2NF C. 3NF D. BCNF答案B。候选码为XY。Z→Y中Y是非主属性但Z不是候选码所以Y传递依赖候选码XY→Z→Y不满足3NF。但非主属性Z完全依赖候选码XYX或Y单独不能决定Z满足2NF4.SQL中DELETE、DROP TABLE、TRUNCATE TABLE三者区别正确的是 A. DELETE删除表结构和数据B. TRUNCATE TABLE可以回滚C. DELETE删除数据不删结构可回滚D. 三者效果完全相同答案C。DELETE删数据不删结构可回滚TRUNCATE清空数据不可回滚DROP删除结构数据5.在BPMN 2.0中用于表示排他决策只能走一条路径的网关类型是 A. 并行网关AND B. 排他网关XOR C. 包容网关OR D. 事件网关答案B。XOR排他网关只走一条分支AND并行网关所有分支同时走OR包容网关走一条或多条6.C4模型中展示系统与用户及其他系统关系的层次是 A. Context层 B. Container层 C. Component层 D. Code层答案A。C4四层Context系统上下文/最高层→Container容器/部署单元→Component组件/模块→Code代码/最低层7.关系模式中若候选码为(A,B)存在函数依赖A→C则C对(A,B)是 A. 完全函数依赖 B. 部分函数依赖 C. 传递函数依赖 D. 多值依赖答案B。A是候选码(A,B)的真子集A→C说明C只依赖候选码的一部分部分函数依赖违反2NF8.在事务隔离级别中MySQL默认的隔离级别是 A. Read Uncommitted B. Read Committed C. Repeatable Read D. Serializable答案C。MySQL默认Repeatable Read可重复读Oracle默认Read Committed9.2026新考纲中以下哪项是新增的考点 A. 瀑布模型 B. CMM五级模型 C. 用户故事地图 D. 黑盒测试方法答案C。用户故事地图是2026新考纲需求工程模块新增的考点10.下列关于函数依赖的叙述中正确的是 A. 函数依赖只能通过当前数据推导得出B. 若X→Y且Y→Z则X→Z成立传递律C. 完全函数依赖意味着去掉任何属性都能决定YD. 部分函数依赖是3NF要消除的对象答案B。Armstrong公理传递律若X→Y且Y→Z则X→Z。A错函数依赖是语义层面的约束。C错完全依赖去掉任何真子集都不能决定Y。D错部分依赖是2NF要消除的八、必考公式速查卡数据库类今日新增公式说明候选码 LNLR组合属性分类法求候选键2NF 消除非主属性的部分依赖复合候选码检查3NF 消除非主属性的传递依赖非主属性→非主属性BCNF 每个FD的决定因素都含候选键最严格范式SQL执行序FROM→WHERE→GROUP→HAVING→SELECT→ORDER永远不变COUNT(*)含NULL / COUNT(列)不含NULL聚集函数NULL处理其他类复习巩固公式说明流水线吞吐率 n / [(kn-1)×Δt]k段数, n指令数系统可靠性并联 1-(1-R1)(1-R2)…两两独立海明码 2^r ≥ mr1r校验位, m数据位缺页率 缺页次数/总访问次数OPT/LRU/FIFOPERT Te(O4MP)/6三点估计九、今日必记要点HAVING在GROUP BY之后可以用聚集函数WHERE在GROUP BY之前不能用聚集函数单属性候选码天然满足2NF无真子集无部分依赖范式判断三步法求候选码→查部分依赖(2NF)→查传递依赖(3NF)2026新考纲五大变化需求工程BPMN/系统设计C4微服务/编程PythonGo/管理CI-CDDevOps/安全零信任个保法SQL执行顺序永远不变FROM→WHERE→GROUP→HAVING→SELECT→ORDERCOUNT(*)计所有行COUNT(列名)跳NULL行EXISTS只看有无不关心内容大数据量效率优于IN属性分类法LN必在候选码中R类必不在LR类需判断DELETE删数据可回滚TRUNCATE删数据不可回滚DROP删一切 下半年考试2026年10月24-27日提前两周 报名时间8月中旬至9月中旬 备考倒计时111天 今日进度SQL高级规范化 ✅ | 新考纲变化 ✅