时间:2022-11-03 16:30:01 | 来源:信息时代
时间:2022-11-03 16:30:01 来源:信息时代
NDL模块语言 : 定义访问网状数据库的模块的命令集合,也是网状数据库语言标准的主要组成部分。网状数据库语言标准规定:访问网状数据库的模块是使用NDL模式定义语言说明的一个持久对象。模块是为了完成某一特定功能所需的一段可执行代码序列,是一个或一组过程或函数,每个模块都有唯一的一个可以用来调用它的名字。
在网状数据库中,用户对数据库的访问主要通过模块和数据操纵语言来实现。一个模块在运行期间应与一个使用指定程序设计语言编写的应用程序相关联,一个应用程序最多与一个模块相关联。
NDL模块语言的语法使用BNF(巴科斯范式或巴科斯一诺尔范式)表示法。这种格式便于理解整个ML的句法,在NDL模块语言中,定义一个模块的命令格式为:
〈模块〉::=〈module name子句〉〈language子句〉〈子模式说明〉[〈临时系说明组〉]〈过程〉…
它表示一个模块由一个任选的〈module name子句〉、一个〈language子句〉、一个〈子模式说明〉、至多一个〈临时系说明组〉和一个或多个〈过程〉所组成。其中:
〈module name子句〉: 命名一个模块。因为在一个数据库系统中,可以包含多个模块,为了使DBMS能够识别它们,必须对每一个模块进行唯一命名。
〈language子句〉: 指定与该模块相关联的应用程序所使用的程序设计语言,例如: COBOL、FORTRAN、PASCAL或PL1。
〈子模式说明〉: 申明与该模块在相同环境中的一个子模式及其源模式。
〈临时系说明组〉: 申明一个临时系,即定义一个临时的〈系类型〉。
〈过程〉: 定义一个过程(或函数)。包括: 过程名、过程的参数说明及由NDL语句组成的过程体。
由于一个模块的执行与一个使用指定程序设计语言编写的应用程序相关联,在第一次执行一个模块并调用其中的过程之前,要构造一个初始的会话状态,并把该会话状态与调用该模块中任一个过程的程序设计语言代理相关联。在最后一次调用模块内的过程之后,要执行一个rollback语句,以指明FINISH(结束),同时撤销与该模块相关联的会话状态。