S1000D 数据字典与代码表是什么?取值约束、版本与检查

数据字典(Data Dictionary)负责解释数据模型中的元素、属性和术语;代码表(Code List)负责规定某个代码字段可以使用哪些值以及每个值的含义。两者把“字段是什么”和“字段允许填什么”连接起来,是 S1000D Schema、BREX、编辑器和项目业务规则之间的重要基础。

本文由北京重子科技 VizMan IETM 团队编写,最后更新:2026-09。页面用于中文学习与项目规划,不替代 S1000D 正式规范。

数据字典解决什么问题?

同一个字段如果在不同团队、不同编辑器或不同交付批次中有不同解释,结构化内容就会失去可交换性。数据字典为元素、属性、数据类型、定义、上下文和使用边界提供统一说明,使作者、审核人员、工具开发者和验收人员可以按照同一套术语理解数据。

先确认采用版本:S1000D 不同 Issue、Schema、Data Dictionary 和项目规则之间可能存在差异。页面上的术语用于建立概念,不应把另一版本的字段、代码或路径直接复制到当前项目。

数据字典与代码表的区别

对象主要回答的问题通常记录的内容项目使用重点
数据字典(Data Dictionary)这个元素或属性是什么?放在哪里?名称、定义、数据类型、结构关系、适用上下文、必填性或关联说明。统一术语,确认 Schema 和工具实现采用的版本。
代码表(Code List)这个字段允许填哪些代码?代码值、显示名称、定义、状态、生效范围、废止或替代关系。控制取值,避免同义码、拼写差异和未经批准的扩展。
Schema文档的结构能否被解析?元素顺序、层级、数据类型、出现次数和基本约束。做结构校验;不能单独表达全部项目语义。
BREX / 项目业务规则本项目在标准允许范围内还要求什么?对象路径、使用限制、项目必填项、禁用组合和例外处理。将组织规则转为可执行校验,并保留审批依据。

数据字典和代码表经常被一起发布或由工具共同读取,但它们的职责不同。一个字段可能引用代码表,也可能使用日期、数字、文本或受格式限制的值,不应把所有取值约束都误称为代码表。

常见术语和字段关系

术语含义检查重点
element数据模块中的结构化元素,用于承载内容或组织层级。名称、父子关系、顺序和适用模块类型是否符合 Schema。
attribute附着在元素上的属性,用于提供身份、分类、状态或其他机器可读信息。数据类型、必填性、默认值和代码表关联是否明确。
数据类型描述值的形式,例如文本、数字、日期、标识符或受格式约束的字符串。格式、长度、大小写、单位和空值处理是否统一。
允许值 / allowed value某字段可以接受的规范值集合。来源是规范代码表、项目扩展表还是内部映射表。
代码定义代码对应的名称、含义、适用范围和状态说明。代码值与显示文本不能只靠人工记忆维持。
状态与生效范围代码或定义何时生效、停用,以及适用于哪些项目或版本。新旧值能否共存,历史数据如何解释和迁移。

取值约束如何生效?

一个完整的取值约束通常由多个层次共同组成:数据字典解释字段的语义和类型,Schema 约束结构与基础数据类型,代码表列出可选值,BREX 或项目规则进一步限制上下文、组合和适用范围。工具可以据此在编辑、导入、批量检查和发布前分别给出提示或阻断。

  1. 识别字段:先确认元素或属性的正式名称、路径和所属数据模块类型。
  2. 确认类型:检查文本、数字、日期、标识符等基础格式,统一长度、大小写、单位和空值策略。
  3. 加载代码表:只允许当前版本和当前项目范围内的有效代码,显示代码的名称与定义。
  4. 检查上下文:同一代码在不同模块、系统或适用性条件下可能有不同限制,应执行 BREX 和项目规则。
  5. 记录来源:错误、警告、豁免和例外都应能追溯到版本、规则编号或审批记录。
不要把“能填进去”当成“符合要求”:文本框接受任意字符串,只能说明界面没有阻止输入。只有经过 Schema、代码表、BREX 和项目审核后的值,才具备可交付的合规依据。

一个代码表与取值校验示例

假设项目为某个“维修任务优先级”字段建立代码表。下面的表格是说明数据关系的示意,不是任何 S1000D Issue 的官方代码表,也不能直接用于交付。

代码显示名称定义状态适用范围
R例行按计划周期执行的维修任务。有效基础维修手册
U紧急发现故障后应优先处理的维修任务。有效故障隔离与现场维修
X停用历史代码,不得用于新模块。停用仅历史数据
<maintenanceTask priorityCode="R">
  <!-- priorityCode 的值、名称和适用范围由项目代码表定义 -->
</maintenanceTask>

校验这个示例时,工具至少应确认:字段路径允许使用 priorityCode;值 R 在当前代码表版本中存在且有效;当前模块类型和适用范围允许使用该值;停用值 X 不得用于新建模块;显示名称应从代码表读取,不能由作者随意改写。

代码表和数据字典的版本管理

数据字典或代码表一旦被数据模块、BREX、适用性和上下游系统使用,就应纳入配置管理。版本变化不只是文件名变化,还要明确哪些定义、允许值、状态和映射发生了改变。

变更类型潜在影响建议动作
新增代码新模块可使用新值,旧工具可能无法识别。明确生效版本、下游兼容性和回归样例。
停用代码新建模块不能继续使用,历史模块仍需解释。保留历史定义,禁止新建引用,制定迁移或豁免策略。
修改定义同一代码在不同版本中可能产生语义歧义。优先新增代码或新版本,记录影响评估和审批依据。
调整字段类型或路径Schema、BREX、编辑器和转换程序可能同时受影响。同步更新规则、样例、接口和验收用例。

项目应为每个版本保留发布日期、适用 Issue、来源、批准人、变更说明和兼容策略。跨版本迁移时,不能只做字符串替换,还要检查代码含义、上下文和历史交付物。

项目检查清单

  1. 版本:数据字典、Schema、代码表和 BREX 是否属于同一个已批准的 S1000D Issue 与项目基线?
  2. 来源:每个字段和代码是否标明规范来源、项目扩展来源或内部映射来源?
  3. 定义:代码值、显示名称、定义、单位、大小写和适用范围是否一致?
  4. 状态:新增、有效、停用、替代和历史保留状态是否可识别,工具是否阻止新建模块使用停用值?
  5. 约束:Schema、代码表、BREX 和项目规则的校验顺序、错误级别和豁免方式是否明确?
  6. 回归:是否用正例、非法值、缺失值、边界值、旧版值和跨模块场景做过回归检查?
  7. 交付:代码表和数据字典的版本、变更记录、映射和依赖是否随项目基线一起归档?
验收建议:选一个真实数据模块,从字段定义查到代码表,再查到 Schema、BREX、编辑器提示和发布包中的最终值,形成一条可复核的取值链路。

常见问题

S1000D 数据字典是什么?

数据字典描述元素、属性和术语的名称、定义、数据类型、结构关系、适用范围以及与允许值或代码表的关联。

代码表和数据字典有什么区别?

数据字典解释字段是什么、如何组织和使用;代码表列出某个代码字段允许使用的代码及其含义。

Schema、BREX 和代码表如何配合?

Schema 约束结构和数据类型,数据字典提供模型定义,代码表提供允许值,BREX 和项目规则表达更细的使用限制。

项目可以修改 S1000D 的代码表吗?

不能任意改写正式规范的代码表。应区分规范值、项目扩展值和内部映射值,明确来源、命名、审批和交付边界。

代码表版本变化会影响哪些内容?

可能影响数据模块、BREX、适用性、检索索引、旧版交付包和上下游接口,应记录生效范围并做回归校验。

相关页面