实现自定义查询的数据库设计及实现
Posted yika的学习乐园
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实现自定义查询的数据库设计及实现相关的知识,希望对你有一定的参考价值。
需求
先说一下需求:实现用户自定义的查询,用户可以自定义要查询的列、自定义条件条件、自定义排序。除了查询使用外,还可以使用于各个需要根据条件进行约束的业务,如权限;
本设计和实现,很大部分是通过数据库和存储过程进行,界面只是让用户选择数据列和设置条件,并把这些内容保存在数据库中,查询是通过存储过程拼SQL语句完成,并把结果集返回。
设计结构
基础登记表-->查询设置表-->存储过程运行
表设计
首先定义基础登记表,基础登记表分为三个部分:表登记、列登记、表间关系登记;
表登记的数据表包含如下字段:
字段描述 |
字段名 |
类型 |
说明 |
登记表自增长关键字 |
id_table |
int |
自增长 |
基础表 |
tablereg_name |
varchar(60) |
数据库中名称 |
基础表中文名 |
tablereg_cnname |
varchar(60) |
业务上显示的名称 |
关键字段名 |
prk_name |
varchar(60) |
关键字字段 |
关键字段中文名 |
prk_cnname |
varchar(60) |
关键字中文名称 |
审核后是否可以删除 |
checkdel_flag |
char(1) |
用户控制业务操作 |
使用后是否可以删除 |
useddel_flag |
char(1) |
用户控制业务操作 |
控制操作权限 |
belong_type |
char(1) |
用户控制业务操作 |
用户可配置 |
config_flag |
char(1) |
用户控制业务操作 |
业务主表标志 |
mainbusiness_flag |
char(1) |
用户控制业务操作 |
是否需要审核 |
check_flag |
char(1) |
用户控制业务操作 |
需要定义审批流程 |
checkflow_type |
char(1) |
用户控制业务操作 |
审批流程ID |
id_workflow |
int |
用户控制业务操作 |
数据库名称 |
schema_name |
varchar(100) |
用户控制业务操作 |
消息通知标志 |
message_flag |
char(1) |
用户控制业务操作 |
是否权限控制 |
permission_flag |
char(1) |
用户控制业务操作 |
列登记的数据表包含如下字段:
字段描述 |
字段名 |
类型 |
说明 |
自增长关键字 |
id_column |
int |
自增长关键字 |
登记表关键字 |
id_table |
int |
归属表的ID |
顺序号 |
serial_num |
int |
标示列的顺序 |
字段表 |
column_name |
varchar(60) |
|
字段中文名 |
column_cnname |
varchar(60) |
|
数据类型 |
data_type |
char(1) |
1 数字;2 字符;3 时间; |
原始数据类型 |
data_type_original |
varchar(20) |
记录数据库中的数据类型 如 int datetime 等 |
原始列数据类型 |
column_type_original |
varchar(30) |
|
是否权限控制 |
permission_flag |
char(1) |
业务使用 |
下拉列表ID |
id_list |
int |
标识下拉框的数据源,可以是枚举或是数据源 |
表间关系登记表
字段描述 |
字段名 |
类型 |
说明 |
登记表关系ID关键字 |
id_tabrela |
int |
自增长 |
主表 |
id_table |
int |
表的ID |
关联表 |
id_table_rela |
int |
表的ID |
主表字段名 |
column_name |
varchar(100) |
主表的关键字 |
主表字段中文名 |
column_cnname |
varchar(100) |
主表的关键字中文名 |
关联表字段 |
column_name_rela |
varchar(100) |
关联表的关键字,一般是外键 |
关联表别名 |
relatable_name |
varchar(100) |
关联名别名,显示用 |
关联表查询别名 |
tableas_name |
varchar(100) |
拼SQL语句时表别名 |
这三个表的数据,根据数据库中系统表的内容进行初始化填写。并且开发了一个界面,进行一些业务上的设置,主要是设置表中“用户控制业务操作”的那些字段;
后续内容请看第二部分;
以上是关于实现自定义查询的数据库设计及实现的主要内容,如果未能解决你的问题,请参考以下文章