一、数据场景 1、表结构简介 任何工具类的东西都是为了解决某个场景下的问题,比如Redis缓存系统热点数据,ClickHouse解决海量数据的实时分析,MySQL关系型数据库存储结构化数据。数据的存储则需要设计对应的表结构,清楚的表结构,有助于快速开发业务,和理解系统。表结构的设计通常从下面几个方面考虑:业务场景、设计规范、表结构、字段属性、数据管理。
2、用户场景
例如存储用户基础信息数据,通常都会下面几个相关表结构:用户信息表、单点登录表、状态管理表、支付账户表等。
用户信息表
存储用户三要素相关信息:姓名,手机号,身份z,登录密码,邮箱等。
CREATE TABLE `ms_user_center` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户ID', `user_name` varchar(20) NOT NULL COMMENT '用户名', `real_name` varchar(20) DEFAULT NULL COMMENT '真实姓名', `pass_word` varchar(32) NOT NULL COMMENT '密码', `phone` varchar(20) NOT NULL COMMENT '手机号', `email` varchar(32) DEFAULT NULL COMMENT '邮箱', `head_url` varchar(100) DEFAULT NULL COMMENT '用户头像URL', `card_id` varchar(32) DEFAULT NULL COMMENT '身份z号', `user_sex` int(1) DEFAULT '1' COMMENT '用户性别:0-女,1-男', `create_time` datetime DEFAULT NULL COMMENT '创建时间', `update_time` datetime DEFAULT NULL COMMENT '更新时间', `state` int(1) DEFAULT '1' COMMENT '是否可用,0-不可用,1-可用', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户表'; 单点登录表
用意是在多个业务系统中,用户登录一次就可以访问所有相互信任的业务子系统,是聚合业务平台常用的解决方案。
CREATE TABLE `ms_user_sso` ( `user_id` int(11) NOT NULL COMMENT '用户ID', `sso_id` varchar(32) NOT NULL COMMENT '单点信息编号ID', `sso_code` varchar(32) NOT NULL COMMENT '单点登录码,唯一核心标识', `log_ip` varchar(32) DEFAULT NULL COMMENT '登录IP地址', `create_time` datetime DEFAULT NULL COMMENT '创建时间', `update_time` datetime DEFAULT NULL COMMENT '更新时间', `state` int(1) DEFAULT '1' COMMENT '是否可用,0-不可用,1-可用', PRIMARY KEY (`user_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户单点登录表'; 状态管理表
系统用户在使用时候可能出现多个状态,例如账户冻结、密码锁定等,把状态聚合到一起,可以更加方便的管理和验证。
CREATE TABLE `ms_user_status` ( `user_id` int(11) NOT NULL COMMENT '用户ID', `account_status` int(1) DEFAULT '1' COMMENT '账户状态:0-冻结,1-未冻结', `real_name_status` int(1) DEFAULT '0' COMMENT '实名认证状态:0-未实名,1-已实名', `pay_pass_status` int(1) DEFAULT '0' COMMENT '支付密码是否设置:0-未设置,1-设置', `wallet_pass_status` int(1) DEFAULT '0' COMMENT '钱包密码是否设置:0-未设置,1-设置', `wallet_status` int(1) DEFAULT '1' COMMENT '钱包是否冻结:0-冻结,1-未冻结', `email_status` int(1) DEFAULT '0' COMMENT '邮箱状态:0-未激活,1-激活', `message_status` int(1) DEFAULT '1' COMMENT '短信提醒开启:0-未开启,1-开启', `letter_status` int(1) DEFAULT '1' COMMENT '站内信提醒开启:0-未开启,1-开启', `emailmsg_status` int(1) DEFAULT '0' COMMENT '邮件提醒开启:0-未开启,1-开启', `create_time` datetime DEFAULT NULL COMMENT '创建时间', `update_time` datetime DEFAULT NULL COMMENT '更新时间', `state` int(1) DEFAULT '1' COMMENT '是否可用,0-不可用,1-可用', PRIMARY KEY (`user_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户状态表'; 支付账户表
用户交易的核心表,存储用户相关的账户资金信息。
CREATE TABLE `ms_user_wallet` ( `wallet_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '钱包ID', `user_id` int(11) NOT NULL COMMENT '用户ID', `wallet_pwd` varchar(32) DEFAULT NULL COMMENT '钱包密码', `total_account` decimal(20,2) DEFAULT '000' COMMENT '账户总额', `usable_money` decimal(20,2) DEFAULT '000' COMMENT '可用余额', `freeze_money` decimal(20,2) DEFAULT '000' COMMENT '冻结金额', `freeze_time` datetime DEFAULT NULL COMMENT '冻结时间', `thaw_time` datetime DEFAULT NULL COMMENT '解冻时间', `create_time` datetime DEFAULT NULL COMMENT '创建时间', `update_time` datetime DEFAULT NULL COMMENT '更新时间', `state` int(1) DEFAULT '1' COMMENT '是否可用,0-不可用,1-可用', PRIMARY KEY (`wallet_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户钱包'; 二、设计规范 1、涉及模块
通过上面几个表设计的案例,可以看到表设计关联到数据库的各个方面知识:数据类型,索引,编码,存储引擎等。表设计是一个很大的命题,不过也遵循一个基本规范:三范式。
2、三范式 基础概念
一范式
表的列的具有原子性,不可再分解,即列的信息,不能分解,关系型数据库MySQL、Oracle等自动的满足。
二范式
每个事实的数据记录只会出现一次, 不会冗余, 通常设计一个主键来实现。
三范式
要求一个表中不包含已经存在于其它表的非主键信息,例如部门和员工的信息,员工表包含部门表的主键ID,则可以关联获取相关信息,没必要在员工表保存相关信息。
优缺点对比
范式化设计
范式化结构设计通常更新快,因为冗余数据较少,表结构轻巧,也更好的写入内存中。但是查询起来涉及到关联,代价非常高,非常损耗查询性能。
反范式化设计
所有的数据都在一张表中,避免关联查询,索引的有效性更高,但是数据的冗余性极高。
建议结论
上述的两种设计方式在实际开发中都是不存在的,在实际开发中都是混合使用。比如汇总统计,缓存数据,都会基于反范式化的设计。
三、字段属性
合适的字段类型对于高性能来说非常重要,基本原则如下:简单的类型占用资源更少;在可以正确存储数据的情况下,选最小的数据类型。
1、数据类型选择 整数类型
TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT,根据数据类型范围合理选择即可。
实数类型
FLOAT、DOUBLE、DECIMAL,建议资金货币相关类型使用高精度DECIMAL存储,或者把数据成倍扩大为整数,采用BIGINT存储,不过处理相对麻烦。
字符类型
CHAR、VARCHAR,长度不确定建议采用VARCHAR存储,不过VARCHAR类型需要额外开销记录字符串长度。CHAR适合存储短字符,或者定长字符串,例如MD5的加密结构。
时间类型
DATETIME、TIMESTAMP,DATETIME保存大范围的值,精度秒。TIMESTAMP以时间戳的格式,范围相对较小,效率也相对较高,所以通常情况建议使用。
MySQL的字段类型有很多种,可以根据数据特性选择合适的,这里只描述常见的几种类型。
2、基础用法 *** 作 数据类型
修改字段类型
ALTER TABLE ms_user_sso MODIFY state CHAR(1) DEFAULT '0' ; ALTER TABLE ms_user_sso MODIFY state INT(1) DEFAULT '1' COMMENT '状态:0不可用,1可用';
修改名称位置
ALTER TABLE ms_user_sso CHANGE log_ip login_ip VARCHAR(32) AFTER update_time ; 索引使用
索引类型:主键索引,普通索引,唯一索引,组合索引,全文索引。这里演示普通索引的 *** 作。MySQL的核心模块,后续详说。
添加索引
ALTER TABLE ms_user_wallet ADD INDEX user_id_index(user_id) ; CREATE INDEX state_index ON ms_user_wallet(state) ;
查看索引
SHOW INDEX FROM ms_user_wallet;
删除索引
DROP INDEX state_index ON ms_user_wallet ;
修改索引
不具有真正意义上的修改,可以把原有的索引删除之后,再次添加索引。
外键关联
用处:外键关联的作用保证多个数据表的数据一致性和完整性,建表时先有主表,后有从表;删除数据表,需要先删从表,再删主表。复杂场景不建议使用,实际开发中用的也不多。
添加外键
ALTER TABLE ms_user_wallet ADD CONSTRAINT user_id_out_key FOREIGN KEY(user_id) REFERENCES ms_user_center(id) ;
删除外键
ALTER TABLE ms_user_wallet DROP FOREIGN KEY user_id_out_key ; 四、表结构管理 1、查看结构 DESC ms_user_status ; SHOW CREATE TABLE ms_user_status ; 2、字段结构 添加字段 ALTER TABLE ms_user_status ADD `delete_time` datetime DEFAULT NULL COMMENT '删除时间' ; 删除字段 ALTER TABLE ms_user_status DROP COLUMN delete_time ; 3、修改表名 ALTER TABLE ms_user_center RENAME ms_user_info ; 4、存储引擎 存储引擎 SELECT VERSION() ; SHOW ENGINES ;
MySQL 56 支持的存储引擎有InnoDB、MyISAM、Memory、Archive、CSV、BLACKHOLE等。一般默认使用InnoDB,支持事务管理。该模块MySQL核心,后续详解。
修改引擎
数据量大的场景下,存储引擎修改是一个难度极大的 *** 作,容易会导致表的特性变动,引起各种后续反应,后续会详说。
ALTER TABLE ms_user_sso ENGINE = MyISAM ; 5、修改编码
表字符集默认使用utf8,通用,无乱码风险,汉字3字节,英文1字节,utf8mb4是utf8的超集,有存储4字节例如表情符号时使用。
查看编码 SHOW VARIABLES LIKE 'character%'; 修改编码 ALTER TABLE ms_user_sso DEFAULT CHARACTER SET utf8mb4; 五、数据管理 1、增删改查
添加数据
INSERT INTO ms_user_sso ( user_id,sso_id,sso_code,create_time,update_time,login_ip,state ) VALUES ( '1','SSO7637267','SSO78631273612', '2019-12-24 11:56:57','2019-12-24 11:57:01','127001','1' );
更新数据
UPDATE ms_user_sso SET user_id = '1',sso_id = 'SSO20191224',sso_code = 'SSO20191224', create_time = '2019-11-24 11:56:57',update_time = '2019-11-24 11:57:01', login_ip = '127001',state = '1' WHERE user_id = '1';
查询数据
一般情况下都是禁止使用 select *** 作。
SELECT user_id,sso_id,sso_code,create_time,update_time,login_ip,state FROM ms_user_sso WHERE user_id = '1';
删除数据
DELETE FROM ms_user_sso WHERE user_id = '2' ;
不带where条件,就是删除全部数据。原则上不允许该 *** 作,优化篇会详解。TRUNCATE TABLE也是清空表数据,但是占用的资源相对较少。
2、数据安全 不可逆加密
这类加密算法,多用来做数据验证 *** 作,比如常见的密码验证。
SELECT MD5('cicada')='94454b1241ad2cfbd0c44efda1b6b6ba' ; SELECT SHA('cicada')='0501746a2e4fd34e1d14015fc4d58309585edc7d'; SELECT PASSWORD('smile')='B4FB95D86DCFC3F33A3852714DC742C77504479D' ; 可逆加密
安全性要求高的系统,需要做三级等保,对数据的安全性极高,数据在存储时必须加密入库,取出时候需要解密,这些就需要可逆加密。
SELECT DECODE(ENCODE('123456','key_salt'),'key_salt') ; SELECT AES_DECRYPT(AES_ENCRYPT('cicada','salt123'),'salt123');
上述数据安全的管理,也可以基于应用系统的服务(代码)层进行处理,相对专业的流程是从数据生成源头处理,规避数据传递过程泄露,造成不必要的风险。
数工讨论群:27955282 数工考试交流群:37263632
你们交流。
2004数据库系统工程师级大纲
一、考试说明
1考试要求
(1)掌握计算机体系结构以及各主要部件的性能和基本工作原理;
<广告>
(2)掌握 *** 作系统、程序设计语言的基础知识,了解编译程序的基本知识;
(3)熟练掌握常用数据结构和常用算法;
(4)熟悉软件工程和软件开发项目管理的基础知识;
(5)熟悉计算机网络的原理和技术;
(6)掌握数据库原理及基本理论;
(7)掌握常用的大型数据库管理系统的应用技术;
(8)掌握数据库应用系统的设计方法和开发过程;
(9)熟悉数据库系统的管理和维护方法,了解相关的安全技术;
(10)了解数据库发展趋势与新技术;
(11)掌握常用信息技术标准、安全性,以及有关法律、法规的基本知识;
(12)了解信息化、计算机应用的基础知识;
(13)正确阅读和理解计算机领域的英文资料。
2 通过本考试的合格人员能参与应用信息系统的规划、设计、构建、运行和管理,能按照用户需求,设计、建立、运行、维护高质量的数据库和数据仓库;作为数据管理员管理信息系统中的数据资源,作为数据库管理员建立和维护核心数据库;担任数据库系统有关的技术支持,同时具备一定的网络结构设计及组网能力;具有工程师的实际工作能力和业务水平,能指导计算机技术与软件专业助理工程师(或技术员)工作。
3 本考试设置的科目包括
(1)信息系统知识,考试时间为150分钟,笔试;
(2)数据库系统设计与管理,考试时间为150分钟,笔试。
二、考试范围
考试科目1:信息系统知识
1 计算机系统知识
11 硬件知识
111 计算机体系结构和主要部件的基本工作原理
CPU和存储器的组成、性能、基本工作原理
常用I/O设备、通信设备的性能,以及基本工作原理
I/O接口的功能、类型和特点
CISC/RISC,流水线 *** 作,多处理机,并行处理
112 存储系统
虚拟存储器基本工作原理,多级存储体系
RAID类型和特性
113 安全性、可靠性与系统性能评测基础知识
诊断与容错
系统可靠性分析评价
计算机系统性能评测方法
12 数据结构与算法
121 常用数据结构
数组(静态数组、动态数组)
线性表、链表(单向链表、双向链表、循环链表)
栈和队列
树(二叉树、查找树、平衡树、遍历树、堆)、图、集合的定义、存储和 *** 作
Hash(存储位置计算、碰撞处理)
122 常用算法
排序算法、查找算法、数值计算、字符串处理、数据压缩算法、递归算法、图的相关算法
算法与数据结构的关系,算法效率,算法设计,算法描述(流程图、伪代码、决策表),算法的复杂性
13 软件知识
131 *** 作系统知识
*** 作系统的类型、特征、地位、内核(中断控制)、进程、线程概念
处理机管理(状态转换、同步与互斥、信号灯、分时轮转、抢占、死锁)
存储管理(主存保护、动态连接分配、分段、分页、虚存)
设备管理(I/O控制、假脱机、磁盘调度)
文件管理(文件目录、文件的结构和组织、存取方法、存取控制、恢复处理、共享和安全)
作业管理(作业调度、作业控制语言(JCL)、多道程序设计)
汉字处理,多媒体处理,人机界面
网络 *** 作系统和嵌入式 *** 作系统基础知识
*** 作系统的配置
132 程序设计语言和语言处理程序的知识
汇编、编译、解释系统的基础知识和基本工作原理
程序设计语言的基本成分:数据、运算、控制和传输,程序调用的实现机制
各类程序设计语言的主要特点和适用情况
14 计算机网络知识
网络体系结构(网络拓扑、OSI/RM、基本的网络协议)
传输介质,传输技术,传输方法,传输控制
常用网络设备和各类通信设备
Client/Server结构、Browser/Server结构、Browser/Web/Datebase结构
LAN拓扑,存取控制,LAN的组网,LAN间连接,LAN-WAN连接
因特网基础知识及应用
网络软件
网络管理
网络性能分析
网络有关的法律、法规
2 数据库技术
21 数据库技术基础
211 数据库模型
数据库系统的三级模式(概念模式、外模式、内模式),两级映像(概念模式/外模式、外模式/内模式)
数据库模型:数据模型的组成要素,概念数据模型ER图(实体、属性、关系),逻辑数据模型(关系模型、层次模型、网络模型)
212 数据库管理系统的功能和特征
主要功能(数据库定义、数据库 *** 作、数据库控制、事务管理、用户视图)
特征(确保数据独立性、数据库存取、同时执行过程、排它控制、故障恢复、安全性、完整性)
RDB(关系数据库),OODB(面向对象数据库),ORDB(对象关系数据库),NDB(网状数据库)
几种常用Web数据库的特点
213 数据库系统体系结构
集中式数据库系统
Client/Server数据库系统
并行数据库系统
分布式数据库系统
对象关系数据库系统
22 数据 *** 作
221 关系运算
关系代数运算(并、交、差、笛卡儿积、选择、投影、连接、除)
元组演算
完整性约束
222 关系数据库标准语言(SQL)
SQL的功能与特点
用SQL进行数据定义(表、视图、索引、约束)
用SQL进行数据 *** 作(数据检索、数据插入/删除/更新、触发控制)
安全性和授权
程序中的API,嵌入SQL
23 数据库的控制功能
数据库事务管理(ACID属性)
数据库备份与恢复技术(UNDO、REDO)
并发控制
24 数据库设计基础理论
241 关系数据库设计
函数依赖
规范化(第一范式、第二范式、第三范式、BC范式、第四范式、第五范式)
模式分解及分解应遵循的原则
242 对象关系数据库设计
嵌套关系、 复杂类型,继承与引用类型
与复杂类型有关的查询
SQL中的函数与过程
对象关系
25 数据挖掘和数据仓库基础知识
数据挖掘应用和分类
关联规则、聚类
数据仓库的成分
数据仓库的模式
26 多媒体基本知识
261 多媒体技术基本概念
多媒体系统基础知识
常用多媒体文件格式
262 多媒体压缩编码技术
多媒体压缩编码技术
统计编码
预测编码
编码的国际标准
263多媒体技术应用
简单图形的绘制,图像文件的处理方法
音频和视频信息的应用
多媒体应用开发过程
27 系统性能知识
性能计算(响应时间、吞吐量、周转时间)
性能指标和性能设计
性能测试和性能评估
28 计算机应用基础知识
信息管理、数据处理、辅助设计、科学计算,人工智能等基础知识
远程通信服务及相关通信协议基础知识
3 系统开发和运行维护知识
31 软件工程、软件过程改进和软件开发项目管理知识
软件工程知识
软件开发生命周期阶段目标和任务
软件开发项目基础知识(时间管理、成本管理、质量管理、人力资源管理、风险管理等)及其常用管理工具
主要的软件开发方法(生命周期法、原型法、面向对象法、CASE)
软件开发工具与环境知识
软件质量管理基础知识
软件过程改进基础知识
软件开发过程评估、软件能力成熟度评估的基础知识
32 系统分析基础知识
系统分析的目的和任务
结构化分析方法(数据流图(DFD)和数据字典(DD),实体关系图(ERD),描述加工处理的结构化语言)
统一建模语言(UML)
系统规格说明书
33 系统设计知识
系统设计的目的和任务
结构化设计方法和工具(系统流程图、HIPO图、控制流程图)
系统总体结构设计(总体布局,设计原则,模块结构设计,数据存取设计,系统配置方案)
系统详细设计(代码设计、数据库设计、用户界面设计、处理过程设计)
系统设计说明书
34 系统实施知识
系统实施的主要任务
结构化程序设计、面向对象程序设计、可视化程序设计
程序设计语言的选择、程序设计风格
系统测试的目的、类型,系统测试方法(黑盒测试、白盒测试、灰盒测试)
测试设计和管理(错误曲线、错误排除、收敛、注入故障、测试试用例设计、系统测试报告)
系统转换基础知识
35 系统运行和维护知识
系统运行管理知识
系统维护知识
系统评价知识
4 安全性知识
安全性基本概念(网络安全、 *** 作系统安全、数据库安全)
计算机病毒的防治,计算机犯罪的防范,容灾
访问控制、防闯入、安全管理措施
加密与解密机制
风险分析、风险类型、抗风险措施和内部控制
5标准化知识
标准化意识,标准化的发展,标准出台过程
国际标准、国家标准、行业标准、企业标准基本知识
代码标准、文件格式标准、安全标准软件开发规范和文档标准
标准化机构
6信息化基础知识
信息化意识
全球信息化趋势、国家信息化战略、企业信息化战略和策略
有关的法律、法规
远程教育、电子商务、电子政务等基础知识
企业信息资源管理基础知识
7计算机专业英语
掌握计算机技术的基本词汇
能正确阅读和理解计算机领域的英文资料
考试科目2:数据库系统设计与管理
1数据库设计
11理解系统需求说明
了解用户需求、确定系统范围
确定应用系统数据库的各种关系
现有环境与新系统环境的关系
新系统中的数据项、数据字典、数据流
12 系统开发的准备
选择开发方法,准备开发环境,制订开发计划
13 设计系统功能
选择系统机构,设计各子系统的功能和接口,设计安全性策略、需求和实现方法,制定详细的工作流和数据流
14 数据库设计
141 设计数据模型
概念结构设计(设计ER模型)
逻辑结构设计(转换成DBMS所能接收的数据模型)
评审设计
142 物理结构设计
设计方法与内容
存取方法的选择
评审设计与性能预测
143 数据库实施与维护
数据加载与应用程序调试
数据库试运行
数据库运行与维护
144 数据库的保护
数据库的备份与恢复
数据库的安全性
数据库的完整性
数据库的并发控制
15 编写外部设计文档
编写系统说明书(系统配置图、各子系统关系图、系统流程图,系统功能说明、输入输出规格说明、数据规格说明、用户手册框架)
设计系统测试要求
16 设计评审
2 数据库应用系统设计
21 设计数据库应用系统结构
信息系统的架构(如Client/Server)与DBMS
多用户数据库环境(文件服务器体系结构、Client/Server体系结构)
大规模数据库和并行计算机体系结构(SMP、MPP)
中间件角色和相关工具
按构件分解,确定构件功能规格以及构件之间的接口
22 设计输入输出
屏幕界面设计,设计输入输出检查方法和检查信息
数据库交互与连接(掌握C程序设计语言,以及Java、Visual Basic、Visual C++、PowerBuilder、Delphi中任一种开发工具与数据库互连的方法(如何与数据库服务器沟通))
23 设计物理数据
分析事务在数据库上运行的频率和性能要求,确定逻辑数据组织方式、存储介质,设计索引结构和处理方式
将逻辑数据结构变换成物理数据结构,计算容量(空间代价),确定存取方法(时间效率)、系统配置(维护代价)并进行优化
24 设计安全体系
明确安全等级
数据库的登录方式
数据库访问
许可(对象许可、命令许可、授权许可的方法)
25 应用程序开发
251 应用程序开发
选择应用程序开发平台
系统实施顺序
框架开发
基础小组的程序开发
源代码控制
版本控制
252 模块划分(原则、方法、标准)
253 编写程序设计文档
模块规格说明书(功能和接口说明、程序处理逻辑的描述、输入输出数据格式的描述)
测试要求说明书(测试类型和目标,测试用例,测试方法)
254 程序设计评审
26 编写应用系统设计文档
系统配置说明、构件划分图、构件间的接口、构件处理说明、屏幕设计文档、报表设计文档、程序设计文档、文件设计文档、数据库设计文档
27 设计评审
3 数据库应用系统实施
31 整个系统的配置与管理
32 常用数据库管理系统的应用(SQL Server、Oracle、Sybase、DB2、Access或Visual Foxpro)
创建数据库
创建表、创建索引、创建视图、创建约束、创建UDDT(用户自定义类型)
创建和管理触发器
建立安全体系
33 数据库应用系统安装
拟定系统安装计划(考虑费用、客户关系、雇员关系、后勤关系和风险等因素)
拟定人力资源使用计划(组织机构安排的合理性)
直接安装(安装新系统并使系统快速进入运行状态)
并行安装(新旧系统并行运行一段时间)
阶段安装(经过一系列的步骤和阶段使新系统各部分逐步投入运行)
34 数据库应用系统测试
拟定测试目标、计划、方法与步骤
数据加载,准备测试数据
指导应用程序员进行模块测试进行验收
准备系统集成测试环境测试工具
写出数据库运行测试报告
35 培训与用户支持
4数据库系统的运行和管理
41 数据库系统的运行计划
运行策略的确定
<广告>
确定数据库系统报警对象和报警方式
数据库系统的管理计划(执行,故障/恢复,安全性,完整性,用户培训和维护)
42 数据库系统的运行和维护
新旧系统的转换
收集和分析报警数据(执行报警、故障报警、安全报警)
连续稳定的运行
数据库维护(数据库重构、安全视图的评价和验证、文档维护)
数据库系统的运行统计(收集、分析、提出改进措施)
关于运行标准和标准改进一致性的建议
数据库系统的审计
43 数据库管理
数据字典和数据仓库的管理
数据完整性维护和管理(实体完整性、参照完整性)
数据库物理结构的管理(保证数据不推迟访问)
数据库空间及碎片管理
备份和恢复(顺序、日志(审计痕迹)、检查点)
死锁管理(集中式、分布式)
并发控制(可串行性、锁机制、时间戳、优化)
数据安全性管理(加密、安全、访问控制、视图、有效性确认规则)
数据库管理员(DBA)职责
44 性能调整
SQL语句的编码检验
表设计的评价
索引的改进
物理分配的改进
设备增强
数据库性能优化
45 用户支持
用户培训
售后服务
5 SQL
51 数据库语言
数据库语言的要素
数据库语言的使用方式(交互式和嵌入式)
52 SQL概述
SQL语句的特征
SQL语句的基本成分
53 数据库定义
创建数据库(Create Datebase)、创建表(Create Table)
定义数据完整性
修改表(Alter Table)、删除表(Drop Table)
定义索引(Create Index)、删除索引(Drop Index)
定义视图(Create View)、删除视图(Drop View)、更新视图
54 数据 *** 作
Select语句的基本机构
简单查询
SQL中的选择、投影
字符串比较,涉及空值的比较
日期时间,布尔值,输出排序
多表查询
避免属性歧义
SQL中的连接、并、交、差
SQL中的元组变量
子查询
55 完整性控制与安全机制
主键(Primary Key)约束
外键(Foreign Key)约束
属性值上的约束(Null、Check、Create Domain)
全局约束(Create Assertions)
权限、授权(Grant)、销权(Revoke)
56 创建触发器(Create Trigger)
57 SQL使用方式
交互式SQL
嵌入式SQL
SQL与宿主语言接口(Declare、共享变量、游标、卷游标)
动态SQL
API
58 SQL 标准化
6 网络环境下的数据库
61 分布式数据库
611 分布式数据库的概念
分布式数据库的特点与目标
612 分布式数据库的体系结构
分布式数据库的模式结构
数据分布的策略(数据分片、分布透明性)
分布式数据库管理系统
613 分布式查询处理和优化
614 分布式事务管理
分布式数据库的恢复(故障、恢复、2段提交、3段提交)
分布式数据库的透明性(局部、分裂、复制、处理、并发、执行)
615 分布式数据库系统的应用
62 网络环境下数据库系统的设计与实施
数据的分布设计
负载均衡设计
数据库互连技术
63 面向Web的DBMS技术
三层体系结构
动态Web网页
ASP、JSP、XML的应用
7数据库的安全性
71 安全性策略的理解
数据库视图的安全性策略
数据的安全级别(最重要的、重要的、注意、选择)
72 数据库安全测量
用户访问控制(采用口令等)
程序访问控制(包含在程序中的SQL命令限制)
表的访问控制(视图机制)
控制访问的函数和 *** 作
外部存储数据的加密与解密
8 数据库发展趋势与新技术
81 面向对象数据库(OODBMS)
811 OODBMS的特征
812 面向对象数据模型
对象结构、对象类、继承与多重继承、对象标识、对象包含、对象嵌套
813 面向对象数据库语言
814 对象关系数据库系统(ORDBMS)
嵌套关系
复杂类型
继承、引用类型
与复杂类型有关的查询
函数与过程
面向对象与对象关系
ORDBMS应用领域
82 企业资源计划(ERP)和数据库
821 ERP概述
基本MRP(制造资源计划)、闭环MRP、ERP
基本原理、发展趋势
ERP设计的总体思路(一个中心、两类业务、三条干线)
822 ERP与数据库
运行数据库与ERP数据模型之间的关系
运行数据库与ERP数据库之间的关系
823 案例分析
83 决策支持系统的建立
决策支持系统的概念
数据仓库设计
数据转移技术
联机分析处理(OLAP)技术
企业决策支持解决方案
联机事务处理(OLTP)
(一)农用地分等数据的组成
农用地分等数据成果丰富,按照农用地分等的流程可分为自然质量分、自然质量等指数、自然质量等别、土地利用系数、土地经济系数、利用等指数、利用等别、经济等指数和经济等别;按照农用地分等数据的性质可分为空间数据、属性数据、文本数据。为使农用地分等成果能够方便、直观地展现国家级、省级、县级、乡级各级农用地的质量与数量特征,实现对农用地分等数据的查询、分析、融合、分发等功能,必须建立一套统一、规范化的数据管理体系。这套体系能够从农用地分等的基础资料、中间成果和农用地分等成果(图、文、表)等海量数据中提取信息,供汇总平衡、调整、分析,为各级政府部门制定相关政策提供技术支持,是土地信息化的坚实基础,对各级农用地的数据(包括属性数据和矢量数据)进行更新、查询、检索和集成,建设农用地分等数据库。
农用地分等数据库的建设是实现土地资源数量、质量、产能与生态环境并重管理及国土信息化工程建设的基础保障,是实现国土资源现代化管理、社会化服务的必要前提,也是各级政府和国土资源管理部门切实保护基本农田、实施耕地占补按等级折算的重要手段。广西壮族自治区农用地分等自治区级与县级农用地分等成果主要包括文字成果、图件成果、数据成果和电子成果。
1文字成果
文字成果主要包括自治区级与县级农用地分等技术报告(包含县级农用地分等基础资料汇编等)。农用地分等技术报告主要包括4个方面的内容:一是分等对象所在区域的自然、经济和社会概况;二是分等技术方法,包括分等参数的确定,分等因素指标区、分等单元、土地利用系数等值区与土地经济系数等值区的划分方法,分等因素及其分值和权重的确定方法,等别划分方法,分等成果检验与调整方法,计算机技术在分等中的应用以及其他需要说明的技术问题等;三是分等成果及其分布特点和规律、地域组合特点、差异原因、农用地利用中存在的主要问题等;四是分等成果的应用分析。
2图件成果
图件成果具体包括分等单元图、农用地自然质量等别分布图、农用地利用等别分布图、农用地经济等别分布图、标准样地分布图。
3数据成果
数据成果包括广西壮族自治区的农用地分等单元原始属性数据表、样点投入产出调查数据表、农用地分等基本参数表、各指标区“指定作物-分等因素-自然质量分”记分规则表、农用地分等各指标区分等因素体系及其权重表、土地利用系数与土地经济系数汇总表、土地利用系数等值区间表、土地经济系数等值区间表、自治区级农用地分等单元指定作物计算结果表、自治区级农用地分等单元多作物综合计算结果表、农用地分等结果各乡(镇)面积汇总表、农用地分等结果各地类面积汇总表、自治区级农用地分等单元综合数据表、农用地标准样地属性数据表等,部分表格见附录。
4电子成果
广西壮族自治区农用地分等电子成果用光盘或硬盘保存,提交的农用地分等成果包括文字、图件和数据等成果的电子版本。
(二)农用地分等数据库建设的依据与内容
1农用地分等数据库建设的依据
农用地分等数据库建设首先要依据分等数据的特点:一是信息量巨大;二是数据与信息种类多种多样,按数据的特征分为属性数据和矢量数据,按数据的来源和性质分为农用地自然属性和社会经济属性,这些数据涉及土地学、农业学、地理学、测绘学、信息学和经济学等众多学科;三是成果具有复杂多层次的特征。其次,依据《农用地分等数据库标准》,农用地分等成果数据的内涵、特点及其应用需求,设计农用地分等数据库建设方案,按照《农用地分等规程》对农用地分等的各个环节及其成果数据进行整合加工标准化处理,把农用地分等成果的矢量数据和属性数据,通过关联式数据系统储存、管理、整合在一起,建立统一、规范的农用地分等数据库。
2农用地分等数据库建设的内容
农用地分等数据库建设的内容主要包括农用地分等数据的分类编码、农用地分等数据的图形要素分层、农用地分等数据的属性数据结构、分等单元扩展属性结构、外部表格信息和农用地分等数据文件命名6个方面的内容。
农用地分等数据的分类编码包括基础地理信息分类与编码、土地利用信息分类与编码和分等基础信息分类与编码。
农用地分等数据的属性数据结构内容复杂,主要包括基础地理、土地利用类图层属性表、注记属性表结构、县级分等基础层属性表结构、县级分等结果层属性表结构、自治区级分等基础层属性表结构、自治区级分等结果层属性表结构等内容。
分等单元扩展属性结构包括指定作物分等计算结果表结构和县级综合等别计算表结构。
外部表格信息包括指定作物参数表结构、“指定作物-分等因素-分值”说明表结构、“指定作物-分等因素-权重”说明表结构、标准样地属性特征基准分值表结构、“县级-自治区级”农用地分等单元对应表结构、县级文档结果和自治区级文档结果。
农用地分等数据文件命名规则包括以行政区为基础的数据文件命名规则和文档数据文件命名规则等内容。
(三)数据库系统的设计思想和目标
广西壮族自治区农用地分等数据管理信息系统的设计思想是以地理信息系统(GIS)为平台,在计算机软硬件支持下,把各种地理信息按照空间分布,以一定的格式输入、存储、检索、更新、显示、制图和综合分析的计算机技术系统。利用该系统,通过对农用地诸多因素(自然因素和社会经济因素)的综合分析,找出农用地变化的特点与规律,从而迅速地获取满足应用需要的信息,并能以地图、图形或数据的形式表示处理的结果。
1系统的设计思想和目标
广西壮族自治区农用地分等数据管理信息系统的设计是在充分研究和总结土地利用管理的实际工作需求和吸收目前计算机技术在土地管理中的应用经验的基础上,结合国土资源部新一轮国土资源大调查中《县级土地利用数据库标准》和《县(市)级土地利用数据库建设技术规范(征求意见稿)》而制定的。系统的设计综合了以下几方面的技术:①数字制图技术;②计算机的自动查询、检索分类、计算统计技术;③空间查询和分析技术;④空间信息的存储管理技术;⑤计算机网络技术。配套统一以上技术,将地理信息系统(GIS)技术应用到系统的设计中,形成系统基本的设计思想,即按照农用地分等数据的规范和标准,建立起农用地分等数据管理的技术路线和工艺流程,按照GIS的要求严格控制入库数据的精度;提供方便、快捷的实用工具,提高数据库的利用率和满足国土资源管理部门的工作需求;利用地理信息系统中的空间分析功能,完成对数据库的动态更新,维持数据库的现势性。
广西壮族自治区农用地分等数据管理信息系统设计的基本目标是满足国土资源管理部门对农用地分等数据的管理需求,提高土地管理的效率和质量,并且充分利用计算机技术来减轻土地管理工作的劳动强度,最终实现土地管理的信息化,构建“数字国土”工程的基础设施。
2数据入库
数据入库前要检查采集数据的质量,检查合格的数据方可入库。数据检查主要包括矢量数据几何精度和拓扑检查、属性数据完整性和正确性检查、图形和属性数据一致性检查、接边精度和完整性检查等。数据入库主要包括矢量数据、DEM数据、DOM数据、元数据等数据的入库。最后进行系统测试(图3-17)。
图3-17 入库工作流程图
数据入库前要对采集数据进行全面质量检查,并对错误进行改正,数据的检查与更正是数据建库中至关重要的一步。
(1)按照《县级土地利用数据库标准》、《农用地分等规程》等相关标准确定检查项,包括矢量数据几何精度和拓扑检查、属性数据完整性和正确性检查、图形和属性数据一致性检查、接
边完整性检查等。
(2)基于上述检查项,定制检查内容,配置相应的参数。
(3)按照定制的内容,系统自动实现批量检查,也可以采用人机交互方式对重点内容进行检查,对发现的错误及时修正。
(4)自动生成或手工编写检查报告,检查与更正工作结束(图3-18)。
图3-18 数据检查流程图
1)矢量数据入库
(1)数据检查。数据入库前,对矢量数据质量进行全面检查,并记录检查结果,对质量不合格的数据应予以返工,质量检查合格的数据方可入库。
(2)参数输入及其数据组织入库。依据参数设置的要求,向数据库管理系统中输入各种建库参数,对不同数据层的数据建立索引等,各要素数据可分层入库,也可批量入库。
(3)多尺度空间数据连接设置。对于多尺度空间数据库应设置连接参数,便于不同比例尺数据的显示。
2)元数据入库
利用数据库管理软件,采用人工和自动相结合的方法对各要素元数据内容进行检查和处理,导入各种元数据。
3)属性入库
利用Excel软件输入分等评价单元质量分值表,形成分等评价单元自然属性电子表格文件;再将各评价单元的土地利用系数和土地经济系数进行汇总,划分各等值区;然后,汇总到分等评价单元自然属性表中,计算农用地分等单元的自然质量等指数、利用等指数和经济等指数;利用相关软件将整个Excel总表转换到数据库中,存为DBASE格式文件;最后,根据关键属性字段挂接,使图、表合一,形成统一的空间数据库。
4)系统运行情况
数据入库完成后,对系统进行全面的测试;并对测试出现的问题进行全面分析和处理。
具体测试内容及要求为系统运行无死机现象;系统能对数据库中数据层进行组合查询,且数据结构正确;系统能够对数据进行汇总统计并输出相关表格成果;系统能按要求输出相关图件,等等。
(四)系统设计总体框架图
广西壮族自治区农用地分等评价数据管理系统横向包括农用地调查评价基础业务工作,纵向涵盖国家、省、市、县四级国土资源管理部门,其总体框架如图3-19和图3-20。
图3-19 总体框架横向结构图
图3-20 总体框架纵向结构图
(五)数据库系统功能的实现
依据农用地分等成果和土地利用管理的需求,该系统应具有以下基本功能:
1系统建库
系统建库是指把农用地分等成果及其涉及的信息用计算机存储起来,它具有两个方面的含义:一是全面进行数字化建库,采用MapGIS的数据结构和几何特征的描述术语,输入农用地分等数据;还可在已有的图形数据库的基础上进行建库,可利用MapGIS平台提供的数据转换和属性管理工具把图形和属性转换到系统中来;二是变更数据,根据农用地分等进展情况,及时更新农用地分等数据信息系统。
2数据查询和检索
数据查询和检索模块是系统的主要功能模块。该系统提供了强大的地图浏览、图层控制、空间索引、查询统计、空间分析和报表输出等功能,为实现统筹数量、质量与生态并重管理,建设资源节约型社会提供了良好的手段;同时,也满足公众参与管理农用地分等数据的功能,加大土地科学普及工作,树立全社会关注农用地资源安全、耕地保护与国家粮食安全的意识;通过模糊查询、条件查询、空间查找等具体功能可以快速查询村、国家级基本农田、地类图斑等重要对象的空间位置和属性信息;能对县(市、区)各级数据进行实时动态的统计汇总,并可用专题图的形式对不同区域的农用地分等数据按不同的指标进行对比分析,可以输出各种图形和报表;可以根据不同的业务需要,设计不同的数据应用分析模型,例如征地分析模型、土地开发整理前后质量评价模型、土地利用变化模型等。通过系统,按这些模型进行处理,输出分析结果,从而有效地促进国土资源管理工作的信息化、科学化、专业化,提高办事效率,避免决策失误。
3成果输出
依据农用地分等制图规范和土地利用管理需求,输出农用地分等图形和数据成果;还可以按行政区域及任意区域裁剪图件等。
4系统维护
该系统是按照国家的有关规程和标准进行设计的,可根据土地管理实际情况做进一步的编码和更新,满足国土资源管理工作的实际需要。
ACID,指数据库事务正确执行的四个基本要素的缩写。包含:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。一个支持事务(Transaction)的数据库,必需要具有这四种特性,否则在事务过程(Transaction processing)当中无法保证数据的正确性,交易过程极可能达不到交易方的要求。
原子性
整个事务中的所有 *** 作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。
一致性
一个事务可以封装状态改变(除非它是一个只读的)。事务必须始终保持系统处于一致的状态,不管在任何给定的时间并发事务有多少。
也就是说:如果事务是并发多个,系统也必须如同串行事务一样 *** 作。其主要特征是保护性和不变性(Preserving an Invariant),以转账案例为例,假设有五个账户,每个账户余额是100元,那么五个账户总额是500元,如果在这个5个账户之间同时发生多个转账,无论并发多少个,比如在A与B账户之间转账5元,在C与D账户之间转账10元,在B与E之间转账15元,五个账户总额也应该还是500元,这就是保护性和不变性
隔离性
隔离状态执行事务,使它们好像是系统在给定时间内执行的唯一 *** 作。如果有两个事务,运行在相同的时间内,执行相同的功能,事务的隔离性将确保每一事务在系统中认为只有该事务在使用系统。这种属性有时称为串行化,为了防止事务 *** 作间的混淆,必须串行化或序列化请求,使得在同一时间仅有一个请求用于同一数据。
持久性
在事务完成以后,该事务对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。
由于一项 *** 作通常会包含许多子 *** 作,而这些子 *** 作可能会因为硬件的损坏或其他因素产生问题,要正确实现ACID并不容易。ACID建议数据库将所有需要更新以及修改的资料一次 *** 作完毕,但实际上并不可行。
目前主要有两种方式实现ACID:第一种是Write ahead logging,也就是日志式的方式(现代数据库均基于这种方式)。第二种是Shadow paging。
数据库关系模型(数据库逻辑模型)是将数据概念模型转换为所使用的数据库管理系统(DBMS)支持的数据库逻辑结构,即将E-R图表示成关系数据库模式。数据库逻辑设计的结果不是唯一的,需利用规范化理论对数据库结构进行优化。
在关系模型中,数据库的逻辑结构是一张二维表。在数据库中,满足下列条件的二维表称为关系模型:
1)每列中的分量是类型相同的数据;
2)列的顺序可以是任意的;
3)行的顺序可以是任意的;
4)表中的分量是不可再分割的最小数据项,即表中不允许有子表;
5)表中的任意两行不能完全相同。
由此可见,有序的航空物探测量剖面数据不满足数据库关系模型条件第3条“行的顺序可以是任意的”,因此,不能简单地直接利用关系数据库(如Oracle,SQL Server,Sybase等)来管理剖面数据,需将数据在数据库中的存储方式改为大字段存储,确保不因数据库数据的增加和删除等 *** 作改变剖面数据有序特性。
一、大字段存储
(一)大字段存储技术
大字段LOB(Large Object)技术是Oracle专门用于存放处理大对象类型数据(如多媒体材料、影像资料、文档资料等)的数据管理技术。LOB包括内部的和外部的两种类型。内部LOB又分CLOB(字符型)、BLOB(二进制型)等3种数据类型,其数据存储在数据库中,并且支持事务 *** 作;外部LOB只有BFILE类型,其数据存储在 *** 作系统中,并且不支持事务 *** 作。LOB存放数据的长度最大可以达到4G字节,并且空值列(没有存放数据)不占空间(图2-6)。
图2-6 大字段存储示意图
由于外部LOB存放在 *** 作系统文件中,其安全性比内部LOB差一些。此外,大字段的存储支持事务 *** 作(批量提交和回滚等),而外部LOB不支持事务 *** 作。所以,航空物探测量剖面数据采用BLOB来存储。对于BLOB类型,如果数据量小于4000字节,数据库通常采用行内存储,而数据量大于4000字节采用行外存储。分析航空物探测量剖面数据,每个场值数据占4个字节(单精度),目前航磁数据采样率为10次/s,4000字节只能存储100s数据;一般情况下航空物探测量每条测线飞行时间至少在10min以上,每条测线数据量远远大于4000字节。所以,航空物探测量剖面数据采用行外存储方式,即大字段列指定“Disable Storage In Row”的存储参数。
由于大字段类型长度可变,最大可到4G。假设测线飞行时间为T,场值采样率为n次/s,测线场值数据量为4Tn,所以有4Tn≤4G。单条测线飞行时间T不会超过10h(36000s,航空物探测量1架次至少飞行1个往返2条测线),则场值的采样率n≤4G/4T=4×1024×1024×1024/4×36000次/s=29826次/s。采用大字段来存储测量数据,不仅能够减少数据表的记录数,提高查询效率,而且使得采样率的扩展不受限制。
(二)大字段存储技术应用
由于航空物探数据的数据量较大,现有的航磁测量数据按基准点方式(点存储)存储可达几亿个数据记录。若按磁场数据采样点存储方式(简称“场值存储方式”),则记录条数=(磁场数据采样率/坐标采样率)点存储方式的记录数,达几十亿条数据记录,且随着数据采样率的扩展、测点的加密,航空物探测量数据量随着时间的推移呈现快速增长之势。显然,如果采用常规的表结构来存储,势必造成数据的存储、管理、检索、浏览和提取都非常困难。另一方面,从航空物探专业应用需求来说,很少对单个测点的场值数据进行运算、分析等 *** 作,一般至少是对一条测线或以上测线,多数时候是需要对整个测区的场值数据进行化极、上延、正反演拟合等。
因此,在航空物探数据库表结构设计时,改变过去将基准点或场值点数据记录作为数据库最小管理对象的理念,采用了大字段存储技术,将测线作为数据库最小管理对象,将测线上的测量数据,如坐标数据和磁场、重力场数据分别存储在相应大字段中。在航空物探数据库建设中,大量采用数据库的大字段存储技术(详见《航空物探信息系统数据库结构设计》)。
(三)大字段存储效率
以航磁测量数据为例分析大字段存储技术优势。如果以场值存储方式存储测线数据,则每条记录包含架次号、测线号、基准号、地理坐标、投影坐标、磁场数据等,由于坐标数据采样率2次/s,磁场数据采样率10次/s,每5个磁场数据中,只有第1个磁场数据有坐标数据,其他4个坐标数据是内插出来,因此在测线记录中会产生大量冗余的数据坐标数据。采用点存储方式存储的测线数据记录数等于线上基准点数,若采用大字段存储方式,一条测线数据只存储为1条数据记录(图2-7),一般一条测线的测点数近万个,甚至更多,可见采用大字段存储大大减少测线数据存储记录数,提高数据的存取效率。
以某测区的两条航迹线为例,分别采用3种方式测试数据库的数据存储效率。磁场数据的采样率10次/s,坐标数据采样率2次/s,两条测线上共有基准点8801个。以场值方式存储先内插坐标信息,使得每个场值数据都拥有自己的坐标,然后存入数据库,共有数据记录44005条,写入数据库时间为5722s,读取时间为103s。第二种方式是以采样点的方式进行存储,共有8801条记录,写入数据库时间为947s,读取需要091s。第三种方式是以大字段的形式存储,只有2条记录,写入数据库103s,读取时间为044s(表2-2)。大字段数据存储记录数最少,存取效率最高。用整个测区数据测试效果更加明显。
表2-2 三种数据存储方法的存取效率比较
图2-7 大字段存储方式示意图
二、联合主键
主外键是关系型数据库建立表间关系的核心。在航空物探空间数据库建设过程中,要素类与要素类之间、要素类与对象类之间,以及对象类与对象类之间的关系的描述有3种形式,即拓扑关系——描述要素类与要素类之间结点、邻接和联通关系;叠加关系——描述要素类与要素类之间的相交、包含与分类关系;隶属关系——描述对象类与对象类之间的派生关系。前两种关系是采用空间数据模型建立的关系,而隶属关系是通过主键建立的对象类与对象类之间的关系。在建立一对一、一对多的表间关系时,需要在整个数据库表中确定具有唯一性的一个字段作为主键(主关键字)。
按照传统的航空物探数据的档案管理模式,每个项目分配一个自然数作为档案号,项目的所有资料均与此档案号相联系。勘查项目和科研项目的档案号是独立编号的,且均从001开始。加之人工管理的原因,存在1个项目2个档案号和2个项目1个档案号的情况,因此现行的档案号与项目之间的对应关系不具备唯一性,不能作为项目的唯一标识,即不能作为数据库表的主键。项目编号也不能作为数据库表的主键,项目编号也只是近十年的事,以前的项目没有项目编号。
综合考虑上述因素和项目具有分级、分类的特点,提出了构造项目唯一标识码(简称“项目标识”)的方法,并以此码作为数据库表的主键。
项目标识(主键):AGS+项目类别(2位)+项目起始年份(4位)+档案号(6位)
标识含义:AGS——航空物探的缩位代码;
项目类别——2位代码,01代表勘查项目、02代表科研项目;
起始年份—4位代码,项目开始年号;
档案号—6位代码,为了与传统的项目管理方式相衔接,后面3~4位是
项目档案管理模式下的档案号,不足部分补零。
以上15位编码是一级项目的项目标识,二级及其以下级别的项目标识是在上一级项目标识基础上扩展2位数字代码,中间用“”号隔开,数字为该级项目的序号。项目标识定义为30位编码,适用于六级以内的项目。例如:AGS022004000576080402,表示该项目为2004年开展的档案号为576的航空物探科研项目(一级项目)的第8课题(二级项目)第4子课题(三级项目)的第2专题。由此可见,该项目标识不仅仅是一个建立表间关系的关键字,同时还表达了不同级别项目间的隶属关系。在系统软件开发时,利用此关系生成了项目的分级树形目录,用户对项目的层次关系一目了然,便于项目查询。
数据库的主键一经确定,相应地需要确定联合主键的组成及其表达方式。所谓联合主键就是数据资料的唯一标识,在一个数据库表中选择2个或者2个以上的字段作为主键。由于航空物探数据绝大部分与项目标识有关,加之数据的种类较多,分类复杂,单凭主键确定数据库表中记录的唯一性,势必需要构建极其复杂的主键,这种方法既不利于主键的数据 *** 作,又会造成大量的数据冗余,合理地使用联合主键技术可以很好地解决资料唯一问题。以项目提交资料为例,提交的资料分为文字类资料、图件类资料和媒体类资料,我们对资料进行分类和编号,例如100代表文字资料(110——World文档,120——PDF文档),200代表图件资料(210——基础地理资料、220——基础地质资料,230——航迹线图,240——剖面图,250——等值线图等),300代表媒体资料(310——PPT文档,320——照片等),第1位(百位)表示该资料的类型,第2~3位表示该类资料的序号。
在数据库管理和项目资料查询时,采用项目标识与资料分类编号作为联合主键(图2-8),可以高效地实现复杂数据的查询。在整个数据库系统中多处(项目查询、数据提取等模块)使用联合主键技术。
图2-8 联合主键实例
三、信息标准化
为了实现数据共享,在航空物探数据库建模过程中,参考和引用了近百个国家信息化标准,编制了4个中心信息化标准和1个图件信息化工作指南。
(一)引用的国家信息化标准
1)地质矿产术语分类代码:地球物理勘查,地球化学勘查,大地构造学,工程地质学,结晶学及矿物学,矿床学,水文地质学,岩石学,地质学等。
2)国家基础信息数据分类与代码,国土基础信息数据分类与代码,地球物理勘查技术符号,地面重力测量规范,地面磁勘查技术规程,地面高精度磁测技术规程,大比例尺重力勘查规范,地理信息技术基本术语,地理点位置的纬度、经度和高程的标准表示法,地名分类与类别代码编制规则。
3)地球空间数据交换格式;数学数字地理底图数据交换格式;数字化地质图图层及属性文件格式。
(二)本系统建立的信息化标准
编写了“航空物探空间数据要素类和对象类划分标准”,“航空物探项目管理和资料管理分类代码标准”,“航空物探勘查分类代码标准”,“航空物探信息系统元数据标准”,“航空物探图件信息化工作指南”,以便与其他应用系统进行信息交换,实现数据库资料共享。
航空物探空间数据要素类和对象类划分标准:根据物探方法、数据处理过程以及推断解释方法和过程,把与GIS有关的数据划分为不同类型的要素类-对象类数据,按专业、比例尺、数据内容对要素类和对象类进行统一命名,使空间数据库中的每个要素类和对象类的命名具有唯一性,防止重名出现。规定要素类-对象类数据库表结构及数据项数值类型。
航空物探项目管理和资料管理分类代码标准:规定了航空物探项目管理和资料管理的相关内容,包括航空物探勘查项目和科研项目的项目立项、设计、实施、成果、评审、资料汇交等项目管理的全过程中的内容,以及项目成果资料和收集资料的归档、发送、销毁、借阅等资料管理与服务过程中的内容和数据项代码。
航空物探勘查分类代码标准:在“地质矿产术语分类代码地球物理勘查”(国家标准GB/T964928—1998)增加了航磁、航重专业方面所涉及的数据采集、物性参数、方法手段、仪器设备、资料数据解释及成图图件等内容和数据项代码。
航空物探信息系统元数据标准:规定了航空物探空间数据管理与服务的元数据(数据的标识、内容、质量、状况及其他有关特征)的内容。
四、航迹线数据模型
(一)航迹线模型的结构
航空物探测量是依据测量比例尺在测区内布置测网(测线和切割线)。当飞机沿着设计的测线飞行测量时,航空物探数据收录系统按照一定的采样率采集采样点的地理位置、高度和各种地球物理场信息。采用属性数据分置的方法,将测线地理位置信息从航空物探测量数据中分离出来,形成航迹线要素类表,在此表中只存储与航迹线要素类有关的数据,如项目标识、测区编号、测线号、测线类型(用于区分测线、切割线、不同高度线、重复线等)、坐标、高度值等;将航迹线的对象类数据(磁场、重力场基础数据)分别以大字段形式存储在各自的二维表中,它们共享航迹线,解决了多源有序不同采样率的航空物探测量数据的数据存储问题,在满足要素类空间查询的同时,统一数据的存储方式(图2-9)。航迹线要素类隶属于测区要素类,它们之间为空间拓扑(包含)关系。测区从属于勘查项目,每个勘查项目至少有一个测区,它们之间为1对多关系。有关项目信息存放在项目概况信息对象类表中,各种表之间通过项目标识进行联接。
图2-9 航迹线数据模型结构
(二)航迹线的UML模型
统一建模语言UML(Unified Modeling Language)是一种定义良好、易于表达、功能强大且普遍适用的建模语言。它溶入了软件工程领域的新思想、新方法和新技术。UML是面向对象技术领域内占主导地位的标准建模语言,成为可视化建模语言的工业标准。在UML基础上,ESRI定义了空间数据库建模的ArcGIS包、类库和扩展原则。
图2-10 与航迹线有关的数据库表逻辑模型结构图
在确定航迹线数据模型后,以它为基础,使用UML完成与航迹的有关的项目概况信息、测区信息、原始数据等数据库表逻辑模型设计(图2-10)。
由UML模型生成Geodatabase模式时,模型中的每个类都对应生成一个要素类或对象类。类的属性映射为要素类或对象类的字段。基类属性中包含的字段,在继承类中不需重复创建。例如,每个类都包括项目标识等字段,可以创建一个包含公共属性的基类,其他类从该类继承公共的属性,而无需重复建基类中包含的属性。因为基类没有对应的要素类或对象类,所以将基类设置为抽象类型。要素类之间的关系采用依赖关系表示。
五、数据库逻辑模型
关系数据库的逻辑结构由一组关系模式组成,因而从概念结构到关系数据库逻辑结构的转换就是将概念设计中所得到的概念结构(ER图)转换成等价的UML关系模式(图2-11)。在UML模型图中,要素数据集用Geodatabase工作空间下的静态包表示。要素集包不能互相嵌套,为了容易组织,在生成物理模型后,在要素数据集包中自定义嵌套。要素数据集与空间参考有关,但是空间参考不能在UML中表达。要素类和二维表都是以类的形式创建的,区别是要素类继承Feature Class的属性,而二维表继承Object属性。为了表达每种元素的额外属性,比如设置字符型属性字段的字符串长度,设置要素类的几何类型(点、线或面)需要使用Geodatabase预定义的元素标记值。
图2-11 逻辑设计关系转换
基于航空物探数据的内在逻辑关系进行分析,使用统一建模语言(UML)构建数据实体对象间的关系类,定义了航空物探数据库的逻辑模型(图2-12)。
以上就是关于数据库表结构设计,常见的数据库管理系统全部的内容,包括:数据库表结构设计,常见的数据库管理系统、请教!成为一名合格的数据库工程师需掌握那些知识技能、分等数据库的建设等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)