图 3-5 NC数据字典
NC数据字典通常在安装产品时候由系统生成,如果想自己为某些数据库对象生成字典,可以采用数据字典管理界面提供的导入方法。导入方式包括三种(详细操作可参见《数据字典导入说明》):
1、 解析PDM文件(xml格式); 2、 解析NC标准建库脚本; 3、 提取数据库元数据;
如果需要给非NC数据库(比如用户采用的第三方数据库)生成数据字典,可以利用PowerDesigner提供的逆向工程功能将库里的物理表生成PDM文件,修改其中表和字段的中文名称,然后以xml文件格式存储,再使用上述第一种方法导入。 查询引擎中用到的数据字典都以一棵对象树的形式存在,树节点包括目录、表、视图、字段、外键等信息,通过双击对象节点可以协助录入SQL语句的成分。
2.2 向导设计
向导设计参考典型SQL的构成规则,充分利用数据字典的功能,引导用户一步步完成SQL的设计,因此是推荐使用的方式。它由以下六个环节构成,其中最后一步“交叉属性”超出了SQL的涵义,我们在后面的专门章节中进行介绍。
(1) 表定义:即SQL语句中的from部分,可以利用数据字典选择库里的数据表,
也可以选择查询对象,从而实现查询的集成(基于查询结果定义新的查询)。
(2) 连接定义:即SQL语句中的join部分(表间连接关系),支持单键连接和多键
连接两种模式。
第 8 页
(3) 字段定义:即SQL语句中的select部分,可以定义任何SQLSERVER语法支持的查询表达式,但要保证字段别名不重复且使用规范名称(以字母开头、由字母、数字、下划线组成的字符串,且不能使用SQL保留字)。如果使用了聚集函数,则由系统自动完成group by部分。
(4) 筛选条件定义:即SQL语句中的where部分,可定义确定条件和待定条件。
秘笈:如果是待定条件,在值编辑框获得焦点时双击编辑框可弹出参数界面并作引用(或者在值编辑框获得焦点时按F12键弹出参数引用框);如果是固定条件,在值编辑框获得焦点时按F11键可弹出环境变量引用框,按F12键可弹出所引用的基础数据表的参照。
对于在查询字段里使用了聚集函数的SQL设计,筛选条件可能需要使用having子句。Having页签默认是隐藏的,可以在查询定义框的南部面板按Ctrl+Shift+鼠标左键弹出隐藏的Having页签。
(5) 排序字段定义:即SQL语句中的order by部分。
(6) 数据交叉属性:交叉是一种常用的多维数据分析手段,详见后文。
〃 秘笈:向导设计完成后在查询定义框的南部面板鼠标双击可弹出向导生成的等效SQL(待定条件全用(1=1)代替)。
图 3-6 表定义
第 9 页
图 3-7 增加表(物理表)与临时表
图 3-8 连接定义
图 3-9 字段定义
第 10 页
图 3-10 表达式生成器
图 3-11 筛选条件定义(典型模式参见图3-3)
图 3-12 排序字段定义
第 11 页
2.3 手工设计
手工设计是支持自由SQL的方式,由于复杂SQL在解析、适配、执行等方面的不稳定性较大,因此不推荐普通用户使用。手工设计分为以下两个环节:
(1) SQL录入:用户可以在数据字典的辅助下录入SQL语句,要求遵循SQLSERVER语法。
如图3-13,注意,我们在SQL定义里用到了一个替换型参数(#pk_corp#)(关于替换型参数的具体说明参见附录); (2) 字段显示名设置:系统通过对用户录入SQL的解析获得字段信息,并向用户提供输入字段显示名的机会,显示名的默认值与查询字段的物理名相同。
图 3-13 SQL录入
图 3-14 字段显示名设置
第 12 页