您的位置:首页 > 数据库

SQL-92标准 中文翻译——定义、记号和约定 (约定)

2009-02-06 08:53 281 查看

约定

3.3.1 告知性元素

告知性的注解在该国际标准正文中出现好几次。
例如:

注: 这是一个注解的例子。

这些注解不属于该国际标准的规范部分,并且不应声明符合注解中说明的资料。

3.3.2 语法元素说明

根据以下指定语法元素:

- 功能: 对于元素意图的简短说明。

- 格式:
元素语法的BNF定义。

- 语法规则:
元素语法属性的详细说明,或在BNF中没有表示的,但该元素必须满足的附加语法约束的详细说明,或者两者兼而有之。

- 访问规则:
管理方案对象访问的规则的详细说明,应用在通用规则成功运用之后。

- 通用规则: 元素运行时效果的详细说明。多个通用规则用来指定元素效果, 所需的效果通过开始第一个通用规则,并在数字序列中应用中获得,除非规则说明或暗示序列中的改变或规则应用结束。
除非应用了特殊规则,否则通用规则在序列的最后一条应用之后终结。

- 分级规则: 元素如何支持各种级别的SQL的详细说明。

注释性符号的范围是定义这些符号的子条款。子条款中,在语法规则,访问规则或者通用规则中定义的符号可以在其他规则中引用,引用前需先定义。

3.3.3 信息方案的详细说明

根据以下指定该国际标准的信息方案对象:

- 功能: 对于该定义意图的简短说明。

- 定义:
SQL中该对象的定义。

- 描述:
对该对象运行值的详细说明,主要针对定义中不清楚的地方。

在信息方案中定义视图的定义只用来说明这些可视化表的内容。 这些视图所基于的实际对象依赖于实现。

3.3.4 术语的使用

3.3.4.1 异常

短语“引发异常状况:”, 用于通用规则和其他显示语句执行不成功的地方,通用规则应用, 除了子条款 12.3,
"<过程>", 和子条款 20.1, "<直接SQL 语句>",可能中止, 可获得诊断信息,语句的执行对SQL数据或方案没有影响。被异常情况终止的SQL语句的SQL描述符区域的影响, 除非通过该国际标准显式定义,否则依赖于实现。

短语“引发完成状况:”,用于通用规则和其他显示通用规则的应用没有中止,可获得诊断信息;除非同时引发了异常状况,否则语句执行成功。

语句执行时,可能出现多个情况。多个情况的诊断信息是否可用依赖于实现。

3.3.4.2 语法包含

在格式中,如果语法元素<B>对于语法元素<A>出现在BNF产生规则的右边,那么就说<A>恰好包含<B>。如果<A>恰好包含<C>或者<A>恰好包含<B>,而<B>又包含<C>,那么<A>包含<C>。

在SQL语言中,如果<A>恰好包含<B>,那么就说<A>的一个实例A1恰好包含<B>的一个实例B1 ,并且B1的文本是A1文本的一部分。如果<A>的一个实例A1包含C1或者A1恰好包含<B>的实例B1,而B1又包含C1,那么就说A1包含C1。

如果A1包含B1并且A1包含<C>的一个实例C1,C1又包含B1,那么就说A1通过中介<C>包含B1。如果A1包含B1并且A1不包含C1,而C1又包含B1,那么就说A1不通过中介<C>包含B1。

如果A1包含B1不通过中介A2或者B2,那么就说A1只包含B1。

如果<A>包含<B>,那么<B>包含于<A>,<A>对于<B>来说是一个包含的产生符号。如果<A>简单包含<B>,那么<B>简单包含于<A>,<A>对于<B>来说是一个简单包含的产生符号。

假设A1是<A>的一个实例,B1是<B>的一个实例。如果<A>包含<B>,那么就说A1包含B1或者B1包含于A1。如果<A>仅包含<B>,,那么就说A1简单包含B1或者B1简单包含于A1。

如果A1满足C,A2满足C,,但A1不包含A2,那么就说A1在最内部满足条件C。如果A1满足C,A2满足C,但A1不包含于A2,那么就说A1在最外部满足条件C。

如果<A>包含一个<table name>,<table name>标志通过<view definition> V 定义的视图,那么<A>一般包含V中的<query expression>。如果<A>包含<B>,那么<A>一般包含<B>。如果<A>一般包含 <B>,<B>一般包含<C>,那么<A>一般包含<C>。

如果A1不通过中介<set function specification>或<subquery>包含B1,那么就说A1直接包含B1。

3.3.4.3 条款表示规则要求

在语法规则中,条款应定义符合SQL语言语法的条件。只有当通用规则中指定的行动执行后,这些依赖于方案内容的条件才为真。不符合的SQL格式和语法规则的语言依赖于实现。当尝试评估访问或通用规则并且实现既不是处理不符合的SQL语言也不是以不符合的方式处理符合的SQL语言时,如果语法规则规定的任一条件没有满足,那么将引发异常状况:语法错误或违反访问规则(如果这种情况发生在动态SQL语句执行中,那么引发的异常是动态SQL语句的语法错误或访问规则的违反;如果这种情况发生在直接引用SQL语句中,那么引发的异常是直接SQL语句的语法错误或访问规则的违反)。

在访问规则中,条款应定义满足通用规则成功应用的条件。当通用规则应用时,如果任一这种条件没有满足,那么将引发异常状况:语法错误或违反访问规则。

在分级规则中,条款应定义符合指定级别的SQL语言的条件。

3.3.4.4 规则评估次序

一个相符的实现并不需要执行在一般规则中定义的精确的行动次序,但是在SQL数据和方案上应达到相同的效果。该条款是用来有效地强调行动的效果可以通过实现的不同方式达到。

包含和被包含的语法元素的语法规则和访问规则语法元素同时有效应用。包含和被包含的语法元素的一般规则应用,被包含的应用在前,包含的应用在后。当运算符的优先级取决于该国际标准的格式或者圆括号,这些符号通过该优先顺序有效地应用。当运算符不取决于该国际标准的格式或者圆括号,表达式有效的评估一般从左至右。然而,表达式是否从左至右评估是依赖于具体实现的,特别是操作数或操作符可能引发情况,或者如果表达式的结果,在没有完全评估表达式各个部分的前提下,能够确定。总之,如果一个语法元素包含多个其他的语法元素,那么出现在产生规则前面的语法元素和出现在后面的语法元素一般规则的应用,出现在前面的语法元素早于出现在后面的语法元素。

例如,在产生规则中:

<A> ::= <B> <C>

对于<A>,<B>,和<C>语法规则和访问规则同时有效应用。对于<A>,<B>和<C>的一般规则应用,<C>在<B>之后,<A>在最后 。

如果表达式或者搜索条件的结果,在没有完全评估表达式或者搜索条件各个部分的前提下,能够确定,那么表达式或者搜索条件非必要的评估部分称为无关紧要的部分。如果属于无关紧要部分的访问规则没有满足,那么将引发语法错误或违反访问规则的异常状况
,不管无关紧要部分是否已经评估。如果评估无关紧要部分引发异常,那么该异常是否引发依赖具体实现。

3.3.4.5 条件规则

条件规则通过“If”或“Case”惯例指定。通过“Case”惯例指定的规则包含一个使用“If”惯例的条件子规则列表。第一个条件成立的“If”子规则是“Case”规则下的有效子规则。“Case”规则下的最后一个子规则应该声明为“Otherwise”。如果之前的“If”子规则条件都不成立,那么该子规则有效。

3.3.4.6 语法替代

在语法规则和一般规则中,短语 "X is
implicit"表明该语法规则和一般规则将要解释成元素X已经实际指定。

在语法规则和一般规则中,短语 "the following
<X> is implicit: Y" 表明该语法规则和一般规则将要解释成已经实际上指定语法元素包含Y 。

在语法规则和一般规则中,短语 "former is
equivalent to latter" 表明该语法规则和一般规则将要解释成元素中之前的实例与之后的实例等效。

如果在子条款中引用的BNF非终结符,没有说明它如何包含在子条款定义的BNF产生过程中,那么

Case:

- 如果BNF非终结符是定义在子条款的自身,那么该引用应假定为此BNF非终结符,出现在定义产生规则左边。

- 否则,该引用应假定为一个恰好包含特殊的BNF非终结符的BNF产生规则。.

3.3.4.7 其他条款

一些语法规则定义条款,如T1,表示命名或没有命名的表。这些条款用作表名或相互关系名称。条款用作相互关系名称,这并不意味着为了命名表而定义任何新的相互关系名称,也不影响任何实际的相互关系名称。

一个SQL语句S1的执行是执行SQL语句的直接结果,如果S1是包含在一个已经执行的<procedure>中的SQL语句,或者S1是<SQL
statement variable>的值,<SQL statement variable>被包含在一个已经执行的<procedure>中的<execute immediate statement>所引用,或者S1是<SQL
statement variable>的值,其中<SQL statement variable>通过一个<prepare statement>与一个<SQL statement name>关联
,并且<SQL statement name>被包含在一个已执行的<execute statement>所引用。

3.3.5 描述符

描述符是定义指定类型对象实例属性的数据的概念结构的集合。描述符的概念用于指定SQL语义。任何数据库或环境中都不需要描述符以任何特殊的形式存在。

一些SQL对象只有在某些SQL对象的背景中才能存在。例如,列只能存在于表中 。
这些对象通过描述符独立描述,启用对象描述符(如:表)包含被启用对象的描述符(如:列或表约束)。

在其他情况下,某些SQL对象只有在另外一些SQL对象存在的前提下才能存在, 即使不存在包含关系。例如,如果断言引用的表不存在,那么SQL不允许断言存在。 因此, 断言描述符依赖于零个或多个表描述符(等效于, 断言依赖于零个或多个表). 一般来说,描述符D1依赖或被依赖于另一个描述符D2。

有两种方式显示依赖。在许多情况下,
依赖构建描述符包含依赖构建的名称 。在这种情况下"the name of" 应理解为 "sufficient information to identify the descriptor of";因此,实现者可以选择指针或<catalog name>,
<schema name>的串联等等。此外,描述符可以包含文本(如 <query expression>,
<search condition>)。在这种情况下, 是否在实现中包含文本或它自身风格的解析树是不相关的;描述符的有效性明确依赖对象提到的描述符的存在。

“列基于域”和“列依赖于域”等效。

如果一个描述符被其他描述符所依赖,或一个描述符被另一个描述符包含,那么企图销毁该描述符很可能会失败。销毁一个描述符会导致所有该描述符所包含的描述符被销毁,但是不影响依赖它的描述符。

3.3.6 索引排印

在该国际标准的索引中,使用以下约定:

- 以黑体出现的索引条目显示定义单词、词组或者BNF非终结符的页;

- 以斜体出现的索引条目显示在格式中使用BNF非终结符的页;

- 以罗马字体出现的索引条目显示在标题,函数,语法规则,访问规则,通用规则,分级规则,表,或其他描述性文本中使用的单词,词组或BNF非终结符。

数据库语言SQL的对象标志符

功能

数据库语言SQL的对象标志符标志在开放的系统环境中对于其他实体SQL实现的特征。

格式

<SQL object identifier> ::=

<SQL provenance> <SQL
variant>

<SQL provenance> ::= <arc1> <arc2> <arc3>

<arc1> ::= iso | 1 | iso <left paren> 1 <right paren>

<arc2> ::= standard | 0 | standard <left paren> 0 <right
paren>

<arc3> ::= 9075

<SQL variant> ::= <SQL edition> <SQL conformance>

<SQL edition> ::= <1987> | <1989> | <1992>

<1987> ::= 0 | edition1987 <left paren> 0 <right
paren>

<1989> ::= <1989
base> <1989 package>

<1989 base> ::= 1 | edition1989 <left paren> 1 <right
paren>

<1989 package> ::= <integrity no> | <integrity yes>

<integrity no> ::= 0 | IntegrityNo <left paren> 0 <right
paren>

<integrity yes> ::= 1 | IntegrityYes <left paren> 1
<right paren>

<1992> ::= 2 | edition1992 <left paren> 2 <right
paren>

<SQL conformance> ::= <low> | <intermediate> |
<high>

<low> ::= 0 | Low <left paren> 0 <right paren>

<intermediate> ::= 1 |
Intermediate <left paren> 1 <right paren>

<high> ::= 2 | High <left paren> 2 <right paren>

语法规则

1) 除非<SQL edition>为<1992>,否则<SQL conformance>不会为<high>。

2) <SQL conformance>的值标识符合的级别:

a) 如果 <SQL
edition> 指定为
<1992>, 那么

Case:

i) <low>, 入门级SQL。

ii) <intermediate>, 中级SQL。

iii) <high>, 完整级SQL。

b) 否则:

i) <low>, 级别1.

ii) <intermediate>, 级别2.

3) <1989 package>为<integrity no>,意味着完整性增强功能没有实现。<1989 package>为<integrity yes>,意味着完整性增强功能已经实现。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: