技术领域:

本发明涉及一种多个多层表头的表格在数据库中的存储方法。

背景技术:

:在各个领域,长期以来都会产生和积累大量手绘的、印刷的或EXCEL格式保存的表格数据,将这些表格数据录入到数据库系统中存储,并提供增删改查的访问接口是经常会遇到的一种项目需求。对简单的表格来说,这种需求很容易满足,但对复杂的多层表头的表格,如何建立相应的数据库表,支持高效的数据录入和访问操作是一个值得思考的问题,特别是当同一个项目中存在许多张不同的多层表头表格时,数据库系统更需要合理设计来实现多层表头表格数据的存储和访问。技术实现要素:为了解决上述技术问题,本发明的目的是提供一种多个多层表头的表格在数据库中的存储和访问方法。为解决上述技术问题,本发明采用如下技术方案:一种多个多层表头的表格在数据库中的存储方法,包括如下步骤:S1、多个纸质表格数据库的建立S1.1、建立记录所有纸质表格的数据的数据库表C,其中数据库表C中的每条记录对应原始某个纸质表格中的一条记录;S1.2、建立记录所有的纸质表格的表格信息的数据库表A,其中所述表格信息包括表的名称、所在纸质手册的名称、起始、结束页码、录入者、审校者、录入时间和备注等信息;S1.3、建立记录所有的纸质表格的表头信息的数据库表B,其中所述表头信息包括每个表头的每个栏目的名称、栏目层级、数据类型、字段序号、备注和表ID等信息;S2、多层表头的建立S2.1、将数据库表B中CLEVEL=1的栏目记录为单层表头栏目或多层表头的第一层栏目,CLEVEL=2是第二层栏目,且其上一层是数据库表B中它之前最靠近它的一个CLEVEL=1的栏目,CLEVEL=3、4…时依此类推;其中:所述数据库表A、B、C均有各自的主键,所述主键包括表ID、栏目ID、记录ID,所述主键均设置为自动增长,其中所述数据库表B和数据库表C中都以表ID作为外键。进一步的,所述数据库表C采用ORACLE数据库。一种多个多层表头的表格在数据库中的访问方法,包括如下步骤:要访问一张纸质表格的数据时,从数据库表A中得到该纸质表的表ID,然后从表B中利用该表ID得到该表的所有表头栏目信息,表头栏目信息明确了表头中各栏目的层次关系和顺序以及最下一层每个栏目对应的数据在表C中的字段名,然后根据表B中各栏目的数值从表C中获得对应数据进行访问。进一步的,该多个多层表头的表格在数据库中的访问方法具体步骤如下:1)添加一个表:在表A中添加一条记录,并得到该条记录的表ID;遍历描述表头的XML或JSON数据结构,在表B中插入各个表头栏目,具体遍历过程如下:遍历同一层节点元素;如果当前节点元素有下一层节点,则在表B中添加一行记录,该记录的CTYPE和CORDER为空,CLEVEL是当前CLEVEL值,然后设置CLEVEL值加一,并跳转到上一步遍历下一层节点;如果当前节点元素没有下一层节点,则在表B中添加一行记录,该记录的CTYPE根据节点数据类型设定,并根据数据类型决定CORDER值等于CORDER1或CORDER2,然后设置CORDER1或CORDER2值加一,CLEVEL是当前CLEVEL值;同一层节点元素遍历结束返回上一层时CLEVEL值减一;把表格数据按照各栏目对应的CORDER值插入到表C中;2)删除一个表,指定表ID:根据TID删除表A中的一条记录;删除表B中的表ID等于所给表ID的记录;删除表C中的表ID等于所给表ID的记录;3)获取表头信息,指定表ID:查询表B中表ID等于指定表ID的所有记录,并按照栏目ID顺序排列;按照从后往前的顺序遍历这些记录,生成XML或JSON的数据结构;4)访问表中数据,指定表ID:根据指定表ID查询表B得到的该表各栏目的CORDER值;使用这些CORDER值生成访问表C的SQL语句;执行生成的SQL语句完成数据访问任。与现有技术相比,本发明的有益技术效果:通过分别建立多个纸质表格数据库和多层表头实现多个多层表头的表格在数据库中的存储,并根据建立各数据库的表ID等信息快速访问数据库,高效快捷的实现纸质表格的的添加、删除、获取及访问。附图说明下面结合附图说明对本发明作进一步说明。图1为三张数据库表及其关系图。具体实施方式一种多个多层表头的表格在数据库中的存储方法,包括如下步骤:S1、多个纸质表格数据库的建立S1.1、建立记录所有纸质表格的数据的数据库表C,其中数据库表C中的每条记录对应原始某个纸质表格中的一条记录;S1.2、建立记录所有的纸质表格的表格信息的数据库表A,其中所述表格信息包括表的名称、所在纸质手册的名称、起始、结束页码、录入者、审校者、录入时间和备注;S1.3、建立记录所有的纸质表格的表头信息的数据库表B,其中所述表头信息包括每个表头的每个栏目的名称、栏目层级、数据类型、字段序号、备注和表ID;S2、多层表头的建立S2.1、将数据库表B中CLEVEL=1的栏目记录为单层表头栏目或多层表头的第一层栏目,CLEVEL=2是第二层栏目,且其上一层是数据库表B中它之前最靠近它的一个CLEVEL=1的栏目,CLEVEL=3、4…时依此类推;其中:所述数据库表A、B、C均有各自的主键,所述主键包括表ID、栏目ID、记录ID,所述主键均设置为自动增长,其中所述数据库表B和数据库表C中都以表ID作为外键。实施例1如果对每一个纸质表格都建立一个对应的数据库表,数据库中将产生大量数据量不多的表格,且这些表格的格式都不统一,使得存储和访问接口难以实现,数据使用效率不高(表很多,每个表里的数据不多,不利于数据库自身的优化)。这些纸质表格虽然格式各不相同,但其数据要么是数值类型要么是字符串类型,因此我们把所有表格的数据放在同一个数据库表C中存储,表C中的每条记录对应原始某个纸质表格中的一条记录,假设所有原始纸质表格一条记录(一行)里最多有10个数值类型的数据和5个字符串类型的数据,我们采用ORACLE数据库,则表C如下:表C用数据库表A记录所有的纸质表格信息,包括表的名称、所在纸质手册的名称、起始和结束页码、录入人、审校者等信息,用数据库表B记录所有的表头信息,包括每个表头的每个栏目的名称、层级、数据类型、数据表字段序号等信息。表A和表B如下:表A表B三张数据库表及其关系如图1所示,三张表都有各自的主键(表ID、栏目ID、记录ID),主键都设置为自动增长,表B和表C中都以表ID作为外键,这样,要访问一张纸质表格的数据时,可以从表A中得到该纸质表的表ID,然后从表B中利用该表ID得到该表的所有表头栏目信息,表头栏目信息明确了表头中各栏目的层次关系和顺序以及最下一层每个栏目对应的数据在表C中的字段序号。然后根据表B中各栏目的CORDER值从表C中获得对应数据进行访问。多层表头的建立:将数据库表B中CLEVEL=1表示该栏目是单层表头栏目或多层表头的第一层栏目,CLEVEL=2是第二层栏目,且其上一层是表B中它之前最靠近它的一个CLEVEL=1的栏目,CLEVEL=3,4…时依此类推。按照上述方法,下述的产品参数表1,在数据库中的记录如下:产品参数表1表ATIDNAMEBOOKSTARTPAGEENDPAGERECORDERAUDITORCDATE2产品参数表1AAA设计手册6061王某李某2018-8-1表BCIDCNAMECTYPECORDERCLEVELTID110子型号11112111半径12112内22113最大2132114最小2232115外22116最大2332117最小2432118长度2512119设计者11212注:CTYPE=1表示字符串,CTYPE=2表示数值,CORDER=1对应表C中的D1字段,CORDER=2对应D2字段,依此类推,CORDER=11对应表C中的C1字段,依此类推。表CMIDTIDD1D2D3D4D5D6D7D8D9D10C1C2C3C4C55022.32.13.53.410QW001张三5122.52.43.43.312QW002李四5222.62.53.63.513QW003王五用户界面上多层表头的实现已有很多控件支持,如ExtJS的grid,ASP.Net的GridView等,但这些控件只是将特定格式描述的多层表头显示出来,并不涉及多层表头在数据库中的存储和访问。如前所述,本文提出了多个多层表头的表格在数据库中的存储方法,下面给出用本文方法进行存储的表格的访问方法,相当于为UI控件提供数据库访问的接口。用本文存储方法进行存储的表格的具体访问方法如下:1)添加一个表:在表A中添加一条记录,并得到该条记录的TID值;遍历描述表头的XML或JSON数据结构,在表B中插入各个表头栏目,具体遍历过程如下:CORDER1=1,CORDER2=11,CLEVEL=1;遍历同一层节点元素;如果当前节点元素有下一层节点,则在表B中添加一行记录,该记录的CTYPE和CORDER为空,CLEVEL是当前CLEVEL值,然后设置CLEVEL值加一,并跳转到上一步遍历下一层节点;如果当前节点元素没有下一层节点,则在表B中添加一行记录,该记录的CTYPE根据节点数据类型设定,并根据数据类型决定CORDER值等于CORDER1或CORDER2,然后设置CORDER1或CORDER2值加一,CLEVEL是当前CLEVEL值;同一层节点元素遍历结束返回上一层时CLEVEL值减一。把表格数据按照各栏目对应的CORDER值插入到表C中。2)删除一个表(指定TID):根据TID删除表A中的一条记录;删除表B中的TID等于所给TID的记录;删除表C中的TID等于所给TID的记录。3)获取表头信息(指定TID):查询表B中TID等于指定TID的所有记录,并按照CID顺序排列;按照从后往前的顺序遍历这些记录,生成XML或JSON的数据结构,具体遍历过程这里不再累述。4)访问表中数据(指定TID):根据指定TID查询表B得到的该表各栏目的CORDER值;使用这些CORDER值生成访问表C的SQL语句;执行生成的SQL语句完成数据访问任务。以上所述的实施例仅是对本发明的优选方式进行描述,并非对本发明的范围进行限定,在不脱离本发明设计精神的前提下,本领域普通技术人员对本发明的技术方案做出的各种变形和改进,均应落入本发明权利要求书确定的保护范围内。当前第1页1&nbsp2&nbsp3&nbsp

excel多级表头存入mysql_一种多个多层表头的表格在数据库中的存储及其访问方法与流程...相关推荐

  1. Mysql出租车轨迹的分析_一种基于出租车轨迹数据的交通出行共现现象的可视化分析方法与流程...

    本发明涉及交通数据可视化领域,尤其涉及一种基于出租车轨迹数据的交通出行共现现象的可视化分析方法. 背景技术: :城市中人类移动规律中的共现现象是指来自两个区域的人们在同一个时间段内访问同一个城市区域. ...

  2. 单片机发送数据到mysql_单片机的数据怎样进入到sql server的数据库中

    展开全部 你需要做个个串e69da5e6ba9062616964757a686964616f31333262363132口通讯,将单片机的数据上载到电脑端,电脑端要写一个上位机.可讲通讯过来的数据存入 ...

  3. 度量相似性数学建模_一种基于粒子群位置更新思想灰狼优化算法的K-Means文本分类方法与流程...

    技术特征: 1.一种基于粒子群位置更新思想灰狼优化算法的k-means文本分类方法,其特征在于:包括以下步骤: s1:对文本数据进行预处理,得到预处理后文本数据: s2:采用余弦角度为相似性度量,分别 ...

  4. sql compact 转mysql_如何将数据导入到 SQL Server Compact Edition 数据库中(三)

    系列文章导航: 如何将数据导入到 SQL Server Compact Edition 数据库中(一) 如何将数据导入到 SQL Server Compact Edition 数据库中(二) 摘要:时 ...

  5. sql compact 转mysql_如何将数据导入到 SQL Server Compact Edition 数据库中(四)

    系列文章导航: 如何将数据导入到 SQL Server Compact Edition 数据库中(一) 如何将数据导入到 SQL Server Compact Edition 数据库中(二) 如何将数 ...

  6. 人声抑制 深度学习_一种融合骨振动传感器和麦克风信号的深度学习语音提取和降噪方法与流程...

    本发明涉及电子设备语音降噪技术领域,更具体地说,涉及一种融合骨振动传感器和麦克风信号的深度学习降噪方法. 背景技术: 语音降噪技术是指从带噪语音信号中分离出语音信号,该技术拥有广泛的应用,通常有单麦克 ...

  7. android流程点击开机键熄屏,一种基于android系统的灭屏状态下指纹解锁加速亮屏方法与流程...

    本发明涉及android系统解锁显示方法,尤其涉及一种基于android系统的灭屏状态下指纹解锁加速亮屏方法. 背景技术: 目前,随着指纹技术越来越普及,很多android系统设备都带有指纹外设,特别 ...

  8. 一种基于UE4平台多人交互3D家装设计系统及使用方法与流程

    本发明涉及一种基于UE4平台多人交互3D家装设计系统及使用方法,属虚拟现实技术领域. 背景技术: 目前随着虚拟现实技术的飞速发展,当前在进行家装实际工作中,为了提高设计方案对用户展示的便捷性和准确性, ...

  9. python 视频抽帧_一种用于超高帧频图像流到标准模拟视频流转换的抽帧方法与流程...

    本发明属于图像处理技术领域,涉及一种用于超高帧频图像流到标准模拟视频流转换的抽帧方法. 背景技术: 在红外成像制导系统中,随着导弹与目标的距离接近,目标逐渐增大形成不稳定的斑状,最后以很快的速度充满整 ...

最新文章

  1. TLS/HTTPS 证书生成与验证
  2. jquery 使用小技巧
  3. 处理报错:java/lang/NoClassDefFoundError: java/lang/Object
  4. mysql存储引擎简介
  5. Cow Bowling POJ - 3176(基础的动态规划算法)
  6. 使用C与C++混合编程封装UDP协议
  7. centsos7修改主机名 [root@st152 ~]# cat /etc/hostname
  8. shell中$( )与${ }及$(( ))的区别
  9. kali linux u盘自启,如何实现Kali linux系统下的U盘启动(小白指导)
  10. SLAM会议笔记(三)V-LOAM
  11. 用户信息填写web代码_zabbix监控系列之监控项(8、web监控)
  12. AD18原理图到PCB流程
  13. 厉害了,竟有程序员在GitHub上建了一个新华词典数据库
  14. 15、作用域public、private、protected 以及不写时的区别
  15. 上传图片到淘宝 API 返回值说明
  16. JDK 1.8 中的 Timer 类
  17. UCweb等手机浏览器的盈利模式
  18. 固态硬盘是什么接口_今天说事儿—固态硬盘接口,防你入坑
  19. Android O 新特性和行为变更总结
  20. 电气阀门定位器调试方法

热门文章

  1. SQL 分组统计去重有条件的过滤
  2. stable diffusion打造自己专属的LORA模型
  3. MSP430FR6043超声波传感器设计记录
  4. 苹果资讯:watchOS 8 兼容 Apple Watch 型号
  5. 【Python爬虫实例】Python解决521反爬方案
  6. 传奇外网架设常见的问题及解决办法-传奇创建人物失败/不开门/PAK显示密码错误/脚本错误
  7. c语言 接口实现 pdf,ORACLE和C语言通用调用接口实现.pdf
  8. Vulhub之“Drupalgeddon” SQL注入漏洞(CVE-2014-3704)
  9. 使用STM32标准库构建VSCode+gcc+openOCD开发STM32
  10. python拼图_python – 组合实现和拼图