数据库设计
这篇文章介绍自己做这个项目时设计的数据库。
管理空间数据的方式有很多,本系统采用基于Oracle的空间数据库插件SDE来管理。存放空间数据的表结构是根据用户自定义标准来创建的,采用这种方式主要因为空间数据并没有固定的格式,不同格式的空间数据需要建立不同的表结构来存放数据,而且这样是管理空间数据更加灵活。
本系统数据库的设计主要是管理空间数据需要用到的辅助表结构设计,由于这些表结构都比较简单就没有设计ER图了,而是直接设计表逻辑结构了。
(1)管理人员信息表(USERS):设计此表的目的是对管理人员的信息进行统一的管理,管理人员的信息有用户名、密码、部门等,如表1-1所示。
表1-1 管理人员信息表
Name | Code | Data Type | Length | 说明 |
USERNAME | USERNAME | VARCHAR2(30) | 30 | 用户名 |
PASSWORD | PASSWORD | VARCHAR2(30) | 30 | 用户密码 |
DESCRIPTION | DESCRIPTION | VARCHAR2(100) | 100 | 描述 |
DEPARTMENT | DEPARTMENT | VARCHAR2(40) | 40 | 部门 |
TYPE | TYPE | VARCHAR2(10) | 10 | 用户类型 |
(2)数据分类表(CATEGORY):此表的作用是记录空间数据的分类,分类的方法可能是根据不同的用处或是不同的功能来划分,此表结构定义如表1-2所示。
表1-2 数据分类表
Name | Code | Data Type | Length | 说明 |
ID | ID | NUMBER |
| 分类编号 |
NAME | NAME | VARCHAR2(30) | 30 | 分类名称 |
DESCRIPTION | DESCRIPTION | VARCHAR2(100) | 100 | 分类描述 |
(3)图层分类表(ELEMENT):图层分类是建立在数据分类基础下的,把具有相同或相似功能的图层分为一类,这个表就是来记录有关图层分类的详细信息,如分类名称、分类描述等,具体定义如表1-3所示。
表1-3 图层分类表
Name | Code | Data Type | Length | 说明 |
ID | ID | NUMBER |
| 分类编号 |
NAME | NAME | VARCHAR2(50) | 50 | 图层分类名称 |
DESCRIPTION | DESCRIPTION | VARCHAR2(500) | 500 | 图层分类描述 |
CATEGORY | CATEGORY | VARCHAR2(30) | 30 | 数据分类 |
DATASETNAME | DATASETNAME | VARCHAR2(50) | 50 | 数据集 |
(4)图层信息表(LAYER):此表是用于管理图层相关信息的,如图层编号、图层所对应的表名称、图层类型等,如表1-4所示。
表1-4 图层信息表
Name | Code | Data Type | Length | 说明 |
ID | ID | NUMBER |
| 图层编号 |
TABLE_NAME | TABLE_NAME | NVARCHAR2(160) | 160 | 表名称 |
TABLE_MAPNAME | TABLE_MAPNAME | NVARCHAR2(160) | 160 | 映射表名称 |
DESCRIPTION | DESCRIPTION | NVARCHAR2(200) | 200 | 描述信息 |
TYPE | TYPE | VARCHAR2(10) | 10 | 图层类型 |
PID | PID | NUMBER |
| 图层分类 |
(5)操作日志表(OPTLOG):此表用于记录数据管理员对数据库的各种操作,以便查看数据管理员以前的操作记录,表结构定义如表1-5所示。
表1-5 操作日志表
Name | Code | Data Type | Length | 说明 |
USERNAME | USERNAME | VARCHAR2(30) | 30 | 操作用户名 |
TYPE | TYPE | VARCHAR2(20) | 20 | 操作类型 |
DESCRIPTION | DESCRIPTION | VARCHAR2(200) | 200 | 操作描述 |
OPTTIME | OPTTIME | DATE |
| 操作时间 |
(6)数据更新日志表(UPDATEDATA_LOG):这个表唯一作用是记录哪些表被更新过,用于数据库之间的同步,如表1-6所示。
表1-6 数据更新日志表
Name | Code | Data Type | Length | 说明 |
ID | ID | NUMBER |
| 日志编号 |
TABLENAME | TABLENAME | VARCHAR2(50) | 50 | 被更新的表名称 |
TABLETYPE | TABLETYPE | VARCHAR2(10) | 10 | 表的类型 |
OPERTYPE | OPERTYPE | VARCHAR2(10) | 10 | 更新类型 |
OPERDATE | OPERDATE | DATE |
| 更新时间 |
(7)数据库监控日志表(ALERT_LOG):监控数据库时,如果发现异常就把异常信息写入此表,数据库管理员可以根据此表来解决异常和优化数据库。详细定义如表1-7所示。
表1-7 数据库监控日志表
Name | Code | Data Type | Length | 说明 |
HAPPENTIME | HAPPENTIME | DATE |
| 异常发生时间 |
TYPE | TYPE | VARCHAR2(40) | 40 | 异常类型 |
CONTENT | CONTENT | VARCHAR2(200) | 200 | 具体内容 |
(8)图层表结构定义表(FIELDDEFINE):此表是用于记录图层对应的表结构信息,如表名称、字段名称、字段类型等,完整定义如表1-8所示。
表1-8 图层表结构定义表
Name | Code | Data Type | Length | 说明 |
TABLE_NAME | TABLE_NAME | VARCHAR2(40) | 40 | 表名称 |
NAME | NAME | VARCHAR2(40) | 40 | 名称 |
ALIAS_NAME | ALIAS_NAME | VARCHAR2(60) | 60 | 别称 |
TYPE | TYPE | VARCHAR2(20) | 20 | 类型 |
LENGTH | LENGTH | NUMBER |
| 字段的长度 |
SCALE | SCALE | NUMBER |
| 小数位 |
ISNULL | ISNULL | VARCHAR2(4) | 4 | 是否空 |
UNI | UNI | VARCHAR2(4) | 4 | 是否唯一 |
DESCRIPTION | DESCRIPTION | VARCHAR2(80) | 80 | 字段描述 |
CHECKDEFINE | CHECKDEFINE | VARCHAR2(100) | 100 | 字段约束 |
DEFAULTVALUE | DEFAULTVALUE | VARCHAR2(40) | 40 | 默认值 |
(9)图层表之间字段关联表(RELATION):这个表用于维护图层表之间的关联关系,当一个表的数据更新了程序可以通过查询这张表来级联更新与之有关联的表,保证数据的完整性和一致性。这个表结构定义如表1-9所示。
表1-9 图层表之间字段关联表
Name | Code | Data Type | Length | 说明 |
FIRST | FIRST | VARCHAR2(50) | 50 | 主表 |
SECOND | SECOND | VARCHAR2(50) | 50 | 关联表 |
BITS | BITS | NUMBER |
| 字段关联的位数 |
(10)数据库监控索引表(MONITORINDEX):此表是为了记录有关索引相关信息而设计的,通过这个表的信息可以决定是否优化数据库。这个表的定义如表1-10所示。
表1-10 数据库监控索引表
Name | Code | Data Type | Length | 说明 |
INDEX_NAME | INDEX_NAME | VARCHAR2(50) | 50 | 索引名称 |
DEL_LF_ROWS | DEL_LF_ROWS | NUMBER |
|
|
LF_ROWS | LF_ROWS | NUMBER |
|
|
RATE | RATE | NUMBER(4,2) |
| 比率 |
MONITORDATE | MONITORDATE | DATE |
| 监控日期 |
(11)运行维护制度表(OPERATION_MAINTAIN):这个是为了记录运维的制度而设计的。如表1-11所示。
表1-11 数据库监控索引表
Name | Code | Data Type | Length | 说明 |
PUBDATE | PUBDATE | DATE |
| 发布日期 |
TITLE | TITLE | VARCHAR2(100) | 100 | 主题 |
CONTENT | CONTENT | CLOB |
| 内容 |
(12)元数据库信息表(DATABASEINFO):为了记录元数据库的相关信息设计了此表,主要记录了元数据库名称、元数据库描述等,如表1-12所示。
表1-12 元数据库信息表
Name | Code | Data Type | Length | 说明 |
ID | ID | VARCHAR2(20) | 20 | 元数据库的ID编号 |
NAME | NAME | VARCHAR2(30) | 30 | 元数据库名称 |
DESCRIPTION | DESCRIPTION | VARCHAR2(200) | 200 | 元数据库描述 |
CONNECTDRIVER | CONNECTDRIVER | VARCHAR2(50) | 50 | 元数据库连接驱动 |
CONNECTSTRING | CONNECTSTRING | VARCHAR2(100) | 100 | 元数据库连接字符串 |
MAPNAME | MAPNAME | VARCHAR2(40) | 40 | 元数据库映射名称 |
(13)目录信息表(DIRINFO):设计此表为了对元数据按目录进行分类管理,此表就是记录目录相关信息,如表1-13所示。
表1-13 目录信息表
Name | Code | Data Type | Length | 说明 |
SYSID | SYSID | VARCHAR2(40) | 40 | 系统ID编号 |
ID | ID | VARCHAR2(40) | 40 | ID编号 |
NAME | NAME | VARCHAR2(60) | 60 | 目录名称 |
DESCRIPTION | DESCRIPTION | VARCHAR2(500) | 500 | 目录描述 |
PID | PID | VARCHAR2(40) | 40 | 父目录ID编号 |
DEFINE | DEFINE | VARCHAR2(100) | 100 | 定义 |
(14)元数据标准信息表(METASTAND):用于记录元数据标准相关信息,可以根据记录的标准创建元数据库和一条相应的元数据信息,如表1-14所示。
表1-14 元数据标准信息表
Name | Code | Data Type | Length | 说明 |
ID | ID | VARCHAR2(20) | 20 | 元数据标准ID |
NAME | NAME | VARCHAR2(50) | 50 | 元数据标准名称 |
CONTENT | CONTENT | CLOB |
| 元数据标准内容 |
ORG | ORG | VARCHAR2(60) | 60 | 元数据标准发布组织 |
VERSION | VERSION | VARCHAR2(60) | 60 | 元数据标准版本 |