香港数据库系统课程内容与实验解析
数据库系统(Database Systems)是香港各大学计算机科学、软件工程、数据科学等专业本科与硕士阶段的核心必修课之一。无论是港大(HKU)、港中文(CUHK)、港科大(HKUST)的 CS 本科,还是港城大(CityU)、港理工(PolyU)的 IT / Enterprise Software 硕士,几乎都会以这门课作为连接操作系统、计算机网络、数据结构的后续主干课。
由于香港学制沿袭英式体系,又同时引入美式科研导向,数据库课程的设置往往兼具学术深度与工程实操——这与内地高校偏重理论的授课风格略有不同。本文从内容主线、实验架构、考核方式、延伸方向四个维度,为内地学生系统拆解香港数据库系统课程的真实样貌。
一、课程的整体定位与主线结构
香港高校的数据库系统课程通常安排在大三或研一上学期,作为一门 3 学分(部分专业为 6 学分加强版)的核心课。整体内容可划分为四大模块:
| 模块 | 核心议题 | 占比(约) |
|---|---|---|
| 关系模型与 SQL | 关系代数、SQL 语法、视图、约束 | 25% |
| 存储与索引 | 磁盘结构、B+ 树、哈希索引、记录组织 | 20% |
| 查询处理与优化 | 代数优化、代价估算、连接算法 | 20% |
| 事务与并发控制 | ACID、隔离级别、锁机制、恢复 | 20% |
| 进阶与新兴议题 | 分布式数据库、NoSQL、NewSQL | 15% |
部分学校会把这门课拆成两学期:上学期侧重「Database Systems」讲关系型与事务,下学期开「Advanced / Distributed Databases」讲分布式与新型系统。两门课在内容上衔接紧密,前后修读效果较好。
二、第一模块:关系模型与 SQL 基础
这是整门课的入门章节,主要解决”如何用 SQL 描述数据”的问题。
理论部分:
- 关系模型的数学基础:域、笛卡尔积、关系、元组、主键 / 外键
- 关系代数:选择、投影、连接、并、差、重命名等基本运算
- 范式理论:1NF / 2NF / 3NF / BCNF,强调函数依赖与无损分解
实验部分:
- 在 PostgreSQL 或 MySQL 上建立小型业务数据库(如电商、图书馆、银行)
- 编写 20-40 条 SELECT 查询,覆盖多表连接、子查询、聚合、窗口函数
- 通过 EXPLAIN 分析查询计划,初步建立”性能意识”
提示:SQL 语法虽标准化,但各校指定的实验平台略有差异。CUHK 与 HKUST 偏 PostgreSQL,PolyU 部分课程则使用 Oracle,赴港前可先在本地熟悉至少一种主流数据库。
三、第二模块:存储与索引
这一模块是从”会用 SQL”跨越到”理解 SQL 为什么慢”的关键。
理论部分:
- 磁盘块、页、扇区的物理结构
- 记录在文件中的三种组织方式:堆文件、排序文件、哈希文件
- B+ 树索引原理:节点分裂、合并、顺序查找优化
- 哈希索引:静态哈希、可扩展哈希、线性哈希
- 多维索引简介:R 树、KD 树
实验部分(典型设置):
- 给出 100 万到 1 亿行规模的合成数据(如 TPC-H 子集)
- 在不建索引 / B+ 树索引 / 哈希索引三种条件下,对比查询耗时
- 提交实验报告,要求用图表量化”索引带来的加速比”
这部分实验往往让学生第一次直观感受到”数据库不是黑盒”——索引选择、聚簇方式、填充因子都会显著影响性能。
四、第三模块:查询处理与优化
这是工程导向最浓的一个模块,也是面试与研究生申请中的高频考察点。
理论部分:
- 外部排序、归并连接、哈希连接、嵌套循环连接
- 代数优化:选择下推、投影下推、连接顺序调整
- 基于代价的优化:统计信息、直方图、选择性估算
- 自顶向下 vs. 自底向上优化器(Volcano / Cascades 框架简介)
实验部分(以 HKUST COMP 5331 为参考样例):
- 给定一个小型数据库内核(如 SimpleDB),要求学生实现其中的连接算法与排序算子
- 在此基础上加入代价模型,对一组固定查询集合比较”自写优化器”与”原生优化器”的执行时间
这类实验难度较高,通常 3-4 人组队完成,是港校数据库课程最具区分度的环节。
五、第四模块:事务与并发控制
事务(Transaction)是数据库区别于普通文件系统的本质特征,也是 ACID 概念的来源。
理论部分:
- 事务的 ACID 性质、调度、可串行化
- 冲突可串行化与视图可串行化的判定
- 两阶段锁(2PL)、死锁检测、多粒度锁
- 时间戳排序、乐观并发控制(OCC)
- 日志机制:Write-Ahead Logging、ARIES 恢复算法
实验部分:
- 在 PostgreSQL 中手动制造死锁,观察日志
- 编写脚本,对同一张表并发执行更新,验证不同隔离级别下的脏读、不可重复读、幻读现象
- 部分学校会让学生实现一个简单的恢复模块,模拟系统崩溃后的重做与撤销
这部分内容与操作系统的”同步与互斥”高度呼应,理论与实践结合紧密。
六、第五模块:分布式数据库与新兴系统
近年香港高校普遍把这部分内容加入主干课,或独立开设后续课程。
常见议题:
- 分布式存储:分片(Sharding)、副本(Replication)、CAP 定理
- 一致性协议:两阶段提交(2PC)、三阶段提交(3PC)、Paxos / Raft
- 新型存储:键值数据库(Redis / DynamoDB)、文档数据库(MongoDB)、列式数据库(HBase / Cassandra)
- NewSQL 趋势:TiDB、CockroachDB、Spanner 的设计理念
实验部分:
- 在 Docker 中部署 3 节点 MongoDB 副本集,验证读写一致性
- 使用 etcd 模拟 Raft 选举,观察 Leader 切换
- 给定一个 10GB 数据集,对比 MySQL 与 Cassandra 在写入吞吐量上的差异
这部分实验更偏系统层面,工具链多为 Linux + Docker + 命令行,适合已经具备一定工程基础的学生。
七、考核方式与学习建议
香港高校的数据库课程考核通常由四部分组成:
| 组成部分 | 占比(约) | 备注 |
|---|---|---|
| 平时作业 / 实验 | 30%-40% | 通常 3-4 次大实验 |
| 期中考试 | 20%-25% | 闭卷或开卷 |
| 期末考试 | 35%-45% | 偏重理论 |
| 课程项目 | 0-15% | 部分选修课设置 |
给内地学生的几条建议:
- 不要只依赖中文教材。课程指定英文教材通常是 Silberschatz 的《Database System Concepts》或 Ramakrishnan 的《Database Management Systems》,建议提前阅读前 10 章建立基础。
- SQL 一定要多练。课程早期作业的 SQL 题看似简单,但实际考试常考窗口函数、递归 CTE 等高阶语法。
- 实验报告的”图表”很关键。港校老师普遍重视数据可视化与对比分析,一张清晰的加速比曲线图比文字描述更有说服力。
- 善用 Office Hours。香港教授普遍鼓励学生邮件预约答疑,港校 Office Hour 排队时间通常比内地短很多。
- 组队慎选队友。分布式数据库实验往往需要较高的时间投入,提前明确分工能避免后期冲突。
八、常见误区与补充说明
- 误区一:以为数据库课就是”教 SQL”。实际上 SQL 只占课程的 20%-25%,存储、索引、事务、分布式才是核心。
- 误区二:以为不需要写代码。多数学校会要求用 Java / Python 实现部分数据库内核模块,纯记忆型学习无法应对。
- 误区三:忽视 ACID 与并发控制。这是面试与研究生申请的高频主题,建议深入理解而不是背诵。
实际课程安排与学分要求以各校教务处最新公布为准,本文所述内容结构与实验设置基于近年香港多所大学的常见做法,细节可能因专业、学期、教师差异有所不同。
数据库系统是一门”理论与工程并重”的典型计算机主干课。在香港学习这门课的优势在于:英语教材一手、原版实验工具链完整、师资多有顶级会议(SIGMOD / VLDB / OSDI)发表经历。若你正在考虑赴港攻读计算机相关学位,提前了解这门课的脉络,将帮助你更平稳地衔接学业。
如需了解更多关于香港高校申请、选课策略、生活准备的实用信息,欢迎访问 香港大全 获取更多香港相关指南。
常见问答
香港高校的数据库系统课程一般安排在哪个学期?是必修还是选修?
多数学校的计算机科学、软件工程、数据科学等专业会把数据库系统安排在大三或研一上学期,作为 3 学分(部分专业为 6 学分加强版)的核心必修课,通常与操作系统、计算机网络、数据结构等课程衔接修读。具体安排以各校教务处最新公布为准。
内地学生赴港前,有没有必要提前自学数据库内容?
建议提前准备。文章建议赴港前先熟悉至少一种主流数据库(SQL 语法、基础查询),并提前阅读课程指定的英文教材(如 Silberschatz《Database System Concepts》或 Ramakrishnan《Database Management Systems》)的前 10 章,有助于更快适应全英文授课环境。
课程实验一般用什么数据库平台?需要自己带电脑吗?
不同学校指定的实验平台略有差异:港中文与港科大偏 PostgreSQL,港理工部分课程使用 Oracle。分布式模块的实验通常在 Linux + Docker + 命令行环境下完成。学生一般需要自备电脑,具体软硬件要求以入学后课程大纲为准。
课程的考核方式是怎样的?内地学生最需要注意什么?
考核通常由平时作业/实验(30%-40%)、期中考试(20%-25%)、期末考试(35%-45%)和部分选修课的课程项目(0-15%)组成。内地学生需特别注意三点:SQL 高阶语法(窗口函数、递归 CTE 等)、实验报告中的图表与对比分析,以及 ACID 与并发控制等高频考察点的深入理解,纯记忆型学习方式难以应对。
实验难度大吗?通常需要组队完成吗?
课程不同模块实验难度不一:基础模块以 SQL 编写和索引对比为主,独立可完成;查询优化模块(如参考样例 HKUST COMP 5331)要求学生实现小型数据库内核中的连接算法与代价模型,通常 3-4 人组队完成,是港校数据库课程中区分度较高的环节。文章建议提前明确分工,谨慎选择队友。