帝国理工 COMP40007《数据库导论》:学什么、怎么考、难在哪
帝国理工 COMP40007《数据库导论》是本科入门课:作业合计 20%,期末笔试占 80%;学校官网未列先修要求,重点是关系模型、SQL、范式与事务。
课程官网(学校官网):https://www.imperial.ac.uk/computing/current-students/courses/COMP40007/
COMP40007 是一门什么课?
一句话:这门课教你把现实世界的数据,变成结构清楚、不重复、能放心查询的表。
这是帝国理工学院(Imperial College London)计算系(Department of Computing)的本科课程,对应计算机科学(Computer Science)方向;课程代码 COMP40007,英文名 Introduction to Databases,中文通常叫「数据库导论」。学校官网没有标注学分,学分和学时的推算不能当官方信息。
课程内容按一条主线展开:
- database systems(数据库系统):现代数据库系统由哪些部分组成、各自负责什么。先有这个整体图,后面的概念才有地方放。
- relational model(关系模型):把信息放进一张张表里,表有行和列,表与表之间用共同的字段关联。这是整门课的语言,后面所有概念都长在“表”这个假设上。
- database design(数据库设计)与 Entity-relationship modelling(ER 建模):先把现实需求画成实体—关系图——有哪些对象、它们之间是什么关系——再翻译成表。
- functional dependencies(函数依赖)、keys(键)、normal forms(范式):函数依赖是“谁决定谁”;键是能唯一定位一行的字段或字段组;范式是判断这张表该不该拆、拆到第几层的规则。按范式调整表结构,叫规范化(normalisation)。
- relational database languages(关系数据库语言)与 relational algebra(关系代数):关系代数用选择、投影、连接这类运算描述“要取什么”,SQL 是把这些操作真正发给数据库的语句。
- views、integrity and security(视图、完整性与安全):视图是保存下来的查询,像一张虚拟表;完整性是保证数据不出错的约束;安全决定谁能看、谁能改。
- transaction management and concurrency(事务管理与并发控制):事务是一组“要么全做完、要么全不做”的操作,比如转账;并发是很多人同时读写同一份数据时,怎么不互相干扰。
- 学校官网还提到,要了解数据库技术的新进展。
教学形式以传统讲课(lectures)为主,配计分作业;辅导课(tutorials)数量不多,由研究生助教(GTAs)带着做不计分的练习,另有在线讨论区。
和国内「数据库原理」有什么不同?
和国内课程比,最大的差别是:它更像一门形式化的原理课,而不是工具操作课。
- 国内课程常以某个数据库软件(如 MySQL、SQL Server)的使用为主线;这门课更强调关系模型、范式、关系代数这些通用原理。
- 国内课程常有大作业或课程设计;这门课期末笔试占 80%,作业占 20%,更考考场上的个人能力。
- 国内通常把事务和并发放到后面,或者单独成课;这门课把它放进导论,对数据一致性的理解要求更早。
- 这门课明确要求“证明优化是正确的”,国内课程往往只要求会套范式步骤。
- 助教带的不计分练习和在线讨论区,意味着学习更靠自主;国内常见的“老师布置、按时交”在这门课里弱一些。
考核怎么算?20% 作业 + 80% 期末笔试
两次计分作业合计只占 20%,其中一次基于上机实验;期末笔试占 80%。
学校官网的写法很直接:两次 assessed coursework exercises,其中一次是 lab-based,合计 20%;期末 written exam 占剩下的 80%。作业会有书面反馈,提交后两周内返还;辅导课上助教也会给反馈。
这个结构意味着两件事:
第一,80% 压在期末的一张笔试上;从考试形式看,它要写推导过程、画图、做分解,不是背语法能应付的。要手写 SQL、手画 ER 图、手做范式分解,还要说明“为什么这样优化是对的”。
第二,20% 不是“可做可不做”。从考核结构看,作业练的和期末考的是同一类能力,认真做、把反馈吃透,等于提前练了一遍期末;忽略它,压力就全堆到最后。
先修要求是什么?
学校官网没有列出正式的先修要求;但从课程结构看,它默认你有集合与逻辑的基本功,以及初步的编程思维。
这不是学校官网的正式表述,是按大纲逐项看出来的判断:
- 关系模型需要集合、笛卡尔积、关系和映射这些概念。
- ER 建模不需要编程,需要把现实场景抽象成实体、属性和联系的能力。
- 函数依赖与范式是数学要求最高的一段,要用集合运算和逻辑推理做属性闭包、候选键推导和分解证明;同学期有离散数学或逻辑课会有帮助。
- SQL 不要求先修编程课,但要有声明式查询的意识,理解条件、聚合和连接;有任意一门语言的基础,上手会快一些,但仍要自己动手练。
- 关系代数需要集合运算和谓词逻辑,通常和关系模型一起学。
- 视图与安全只需要理解权限和访问控制的概念。
- 事务与并发需要对并发的直觉,比如交错执行、锁和死锁;操作系统课有帮助,但课内一般会从头讲。
真正的门槛不是“学过哪门课”,而是能不能接受先想清楚、再动手。
学完能做什么?
学校官网列出的学习成果,核心是:会建模、会优化并能证明、会写查询、能把数据库真正搭起来。
具体包括:
- 比较不同的数据库模型和支撑架构;
- 在关系系统里把信息建模成表;
- 优化关系模式(relational schema),并证明优化是正确的;
- 设计关系查询、编写 SQL;
- 把数据库搭起来,实现 schema 和查询;
- 解释把物理模型(数据实际怎么存)和逻辑模型(用户看到的表和关系)分开的好处。
往后看,这门课是数据方向的地基:后端开发里的数据建模、数据分析里的取数逻辑、数据工程里的表设计,用的都是这里建立的能力。具体说:拿到一个业务场景,能画成 ER 图、设计成合理的表;能写中等难度的 SQL,应付常见的 SQL 笔试题;也能判断一张表设计得好不好、为什么要拆、拆了有什么代价。它也为后续更高级的数据库、数据挖掘、分布式系统课程铺路;理解事务和并发,对以后做支付、订单这类要求数据一致性的系统也有帮助;对数据相关的实习和研究方向同样适用。
适合谁:计算机、软件工程、数据科学方向的本科生;想做后端、数据分析、数据工程的同学;逻辑推理还可以、不排斥一点形式化证明的同学。只想学“某个数据库软件怎么点按钮”的人会觉得偏理论;完全没有编程和集合、逻辑基础的人会比较吃力,建议学期前先补 SQL 和基础概念。
难点与常见挂因
难点不在内容多,而在于它是一条推导链:依赖判错了,键就可能错;键错了,范式判断跟着错;表拆错了,查询要么写不出来,要么写出来也不可靠。
具体难在这些地方:
- 两种思维同时要。 SQL 是动手写代码,范式和关系代数是形式化推理,很多学生只擅长其中一种。
- 函数依赖和范式靠逻辑推理。 要找出“哪个属性决定哪个属性”,同一张表不同人可能找出不同依赖,初学者容易漏掉或多写;BCNF 这类判断尤其容易卡。
- SQL 语法不难,难在“想对”。 多表连接、分组聚合、嵌套子查询的结果常和预期不一样,空值(NULL,表示数据缺失或未知)更是出错高发区。
- 关系代数和 SQL 要能互译。 关系代数写法抽象,没有“运行一下看结果”的反馈。
- 要证明优化正确。 这涉及无损连接、保持依赖这类概念,偏数学证明,不是背套路能过的。
- 事务与并发看不见摸不着。 隔离、冲突、调度,只靠听讲容易“懂了但不会做题”。
常见挂科原因,几乎都能对应到上面某一条:
- 只会在电脑上写 SQL,不会手写。→ 把往年题当考试,限时手写 SQL 和范式分解。
- 范式只背定义,不会实际找函数依赖。→ 每个范式完整做几道分解题,从找依赖、求键到分解一步步写出来。
- 忽视不计分的辅导课,错过助教反馈。→ 把辅导题当真题做,不会的去讨论区或助教处问。
- 觉得作业只占 20% 就不认真,期末压力集中到一次笔试。→ 作业认真做并吃透反馈,它和期末考的是同一类能力。
- 关系代数和 SQL 不会互相转换。→ 同一道题用两种写法各做一遍,对照理解。
- 事务与并发拖到期末才看。→ 学到时就配小例子画调度图,别留到复习周。
留学生特别提醒
对留学生来说,这门课难在两件事叠加:英文术语密集,而且考试要用英文写推理过程。
- 术语是第一道关。 functional dependency、decomposition、lossless join、serialisability 这类词会连着出现;考试是写作题,概念没记准英文原词,容易被扣分。应对方法是从第一周做中英词表,并且用自己的话把每个概念复述一遍。
- 国内外课程的训练方式不同。 国内常把数据库当“会用 MySQL”,英国这类课更重形式化定义和证明,习惯背 SQL 模板的同学会觉得不适应。
- 上机环境会吃掉时间。 作业里有一项是 lab-based,要自己搭库、写查询;数据库软件、连接、导入数据的小问题可能占掉大量时间,卡住要早问。
- 不计分的辅导课最容易被忽略。 它由助教带着做 formative exercises,不计分,但现场反馈很值钱;把它当成“可以不去”,等于自己关掉一个纠错渠道。
- 80% 的笔试要手写。 手写 SQL、手画 ER 图、手做范式分解,和平常在电脑上边写边调很不一样,需要专门练手写。
- 讨论区是主要答疑渠道。 不习惯用英文公开提问的同学,容易闷头自己卡住;带着具体题目去问,比空泛地问“这章不懂”有效。
怎么准备?
最划算的准备,不是提前背 SQL 语法,而是按课程顺序把概念串成一条链,并且从第一周就练手写。
- 建一条概念链。 关系模型 → 数据库设计/ER → 函数依赖/键/范式 → 关系代数/SQL → 视图/完整性/安全 → 事务/并发。每一环都用一个小例子串起来,比把术语分开背更牢。
- 每个概念用自己的话讲一遍。 能讲清楚“它解决什么问题、前提是什么”,才算接上了链;讲不出来,就是还没懂。
- 手写练习要单独排进计划。 限时手写 SQL、画 ER 图、做范式分解,按考试的要求练,而不是只在电脑上跑通。
- 把 20% 的作业当期末的预演。 认真做、等反馈、按反馈改方法;两周内返还的书面反馈,离期末还早,来得及调整。
- 把辅导课和讨论区都用起来。 辅导课现场问助教,讨论区公开提问;不懂就问,别自己耗。
- 事务与并发边学边画图。 学到哪一节,就用转账这类小例子画一遍调度,别拖到复习周。
- 早动手练 SQL,但别只练 SQL。 查询能跑通不等于查对了,写完核对连接条件和 NULL 的影响。
中英术语速查
- relational model —— 关系模型:信息都用表来存,表与表靠共同的字段相连。
- database design —— 数据库设计:把现实需求变成合适的数据结构。
- Entity-relationship modelling —— 实体—关系建模:先把实体和它们的关系画成图,再落成表。
- schema —— 表结构:每张表有哪些字段、表之间怎么关联。
- functional dependency —— 函数依赖:哪个属性决定哪个属性。
- keys / candidate key —— 键 / 候选键:能唯一定位一行数据的字段或字段组;候选键里再删一个字段就不唯一了。
- normal forms / normalisation —— 范式 / 规范化:判断表该不该拆、拆到第几层的规则,以及按规则调整表结构。
- relational algebra —— 关系代数:用选择、投影、连接等集合运算描述“要取什么”。
- SQL —— 查询语言:真正发给数据库的语句。
- view / integrity / security —— 视图 / 完整性 / 安全:虚拟表、数据约束、访问权限。
- transaction / concurrency —— 事务 / 并发:一组要么全做要么全不做的操作;多人同时读写时不打架。
- NULL —— 空值:数据缺失或未知。
- decomposition / lossless join / serialisability —— 分解 / 无损连接 / 可串行化:范式分解的正确性条件,以及并发调度是否正确的一组判断。
关于我们
鱼之跃做在读留学生的学业支持,服务分两块,界限很清楚:
辅导=老师授课:由 QS 前 200 院校的硕博老师把课程的知识点、推导链、作业要求讲透,按对口专业配课;覆盖同步辅导、论文辅导、考前辅导、预习。
护航=你的学业管家:排计划、理材料、理流程这些杂事都替你打点好,该提前准备的他先想到;你只管学,有事随时找,需要时都在。同地区的留学学姐,熟悉你所在学校的节奏。
学术问题上的申诉,我们做材料梳理与流程陪跑,不代写、不代考、不碰学术诚信边界,也不承诺任何成绩。
课程官网与核对说明
课程官网(学校官网):https://www.imperial.ac.uk/computing/current-students/courses/COMP40007/
本文涉及学校、课程代码、课程内容、考核比例、学习成果、先修情况与教学形式的事实,均来自上述学校官网课程介绍;核对时间为 2026-10-27。文中“与国内课程差异、先修判断、难点、适合谁、怎么准备”等属于基于课程结构的分析与学习建议,不代表学校官方要求。