如果你教过SQL,或者在任何课程里学过SQL,那么你几乎一定见过Sakila。这个围绕DVD租赁店设计的小数据库,作为MySQL和MariaDB教程的默认样例模式,已经存在了近二十年。它的表结构简洁,规范化做得不错,还预先加载了足够多的数据,能让你写出有意思的查询。
问题在于,Sakila出生在2006年,为的是当时的MySQL 5.0。把它直接搬到今天,就像用一辆没有GPS、没有倒车影像、还带着手动阻风门的车来教人开车。基础操作照样能学,但引擎盖底下那一大半现代功能,你永远摸不到。
打开Sakila的模式文件数一数字段类型:INT、VARCHAR、TEXT、ENUM、DATETIME、DECIMAL、TINYINT,仅此而已。没有JSON,没有支持布尔模式和相关性评分的全文本搜索,没有SET类型,更不用说VECTOR。而另一边,MariaDB 11.7已经原生集成了用于AI时代相似性搜索的VECTOR(N)类型,提供JSON_TABLE、JSON_VALUE、JSON_EXTRACT等丰富的JSON函数,还支持窗口函数(RANK、LAG、LEAD、运行聚合)、递归公共表表达式,以及全文本搜索的布尔逻辑和分数排序。用Sakila来教,这些东西一概无法展示。
还有领域认知的问题。DVD租赁——如果你不到35岁,很可能压根没踏进过录像带出租店。这个业务模型对年轻人来说是陌生的,业务规则也显得很随性。影片、库存项、租赁记录之间的区别是什么?为什么支付记录要独立于租赁记录单独存在?光是解释清楚这套模式,就要花费掉本该用来讲解SQL的时间。
支持Sakila的人会说,这些基础表加上简单的关联查询,已经足够让初学者掌握SQL的核心思想,比如连接、聚合和子查询。没必要把所有高级特性都塞进教学库里,那样反而会增加认知负担。
但这种立场忽略了一个关键点:教具本身会塑造学生对“什么是数据库能力边界”的判断。如果在很长一段时间里,学习者只见过六种字段类型,没有接触过半结构化数据、全文检索和向量嵌入,他们很可能会把数据库默认为一个只能处理规整行和列的系统。等到了实际工作中碰到非结构化日志、嵌套JSON、语义搜索这些需求,就得重新构建认知。
因此,需要一个大家都能秒懂业务、又天然适合展示MariaDB完整功能集的替代方案。大学场景几乎完美地满足了这些条件。
新设计的University DB共有16张表,按行数和职能分成四个层级。最轻量的查找表是semesters、rooms、scholarships,每张表不足百行;领域表稍大一些,包括departments、faculty、students、courses、course_prerequisites、sections,最多不超过2000行;事务表达到中等规模,覆盖enrollments、student_scholarships、research_projects、publications、project_members;分析层则集中了最大的两张表——grade_events有约12万行记录,audit_log约6万行,由触发器自动填充。
这样的分层结构不仅能练习单表查询、多表连接,还能很自然地带出递归公共表表达式。比如从系到专业、到课程、再到先修课程链条,天生就是一层套一层的层级关系,不用绞尽脑汁去编造例子。
更重要的是,这张模式里几乎每一种MariaDB典型数据类型都会至少出现一次。courses表中有一个VECTOR(1536)字段,用来存放课程描述的语义嵌入,可以直接执行向量相似度搜索。faculty表里的office_hours字段是JSON类型,存放诸如[{"day":"Mon","start":"10:00","end":"12:00"},...]这样的半结构化办公时间,正好用来演示JSON_TABLE展开数组、JSON_VALUE提取字段。publications表用SET类型存放多值关键词标签,可选集合包含“AI”“ML”“Databases”“Security”“Bioinformatics”等。同时,courses和publications上都建了全文本索引,布尔模式查询和相关性评分都可以在标准SQL里直接跑通。
整个大学场景的实体关系几乎不需要解释——学生、课程、教师、注册、成绩,所有人都在这个系统里生活过。这不仅能让学生把注意力集中在SQL语法本身,也能帮他们直观理解什么情况下适合用JSON存非标字段、什么时候该把文本扔进全文本索引、什么查询用向量相似度更趁手。
一个教学用例的演化,折射出的其实是数据库能力的膨胀和用户预期的变迁。Sakila在它诞生的年代完全足够,但在2026年继续把它当成MariaDB的标准教具,就像一直用同一张老地图去探索一片已经翻了好几倍的新大陆。University DB并不试图推翻所有教学逻辑,它只是把那些已经写入数据库内核、却长期被教学场景忽略的功能,变成可感知的练习素材。
热门跟贴