🗄️ BS ISO/IEC 13249 是 BSI 对 ISO/IEC 13249《信息技术——数据库语言——SQL 多媒体与应用包(SQL/MM)》系列的英国实施版,由数据管理与交换技术委员会(IST/40)归口。SQL/MM 的核心目标,是在标准 SQL 语言基础上,以用户自定义类型(UDT)为桥梁,为多媒体、空间、全文检索等”非传统”数据提供规范化的数据类型与操作函数,使关系数据库能够以一种标准、可移植的方式处理图像、音频、视频、地理位置等复杂数据。该系列采用”框架 + 若干应用包”的结构:第 1 部分给出总体框架,规定后续各分部的概念、术语与约定;第 3 部分则针对空间数据(Spatial)定义空间数据类型与空间运算函数。本解读聚焦框架与空间数据两部分,其余分部(如全文、数据挖掘、静态图像等)可在此框架下理解。
💡 SQL/MM 不要求数据库直接存储多媒体二进制,而是通过标准 SQL 调用约定的”类型 + 函数”扩展来管理复杂数据,从而保持 SQL 语句的可移植性,避免各厂商各自为政的私有扩展。
一、系列结构与应用包概览 📌
ISO/IEC 13249 采用模块化的系列结构。第 1 部分提供框架,后续各”应用包”分别针对一类数据域定义类型与函数:
| 分部 | 主题 | 定位 |
| Part 1 | 框架(Framework) | 系列总体概念、术语、约定与规则,是其他部分的公共基础 |
| Part 2 | 全文(Full-text) | 面向全文检索的类型与函数(含全文索引操作) |
| Part 3 | 空间(Spatial) | 面向地理/几何空间数据的类型与运算函数 |
| Part 5 | 静态图像(Still Image) | 面向图像数据的类型、属性与操作 |
| Part 6 | 数据挖掘(Data Mining) | 面向数据挖掘模型的类型与操作 |
框架部分定义了各分部共享的约定,包括:术语与定义(部分取自 ISO/IEC 9075-1 和 ISO/IEC 9075-2,即 SQL/Framework 与 SQL/Foundation);SQL 调用的语法规则,例如各分部提供的类型与函数应如何以标准 SQL 调用的方式使用;以及对用户自定义类型、例程(routine)与模式(schema)的引用约定。通过这一共享框架,各应用包得以保持一致的结构与风格。
二、第 1 部分:框架概念与术语 🧩
第 1 部分(Framework)是整个系列的”宪法”。它不规定具体数据类型,而是定义后续分部共同遵循的规则,主要包含:
- 术语体系:大量术语直接取自 ISO/IEC 9075(SQL 标准)的 Framework 与 Foundation 两部分,例如”用户自定义类型””例程””属性””方法”等;本部分补充定义 SQL/MM 自身引入的术语(如”应用包””多媒体”等),保证全书术语一致。
- 概念与模型:阐明 SQL/MM 与 SQL 标准的关系——SQL/MM 以 SQL 的用户自定义类型机制为扩展点,各应用包定义的抽象数据类型(ADT)在逻辑上隶属于 SQL 的类型系统。
- 约定与规则:规定各分部定义类型、函数时应当遵循的命名、签名与错误处理约定,例如函数返回类型的可空性、异常条件(SQLSTATE)的映射等。
- 符合性要求:明确一个声称符合 SQL/MM 的数据库系统必须满足的条件,包括支持的 SQL 特征与各应用包特征组合。
⚠️ 框架部分是理解各应用包的钥匙:脱离框架单独看某一部分,容易把”类型/函数”误当成普通 SQL 建表语句。正确做法是先读第 1 部分的约定,再进入具体应用包。
三、第 3 部分:空间数据类型 🔍
第 3 部分(Spatial)定义了在关系数据库中表达、查询与分析空间数据的标准方式。其术语与概念参考了地理信息领域的 ISO 19107(空间模式)、ISO 19111(坐标参考系统)与 ISO 19148(线性参考)等标准。核心内容包括:
- 空间数据类型:以用户自定义类型形式提供几何与地理类型,如 ST_Point(点)、ST_Curve(曲线,含 ST_LineString 等)、ST_Surface(曲面,含 ST_Polygon 等)以及聚合几何类型,用于表达二维空间中的点、线、面及其集合。
- 空间参照与坐标:每个空间值通常关联一个坐标参考系统(CRS),标准规定坐标维度、坐标系与度量单位的使用约定,保证空间运算在统一的坐标系下进行。
- 空间运算与关系判定:定义两类核心操作——空间关系判定(如 ST_Equals、ST_Intersects、ST_Within、ST_Contains 等布尔谓词)与空间分析/计算(如 ST_Area、ST_Length、ST_Buffer、ST_Intersection 等),为”缓冲区分析””叠加分析”等空间查询提供标准函数。
- 与 SQL 的融合:这些类型与函数可直接在 SELECT、WHERE、JOIN 等 SQL 语句中使用,从而把空间查询无缝嵌入关系查询,例如查询”位于某区域内的所有设施点”。
四、工程实践与应用要点 🛠️
- 🔍 选型:需要管理地理/几何数据(如管网、地图要素、资产位置)时,优先选择支持 SQL/MM 空间类型的数据库产品,以降低对私有扩展的依赖。
- 🔧 坐标系管理:导入空间数据前务必明确其坐标参考系统,并在统一 CRS 下进行运算;跨 CRS 的几何叠加会产生错误结果。
- 📊 索引与性能:空间谓词(如相交、包含)在大数据量下应配合空间索引(R-tree 等)使用,否则全表扫描将严重拖慢查询。
- 📋 符合性验证:验收时应核对数据库产品声称的 SQL/MM 特征与符合性声明,并通过标准规定的空间类型与函数进行抽查验证。
五、常见问题解答 ❓
❓ 问:SQL/MM 与 SQL 标准(ISO/IEC 9075)是什么关系?
答:SQL/MM 是 SQL 标准的”应用包”扩展,建立在 SQL 的用户自定义类型机制之上,本身并不修改 SQL 核心语法。它相当于在标准 SQL 之上叠加一套规范化的多媒体/空间类型与函数。
❓ 问:为什么空间数据要单独设立分部(Part 3)?
答:空间数据具有坐标参照、几何运算等特殊语义,且涉及多个维度和复杂的空间关系判定,与普通多媒体(如图像、音频)差异很大,因此单独设部以便集中、清晰地定义空间类型与函数。
❓ 问:使用 SQL/MM 空间类型能否实现”缓冲区分析”?
答:可以。标准提供了如 ST_Buffer 之类的空间计算函数,可以对几何对象生成缓冲区(Buffer),再结合相交等谓词实现”区域内对象筛选”,这是 GIS 中常见的叠加分析场景。
🔍 问:应用 SQL/MM 时最常见的错误是什么?
答:混淆坐标系与维度(如把经纬度当作平面坐标直接运算)、忽略空间索引导致性能骤降,以及未核对数据库产品的 SQL/MM 符合性声明,都是实践中常见的问题。