1、中华人民共和国国家标准信息技术信息资源词典系统服务接口发布 实施国家质量技术监督局 发布前言本标准等同采用国际标准 信息技术信息资源词典系统 服务接口 信息技术信息资源词典系统 服务接口补篇语言联编 信息技术信息资源词典系统 服务接口补篇 语言联编和 信息技术信息资源词典系统 服务接口补篇 联编根据补篇 增加了附录 根据补篇 增加了附录 根据补篇 增加了附录本标准的附录 附录 附录 和附录 是标准的附录本标准的附录 是提示的附录本标准是信息资源词典系统系列标准之一 定义本标准适用的范围本标准由中华人民共和国信息产业部提出本标准由中国电子技术标准化研究所归口本标准起草单位复旦大学本标准主要起草人
2、楼荣生孙永玉郑洪仁前言国际标准化组织 和 国际电工委员会 是世界性的标准化专门机构 国家成员体 他们都是 或 的成员国通过国际组织建立的各个技术委员会参与制定针对特定技术范围的国际标准 和 的各技术委员会在共同感兴趣的领域内进行合作 与 和 有联系的其他官方和非官方国际组织也可参与国际标准的制定工作对于信息技术 和 建立了一个联合技术委员会即 由联合技术委员会提出的国际标准草案需分发给国家成员体进行表决 发布一项国际标准 至少需要 的参与表决的国家成员体投票赞成国际标准 是由 信息技术 联合技术委员会制定的本标准的附录 附录 附录 和附录 是本标准的一部分附录 仅提供参考信息引言本标准是信息资
3、源词典系统系列标准之一 定义了要应用本标准的作业区中华人民共和国国家标准信息技术信息资源词典系统服务接口国家质量技术监督局 批准 实施范围系列标准规定了能用于说明和潜在地控制一个企业信息资源的软件工具产品 它定义了在定义级维护的数据的结构和部分内容 以及在 级维护的数据结构 同样也定义了在这两级用于修改和查询数据的服务 关于 系列标准的详细细节见本标准规定服务接口 这些接口使得任何程序通过程序语言提供的外部调用接口能完全访问所有的 服务 本标准定义了接口语义叙述与 语言的联编 与 语言的联编由附件 提供 与 语言 的联编由附件 提供与 的联编由附件 提供与其他标准程序语言的联编在其他标准中提供
4、本标准没有考虑实现环境以及特定的运行或编译接口引用标准下列标准所包含的条文通过在本标准中引用而构成为本标准的条文 本标准出版时所示版本均为有效 所有标准都会被修订 使用本标准的各方应探讨使用下列标准最新版本的可能性世界各国和地区名称代码程序设计语言信息处理系统 数据库语言程序设计语言信息技术信息资源词典系统 框架程序设计语言信息技术 数据管理参考模型定义和缩略语框架标准 中定义和引用的以及本标准使用的术语下面是在 框架标准中定义或引用和使用的术语 他们同样适用于本标准客户信息资源词典信息资源词典系统定义定义级定义模式级模式级对实系统服务本标准定义的术语下面列出的术语将在本标准后面各章中引用活动
5、的词典内容状态的一类 该类词典可被所有相关 服务访问 当词典状态不是活动的时候只有重激活 服务可以对该词典操作归档词典内容状态的一类 属于该类词典中的数据不再是活动的属性对象的特征公共表在每个 定义和 中都存在的表内容模块同时引入到 定义或 中的对象集合并用模块名标识对象的来源 所属的模块作业区用户请求建立或缺省建立的工作集 服务是在此工作集中执行的受控的词典内容状态的一类 属于该类词典的数据是稳定的 不可修改的定义对象定义级记录的对象 它控制 级的数据词典定义或环境表控制 定义和相关 提供的服务的一组表只存在于每个 定义中实现定义的不由本标准定义但应该由认可的实现者定义的行为实现相关的不由本
6、标准定义实现也不必定义的行为 进一步说不同的情况下这种行为可以不一致内部表存在于 定义和 中的一组表其内容不能被第 章中与对象有关的服务访问专用表只存在于 定义或特定的 中的一组表 其中有些表体现了定义数据模型设施的数据结构规则内容状态工作集用户定义的属性 内容状态的值取自三个预定义的内容状态类 每个对象版本的内容状态从包含它的工作集中得到内容状态类内容状态集合的预定义的三个类 未受控的 受控的 归档的对象级记录的对象模式组完全定义 每一时刻内容的一或多个 模式的集合数据库一个 定义的零个或多个环境实现 服务接口的一个操作实例 该服务接口管理一个 数据库名当在 中加入对象或在 定义中加入定义对
7、象时可选地赋予的名 如果指定名则 名变名工作集名和工作集版本名的组合必须唯一会话用户和 环境建立的临时联系 会话期间前者请求服务后者执行服务用户被授权使用 的个人或团体级独立服务同时适用于 定义级和 级的服务级专用服务只适用于 定义级或 级 不能同时用于这两级的服务工作集的 现实化工作集中游标打开的工作表中对象版本的集合名单独或与其他名结合起来区分对象的字符串无版本对象类型表示在一个无版本的工作集中该对象类型的对象只能有一个对象版本存在 或对于工作集来说该工作集不能以其他工作集为基也不能作为其他工作集的基对象企业感兴趣的事物或概念对象类型属性属于共同的属性类型集的一类对象对象版本在信息处理的作
8、业区中对象的某个生存阶段的信息记录引用路径一个工作集到另一个工作集的有向联系允许前一个工作集的对象版本引用后一个工作集的对象版本 引用只允许在指定的方向进行被引用表引用路径上被引用的表引用表引用路径中引用其他表的表子表假定 和 是两个表如果 中每行对应 中唯一一行而 中每行最多对应 中一行则称 是 的子表超表至少存在一个子表的表未受控的内容状态的一类 属于该类的工作集中的对象是不稳定的 其属性数据可修改变名用于区分具有相同 名的各种对象的一个属性多版本对象类型在不同的工作集中同一时刻可以存在同一对象类型的多个版本 对于工作集来说该工作集不包含无版本对象类型的对象 它可以以其他工作集为基或作为其
9、他工作集的基工作集用户为了管理修改说明内容状态访问控制的目的而作为一个单元处理的 定义对象或对象的对象版本的集合数据项名缩略语下面列出的缩略语用于命名 表中的列和相应的 常数类型和变量附加的归档属性类受控的列游标当前内容状态定义缺省缺省词典域标识符实现指示器安装整数信息资源词典长度限制维护的最大最小修改的本国的编号对象引用返回模式分隔符会话描述服务字符串事务文本未受控的值变体版本工作工作集约定本章说明本标准所使用的约定 这些约定本身不是本标准讨论的主题 在其他场合完全可以使用其他约定概念和设施说明为了介绍本标准后面要定义的概念和设施第 章使用带文字说明的图 有两类图用的数据结构图用的工作集图数
10、据结构说明在第 章 服务处理器管理的数据结构用数据库语言 说明一般用表表示对象类型用列表示属性类型 为了控制目的也部分地使用其他数据本标准用 作定义形式 但并不是实现方法 对于 服务接口提供的服务 用户只能使用第章定义的形式访问数据约束说明 概述作用在 中的一或多个值上的约束只是在适当时才作一次性说明约束说明出现在第 章在形式数据类型说明内部第 章在相关表的说明中第 章在修改数据的服务说明中约束的详细说明在服务数据结构说明每个服务的数据结构格式在第 章用 说明 语言的数据结构由附件 定义语言的数据结构由附件 定义 的数据结构由附件 定义服务说明支持的服务在第 章用 描述并结合文字说明 用于服务
11、的 语言联编由附录 定义用于服务的 语言联编由附录 定义用于服务的 联编由附录 定义数据结构图在第 章用的数据结构图表示表间约束 表用矩形表示表间约束用矩形之间的直线表示 每一条直线分成两半 每一半与其直接连接的矩形相关约束说明 细述约束类型下面的约束类型用于第 章的形式数据说明中主键约束 标识每个表的主键唯一约束 标识一个表中的一组列的值不为空时在表内不重复引用约束 标识一个表对另一个表的引用检测约束 对一组值的其他约束说明 这些值可能分布在多个表中除了在第 章中说明约束外 第 章中用图说明各类引用约束 本章其余部分叙述不同引用约束类型的图的约定和表示这些类型的 定义语句引用约束概述在说明引
12、用约束之前 有必要先解释引用约束的类型如果表 的每行的某个指定列或列的组合的值不为空时 必须等于表 中一行的主键值列或列的组合列数和数据类型相同 则表 引用表 引用约束进一步分为一对一引用约束 如果表 中只有一行可以引用表 中的一行一对多引用约束 如果表 中的多行可以引用表 中的同一行除了上面的约束分类 还可以进行下述分类引用方可选 如果表 用于引用表 的列的值可以为空引用列的值为空的行被认为不引用表被引用方可选 如果表 中有些行不被表 引用引用方必备 如果引用表 的引用列的值不能为空 表 中的每行必须引用表 中的一行被引用方必备 如果表 中的一行仅在被表 中的相应行引用时才能存在为阐明约束的
13、数据结构图使用下面的基本结构在阐明每个表的约束特征时 表示约束的直线的两个部分分别对待实线 表的约束是必备的虚线 表的约束是可选的线端有 鸡爪 表示一对多的约束线端无鸡爪 表示一对一的约束下面是上述约束类型的图示 每种情况给出一个相应约束并有 语法表示可选的一对多引用约束图 是一个最简单的约束 可选的一对多引用约束 表 为相应的 定义语句图 可选引用约束表 对应图 的在表 和后面相类似的表中 是一域名第 章中定义的所有表都将使用该域 这里引用该域是为了这些例子和第 章中的 外观相似在第 章使用的 定义语句将正式地包含 子句 如表 该子句是结构图中没有出现的额外信息 当在表 中试图删除被表 引用
14、的一行时应采取的动作 其中 可以取下面各值不必显式说明在没有 子句时隐含禁止删除表示引用行同时被删除表示删除引用 将引用列置为空 但不删引用行单向且必备的一对多引用约束图 是单向且必备的一对多引用约束 和框 相连的直线的实线部分表示从表 到表 的引用约束是必备的图 必备引用约束表 是图 中约束的 定义语句 引用列 上插入的 子句使得从表 到表 的引用约束是必备的且 不能是表 对应图 的单向且必备的一对一引用约束图 是一个单向且必备的一对一引用约束 直线中没有鸡爪表示该约束是一对一的图 必备引用约束表 是图 中约束的 定义语句 引用列 上的唯一约束说明 的唯一性表 对应图 的自引用表在上面的几种
15、情形中 表 和表 可以是同一个表 如果这样表示约束的直线画成同一个框上两点之间的弧线 见图 两列或一组列之间的引用约束的 定义语句见表图 自引用约束表 对应图 的双向且必备的引用约束图 是一个双向且必备的一对多引用约束图 必备双向引用约束表 给出图 中约束的 定义语句类似表 多了一检测子句是被引用表对引用表的约束 由于约束是相互的对 表插入时先要使这约束失效 到 表至少插入一引用行后才能恢复此约束表 对应图 的双向一对一引用约束表示方法类似 只是去除鸡爪 定义的 表中加入互斥的引用约束有时两个或多个约束可能互相排斥两个约束中只能有一个满足 而不是两个同时满足 用跨越相关直线的弧线表示这种情况如
16、图 表 中的每行都应该包含或是到表 中一行的合法引用 或是到表 中一行的合法引用 这是引用方的互斥约束 称为第 类型互斥约束图 第 类型互斥约束表 的定义语句仅用于 定义级的强制约束 在 级这些约束在表中有说明表 对应图 的图 是单向且必备引用约束 如前面讨论的还有其他类型的约束 对于双向且必备引用约束定义语句需要在引用表中插入同样的 子句 对于可选引用约束 子句应该用下面子句替换如果这两个或其中一个引用约束是一对一的 则要在表 中插入相应的唯一约束为了支持两个以上的引用约束应当引入相应的属性 等 并且对 子句做适当的修改也可能有相反情况如图 表 中的每行被表 的行引用 或被表 的行引用 不能
17、被两个表中的行同时引用 这种情况称为第 类型互斥约束 互斥出现在被引用方 图 是双向且必备引用约束图 第 类型互斥约束类似第 类型约束 表 的定义语句用于实现 定义级的引用约束表 图 相应的注意用于表达互斥约束的 子句的实际格式视具体情况可能有些不同 可以为单向且必备的 或可选约束作出类似的图和定义语句 但这两种约束在第 章未用互斥约束也可以是类型 和类型 互斥约束的组合 这时 定义语句也是两种方法的组合子表假设有两表 和 称为 的子表当且仅当 中每行对应中的一行且只有一行以及 中每行最多也对应 中的一行 称为的超表一个超表可以有多个子表 假设表 中的行表示一个对象集表 和表 的行也分别表示一
18、个对象集如果表 和表 表示的对象集均为表 中元素表示的对象集的子集 则表 和表 均为表 的子表图 子表如图 表 和表 表示的对象集不相交 注意图中没有要求 的每行都要对应表 或表 的行如果存在该条件则情形等同于图 表达式等同于表 否则应去掉表 的列 上的约束并且 约束的最后一行改成表达约束的原则当说明本标准中的约束时 使用下列规则检测 约束和引用约束均要命名当说明表间引用约束时使用下列规则当两表之间存在 一对多 关系时引用约束说明成多行引用一行当 引用约束在一个表中是可选的另一个表是必备的时候必备方的表被认为是依赖于可选方的表 可选方为独立方 约束表述成依赖方引用独立方如果 的引用约束在两个表
19、中都是必备的 除了从多到一的引用约束外 在相反方向存在检测约束说明如果 的引用约束在两个表中都是必备的 在一方使用检测约束 不仅和 的情形相一致还因为第二个引用约束需要另外列用作外键 这是因为把这两个表说明成的不同子表时不允许这两个不同表中有相同主键值注 这种 关系在 中仅当要与其他互斥关系结合时才发生 除此之外就不必分成多表 当决定说明引用约束的引用方向时 还要考虑两个表的功能和引用行为 的影响 另外在存在互斥的情况下只要可能 约束说明使得所有互斥约束从同一方向指向排斥存在方对于检测约束可以有几种方式表达可能包含多个列和多个表 在考虑约束的说明顺序时 优先考虑下面的次序不带子查询的约束优先于
20、带子查询的约束当从两个都带子查询的约束中选择时子查询表达简洁的约束优先表达特定类型的约束时 尽可能使表达方式一致当上面原则说明的方法和 定义模式存在冲突时使用 方法工作集图第 章使用工作集图说明工作集和从一个工作集到另一个工作集的两种路径 基于路径版本路径与引用路径 图中用椭圆表示工作集 直线表示从一个工作集到另一个工作集的路径 直线旁边附以箭头表示引用方向再附以标签标识路径类别如图 工作集 是以工作集 为基建立的从工作集 到工作集 有一条引用路径引用路径只允许沿着箭头方向引用 在图 中 工作集 的对象版本可以引用工作集 的对象版本 而工作集 不能引用工作集 的对象版本图 工作集图约概念和设施
21、本标准支持一系列的设施集 其中一些在 和 中已经论述过设施分为以下几类数据模型版本控制命名建立限制和缺省其他设施定义级 见 的表中记录的数据支持这些设施本标准所引用的对象是指表中行所表示的事物 对象分 定义对象和 对象两种依赖于他是用 定义级表中的行表示 还是用 级表中的行表示服务接口处理器见 提供的服务用于查询和修改 定义表中数据 定义表在第 章定义服务概念在第 章 服务的数据结构在第 章服务本身在第 章定义有必要区分定义的机制和定义的内容 在本标准第 章定义的 定义表使用 模式定义语句作为定义机制定义表中的定义机制又作为 级对的定义机制 本标准中 定义机制是 模式定义语句支持的数据模型设施
22、 数据模型设施是用于构造永久数据集的规则集及相关的数据操纵规则集环境概念在一个实际系统中可以存在多个相互独立的 定义 每个 定义可以包含 个或多个模式组的定义 每个模式组又有 个或多个 因此在实际系统中可以存在多个 是根据单个 模式组中定义的数据模型设施构造的定义和他包含的 模式组及 是 环境的一部分 一个 服务接口处理器可以操作任意多个 定义 然而在一次会话中每一 用户只能操作一个 定义以及他包含的模式组和环境中的 服务接口处理器可以使用数据库服务接口处理器 每个数据库服务接口处理器遵循一定的数据模型设施表的分类本标准的目的之一是使两个级对间尽可能相似 对于每个级对表分为下列几类内部表存在于
23、每个 定义和 中 和对象管理和版本控制有关环境表存在于 定义中控制 定义和相关 提供的服务专用表 仅存在于 定义或特定的 中的一组表包括体现定义的数据模型设施的数据结构规则的表 对于 定义的数据模型设施是 的数据模型设施公共表每个 定义和 中都存在与命名 版本控制和其他公共设施有关表 用表格的形式说明了这些类型的表的相关特征表 不同类型表的特征类型 行表示对象版本化 共享内部表 否否否环境表 是 否 是专用表 是 可选 否公共表 是 否否在本标准中常常不是通过类引用表而是使用术语 如引用表 被引用表 超表子表 这些概念独立于上述分类定义级表的概念定义级的数据用于定义和控制 级的数据定义包含 个
24、定义表 这些表为内部表环境表专用表公共表定义表 不同于 表集合中的成员 表集合中的表成员以后称为表 每个 表的元数据是 定义级表 的一行记录定义级表的顺序基于 定义表的分类以及表与表之间的引用约束 如果表 引用表 则在该顺序中表 在表 之前 第 章中将会用到上面的表顺序在第 章的 文本以及后面部分对他的直接引用中 表名和列用大写字母 相邻的词用下划线连接在对表和列的非正式引用中如本章的文本和图名字用大写字母开头的小写表示词之间用空格分开表 称为 对于其他 定义表中的一行表 总有一个相应行 内容是在其他 定义级表中应反复出现的审计属性 表 称为 对于表 中表示同一对象的不同版本的行集合在表 中存
25、在一个相应行 同时也包含审计列和其他支持命名等设施的列 对于在 定义中的每个工作集 在表 中存在一个相应行 表 中的每行有到表 中一行的引用 表 是工作集之间的引用的定义表 表 表 是环境表 定义中有权限的每个 用户在表 中存在一个相应行 表 中存在一个唯一行说明实现定义的限制 定义和在该 定义中创建的每个 在表 中分别存在一个相应行表 到表 是 相关表 基于 定义模式的一部分 每个表的表名是英文的单数形式 且包含一个前缀 表示的顺序与 标准相同 然而这些表除了 标准的列外还有其他列 这些表支持 设施 如命名和其他设施表 到表 包含支持缺省和其他设施 有的表包含到数据模型设施表 表 到表 的引
26、用表 是支持访问控制的设施下面的数据结构图图 图 图 图 表示 定义级表之间的关系图 是 定义级的基本结构图 是数据类型说明符和列 域的关系 图 是视图如何用表和他们的列来定义 图 阐明版本控制的表之间的相互关系图 定义级结构图图 数据类型说明符的使用图 视图的使用图 定义级版本控制表因为其他表都是表 的子表 所以表 和表 不出现在上述任何一个图中 又因为模块可以被任何对象类型引用所以表 也不出现在这些图中 表 表 和表 仅用于控制目的 和其他表中没有任何直接联系故也不出现表概述概述每个 包含几个 相关表这些表可以由实现者或用户使用其他标准定义 为了能够在本标准中定义 级的服务引入一些内部表和
27、公共表 其中有 和 第 章的 语句中称为 和对于每个 下列情况成立每个 用一个 模式组说明 模式组通过 表中的行引用一或多个 模式 这些模式详细定义了每个 模式包含一或多个 表的定义 即 定义级表 中每有一行引用该模式 中则有一个符合该定义的 表对于每个 表中的每行在 中有相应一行 记录了他的审计属性和版本控制信息对于 表中表示同一对象的不同版本的行 对应 表中一行内部表和公共表图 阐明了在 级的定义中使用的表之间的相互关系以及这些表和 定义级的表 和表之间的关系 图 表示的结构和第 章定义的结构仅为了说明规则和定义 级对实际实现不规定使用这种结构这些表都在相关的 定义中图 级各表相关表定义见
28、 中 表中的行作为 模式组的一部分每一行在所属的中定义一个 级表 这些表在 级是 表的子表 从 角度讲表中定义表的行必须有引用 表主键的列设 定义包含图 中出现的行 则 这些表应出现在 级这些表在图 中表示成子表 为了说明的目的在表 中定义了两个引用约束一个引用 一个引用 附录 是一个更复杂的例子图 中行示例级的 相关表的列用 定义级表 中的行定义 类似地引用约束和其他表约束在 表中定义 检测约束在 表中定义 域和断言在表中定义这些表都在相关的 定义中图 级各表例数据和数据引用的对象在 中区分信息系统概念的内容数据和概念的表示数据很重要例如区分 意义上的表和关于这个表的表示数据 即元数据 表的
29、元数据如谁在一个模式中插入该定义定义最后修改的日期 不应该和表中的内容数据混淆 在 范围内在一个级上表包含的内容数据同时成为较低一级表的元数据包含数据模型设施的定义对象定义包含关于 模式组和 模式 表列以及他们之间的约束 模式所属的任何对象都是 模式的一部分 每一部分的类型用 定义级的一个表支持 这些表用于表示 数据模型设施每一 模式在 定义级表 中有一行 引用该行直接或间接 的其他表的行可参看图每个 模式组在 定义级表 中有一相应行 定义级表中有一或多行引用 和本标准对于引用一个 模式组的 数不作限制除了 标准提供的数据模型设施外 服务接口也支持超表和子表的定义假设 和 是两个表 如果 中的
30、每行在 中存在一个主键相同的相应行 称为 表的子表 所以 继承了 中的所有列和约束 如果在 中插入一行则 服务接口处理器在 中插入一个相应行 如果 中的一行的任何继承列被修改则 中的行的相应列也做修改 如果在 中删除一行则 中相应行也做删除 当在 中插入修改 删除一行 和 都要执行完整性检查继承可以多层次 例如 又可以是其他表的子表这种时递归应用上面的处理本标准规定一个表只能直接继承一个超表依赖 模式组的定义对象在任何数据存放于 表之前 必须先创建 使用 服务 模式组只有在验证后才能被 服务引用 验证 模式组使用 服务证明它满足内部约束 任何模式组如果未被验证或验证后修改了组件则称其未验证表的
31、内容表内容的子集可能是一个或多个应用模式 但也有不属于应用模式的其他数据例如 一个叫做 的 表可能包含一些行创建 和表 在存储任何关于雇员和供应商的应用数据以前 应当先插入这些行 同样 表中有创建这些应用表内容的行应用模式也可以应用验证和激活的概念但关于应用模式概念的含义本标准不定义用户对表的可访问性用户可对大多数 级和 定义级表作查询和修改 在第 章中将说明这些服务提供的访问方法下列表支持 服务接口处理器的内部工作用户只能通过创建 修改删除工作集的服务访问 表 其他两个表用户不能直接访问只能通过 服务接口处理器维护和使用版本控制的概念本标准在 级和 定义级提供相同的版本控制设施 虽然给出的例
32、子通常是在 定义级但本章的内容适用这两级一些 用户可能希望版本控制的设施对于他们是透明的 这些用户可以仅定义一个工作集 并把它作为缺省的工作集从而用作所有服务的作业区对象和对象版本在 中一个 对象类型的对象可以有多个版本对象版本 通常作为对象属性所引用的是对象版本的属性 但有两个例外 对象版本的 名和变名 这两者对于所有的对象版本是相同的如果要改变的话则所有的对象版本都要随之改变无版本对象类型是指它的对象只有一个对象版本且仅在无版本的工作集中创建 版本化对象类型的对象既可以存在于版本化的工作集中也可以存在于无版本的工作集中环境表和公共表中的行表示的对象类型都是无版本的分别存在于 工作集和工作集
33、中 相关表的行表示的对象类型通常是版本化的 在第 定义级中定义的这些表是版本化的一个对象如果创建一个无版本的工作集 则不能将它变成版本化的工作集反之亦然表中的行不表示对象版本 因此无须考虑它存在于哪个工作集中工作集在 定义级 有时需要区分和 定义模式相联系的一或多个工作集 例如 用户可能要开发一个对象集 用以说明程序 界面 数据库模式商业模型等概念 该对象集必须作为一个整体考虑和管理用户很少考虑程序中的单行代码以及它们对数据库模式的引用 然而每一行可能属于特定对象的特定版本 如果用户希望为了修改管理的目的作为一个单元处理 则在对象版本集中使用版本控制这就是 工作集对于 它的每个 工作集是用 工
34、作集名 和工作集版本名标识的 用于修改管理和项目管理的 工作集可以共享 工作集名 本标准不对 工作集名和版本名的结构和使用做规定 关于版本控制的 服务在 工作集中操作和 定义级一样 对于 级每个 有一组支持版本控制机制的表中的对象版本用工作集键和对象键的组合标识 因此在一个 工作集中一个对象最多只有一个版本工作集和用户工作集是通过激活 创建工作集 服务创建的 初始内容为空 以后通过激活插入对象服务插入对象 并且要指定一个工作集作为当前工作集 或使用缺省工作集一个工作集以另一个工作集为基当创建新工作集时 可以以另一个工作集为基 并使新工作集是基工作集的复本 无版本的工作集既不能以其他工作集为基
35、也不能作为其他工作集的基图 说明了一个工作集作为另一个工作集的基的方法图 基工作集多个 工作集可以以同一个 工作集为基 这样 既可以定义孤立的 工作集 也可以创建 工作集的树 树的根是最老的工作集 图 是工作集树 注意图 是实例图不是类型图工作集 的版本路径是指工作集序列 其中每个工作集 是以为基 当引用当前版本路径中的对象版本时 被引用对象版本的工作集是指当前版本路径中包含被引用对象的最新版本的工作集在图 中工作集实例用椭圆表示 基于关系用直线表示例中有一工作集名为 版本为 的工作集 该工作集既不以其他工作集为基 也不作为其他工作集的基有 个名为 的工作集 他们分别有 个不同的版本 工作集
36、版本 不以其他工作集为基但他作为工作集 版本 和工作集 版本 的基 工作集 版本 以工作集 版本 为基工作集 版本 以工作集 版本 为基但同时作为工作集 版本 的基工作集现实工作集现实是一个对象版本集 递归定义如下假设 和 是工作集如果 不以其他工作集为基 的现实是 中所有对象版本的集合如果 以 为基则 的现实是 中的所有对象版本加上 现实中的除下面对象版本外的所有对象版本在 中已经存在新版本的对象版本该对象版本的对象已经从 中删除的对象版本集称为附加在 现实上一个对象版本在 中是可见的当且仅当该对象版本在 的现实中图 的引用约束均建立在这一 现实概念上的以另一个工作集 为基的工作集 如果不以
37、其他工作集为基可以从 中删除删除的结果就是删除在 作业区中创建和修改的对象版本 用户在受控的工作集中遇到错误时可以使用该操作重新创建工作集工作集 是另一个工作集 的基 但他不作为其他工作集的基 也可以从 中删除其结果是在 中创建保存在 现实中的 的所有对象的对象版本 并且设置 的基为空用户可以使用此操作从 中删除归档的工作集工作集的引用有时 一个组织划分成几个各自独立工作的组 在 中说明的层次继承机制适合单个组 在图中组 拥有名为 的工作集有时数据管理组或开发共享软件的组要向进度不同的组提供定义 在现实生活中不能保证所有组都能准时完成新系统 因此必须允许存在一定程度的独立性但又保持定义的共享图
38、 各工作集间引用示例本标准使用定义引用路径的方法来允许一对象版本引用一或多个其他工作集中的对象版本 换句话说一个工作集中的对象版本由于引用路径的存在可以被其他工作集中的对象版本引用 而不必有共同的工作集名或以包含该对象版本的工作集为基 从工作集 到工作集 版本路径中的其他工作集不再存在引用路径图 中数据管理工作组有一名为数据管理的工作集为组 和组 提供数据定义从工作集 版本 到工作集数据管理版本 的引用路径使得任何当前作业区是工作集 版本的用户 创建从那个作业区中创建或修改的对象版本到工作集数据管理版本 的引用 引用路径的存在并不意味着工作集数据管理版本 中的所有对象版本在工作集 版本 中是可
39、见的引用路径允许工作于工作集 版本 的项目组 可以看到和引用共享的定义 但不能修改 所有词典内容都可以按这种方式共享项目 的其他工作集和项目 的工作集将定义相似的引用路径 当工作集 版本 创建时 从工作集 版本 继承引用路径 然后用 修改引用路径服务把该引用路径从工作集 数据管理 版本 重定向到工作集数据管理版本 调整此引用路径的引用方 从而引用工作集数据管理版本 中的对象版本但是当项目 转向一个新的工作集引用数据管理版本 的对象版本时 项目 不必随之改变即使他们为自己定义的需要而转向一新工作集修改删除和插入只能由 用户对当前作业区的工作集现实中的对象版本进行 用户如果希望修改通过引用路径访问
40、的工作集中的对象版本时 必须具有那个工作集的修改权限 并将那个工作集作为他们的当前作业区 见假设 和 各自代表工作集 和 的对象版本 如果对象版本 的行中包含对象版本 的主键则称为 引用 要使引用是合法的 必须 和 包含在同一工作集中 或者从 到 存在引用路径当一个 表保含到另一个工作集中对象版本的引用时 这个表定义了一个聚合对象 他提供了用户作为一个单元引用各种类型的对象版本的集合这些对象版本的内容受其他 用户控制 被引用对象本身又可以是聚合对象 通过这种方法 用户可以定义需要的特定对象的继承结构图 就是这种结构的例子 利润 是到 个其他工作集的引用路径的引用方 他有一个表示聚合对象利润 的
41、表表中行包含到组成他的下级对象的引用 这种方法的引用路径机制使被定义的对象版本集合形成层次结构图 用引用路径构造聚集对象如果使用单作业区见后 包含在工作集现实中的仅是对象的引用而不是对象本身然而若使用全作业区见后 现实工作集中可以包含所有被引用对象版本的工作集引用一个对象的多个版本有时需要引用同一个对象的多个版本 在一个版本路径中不能看到一个对象的多个版本 这时可以使用从当前工作集到含有对象所要引用的版本的工作集的引用路径作业区查询表达式是在特定现实工作集组成的 数据库子集中计算的 可能扩大到其他工作集中的对象版本实际数据库是由实现决定的但现实工作集总是由表 列行等组成的 数据库 现实基于的工
42、作集是操作的作业区如果定义了从工作集 到工作集 的引用路径称为 存在到 的直接引用路径 如果从工作集到工作集 存在直接引用路径 则称为 存在到 的间接引用路径 有时 被一个工作集直接或间接引用的所有对象版本都在作业区中 如果被引用工作集的对象版本都作为作业区 称为全作业区 否则 称为单作业区 单作业区的工作集也是引用的起点称为作业区说明符 在全作业区的情况下 现实化处理不仅应用到作业区说明符的工作集也应用到被引用的工作集在本标准使用的或存储在 定义 中的每个 子句必须在某一作业区中计算对于服务 或者会话的缺省作业区说明符或者指定的作业区说明符作为向服务提供的参数 对于查询使用参数指定单作业区或
43、全作业区 对于修改只允许单作业区约束的 条件以直接包含对象版本的工作集作为作业区说明符 如果通过引用路径访问的几个工作集间存在完整性约束 使用全作业区视图在视图的使用者的作业区中计算有些服务如 创建工作集 服务不需要设置作业区 这些服务修改一或多个内部表或 或 工作集中的表 例如创建工作集服务同时创建该工作集的一组初始权限 第 章详细说明这个操作 操作的数据结构在第 章说明内容状态每个 工作集有一属性 内容状态 用户可以规定该内容状态的值 值取为未受控的 受控的 归档的仅当工作集是未受控的或无版本的时候 可以在该工作集中插入对象版本或修改 删除已有的对象版本为了防止副作用 作为其他工作集的基的
44、工作集的内容状态值总是取受控的只有具有适当权限的用户才能使用修改工作集的 内容状态服务在不违反 和 说明的约束的情况下才能修改工作集的内容状态 使它进入另一内容状态 反之也可通过选择该工作集应处的 内容状态决定是否执行该约束中的引用一个对象版本可以引用另一个对象版本但应遵循引用完整性约束 每个引用由对象键和工作集键两列组成前一列表示被引用的对象 后一列表示被引用版本所在的工作集当要引用当前工作集现实外面的对象版本时只允许从引用工作集到被引用工作集的引用路径存在时版本控制的粒度版本控制的粒度是 用户控制的 一个极端是可以在每个对象级改变时创建新工作集 另一个极端是当工作集的改变积累到一定程度时以
45、这个工作集为基创建新工作集 实际上 在 安装时设置版本控制应用的原则 如用户可以检查作为其他工作集基的工作集或通过引用路径被其他工作集访问的工作集 或者其内容状态为受控 或者不再是同名工作集中最新的 该检查有效设置版本控制的粒度上限版本控制使用工作集权限机制控制所有对 定义或 的访问 除了在上面说明的工作集设施外 在第章工作集权限表中也将说明权限机制命名设施标准命名结构是为 定义对象和 对象提供的 用于区分 中的所有词典对象 在本标准中还将提供另一些命名或命名相关的设施名用户赋予 或 定义中记录的定义级对象版本或词典级对象版本一个唯一名 名仅在或 定义范围内部唯一名分为 个部分名变名工作集名工
46、作集版本名名当在 定义级表或 级表中插入对象时 用户赋予这个定义级对象或 级对象一个名变名变名是用于当对象相似但在某些方面又不同时 使 名能够唯一标识对象 变名的格式与名的格式相同他的最大长度在实现时定义工作集名和工作集版本名对象版本只能在工作集的作业区中访问 工作集标识符是对象版本标识符的组成部分工作集由工作集名和工作集版本名标识工作集名和工作集版本名标识 名相同或 名和变名相同的 对象的版本 当创建对象版本时 用户赋予他 名有时还有变名工作集名和工作集版本名是 用户使用设置作业区服务 设置的当前工作集作业区的工作集名和工作集版本名工作集名和工作集版本名的目的用于区分多对象版本的版本可定义的
47、限制和安装缺省限制可以是实现者 安装者或 用户定义 安装缺省由安装者设置由实现规定的限制由实现定义 名和变名的最大长度 这些限制应用于 定义级表和 表中 第 章的表中的检测子句说明这些实现定义最大值自身的最小值安装缺省虽然任何名的最大长度受实现者定义的限制但是 名所允许的最大及最小长度可以随着各表的不同而不同 最大值和最小值是每个 表的缺省值 但可以被用户定义的值覆盖 缺省值在表中说明创建和删除为了方便每个 赋予一个内部名 对应 对象 该名遵循名的正常格式同时赋予一个外部名 该名遵循实现定义的格式 因此 服务用用户说明的内部名和外部名创建 其他服务用内部名引用这个模式修改为了验证和处理服务请求
48、在响应 级的服务请求时 必须访问该活动 引用的模式组的定义对象 如 表 域 断言 然而有时要修改 引用的模式组纠正错误或扩展模式组如果在修改 模式组时访问和修改 则会破坏 的完整性服务不能正确操作 因此规定在修改 模式组时 不允许访问和修改 这通过 服务实现在服务之前调用 使这个 引用另一个 模式组使 变成活动的时候 模式组有必要本身一致外还要和 的内容一致服务执行检测的前一部分 服务首先再执行上述一致性检测 然后检查的内容与它引用的模式组之间的一致性如果成功 允许对该 访问其他设施审计属性每个 定义级表或 表中的每一行都有审计属性 审计属性有创建对象版本的用户名创建对象版本的日期 时间修改对
49、象版本的用户名对象版本最近修改的日期时间对象版本创建后修改的次数每个审计属性用 表中一列表示 此外属性 和 也用 表中的列表示每次修改对象版本时 服务接口处理器自动维护审计属性 当新对象版本所在的工作集以另一工作集为基创建的时候 创建时修改属性 和 的值以后不再改变 对象版本的每次修改 将修改的值内容模块内容模块可以用下列标准定义国际标准国家标准标准的实现者安装者或 标准的用户定义或 中出现的内容模块在 定义级表 中表示每个模块名标识它的来源 对这个表的引用使得 服务接口用户能够找到在某个 定义或 中可用的定义集 该定义集使用其他国际或国家标准定义系统维护值表中的列可以指定为系统维护的 这意味着 负责维护该列的值抽象的数据结构定义级定义级数据结构定义级的定义包含每个组件 域 表视图断言的定义和维护它们的服务藉以支持本标准中规定的功能 定义级的功能是定义 级的内容在 中非正式地说明 定义级的数据结构本章将作正式定义定义级的每个组件的说明中包括功能定义叙述性地说明组件各部分的目的 如此组件为表则包括表的列和引用其他表的约