高中信息技术选择性必修三 教学设计:项目三 任务二 建立关系数据库_第1页
高中信息技术选择性必修三 教学设计:项目三 任务二 建立关系数据库_第2页
高中信息技术选择性必修三 教学设计:项目三 任务二 建立关系数据库_第3页
高中信息技术选择性必修三 教学设计:项目三 任务二 建立关系数据库_第4页
高中信息技术选择性必修三 教学设计:项目三 任务二 建立关系数据库_第5页
已阅读5页,还剩11页未读, 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

高中信息技术选择性必修三教学设计:项目三任务二建立关系数据库一、教材与学情分析教材定位与内容解读本课时属于浙教版(2019)高中信息技术选择性必修三《数据管理与分析》模块中“项目三数据库技术初步”的任务二。教材以“校园社团活动管理”为项目情境,引导学生从电子表格的数据冗余与不一致问题入手,体会关系数据库建立的必要性,进而完成关系模式设计、数据库与表的创建、完整性约束定义、数据导入与维护等核心任务。教材安排体现了“从问题中来,到问题中去”的编写理念。重点不在于SQL语法的死记硬背,而在于“数据建模”的思维过程——如何将现实世界的业务规则映射为计算机可处理的关系结构。难点在于三级模式结构(外模式、模式、内模式)的抽象理解,以及参照完整性在多表联动中的级联操作机制。教材选用MySQL为教学平台,兼顾了标准SQL规范与图形化工具操作,适合高中生从可视化走向代码化的认知过渡。学情分析与对策学生已完成选择性必修一《数据与编程》,具备Python基础、CSV文件处理经验及电子表格操作技能,对“表”、“记录”、“字段”有直观认知。但受限于认知发展水平,多数学生仍停留在“扁平化表格”思维,缺乏范式理论指导下的分解与重构能力。针对“高内聚、低耦合”的表设计原则,学生易陷入“要么一张大表包打天下,要么过度拆分导致连接查询困境”的两极误区。针对性对策:一是设计“社团招新数据整理”反面教材,让学生在实操中触碰更新异常、插入异常、删除异常,内生范式需求;二是引入ER图作为中间表征工具,降低实体联系模型向关系模式转换的认知负荷;三是分层设计练习任务,基础层完成单表建模,进阶层攻克多表参照完整性,拓展层尝试视图与存储过程初探。二、核心素养导向的教学目标1.信息意识:能识别业务场景中的数据实体及关联,理解数据从“文件管理”向“数据库管理”演进的本质——实现数据共享、减少冗余、保障一致性与安全性。在社团管理情境中,主动发现脏数据对决策的误导,树立数据治理的责任感。2.计算思维:掌握概念设计(ER图)→逻辑设计(关系模式)→物理设计(存储参数)的建模全链路。能运用范式理论(1NF、2NF、3NF)诊断表结构缺陷,熟练定义主键、外键、非空、唯一、检查等约束,编写规范的DDL/DML语句实现数据库落地。3.数字化学习与创新:熟练使用MySQLWorkbench完成建模、正向工程生成脚本、反向工程生成ER图的工程化流程。能针对“社团经费预算超支预警”“跨社团成员冲突检测”等复杂需求,设计触发器或存储过程雏形,体会自动化业务逻辑的价值。4.信息社会责任:严守数据隐私保护原则,在导入学生敏感信息(学号、手机、身份证号)时实施脱敏与最小权限授予。理解数据库事务的ACID特性对数据可靠性的承诺,抵制“删库跑路”式的高危操作。三、教学重难点与突破路径重点:关系模式规范化设计(达到3NF)、MySQL下数据库与表的创建修改删除、实体完整性与参照完整性的声明式实现、批量数据导入清洗。难点:多对多联系映射为中间表时复合主键与双外键的协同定义、ONUPDATECASCADE与ONDELETERESTRICT/SETNULL语义的业务场景适配、范式与性能的权衡(适当反范式化设计)。突破路径:采用“逆向建模→正向建模→工程落地”三阶段递进。首课时用Workbench反向工程一个故意设计缺陷的“招新登记表”,直观暴露冗余与异常;次课时引导学生基于修正后的ER图正向生成DDL,在报错中修正约束语法;三课时导入真实脏数据,强制触发约束报错,在解决报错中内化完整性语义。四、教学过程设计(共4课时)【第一课时:危机现场——从“一张大表”到“范式重构”】1.情境导入:招新数据灾难现场(8分钟)投屏展示“某校社团招新汇总表”(Excel,约200行)。现场演示三个操作:(1)修改“街舞社”指导老师电话,发现同一老师信息重复出现12次,漏改3处导致数据不一致——更新异常。(2)新建“模联社”尚无成员,无法录入指导老师与社团简介信息——插入异常。(3)删除“戏剧社”最后一名成员记录,社团名称、指导老师、活动场地信息随之丢失——删除异常。追问:若数据量达万级,人工核对可行吗?引出数据库“结构化存储、约束驱动维护”的核心价值。2.逆向建模:可视化拆解冗余根源(12分钟)学生分组使用Workbench“Database→ReverseEngineer”连接预置数据库`club_messy`,导入仅含单表`tb_signup_raw`的结构。观察生成的ER图:单一实体框内属性高达15个,无任何连线。任务卡引导:标出重复度最高的三组属性(指导老师信息、社团基本信息、学生基本信息),用三色荧光笔在打印版ER图上圈注。全班交流形成共识:一张表强行融合了“学生”、“社团”、“指导老师”、“报名关系”四类业务实体。3.概念设计:ER图绘制与范式推演(20分钟)讲授实体识别三步法:找名词(实体)、找动词(联系)、定基数(1:1、1:n、m:n)。现场演绎:实体集:Student(学号PK、姓名、班级、手机)、Club(社团编号PK、社团名、类别、场地、指导老师编号FK)、Teacher(工号PK、姓名、电话、邮箱)、Enrollment(学号FK、社团编号FK、报名时间、审核状态、复合PK)。讲解多对多联系“学生社团”映射为中间表Enrollment的必然性:关系模型不支持直接表达多对多,必须分解为两个一对多。现场推演范式检查:1NF:属性不可再分——手机拆分为“号码、归属地”?业务不需要,保持原子性即可。2NF:非主属性完全函数依赖主键——`tb_signup_raw`主键为(学号,社团编号),但“指导老师电话”仅依赖“社团编号”(部分函数依赖),违反2NF,拆出Club表。3NF:非主属性不传递函数依赖主键——Club表中“指导老师电话”依赖“指导老师编号”依赖“社团编号”(传递函数依赖),违反3NF,拆出Teacher表。学生在草稿纸完成推演,教师巡视点拨:范式是手段,业务清晰是目的,不要为范式而范式。4.正向工程初体验:从ER图生成DDL(10分钟)学生在Workbench中新建EERDiagram,拖拽Table、Connection工具绘制四表结构,设置PK、FK、NN、UQ、AI(自增)属性。点击“ForwardEngineer”生成SQL脚本,另存为`club_schema_v1.sql`。重点观察生成的`CONSTRAINTfk_club_teacherFOREIGNKEY(teacher_id)REFERENCESteacher(teacher_id)ONUPDATECASCADEONDELETERESTRICT`语句。提问:为何更新级联、删除限制?学生结合业务回答:老师换电话需同步,但不能因删老师记录而连带删社团。课后作业:完成`club_schema_v1.sql`代码阅读注释,标注每个约束的业务含义;绘制本班选课、成绩管理的ER图(至少5实体)。【第二课时:落地生根——DDL/DML实战与约束攻坚】5.代码复盘与规范确立(10分钟)随机抽查作业注释,重点纠正:标识符反引号`````包裹规范、字符集显式指定`CHARSET=utf8mb4`、存储引擎`ENGINE=InnoDB`、注释`MENT`的工程习惯。展示团队开发规范片段:表名复数小写下划线、主键名`pk_表名`、外键名`fk_本表_引用表`、索引名`idx_字段名`。6.手写DDL:从零构建`club_v2`数据库(25分钟)学生关闭Workbench设计器,在Query标签页纯手写建库建表脚本。教师提供“骨架脚本”仅含注释框架:```sql1.创建数据库CREATEDATABASEIFNOTEXISTSclub_v2CHARACTERSETutf8mb4COLLATEutf8mb4_general_ci;USEclub_v2;2.创建教师表(无外键依赖,最先建)CREATETABLE`teacher`(...)ENGINE=InnoDBMENT='指导老师信息表';3.创建社团表(依赖teacher)CREATETABLE`club`(...)ENGINE=InnoDBMENT='社团基本信息表';4.创建学生表(无外键依赖)CREATETABLE`student`(...)ENGINE=InnoDBMENT='学生基本信息表';5.创建报名表(依赖student,club,最后建)CREATETABLE`enrollment`(...)ENGINE=InnoDBMENT='社团报名关系表';```学生补全字段定义、约束、索引。教师巡视重点排查:`enrollment`复合主键定义`PRIMARYKEY(student_id,club_id)`、双外键分别引用`student(student_id)``club(club_id)`、报名时间`DEFAULTCURRENT_TIMESTAMP`、审核状态`ENUM('pending','approved','rejected')DEFAULT'pending'`、手机号`CHECK(phoneREGEXP'^1[39]\\d{9}$')`。7.约束实战:触发报错与语义修正(15分钟)执行脚本后,导入预置测试数据集`test_data.sql`(含故意错误):(1)插入重复学号学生→报错`Duplicateentry'20230101'forkey'student.PRIMARY'`→讲解主键唯一性。(2)插入不存在老师编号的社团→报错`Cannotaddorupdateachildrow:aforeignkeyconstraintfails`→讲解参照完整性“子表引用父表必须存在”。(3)删除有社团关联的老师→报错`foreignkeyconstraintfails`→对比`ONDELETERESTRICT`与`SETNULL`:若业务允许社团暂时“无指导老师”,改为`SETNULL`需同时修改`teacher_id`字段允许`NULL`。(4)更新老师工号→观察社团表`teacher_id`自动同步更新→验证`ONUPDATECASCADE`生效。学生记录报错代码、原因、修正方案至学习手册,建立“约束故障排查卡片”。8.视图与权限初探(5分钟)演示创建“社团招新汇总视图”`v_club_enrollment`,隐藏学生手机、老师邮箱等敏感字段,仅开放给社团联合会账号`union_user@'%'`赋予`SELECT`权限。体会视图在安全性、简化查询中的双重作用。课后作业:为“图书借阅系统”编写完整DDL脚本(读者、图书、借阅记录、罚款记录四表),包含复合主键、自增主键、检查约束(借阅天数≤30)、级联更新/限制删除,提交至班级Git仓库。【第三课时:数据注入——批量导入、清洗与质量把关】9.真实脏数据挑战(10分钟)提供`raw_enrollment_2024.csv`(300行,含:学号前导零丢失、手机号混入空格/短横线、社团名称别名“街舞/街舞社”、报名时间格式不统一`2024/9/1`与`20240901`、重复报名记录、指导老师工号为空)。学生尝试`LOADDATAINFILE`直接导入`enrollment`表,必然大面积报错。10.ETL思维建模:暂存表策略(15分钟)讲解工程化做法:建立暂存表`stg_enrollment`全字段`VARCHAR(255)`无约束,脏数据全量落地;编写清洗SQL转入正式表。现场共写清洗逻辑:```sqlINSERTINTO`enrollment`(student_id,club_id,enroll_time,status)SELECTLPAD(TRIM(student_id),8,'0'),补齐学号前导零(SELECTclub_idFROMclubWHEREclub_name=TRIM(REPLACE(club_name,'/',''))LIMIT1),别名清洗匹配STR_TO_DATE(TRIM(enroll_time),'%Y/%m/%d'),统一日期格式'pending'FROMstg_enrollmentWHERETRIM(student_id)!=''ANDEXISTS(SELECT1FROMstudentWHEREstudent_id=LPAD(TRIM(stg_enrollment.student_id),8,'0'))ANDEXISTS(SELECT1FROMclubWHEREclub_name=TRIM(REPLACE(stg_enrollment.club_name,'/','')))ONDUPLICATEKEYUPDATEenroll_time=VALUES(enroll_time);去重策略:保留最新记录```重点讲解`LPAD`、`TRIM`、`REPLACE`、`STR_TO_DATE`、子查询关联匹配、`ONDUPLICATEKEYUPDATE`组合拳。学生动手调试,对比导入前后行数,分析被过滤数据的业务合理性。11.数据质量报告生成(10分钟)编写查询统计:总导入量、匹配成功量、学生不存在量、社团不匹配量、重复报名量、格式异常量。导出CSV提交给“社团联合会”,作为招新工作复盘依据。体会“数据治理产出可决策信息”的完整闭环。12.事务演示:转账模拟与回滚(5分钟)简要演示`STARTTRANSACTION;UPDATEaccountSETbalance=balance100WHEREid=1;UPDATEaccountSETbalance=balance+100WHEREid=2;MIT;`与`ROLLBACK`,引出ACID概念,不做深度展开,为后续模块埋伏笔。课后作业:设计“期中成绩导入”清洗方案,源文件含班级名称非标准化、缺考标记“A/缺/NULL”、分数超范围等问题,提交清洗SQL与质量报告模板。【第四课时:迭代优化——性能、安全与项目答辩】13.索引策略与执行计划分析(15分钟)向`enrollment`表注入5万条模拟数据(存储过程批量生成)。执行高频查询:`SELECTFROMenrollmentWHEREstudent_id='20230101'ANDstatus='approved'`。对比无索引(全表扫描`type=ALL`)、单列索引`idx_student_id`(ref)、复合索引`idx_student_status(student_id,status)`(ref,rows=1)的`EXPLAIN`结果。讲解最左前缀原则、覆盖索引、回表查询。学生体会:索引不是越多越好,写多读少表慎加,查询模式决定索引设计。14.安全加固清单(10分钟)核对清单核查:root账号禁用远程登录、业务账号最小权限(仅增删改查、无DDL)、敏感字段加密存储(AES_ENCRYPT/AES_DECRYPT演示)、审计日志开启(MariaDBAuditPlugin或MySQLEnterpriseAudit)、定期备份策略(mysqldump+二进制日志增量)。学生分组自查`club_v2`数据库配置,补全缺项。15.项目成果答辩与同伴评价(20分钟)每组3分钟汇报:ER图设计演变(展示v1→v2→v3迭代截图)、核心DDL代码走查、约束触发测试用例、脏数据清洗方案、索引优化前后对比、安全配置清单。同组互评维度:建模合理性(30%)、代码规范度(25%)、约束完备性(20%)、清洗鲁棒性(15%)、汇报清晰度(10%)。教师终评聚焦“业务理解深度”与“工程化思维”,而非语法细节。16.课程总结与延伸(5分钟)回顾“概念逻辑物理”三级模式映射全景图。指出关系数据库仍是企业级核心存储,NewSQL(TiDB、OceanBase)解决水平扩展,图数据库(Neo4j)处理复杂关系,时序数据库(InfluxDB)应对物联网数据,技术选型取决于业务特征。鼓励学生参加CCFCSPJ/S、蓝桥杯数据库赛道,将课内积累转化为竞赛优势。五、板书设计【核心知识脉络】业务场景→实体识别→ER图→关系模式(范式校验)→DDL落地→约束驱动维护→ETL清洗入库→索引优化查询→权限与安全→交付运维【关键约束对照表】|约束类型|关键字|业务语义|级联动作选项||:|:|:|:||主键|PRIMARYKEY|唯一标识,非空|无||外键|FOREIGNKEY|跨表引用合法性|CASCADE/SETNULL/RESTRICT/NOACTION||唯一|UNIQUE|业务键唯一(如手机、邮箱)|无||非空|NOTNULL|必填项|无||检查|CHECK|业务规则(如金额>0、枚举值)|无|【范式速查口诀】一范式:属性原子不可分;二范式:非主属性全依赖主键(无部分依赖);三范式:非主属性不传递依赖主键(无传递依赖)。六、分层作业与评价体系基础层(必做,达标即合格):1.完成`club_v2`数据库全脚本手写,运行无报错,导入清洗后数据200条以上。2.绘制“图书借阅”ER图,标注实体、属性、联系、基数,转换为关系模式并标注主外键。3.口述:主键与唯一键区别、外键级联更新与级联删除的业务适用场景。进阶层(选做,优良生挑战):4.为`club_v2`设计“社团经费流水表”`finance_flow`,含收入/支出类型、关联社团、操作人、时间、金额、备注;编写触发器:插入支出记录时自动检查社团余额是否充足,不足则抛出异常阻止插入(`SIGNALSQLSTATE'45000'`)。5.编写存储过程`sp_monthly_club_report(INp_monthVARCHAR(7))`,生成月度社团报名统计报表(社团名、

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论