CN105718473B - 一种数据建模的方法 - Google Patents
一种数据建模的方法 Download PDFInfo
- Publication number
- CN105718473B CN105718473B CN201410727330.0A CN201410727330A CN105718473B CN 105718473 B CN105718473 B CN 105718473B CN 201410727330 A CN201410727330 A CN 201410727330A CN 105718473 B CN105718473 B CN 105718473B
- Authority
- CN
- China
- Prior art keywords
- name
- attribute
- column
- model
- dismantling
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 79
- 238000012545 processing Methods 0.000 claims abstract description 36
- 230000008569 process Effects 0.000 claims abstract description 34
- 230000000875 corresponding effect Effects 0.000 claims description 25
- 238000006243 chemical reaction Methods 0.000 claims description 10
- 230000011218 segmentation Effects 0.000 claims description 10
- 238000012790 confirmation Methods 0.000 claims description 4
- 238000010200 validation analysis Methods 0.000 abstract 1
- 230000008859 change Effects 0.000 description 9
- 238000011156 evaluation Methods 0.000 description 5
- 238000005192 partition Methods 0.000 description 5
- 238000013499 data model Methods 0.000 description 4
- 230000007812 deficiency Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000015572 biosynthetic process Effects 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 239000012141 concentrate Substances 0.000 description 1
- 230000001276 controlling effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000013467 fragmentation Methods 0.000 description 1
- 238000006062 fragmentation reaction Methods 0.000 description 1
- PCHJSUWPFVWCPO-UHFFFAOYSA-N gold Chemical compound [Au] PCHJSUWPFVWCPO-UHFFFAOYSA-N 0.000 description 1
- 239000010931 gold Substances 0.000 description 1
- 229910052737 gold Inorganic materials 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- 230000001755 vocal effect Effects 0.000 description 1
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种通过对业务事件的拆解和处理进行数据建模的方法,本方法从用户描述业务事件开始,自动根据业务事件描述形成初步拆解表单,在确认后进行各种自动处理,最终形成可直接适用于各种数据库的模型定义表格。本方法通过人们熟知的“事件描述”这种类似“记叙文”的写作方式,引导业务人员从熟悉的业务开始,减轻了大部分机械、呆板的建模操作;且根据业务人员已经完成的数据建模案例,“自扩充”业务领域内的“知识”,随着“知识”越来越丰富,将使得业务事件的建模过程越来越“智能化”。本方法可以直接用于完成OLTP的过程数据建模和OLAP的事实数据建模。
Description
技术领域
本发明涉及数据库及数据仓库领域,并且更具体地,涉及数据建模的方法。
背景技术
长久以来,数据建模都是小众的技术人群拥有的、高深的事情,需要利用各种专业软件,如Erwin,PowerDesigner,EA等,根据业务需求,直接建立模型,如指定数据库表中的符合长度要求的字母型名称、符合长度要求的字段的字母型名称等。在建立模型过程中还需要知道什么是数据库设计的三范式,需要知道数据库的字段类型、主键、外键、索引等一大堆高深的专业术语,使得数据建模的真正受益者—大多数的业务人员无法参与、无法评判数据建模中的业务合理性、扩展性,而一旦根据建立的模型完成应用开发后,再发现数据建模的问题,会花费额外的人力、财力、物力去变更从数据建模到应用开发的全部过程。重要的是,这样的数据建模方式,没有充分发挥最大多数业务人员对于自己应用的软件的设计热情,毕竟技术人员永远都比业务人员少得多,对于业务的精通程度,技术人员也比业务人员差得多。
但实际上,业务人员心中的初步设想,大部分都是简单的。只要条件适合,不需要专业建模人员,业务人员自己是可以完成的。精通业务的业务人员虽然不能清晰地、完整地说出自己的设想,但在头脑中,一定隐藏着一条完整的线条,“文章本天成,妙手偶得之”,在条件成熟时,就会源源不断地顺畅地牵引出来,这个条件,就是一个能把自己的思路很快变成现实的具备易操作性的方法。
这个方法把时间碎片化,不需要大块的时间来处理、探索数据建模,只需要每次一点点的改进、增加内容,不影响主要业务的工作,让业务人员在时间上能够接受这种方法。
利用这个方法,业务人员在自己的业务的数据模型在不断精细化、实用化的进化过程中,对于数据建模的知识和思想也在进步。随着业务人员自己建立的数据模型越来越专业,范围越来越多,业务人员对于数据建模的能力会变得越来越强,一方面自己的驾驭软件的能力越来越强,相应的业务工作能力也因为自己设计的软件工具的应用得到进一步的增强。
另一方面,数据建模专业的人员,也可以更集中精力处理复杂的更有价值的数据建模,而不是把精力大量地耗费在初步的、简单的数据建模上,影响自己专业的进步。
OLTP中的数据模型,主要分成两类,一类是对象模型,主要是描述一个业务对象的属性,另一类是过程模型,是描述业务发生的过程。对一个业务来说,对象模型是被动的、被过程模型调用的模型,相当于一棵大树的枝叶,过程模型作为贯穿业务操作的红线,是应用的主体,相当于大树的主干。
OLAP中的数据模型的基础来源,主要分成三类,一类是维度模型,主要是描述一个事实对象的维度;一类是事实模型,是描述最细粒度的业务事实;另一类是大量的统计汇总模型,主要是统计应用。对OLAP应用来说,事实模型虽然数量少,但作为统计应用的基础核心数据,在其上才能进行各种层次的统计、汇总,当事实模型涉及具体维度时,由维度模型来描述。从这里可以看出,事实模型的数据建模,是建立数据仓库应用的基础,打好了这个基础,数据仓库应用的大厦才可以比较容易地建立起来。
发明内容
从业务人员的视角看来,无论是OLTP中的过程模型,还是OLAP中的事实模型,对它们的数据建模,都是对应一个具体的在业务上发生的“事件”,我们称为业务事件,它包括发生的前置条件、一系列有序的动作、和这些动作产生的结果。业务人员很清楚发生在自己专注的业务上的内容,让他用平常的语言,如记叙文的方式,来描述自己精通业务的事件,是很容易的、专业的事情。
发明目的:克服对于业务人员不熟悉的直接根据数据库技术建立模型的现状,提出一种通过对业务事件的描述、分拆和处理,间接地建立过程模型或事实模型的方法。
技术方案:通过对提交的业务事件描述进行分词处理后,与属性转换表格对照,找出对应的属性,形成初始拆解表格,并在拆解表单中呈现;对提交确认的拆解表单进行包括初步处理、层次处理、复用处理、输出处理的处理过程,形成可用于各种数据库的模型定义表格。
一种数据建模的方法,包括以下6个步骤。
步骤1,绘制包括业务事件名称输入域,和业务事件描述输入域的业务事件表单。
步骤2,对提交的业务事件描述,按分词处理结果进行检索转换,建立初始拆解表格。
所述的分词处理,有很多种方法,本发明不限于某种固定的分词处理。分词条指分词处理结果中一个一个的分词条目。
所述的初始拆解表格,包括栏目名称含义为属性名称、引用属性、引用字段的栏目。
所述的初始拆解表格是指存在于内存中的一组数据集合。
所述的表格,在本说明书和权利要求书中,均是指由多行和多列组成的二维表格,且所述表格分为两部分,表头和记录行。表头在上部,只占一行;每个记录行即是表格中的一行。表格中竖直的一列,称为一个栏目。栏目的第一行,即表头部分,称为栏目名称。所述表格,可以呈现,也可以仅是存在于内存中的一组数据集合。在本说明书和权利要求书中,所述的数据表,是指存在于数据库中的数据表。
对每个分词条,按已存在的属性转换表格的属性名称栏目进行检索。若检索到分词条在属性转换表格中存在对应的属性名称,则在所述初始拆解表格中添加记录行,并分别在属性名称、引用属性、引用字段栏目中写入属性转换表格中的对应栏目;若不存在,则在所述初始拆解表格中添加记录行,并在该行的属性名称栏目写入分词条。
所述属性转换表格是存储于内存中的一组数据集合,这组数据集合包含了历次数据建模中建立的属性与字段的转换关系。
步骤3,根据初始拆解表格绘制拆解表单。
所述的拆解表单包括一个拆解表格,所述拆解表格包括栏目名称含义为属性名称、引用属性、引用字段、父属性的栏目。
所述拆解表格的每个记录行对应初始拆解表格的每个记录行。
所述记录行的内容包括如下四个栏目的内容。
(1)属性名称栏目:可接收文字输入的、初始内容为初始拆解表格中同行的属性名称的内容的输入域。
(2)引用属性栏目:可接收选择的、选项包括有效的全部模型的全部属性的属性名称的、选项改变时同时改变同行的引用字段栏目内容的、初始内容为初始拆解表格中同行的引用属性的内容的选择域。
所述有效的全部模型的全部属性的属性名称,是指在历次建立的有效的每个模型中,全部有效属性的属性名称,这是因为引用时,可能引用任何一个其他有效模型的有效属性。
(3)引用字段栏目:引用字段呈现域。
(4)父属性栏目:可接收选项的、选项为本拆解表格的全部属性名称、初始内容为空的选择域。
对于步骤4中所述的初步处理,包括如下三个特点。
(1)建立栏目包括含义为模型名称、属性名称、引用属性、引用字段、父属性的模型处理表格。
所述的模型处理表格是存在于内存中的一组数据集合。
(2)对于所述模型处理表格的每行的属性名称、引用属性、引用字段、父属性栏目的内容,设置为与确认提交的所述拆解表格的同行的相应栏目内容。
(3)模型名称设置为与在步骤1提交的业务事件名称相同的名称。
对于步骤5中的复用处理,特点包括,对于属性转换表格中每行的属性名称,在模型处理表格的属性名称中检索是否存在相同的属性名称,若存在,则跳过;若不存在,则在属性转换表格中添加各栏目内容与模型处理表格相应栏目内容相同的一行。
对于步骤5中的层次处理,特点是模型处理表格中的每一行的模型名称内容,由同行的原模型名称和同行的父属性组成。
对于步骤6中的输出处理:包括如下三个特点。
(1)建立栏目包括含义为模型名称、数据表名、属性名称、字段名的模型定义表格。
(2)对于所述模型定义表格的每行的模型名称、属性名称栏目的内容,设置为与模型处理表格的同行的相应栏目内容相同。
(3)对模型定义表格中的数据表名、字段名栏目进行自动处理,自动处理的原则包括:相同的模型名称生成相同的数据表名;相同的属性名称生成相同的字段名。
本发明与现有的技术相比,有如下三个有益效果。
(1)本发明提出的通过对业务事件的分拆和处理,通过人们熟知的“事件描述”这种类似“记叙文”的写作方式,引导业务人员从熟悉的身边的业务开始,记录业务过程。
(2)本发明提出的通过对业务事件的描述、分拆和处理,根据业务人员提供的事件描述,半自动化地完成对事件描述的分拆,减少了大部分机械、呆板的建模操作。
(3)本发明提出的通过对业务事件的分拆和处理,根据业务人员已经完成的数据建模案例,“自学习”地丰富业务领域内的属性转换表格,随着方法使用越来越多,将使得业务事件的建模过程越来越“智能化”。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据本发明说明书的内容,获得其他的附图。
图1是通过拆解处理业务事件进行数据建模的方法的示意流程图。
具体实施方式
我们用一个对商场销售的业务进行数据建模为例,来说明本发明方法。
实施例一。
本实施例中,我们用HTML、JavaScript语言来实现本实施例的前台绘制和交互操作,用JSP来实现本实施例的后台处理。并且,我们规定,若在属性转换表中,没有检索到属性名称的分词条,则用户在字段类型和字段长度中设置。我们设置已存在的字段类型包括:字串、计算数值、时间、日期。
在本实施例中,我们已有的属性转换表格,是采用存在于内存中的java.util.List数据集合实现,已有的属性转换表格内容我们假定如下表所示。
本实施例中,我们规定,在初始拆解表格中自动生成业务事件的主键属性,用户手工调整主键属性的相关内容;在层次处理时,自动加入子模型的主键字段和与主模型关联的外键字段。
本实施例中,为适应于更多类型的数据库和不同的版本,不对字段类型的名称进行处理(如“计算数值”转换成“number”,“字串”转换成“varchar”等),可在方法外的生成数据库建模命令时自行处理。
本实施例中,对于OLTP中过程的数据建模,我们规定,常用简单编码(只有一个编码、一个名称),都放在一个称为码表的数据表中,它至少包括一个代码名称、代码编码两个字段,如对于已存在的称为码表标识的“支付方式”,在码表中可能存储如下表所示。
在根据过程模型建立的过程数据表中,其数据记录存储的是代码,而不是代码名称。
本实施例中,对于OLAP中事实的数据建模,我们规定,常用的简单维度(一个编码,一个名称),都放在一个称为码表的数据表中,它至少包括一个代码名称、代码编码两个字段,如对于已存在的称为码表标识的“支付方式”,在码表中可能存储如下表所示。
在根据事实模型建立的事实数据表中,其数据记录存储的是代码,而不是代码名称。
本实施例中,我们规定,自动增加的主键属性的字段类型为字串,长度为20位字符。
本实施例中,我们规定,输出的模型定义表格的表头依次为如下栏目:模型名称、数据表名、属性名称、字段名、主键、允许空、字段类型、字段长度。
本实施例中,我们规定,模型定义表格的记录行中,数据表名的前缀为“t”,后面加一个2位的数据表序列号,本实施例中假定目前的数据表序列号为31;字段名的前缀为“f”,后面加一个3位的字段序列号,对每个数据表来说,字段序列号都从001开始。
对于方法中的步骤1提到的,绘制包括业务事件名称输入域,和业务事件描述输入域的业务事件表单。
在本实施例中,在HTML上建立一个表单<form></form>,在这个表单中,建立业务事件名称输入域:文本输入框<input type=text>,和业务事件描述输入域:多行文本输入域<textarea></textarea>。
在本实施例中,在业务事件名称输入域中输入的业务事件名称是:销售。
在本实施例中,在业务事件描述输入域输入的业务事件是商品销售事件,假如输入内容为:收银员在某时在某商店, 向年龄段为某段、性别为某的顾客 ,用某种支付方式,利用优惠A和优惠B活动,销售了若干商品,其中商品A若干个,某商品B若干个,收银单为某号,收取金额若干钱,收银员找补了若干钱,最终实收金额若干钱。
在本实施例中,我们采用支持中文的Java分词器: Paoding Analysis。经过分词处理后,分词结果假定包括如下分词条:收银员、某时、某商店、年龄段、性别、顾客、支付方式、利用、优惠、优惠、活动、销售、若干、商品、其中、商品、若干、商品、若干、收银单、收取金额、若干、钱、收银员、找补、若干、钱、最终、实收金额、若干、钱。
对于方法中的步骤2提到的,对提交的业务事件描述,按分词处理结果进行检索转换,建立初始拆解表格。
所述的初始拆解表格,包括栏目名称含义为属性名称、引用属性、引用字段的栏目。
对每个分词条,按已存在的属性转换表格的属性名称栏目进行检索。若检索到分词条在属性转换表格中存在对应的属性名称,则在所述初始拆解表格中添加记录行,并分别在属性名称、引用属性、引用字段栏目中写入属性转换表格中的对应栏目;若不存在,则在所述初始拆解表格中添加记录行,并在该行的属性名称栏目写入分词条。
本实施例的初始拆解表格,是采用存在于内存中的java.util.List数据集合实现,并添加了字段类型、字段长度栏目,其记录行内容分别与属性转换表格的这两个栏目对应。
本实施例形成的初始拆解表格内容,如下表所示。
对于方法中的步骤3提到的,绘制的拆解表单包括一个拆解表格,所述拆解表格包括栏目名称含义为属性名称、引用属性、引用字段、父属性的栏目。
所述拆解表格的每个记录行对应初始拆解表格的每个记录行;所述记录行的内容包括如下四个栏目的内容。
(1)属性名称栏目:可接收文字输入的、初始内容为初始拆解表格中同行的属性名称的内容的输入域。
(2)引用属性栏目:可接收选择的、选项包括有效的全部模型的全部属性的属性名称的、选项改变时同时改变同行的引用字段栏目内容的、初始内容为初始拆解表格中同行的引用属性的内容的选择域。
(3)引用字段栏目:引用字段呈现域。
(4)父属性栏目:可接收选项的、选项为包括本拆解表格的全部属性名称、初始内容为空的选择域。
本实施例中,用HTML中的<form></form>来绘制拆解表单,并用在<form></form>中的<table><tr><td></td></tr></table>一组标签来绘制拆解表单中的拆解表格。
本实施例中,拆解表格中的记录行六个栏目的控件如下。
(1)属性名称栏目:用一个<input type=text>标签来接受输入的属性名称文字。
(2)字段类型栏目:用一个<select><option></option></select>标签来选择包括字串、计算数值、时间、日期的字段类型选项。
(3)字段长度栏目:根据已选择的字段类型,决定字段长度的输入控件:若字段类型是字串,则用只能输入半角数字的<input type=text>标签来接受输入的字段长度;若字段类型是计算数值,则用一个只能输入半角数字的<input type=text>标签来接受输入整数位数,用另一个只能输入半角数字的<input type=text>标签来接受输入小数位数;若字段类型是日期或时间,则没有控件。
(4)引用属性栏目:用一个<select><option></option></select>标签来选择已建立的有效模型,用另一个<select><option></select>标签来选择模型中的有效属性,实现方式是用AJAX。
(5)引用字段栏目:是一个隐藏的栏目,用一个<input type=hidden>标签来接受当引用属性变化时写入的引用字段名。
(6)父属性栏目:用一个<select><option></option></select>标签来选择本拆解表格的全部属性名称。
刚呈现的尚未操作的拆解表单中的拆解表格,如下表所示。
注:上述表格中的引用字段,整个栏目都隐藏不呈现。
对于方法中的步骤4提到的初步处理,建立栏目包括含义为模型名称、属性名称、引用属性、引用字段、父属性的模型处理表格。
本实施例中,经用户删除、修改或增加后确认提交的拆解表格假定如下表所示。
上述表格中,下划线部分,表示输入或选择的部分;斜体部分,表示选择引用属性后,从引用属性的相关信息中获得并呈现的部分。
对于所述模型处理表格的每行的属性名称、引用属性、引用字段、父属性栏目的内容,设置为与确认提交的所述拆解表格的同行的相应栏目内容。
模型名称设置为在步骤1提交的业务事件名称。
本实施例中,模型处理表格,是采用存在于内存中的java.util.List数据集合实现。模型处理表格中的模型名称栏目,全部记录行均设置成提交的业务事件名称:销售。
本实施例中,增加主键和允许空两个栏目;对于在初始拆解表格中自动增加的主键属性行,其主键栏目设置为主键标识,允许空栏目设置为不允许标识。
处理后的模型处理表格如下表所示。
上述表格中,第一记录行中的主键栏目和允许空栏目为斜体,表示本处理后设置的。
对于方法中的步骤5提到的复用处理中,对于属性转换表格中每行的属性名称,在模型处理表格的属性名称中检索是否存在相同的属性名称,若存在,则跳过;若不存在,则在属性转换表格中添加各栏目内容与模型处理表格相应栏目内容相同的一行。
本实施例中,追加后的属性转换表格为。
注:最后8行的斜体部分,是增加的记录行。
形成的新的属性转换表,可在下次数据建模时,初始化更多的属性,更“智能”地建模,从而达到本方法的目的。
对于方法中的步骤5提到的层次处理,模型处理表格中的每一行的模型名称内容,由同行的原模型名称和同行的父属性组成。
在本实施例中,对于优惠、商品、商品数量三行记录,其父属性均不为空,而是为分别为优惠、商品、商品,在本实施例中,提交的业务事件名称为销售,则模型名称分别设置为销售优惠、销售商品和销售商品。且为减少用户操作,对于这三行记录中,在属性名称与父属性相同的记录行上,自动在属性名称后添加ID,分别形成:优惠ID、商品ID。
在本实施例中,为简化用户操作,在本实施例在此处自动增加非主模型的主键属性的记录行和与主模型的外键属性的记录行,对于主键记录行,属性名称为模型名称加ID,字段类型为通用主键的类型,如字串,字段长度为通用主键的字段,如20位字符;对于外键记录行,属性名称为引用属性的名称,字段类型为引用属性的类型:字串,字段长度为引用属性的长度:如10位字符。当然,也可以在本方法外增加所述的主键行和外键行,或用户手工处理。
完成层次处理后的模型处理表格,如下表所示。
注:属性名称为优惠ID和商品ID的行,和最后4行是斜体,表示是修改或增加的记录行。
对于方法中的步骤6提到的输出处理。
建立栏目包括含义为模型名称、数据表名、属性名称、字段名、字段类型的模型定义表格。
对于所述模型定义表格的每行的模型名称、属性名称栏目的内容,设置为与模型处理表格的同行的相应栏目内容相同。
对模型定义表格中的数据表名、字段名栏目进行自动处理,自动处理的原则包括:相同的模型名称生成相同的数据表名;相同的属性名称生成相同的字段名。
在本实施例中,模型定义表格就在模型处理表格上增加数据表名、字段名栏目而成,所以也采用存在于内存中的java.util.List数据集合实现。
本实施例中,数据表名按前缀+序号构成,当前序号是31;字段名按前缀+序号构成,均按每个数据表从001开始。
在本实施例中,将外键关系单独形成一个称为外键关系表格,与模型定义表格分开。外键关系表格,也采用存在于内存中的java.util.List数据集合实现。
本实施例中形成的模型定义表格,如下表所示。
本实施例中,外键关系表格包括模型名称、数据表名、属性名称、字段名、引用属性、引用字段栏目。
本实施例中,对于模型处理表格中引用属性非空的每个记录行,在外键关系表格中均添加一行,且此新添加行的内容为:外键关系表格中的模型名称、属性名称、引用属性、引用字段分别为模型处理表格中的模型名称、属性名称、引用字段;外键关系表格中的数据表名为模型名称与模型处理表格中相同模型名称的数据表名,外键关系表格中的字段名为模型名称和属性名称分别与模型处理表格中模型名称、属性名称均相同的字段名。
本实施例中形成的外键关系表格,如下表所示。
形成的模型定义表和外键关系表,可以用于对各种数据库形成建表命令和外键关系约束。
实施例二。
本实施例中,我们用HTML、JavaScript语言来实现本实施例的前台绘制和交互操作,用JSP来实现本实施例的后台处理。并且,考虑到一般情况下,有业务含义的字段类型不多,业务对字段长度要求不是很严格的情况,很少会发生用户自己直接设置字段长度,为更加简化用户操作,我们规定,在初始拆解表单中,若在属性转换表中检索不到属性名称,则用户首先在属性类型中选择,为此,我们设置一个如下表所示的属性类型表格。
所述属性类型表格,还可在本发明的方法外,由其他方式管理。
我们设置已存在的字段类型:字串、计算数值、时间、日期。
本实施例中,我们规定,自动增加的主键属性的字段类型和长度,都用上述表中的通用主键中的字段类型和字段长度。
在本实施例中,我们已有的属性转换表格如下表所示。
本实施例中,为符合三范式要求,并方便用户操作,我们规定,在初步处理时,自动加入主键属性,属性类型为通用主键;并在层次处理时,自动加入子模型的主键字段和与主模型关联的外键字段。
本实施例中,为适应于更多类型的数据库,不对字段类型的名称进行处理(如计算数值转换成number等),在方法外的生成数据库建模命令时自行处理。
本实施例中,对于OLTP中过程的数据建模,我们规定,常用简单编码(只有一个编码、一个名称),都放在一个称为码表的数据表中,它至少包括一个代码名称、代码编码两个字段,如对于已存在的称为码表标识的“支付方式”,在码表中可能存储如下表所示。
在根据过程模型建立的过程数据表,其数据记录存储的是代码,而不是代码名称。
本实施例中,对于OLAP中事实的数据建模,我们规定,常用的简单维度(一个编码,一个名称),都放在一个称为码表的数据表中,它至少包括一个代码名称、代码编码两个字段,如对于已存在的称为码表标识的“支付方式”,在码表中可能存储如下表所示:
在根据事实模型建立的事实数据表中,其数据记录存储的是代码,而不是代码名称。
本实施例中,我们规定,输出的模型定义表格的栏目依次表头为:模型名称、数据表名、属性名称、字段名、主键、允许空、字段类型、引用字段、引用码表标识。
本实施例中,我们规定,模型定义表格记录行中,数据表名的前缀为“t”,后面加一个2位的数据表序列号,本实施例中假定目前的数据表序列号为31;字段名的前缀为“f”,后面加一个3位的字段序列号,对每个数据表来说,字段序列号都从001开始。
对于方法中的步骤1提到的,绘制包括业务事件名称输入域,和业务事件描述输入域的业务事件表单。
在本实施例中,在HTML上建立一个表单<form></form>,在这个表单中,建立业务事件名称输入域:文本输入框<input type=text>,和业务事件描述输入域:多行文本输入域<textarea></textarea>。
在本实施例中,假如业务事件名称输入域中输入的业务事件名称是:销售。
在本实施例中,业务事件描述输入域输入的业务事件是商品销售事件,假如输入内容为:收银员在某时在某商店, 向年龄段为某段、性别为某的顾客 ,用某种支付方式,利用优惠A和优惠B活动,销售了若干商品,其中商品A若干个,某商品B若干个,收银单为某号,收取金额若干钱,收银员找补了若干钱,最终实收金额若干钱。
在本实施例中,我们采用支持中文的java分词器: mmseg4j。经过分词处理后,分词结果包括如下分词条:收银员、某时、某商店、年龄段、性别、顾客、支付方式、利用、优惠、优惠、活动、销售、若干、商品、其中、商品、若干、商品、若干、收银单、收取金额、若干、钱、收银员、找补、若干、钱、最终、实收金额、若干、钱。
对于方法中的步骤2提到的,对提交的业务事件描述,按分词处理结果进行检索转换,建立初始拆解表格。
所述的初始拆解表格,包括栏目名称含义为属性名称、引用属性、引用字段的栏目。
对每个分词条,按已存在的属性转换表格的属性名称栏目进行检索。若检索到分词条在属性转换表格中存在对应的属性名称,则在所述初始拆解表格中添加记录行,并分别在属性名称、引用属性、引用字段栏目中写入属性转换表格中的对应栏目;若不存在,则在所述初始拆解表格中添加记录行,并在该行的属性名称栏目写入分词条。
本实施例的初始拆解表格,是采用存在于内存中的java.util.List数据集合实现,并添加了属性类型栏目,其记录行内容分别与属性转换表的属性类型栏目对应。
本实施例形成的初始拆解表格内容,如下表所示。
对于方法中的步骤3提到的,绘制的拆解表单包括一个拆解表格,所述拆解表格包括栏目名称含义为属性名称、引用属性、引用字段、父属性的栏目。
所述拆解表格的每个记录行对应初始拆解表格的每个记录行;所述记录行的内容包括如下四个栏目。
(1)属性名称栏目:可接收文字输入的、初始内容为初始拆解表格中同行的属性名称的内容的输入域。
(2)引用属性栏目:可接收选择的、选项包括有效的全部模型的全部属性的属性名称的、选项改变时同时改变同行的引用字段栏目内容的、初始内容为初始拆解表格中同行的引用属性的内容的选择域。
(3)引用字段栏目:引用字段呈现域。
(4)父属性栏目:可接收选项的、选项为包括本拆解表格的全部属性名称、初始内容为空的选择域。
本实施例中,用HTML中的<form></form>来绘制拆解表单,并用在<form></form>中的<table><tr><td></td></tr></table>一组标签来绘制拆解表单中的拆解表格。
本实施例中,拆解表格中的记录行各栏目的控件如下。
属性名称栏目:用一个<input type=text>标签来接受输入的属性名称文字。
属性类型栏目:用一个<select><option></option></select>标签来选择属性类型,其选项为属性转换表格中的属性类型。
引用属性栏目:用一个<select><option></option></select>标签来选择已建立的有效模型,用另一个<select><option></select>标签来选择模型中的有效属性,实现方式是用AJAX。
引用字段栏目:用一个<input type=hidden>标签来接受当引用属性变化时写入的引用字段名。
父属性栏目:用一个<select><option></option></select>标签来选择本拆解表格的全部属性名称。
刚呈现的尚未操作的拆解表单中的拆解表格,如下表所示。
注:上述表格中的引用字段,整个栏目都隐藏不呈现。
对于方法中的步骤4提到的初步处理,建立栏目包括含义为模型名称、属性名称、引用属性、引用字段、父属性的模型处理表格。
本实施例中,经用户删除、修改或增加后确认提交的拆解表格假定如下表所示。
上述表格中,下划线部分,表示输入或选择的部分;顾客龄段、顾客性别和优惠ID三行中的属性类型和引用字段是斜体,表示选择引用属性后,从属性转换表得到的部分。
对于所述模型处理表格的每行的属性名称、引用属性、引用字段、父属性栏目的内容,设置为与确认提交的所述拆解表格的同行的相应栏目内容。
模型名称设置为在步骤1提交的业务事件名称。
本实施例中,模型处理表格,是采用存在于内存中的java.util.List数据集合实现。模型处理表格中的模型名称栏目,全部记录行均设置成提交的业务事件名称:销售。
本实施例中,增加主键和允许空2个栏目;然后,在所述模型处理表格自动增加一行,属性名称为销售ID的主键,主键栏目设置为主键标识,允许空栏目设置为不允许标识。
处理后的模型处理表格如下表所示。
上述表格中,第一记录行是斜体,表示新添加的主键属性。
对于方法中的步骤5提到的复用处理:对于属性转换表格中每行的属性名称,在模型处理表格的属性名称中检索是否存在相同的属性名称,若存在,则跳过;若不存在,则在属性转换表格中添加各栏目内容与模型处理表格相应栏目内容相同的一行。
本实施例中,追加后的属性转换表格如下表所示。
注:最后8行的斜体部分,是增加的记录行。
本实施例中,凡在拆解表单中,选择了属性类型、或选择了引用属性的属性记录行,均将属性名称作为属性类型,和相应的字段类型、字段长度一起,追加属性类型到属性类型表格中,追加后的属性类型表格如下表所示。
注:最后10行的斜体部分,是增加的记录行。
形成的新的属性转换表和新的属性类型表,可在下次建模时,在初始拆解表格中初始化更多的属性,更“智能”地建模,从而达到本方法的目的。
对于方法中的步骤5提到的层次处理,模型处理表格中的每一行的模型名称内容,由同行的原模型名称和同行的父属性组成。
在本实施例中,对于优惠、商品、商品数量三行记录,其父属性均不为空,而是为分别为优惠、商品、商品,在本实施例中,提交的业务事件名称为销售,则模型名称分别设置为销售优惠、销售商品和销售商品。且为减少用户操作,对于这三行记录中,在属性名称与父属性相同的记录行上,自动在属性名称后添加ID,分别形成:优惠ID、商品ID。
在本实施例中,为简化用户操作,在本实施例在此处自动增加非主模型的主键属性的记录行和与主模型的外键属性的记录行,对于主键记录行,属性名称为模型名称加ID,属性类型为通用ID;对于外键记录行,属性名称为引用属性的名称,属性类型为引用属性的属性类型。当然,也可以在本方法外增加所述的主键行和外键行,或用户手工处理。
在本实施例中,经过层次处理后的模型处理表格,如下表所示。
注:最后4行的斜体部分,是增加的记录行。
对于方法中的步骤6提到的输出处理。
建立栏目包括含义为模型名称、数据表名、属性名称、字段名的模型定义表格。
对于所述模型定义表格的每行的模型名称、属性名称栏目的内容,设置为与模型处理表格的同行的相应栏目内容相同。
对模型定义表格中的数据表名、字段名栏目进行自动处理,自动处理的原则包括:相同的模型名称生成相同的数据表名;相同的属性名称生成相同的字段名。
本实施例中,在模型处理表格上修改而成,故也是采用存在于内存中的java.util.List数据集合实现。
本实施例中,数据表名按前缀+序号构成,当前序号是31;字段名按前缀+序号构成,均按每个数据表从001开始。
在本实施例中,模型定义表格包括外键关系,形成的模型定义表格如下表所示。
形成的模型定义表格,可以用于对各种数据库形成建表命令,从而达到本发明方法的目的。
综上所述,以上仅为本发明的两个具体实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (5)
1.一种数据建模的方法,其特征在于,包括以下步骤:
步骤1,绘制包括业务事件名称输入域,和业务事件描述输入域的业务事件表单;
步骤2,对提交的业务事件描述,对分词处理结果,根据属性转换表格进行检索转换,建立初始拆解表格;
步骤3,根据初始拆解表格绘制拆解表单;
步骤3所述的拆解表单包括一个拆解表格,所述拆解表格包括栏目名称含义为属性名称、引用属性、引用字段、父属性的栏目;
所述拆解表格的每个记录行对应初始拆解表格的每个记录行;
所述拆解表格的每个记录行,其内容包括:
属性名称栏目:可接收文字输入的、初始内容为初始拆解表格中同行的属性名称的内容的输入域;
引用属性栏目:可接收选择的、选项包括属性转换表格中全部有效属性的属性名称的、选项改变时同时改变同行的引用字段栏目内容的、初始内容为初始拆解表格中同行的引用属性的内容的选择域;
引用字段栏目:引用字段呈现域;
父属性栏目:可接收选项的、选项为本拆解表格的全部属性名称、初始内容为空的选择域;
步骤4,对提交的拆解表单,进行包括初步处理的处理过程,形成模型处理表格;
步骤4所述的初步处理,是指建立栏目包括含义为模型名称、属性名称、引用属性、引用字段、父属性的模型处理表格;
对于所述模型处理表格的每行的属性名称、引用属性、引用字段、父属性栏目的内容,设置为与确认提交的所述拆解表格的同行的相应栏目内容;
模型名称设置为与在步骤1提交的业务事件名称相同的名称;
步骤5,对模型处理表格,进行包括复用处理、层次处理的处理过程;
步骤6,对加工后的模型处理表格,进行包括输出处理的处理过程,形成包括模型定义表格的处理输出。
2.根据权利要求1所述的一种数据建模的方法,对于步骤2中所述的“对提交的业务事件描述,对分词处理结果,根据属性转换表格,进行检索转换,建立初始拆解表格”,其特征在于:
所述的初始拆解表格,包括栏目名称含义为属性名称、引用属性、引用字段的栏目;
所述的属性转换表格,是用于记录业务领域内截止当时操作时为止的全部属性信息的一张表格,它至少包含有含义为模型名称、属性名称、字段名称的栏目;属性转换表格在步骤2、3中用于属性索引后引用;在步骤5中检查属性不重复后新增;
对每个分词条,按已存在的属性转换表格中的属性名称栏目进行检索:若检索到分词条在属性转换表格中存在对应的属性名称,则在所述初始拆解表格中添加记录行,并分别在属性名称、引用属性、引用字段栏目中写入属性转换表格中的对应栏目;若不存在,则在所述初始拆解表格中添加记录行,并在该行的属性名称栏目写入分词条。
3.根据权利要求1所述的一种数据建模的方法,对于步骤5所述的“对模型处理表格,进行包括复用处理、层次处理的处理过程”中的复用处理,其特征在于:
对于属性转换表格中每行的属性名称,在模型处理表格的属性名称中检索是否存在相同的属性名称,若存在,则跳过;若不存在,则在属性转换表格中添加各栏目内容与模型处理表格相应栏目内容相同的一行。
4.根据权利要求1所述的一种数据建模的方法,对于步骤5中的层次处理,其特征在于,模型处理表格中的每一记录行的模型名称内容,由同行的原模型名称和同行的父属性组成。
5.根据权利要求1所述的一种数据建模的方法,对于步骤6中的输出处理,其特征在于:
建立栏目包括含义为模型名称、数据表名、属性名称、字段名的模型定义表格;
对于所述模型定义表格的每行的模型名称、属性名称栏目的内容,设置为与模型处理表格的同行的相应栏目内容相同;
对模型处理表格中的数据表名、字段名栏目进行自动处理,自动处理的原则包括:相同的模型名称生成相同的数据表名;相同的属性名称生成相同的字段名。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410727330.0A CN105718473B (zh) | 2014-12-05 | 2014-12-05 | 一种数据建模的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410727330.0A CN105718473B (zh) | 2014-12-05 | 2014-12-05 | 一种数据建模的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105718473A CN105718473A (zh) | 2016-06-29 |
CN105718473B true CN105718473B (zh) | 2019-01-25 |
Family
ID=56143038
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410727330.0A Expired - Fee Related CN105718473B (zh) | 2014-12-05 | 2014-12-05 | 一种数据建模的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105718473B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107025285A (zh) * | 2017-04-07 | 2017-08-08 | 广州隆德信息科技有限公司 | 一种综合运营的数据处理系统 |
CN108710660A (zh) * | 2018-05-11 | 2018-10-26 | 上海核工程研究设计院有限公司 | 一种数据库的物项属性参数建模和存储方法 |
CN108897832B (zh) * | 2018-06-22 | 2021-09-03 | 申报家(广州)智能科技发展有限公司 | 一种自动分析价值信息的方法与装置 |
CN111444170B (zh) * | 2018-12-28 | 2023-10-03 | 第四范式(北京)技术有限公司 | 基于预测业务场景的自动机器学习方法和设备 |
US11163742B2 (en) * | 2019-01-10 | 2021-11-02 | Microsoft Technology Licensing, Llc | System and method for generating in-memory tabular model databases |
CN111191430B (zh) * | 2019-12-27 | 2023-02-14 | 中国平安财产保险股份有限公司 | 自动建表方法、装置、计算机设备和存储介质 |
CN111324608A (zh) * | 2020-02-14 | 2020-06-23 | 深圳前海微众银行股份有限公司 | 模型复用方法、装置、设备及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7340720B2 (en) * | 1999-11-01 | 2008-03-04 | Sumisho Computer Systems Corporation | System and method supporting mapping of option bindings |
CN101149737A (zh) * | 2007-05-10 | 2008-03-26 | 廖义洪 | 通过Microsoft Word快速建立web表单及自动在数据库中建立对应数据表的方法 |
CN102043819A (zh) * | 2009-10-20 | 2011-05-04 | 华中科技大学 | Html表格语义脉络分析方法 |
CN102207948A (zh) * | 2010-07-13 | 2011-10-05 | 天津海量信息技术有限公司 | 一种事件陈述句素材库的生成方法 |
CN103164534A (zh) * | 2013-04-11 | 2013-06-19 | 苏州阔地网络科技有限公司 | 一种基于云教育平台的数据搜索方法及系统 |
CN103377038A (zh) * | 2012-04-11 | 2013-10-30 | 怡丰联合(北京)科技有限责任公司 | 自定义表单的描述及表单解析方法 |
CN103778234A (zh) * | 2014-01-26 | 2014-05-07 | 北京恒华伟业科技股份有限公司 | 报表的生成方法及装置 |
CN103886039A (zh) * | 2014-03-10 | 2014-06-25 | 百度在线网络技术(北京)有限公司 | 应用检索的优化方法和装置 |
-
2014
- 2014-12-05 CN CN201410727330.0A patent/CN105718473B/zh not_active Expired - Fee Related
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7340720B2 (en) * | 1999-11-01 | 2008-03-04 | Sumisho Computer Systems Corporation | System and method supporting mapping of option bindings |
CN101149737A (zh) * | 2007-05-10 | 2008-03-26 | 廖义洪 | 通过Microsoft Word快速建立web表单及自动在数据库中建立对应数据表的方法 |
CN102043819A (zh) * | 2009-10-20 | 2011-05-04 | 华中科技大学 | Html表格语义脉络分析方法 |
CN102207948A (zh) * | 2010-07-13 | 2011-10-05 | 天津海量信息技术有限公司 | 一种事件陈述句素材库的生成方法 |
CN103377038A (zh) * | 2012-04-11 | 2013-10-30 | 怡丰联合(北京)科技有限责任公司 | 自定义表单的描述及表单解析方法 |
CN103164534A (zh) * | 2013-04-11 | 2013-06-19 | 苏州阔地网络科技有限公司 | 一种基于云教育平台的数据搜索方法及系统 |
CN103778234A (zh) * | 2014-01-26 | 2014-05-07 | 北京恒华伟业科技股份有限公司 | 报表的生成方法及装置 |
CN103886039A (zh) * | 2014-03-10 | 2014-06-25 | 百度在线网络技术(北京)有限公司 | 应用检索的优化方法和装置 |
Non-Patent Citations (1)
Title |
---|
基于SVM的中文文本分类系统的研究与实现;庄新妍;《中国优秀硕士学位论文全文数据库 信息科技辑》;20080515(第5(2008)期);I138-141 |
Also Published As
Publication number | Publication date |
---|---|
CN105718473A (zh) | 2016-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105718473B (zh) | 一种数据建模的方法 | |
Weber | How China escaped shock therapy: The market reform debate | |
US5675745A (en) | Constructing method of organization activity database, analysis sheet used therein, and organization activity management system | |
US5752253A (en) | Process and device for the automatic generation of spreadsheets | |
CN102841938A (zh) | 一种参数化报表的生成方法及系统 | |
CN104750771B (zh) | 利用域信息进行上下文数据分析的方法和系统 | |
CN106776822A (zh) | 集团企业报表数据提取方法及系统 | |
CN102930048B (zh) | 使用参考和视觉数据的语义自动发现的数据丰富 | |
CN106407170A (zh) | 数据报表快速生成方法及系统 | |
Caldarola et al. | Improving the visualization of wordnet large lexical database through semantic tag clouds | |
CN106095964A (zh) | 一种对数据进行可视化归档与搜索的方法 | |
Alexander et al. | Access 2013 Bible | |
WO2023071242A1 (zh) | 一种文本生成方法及装置、存储介质 | |
US5752016A (en) | Method and apparatus for database interrogation using a user-defined table | |
CN108427661A (zh) | 一种新大数据标签生产方法及装置 | |
TWI238332B (en) | Chinese language input system based on graphic form | |
Deitel et al. | Computers and Data Processing: International Edition | |
US20050065947A1 (en) | Thesaurus maintaining system and method | |
Panneerselvam | Database Management Systems | |
CN105045410A (zh) | 一种形式化拼音和汉字对应识别的方法 | |
Leech | The theory and development of a matrix-based accounting system | |
Templ et al. | Visualization and imputation of missing values | |
RU2564641C1 (ru) | Интеллектуальная информационная система выбора "оптимэль" | |
Inikori | The development of capitalism in the Atlantic world: England, the Americas, and West Africa, 1450–1900 | |
KR20180126673A (ko) | 콘텐츠의 상세 수치정보 제공장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20190125 |
|
CF01 | Termination of patent right due to non-payment of annual fee |