一种数据库的字段增加方法和系统的制作方法

文档序号:6501747阅读:114来源:国知局
一种数据库的字段增加方法和系统的制作方法【专利摘要】本发明实施例公开了数据库的字段增加方法和系统,应用于信息处理【
技术领域
】。如果在数据库的待操作表中增加新的字段,当系统接收到在数据库的待操作表中增加字段的命令,该命令中包括待增加字段的信息;则会根据待增加字段的信息在数据库中增加待增加字段的定义信息,并相应地修改该待操作表所包括的字段数;然后将增加字段后的待操作表显示给用户,包括待增加字段。本发明实施例中只需要在数据库中增加待增加字段的定义信息及修改字段数即可实现新字段的增加,即在待操作的原始表基础上进行的修改,而不需要再另外新建一个表,将原表的数据拷贝到新表中,进而可以简化增加新字段的流程和时间。【专利说明】一种数据库的字段增加方法和系统【
技术领域
】[0001]本发明涉及信息处理【
技术领域
】,特别涉及数据库的字段增加方法和系统。【
背景技术
】[0002]数据库管理系统(DatabaseManagementSystem,DBMS)可以采用多种方式储存数据,并可以将这些数据通过一定的方式呈现给用户。该DBMS系统可以提供用户接口比如结构化查询语言(StructuredQueryLanguage,SQL)接口,通过该用户接口可以修改DBMS系统中储存的数据。一般情况下,DBMS系统中以不同维度储存数据,比如通过不同的列来表述同一对象的不同属性,通过不同的行来表示不同对象的信息等。[0003]现有的一种基于触发器的在线模式修改(OnlineSchemaChange,0SC)方法中,当用户通过DBMS系统提供的用户接口触发DBMS系统添加新字段(即对象)到已有的一张表时,DBMS系统会新建一张与原表结构一致的表,且包括新增字段,并将原表数据拷贝到新表中,然后通过新表中触发器触发将原表的更改映射同步到新表中同步,最后将新表重命名为原表,从而实现了新字段的添加。在这个过程中原表能被正常读写,但是现有的这种方式比较繁琐,如果有表的数据量比较大时,数据拷贝和原表更改的映射同步会使用较长的时间。【
发明内容】[0004]本发明实施例提供数据库的字段增加方法和系统,简化增加新字段的流程和时间。[0005]本发明实施例提供一种数据库的字段增加方法,包括:[0006]接收在数据库的待操作表中增加字段的命令,所述命令中包括待增加字段的信息,其中,在所述数据库中储存所述待操作表所包括字段数;[0007]根据所述待增加字段的信息,在所述数据库中增加所述待操作表对应的待增加字段的定义信息,并相应地修改所述字段数;[0008]增加的所述定义信息中包括用于指示所述待增加字段允许为空且不指定默认值的信息,或用于指示所述待增加字段不允许为空且指定默认值的信息;[0009]根据所述定义信息显示增加字段后的所述待操作表,其中包括所述待增加字段的内容。[0010]本发明实施例提供一种数据库的字段增加系统,包括数据库和数据的管理模块,所述管理模块具体包括:[0011]命令接收单元,用于接收在数据库的待操作表中增加字段的命令,所述命令中包括待增加字段的信息,其中,在所述数据库中储存所述待操作表所包括字段数;[0012]字段修改单元,用于根据所述待增加字段的信息,在所述数据库中增加所述待操作表对应的待增加字段的定义信息,并相应地修改所述字段数;[0013]增加的所述定义信息中包括用于指示所述待增加字段允许为空且不指定默认值的信息,或用于指示所述待增加字段不允许为空且指定默认值的信息;[0014]表显示单元,用于根据所述定义信息显示增加字段后的所述待操作表,其中包括所述待增加字段的内容。[0015]本发明实施例中,如果在数据库的待操作表中增加新的字段,当系统接收到在数据库的待操作表中增加字段的命令,该命令中包括待增加字段的信息;则会根据待增加字段的信息在数据库中增加待增加字段的定义信息,并相应地修改该待操作表所包括的字段数;然后将增加字段后的待操作表显示给用户,包括待增加字段。本发明实施例中只需要在数据库中增加待增加字段的定义信息及修改字段数即可实现新字段的增加,即在待操作的原始表基础上进行的修改,而不需要再另外新建一个表,将原表的数据拷贝到新表中,进而可以简化增加新字段的流程和时间。【专利附图】【附图说明】[0016]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。[0017]图1是本发明实施例中提供的一种数据库的字段增加方法的流程图;[0018]图2是本发明实施例中对增加字段后的操作表进行查询的方法流程图;[0019]图3是本发明实施例中对增加字段后的操作表中各个字段的内容进行扫描的方法流程图;[0020]图4a是本发明实施例的数据库中储存的实体数据的结构示意图;[0021]图4b是本发明实施例的数据库中储存的实体数据所包括的记录头的结构示意图;[0022]图4c是本发明实施例的数据库中储存的实体数据所包括的记录体的结构示意图;[0023]图5a是本发明应用实施例中未增加新字段的待操作表的结构示意图;[0024]图5b是本发明应用实施例中增加新字段后的待操作表的结构示意图;[0025]图6是本发明实施例提供的一种数据库的字段增加系统的结构示意图;[0026]图7是本发明实施例提供的另一种数据库的字段增加系统的结构示意图;[0027]图8是本发明实施例提供的一种数据库的字段增加方法应用于的终端的结构示意图。【具体实施方式】[0028]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。[0029]本发明实施例提供一种数据库的字段增加方法,主要可以用于DBMS系统中,在该DBMS系统中包括储存数据的数据库和该数据库的管理模块,本发明实施例是DBMS系统中的管理模块所执行的方法,流程图如图1所示,包括:[0030]步骤101,接收在数据库的待操作表中增加字段的命令,该命令中包括待增加字段的信息。[0031]可以理解,DBMS系统的数据库中会以操作表为集合来储存数据,在数据库中一个操作表对应的数据可以包括该操作表所包括的字段数、该操作表的初始字段数和实际的数据等,在操作表创建之初该初始字段数和字段数是一致的,这里初始字段数可以是分别与操作表中对象的数据对应储存的,即每个对象的数据中都包括有该初始字段数,可见,一个操作表对应储存有一个字段数,而对应储存有η个初始字段(该η为对象的数量);DBMS系统的管理模块可以将数据库中储存的数据以一定的形式显示给用户,在显示的操作表中包括多个字段和用户操作接口,其中,每个字段可以对应表示对象的一个属性信息,用户操作接口以供用户对该操作表的数据进行一定操作比如更新、增加字段、删除或查询等,且DBMS系统的管理模块还可以提供用户创建接口,以供用户创建新的操作表。[0032]当用户通过一个操作表(即待操作表)中的用户操作接口增加一个新的字段时,DBMS系统的管理模块可以接收用户触发在待操作表中增加字段的命令,该命令中包括的待增加字段的信息可以包括该待增加字段的描述和类型(比如是否允许为空,或是否允许指定默认值)等,进一步地,如果该待增加字段是指定默认值的类型,则在该命令中还可以包括该指定的默认值。[0033]步骤102,根据待增加字段的信息,在数据库中增加该操作表对应的待增加字段的定义信息,并相应地修改字段数。[0034]DBMS系统的管理模块增加的定义信息中可以包括如下任一信息:用于指示待增加字段允许为空(NULL)且不指定默认值的信息,比如Altertable$table_nameaddcolumn$col_name$col_type[NULL];用于指示待增加字段不允许为空且指定默认值的信息,比如Altertable$table_nameaddcolumn$col_name$col_typeNOTNULLDEFAULT$default_Value。且定义信息还可以包括该字段的名称、所属操作表的信息和该待增加字段在操作表中所在列的序号等信息,即将增加的定义信息与待操作表对应起来,可以确切地找到该增加的字段。[0035]DBMS系统的管理模块还需要相应地修改该待操作表的字段数,即为在原来已有字段数的基础上加上待增加的字段数。[0036]步骤103,根据增加的定义信息显示增加字段后的待操作表,其中包括待增加字段的内容,这样在待操作表中每个对象对应的数据中都可以包括该待增加字段的内容。[0037]例如:在名称为"班级人员"的待操作表中包括49个学生(即对象)的信息,每个学生的信息中包括"姓名"、"年龄"和"籍贯",则"姓名"、"年龄"和"籍贯"为该待操作表所包括的字段,待操作表的字段数为3,初始字段数为3。如果用户需要在该待操作表中增加字段"爱好"和"联系电话",则DBMS系统的管理模块可以增加该待增加字段"爱好"和"联系电话"的定义信息,并修改该待操作表的字段数为5,而该操作表建立之初已经存在的对象的数据中的初始字段数不会改变。则在增加待增加字段后,该待操作表的每个对象即学生的信息中都可以包括"爱好"和"联系电话"。[0038]具体地,在执行本步骤时,DBMS系统的管理模块可以根据定义信息中待增加字段的名称,及待增加字段在待操作表中所在列的序号,将待增加字段的名称显示在待操作表中相应列的位置上,如果该待增加字段指定了默认值,则在待操作表中每个对象对应的该待增加字段的位置处显示该指定的默认值。例如,在"班级人员"的待操作表中增加了待增加字段"联系电话",且指定了学校的电话为默认值,当DBMS系统的管理模块显示增加字段后的该操作表时,每个学生对应的联系电话都显示为学校的电话。[0039]在执行完上述步骤101到103后,用户可以在DBMS系统的管理模块显示的增加字段后的待操作表中,对任一对象的数据进行更新,具体地,由于一个待操作表中每个对象对应储存着该待操作表的初始字段数,则当该对象对应的待操作表的初始字段数小于步骤102中修改后的所述字段数时,则该DBMS系统会先删除该待操作表中该对象的数据,然后再插入该对象的当前数据,在该对象的当前数据中包括的初始字段数与上述步骤102中修改后的字段数一致。[0040]且如果以后在增加字段后的待操作表中增加新对象的数据时,将该新对象对应的初始字段数储存为与上述步骤102中修改后的字段数一致,即为相同的值。[0041]可见,本发明实施例中,如果在数据库的待操作表中增加新的字段,当系统接收到在数据库的待操作表中增加字段的命令,该命令中包括待增加字段的信息;则会根据待增加字段的信息在数据库中增加待增加字段的定义信息,并相应地修改该待操作表所包括的字段数;然后将增加字段后的待操作表显示给用户,包括待增加字段。本发明实施例中只需要在数据库中增加待增加字段的定义信息及修改字段数即可实现新字段的增加,即在待操作的原始表基础上进行的修改,而不需要再另外新建一个表,将原表的数据拷贝到新表中,进而可以简化增加新字段的流程和时间。且由于一个操作表中对应储存有一个字段数,则采用本实施例的方法增加字段数时,并不需要对已有的每个对象的数据进行修改,而只需增加待增加字段的定义信息和修改字段数即可,使得增加新字段数的操作较为方便、简单。[0042]需要说明的是,通过上述步骤101到103可以在数据库中已存在的操作表中增加新的字段,采用这种方法增加新字段后,在用户查询该增加新字段后的操作表时,DBMS系统的管理模块还可以通过如下的步骤来实现,流程图如图2所示,包括:[0043]步骤201,接收对增加字段后的待操作表的查询命令,在查询命令中可以包括用户需要查询的信息比如某个对象或某个字段对应数据等。[0044]步骤202,对增加字段后的待操作表中各个字段的内容进行扫描,获取各个字段对应的数据,具体地,DBMS系统的管理模块可以按照一定的顺序逐个对待操作表中各个对象的各个字段的内容进行扫描,在有些数据库中的数据是按照字段定义的顺序储存的,则对于这种数据库来说,在获取各个字段的内容的过程中最主要的是确定各个字段的长度(记为C〇l_len)是多少,这样才能确定出该字段对应的数据。则DBMS系统的管理模块可以按照如下步骤来实现,流程图如图3所示,包括:[0045]A:开始扫描,设置当前扫描的字段数i=0。[0046]B:判断当前扫描的字段数i是否大于该待操作表所包括的字段数,如果不大于,则进一步执行步骤C;如果大于,则说明所有字段的内容已经扫描完成,结束流程。[0047]C:判断当前扫描的字段数i是否大于各个对象的数据中该待操作表的初始字段数,如果大于,则确定当前扫描的字段i为上述待增加字段,进一步执行步骤D;如果不大于,则确定当前扫描的字段i为之前已经在待操作表中储存的字段,进一步执行步骤E。[0048]D:根据待增加字段的定义信息确定当前扫描的字段i的长度,具体可以通过步骤D1到D3,即D1,根据待增加字段的定义信息判断该待增加字段是否允许为空,如果不允许,则执行步骤D3即如果该待增加字段的长度c〇l_len为待增加字段的定义信息中指定默认值的长度,从而确定待增加字段对应的数据为指定的默认值,之后执行步骤F。其中如果在增加该待增加字段时,未指定具体的默认值,则DBMS系统会按照一定的规定为该待增加字段指定默认值,例如,如果该待增加字段为整形,则指定的默认值为〇,如果该待增加字段为字符,则指定的默认值为空。[0049]如果步骤D1中判断为允许,则执行步骤D2即确定待增加字段对应的数据为空,长度为0,之后执行步骤F。[0050]E:根据之前已经储存的字段的定义信息确定当前扫描的字段i的长度,具体可以通过步骤E1到E5来实现,即E1,先判断当前扫描的字段i是否允许为空,如果不允许,则执行步骤E2即判断当前扫描的字段i是否为变长字段,如果是变长字段,则执行步骤E3即可以确定从步骤A中扫描开始到现在所扫描到的该待操作表中变长字段的数量为nl,因此当前扫描的字段长度为第nl个变长字段的长度,之后可以执行步骤F;如果不是变长字段比如为定长字段,则执行步骤E4即确定当前扫描的字段长度为定义信息中的定义长度,之后可以执行步骤F。[0051]如果在步骤E2中判断当前扫描的字段i允许为空,则执行步骤E5即确定从步骤A中扫描开始到现在所扫描到的该待操作表中可空字段的数量为n2,并判断第n2个可空字段是否为空,如果不是,则继续执行上述步骤E2;如果是,可以确定当前扫描的字段i的长度为0,即可以执行上述步骤D2。[0052]需要说明的是,上述变长字段表示字段的存储长度是变化的,不大于定义时指定的长度;而定长字段表示字段的存储长度是固定,等于定义时指定的长度;可空字段表示允许为空的字段。且在获取上述可空字段的数量n2时,可以事先在步骤A扫描开始时,设置可空字段的数量为〇,然后在扫描待操作表的过程中如果扫描到一个可空字段,则在当前的可空字段的数量基础上加1,并逐渐进行累计得到π2,同理可以获取上述变长字段的数量nl,在此不进行赘述。[0053]F:根据步骤D或E中确定的当前扫描的字段i的长度偏移即获取了当前扫描的字段i对应的数据后,准备顺序获取下一个字段对应的数据,则将当前扫描的字段数加1后,返回上述步骤B继续获取下一个字段对应的数据,这样循环操作直到待操作表的所有字段对应的数据都获取到。[0054]步骤203,根据步骤203扫描得到的数据,在显示的待操作表中标注与步骤201中接收的查询命令相对应的数据,比如通过不断闪动对应数据外框的方式进行标注,或通过标注警示号的方式进行标注等。[0055]可以理解,DBMS系统的管理模块需要将步骤202中获取的各个字段对应的数据与查询命令中需要查询的信息进行比较,然后确定出与查询命令相一致的数据进行标注。[0056]可见,在本实施例中通过上述步骤202中,将当前扫描的字段数与待操作表的字段数和初始字段数进行比较,从而确定当前扫描的字段是否为新增加的字段,并通过不同的方法来确定当前扫描的字段的实际长度,从而获取了各个字段对应的数据。[0057]以下以一个具体的应用例来说明本发明实施例的字段增加方法,具体地,在本实施例中,在数据库中独立储存的待操作表的元数据和实体数据,具体地:[0058]-、元数据是指待操作表中各个元素的定义信息。[0059]本实施例的待操作表的元数据可以包括如下表1所示的对于整个待操作表(记为SYS_TABLES)的定义信息,和如表2所示的对于待操作表所包括的各个字段(即待操作表中各列,记为SYS_C0LUMNS)的定义信息:[0060]【权利要求】1.一种数据库的字段增加方法,其特征在于,包括:接收在数据库的待操作表中增加字段的命令,所述命令中包括待增加字段的信息,其中,在所述数据库中储存所述待操作表所包括字段数;根据所述待增加字段的信息,在所述数据库中增加所述待操作表对应的待增加字段的定义信息,并相应地修改所述字段数;增加的所述定义信息中包括用于指示所述待增加字段允许为空且不指定默认值的信息,或用于指示所述待增加字段不允许为空且指定默认值的信息;根据所述定义信息显示增加字段后的所述待操作表,其中包括所述待增加字段的内容。2.如权利要求1所述的方法,其特征在于,所述待增加字段的定义信息还包括待增加字段的名称、待增加字段所属的待操作表的信息和所述待增加字段在所述待操作表中所在列的序号,则所述根据所述定义信息显示增加字段后的所述待操作表,具体包括:根据所述待增加字段在所述操作表中所在列的序号,将所述待增加字段的名称显示在所述待操作表中相应列的位置上。3.如权利要求2所述的方法,其特征在于,如果所述待增加字段的定义信息还包括指定的默认值,则所述根据所述定义信息显示增加字段后的所述待操作表,还包括:在所述待操作表中每个对象对应的所述待增加字段的位置处显示所述指定的默认值。4.如权利要求1至3任一项所述的方法,其特征在于,所述数据库中还包括每个对象对应的所述待操作表的初始字段数,所述方法还包括:如果在所述增加字段后的所述待操作表中增加新对象的数据,将所述新对象对应的初始字段数储存为与修改后的所述字段数一致;如果对所述待操作表中对象的数据进行更新,当所述对象对应的待操作表的初始字段数小于修改后的所述字段数时,则先删除所述待操作表中所述对象的数据,再插入所述对象的当前数据,且所述对象的当前数据中包括的初始字段数与所述修改后的所述字段数一致。5.如权利要求1至3任一项所述的方法,其特征在于,所述方法还包括:接收对所述增加字段后的待操作表的查询命令;对所述增加字段后的待操作表中各个字段的内容进行扫描,获取所述各个字段对应的数据;标注与所述查询命令相对应的数据。6.如权利要求5所述的方法,其特征在于,所述数据库中还包括每个对象对应的所述待操作表的初始字段数,所述对所述增加字段后的待操作表中各个字段的内容进行扫描,获取所述各个字段对应的数据,具体包括:如果当前扫描的字段数小于所述待操作表的字段数,且大于所述初始字段数,则确定所述当前扫描的字段为所述待增加字段;根据所述待增加字段的定义信息,确定所述待增加字段对应的数据为指定的默认值或为空。7.如权利要求5或6所述的方法,其特征在于,在所述数据库中独立储存的所述待操作表的元数据和实体数据;所述实体数据以记录的形式储存,每条记录对应所述待操作表中一个对象的多项属性;所述记录包括记录头和记录体,所述记录体储存一个对象的各个非空字段的实体数据,所述记录头用于储存所述记录体的属性信息;所述字段数和待增加字段对应的定义信息储存在所述元数据中,所述初始字段数储存在所述记录头中。8.-种数据库的字段增加系统,其特征在于,包括数据库和数据的管理模块,所述管理模块具体包括:命令接收单元,用于接收在数据库的待操作表中增加字段的命令,所述命令中包括待增加字段的信息,其中,在所述数据库中储存所述待操作表所包括字段数;字段修改单元,用于根据所述待增加字段的信息,在所述数据库中增加所述待操作表对应的待增加字段的定义信息,并相应地修改所述字段数;增加的所述定义信息中包括用于指示所述待增加字段允许为空且不指定默认值的信息,或用于指示所述待增加字段不允许为空且指定默认值的信息;表显示单元,用于根据所述定义信息显示增加字段后的所述待操作表,其中包括所述待增加字段的内容。9.如权利要求8所述的系统,其特征在于,所述待增加字段的定义信息还包括待增加字段的名称、待增加字段所属的待操作表的信息和所述待增加字段在所述待操作表中所在列的序号,则所述表显示单元,具体用于根据所述待增加字段在将所述操作表中所在列的序号,将所述待增加字段的名称显示在所述待操作表中相应列的位置上。10.如权利要求9所述的系统,其特征在于,如果所述待增加字段的定义信息还包括指定的默认值,则所述表显示单元,还用于在所述待操作表中每个对象对应的所述待增加字段的位置处显示所述指定的默认值。11.如权利要求8至10任一项所述的系统,其特征在于,所述数据库中还包括每个对象对应的所述待操作表的初始字段数,所述系统还包括:数据更新单元,用于如果在所述增加字段后的所述待操作表中增加新对象的数据,将所述新对象对应的初始字段数储存为与修改后的所述字段数一致。12.如权利要求11所述的系统,其特征在于,所述数据更新单元,还用于如果对所述待操作表中对象的数据进行更新,当所述对象对应的待操作表的初始字段数小于修改后的所述字段数时,则先删除所述待操作表中所述对象的数据,再插入所述对象的当前数据,且所述对象的当前数据中包括的初始字段数与所述修改后的所述字段数一致。13.如权利要求8至12任一项所述的系统,其特征在于,所述管理模块还包括:查询命令接收单元,用于接收对所述增加字段后的待操作表的查询命令;扫描单元,用于对所述增加字段后的待操作表中各个字段的内容进行扫描,获取所述各个字段对应的数据;标注单元,用于标注与所述查询命令相对应的数据。14.如权利要求13所述的系统,其特征在于,所述数据库中还包括所述待操作表的初始字段数,则所述扫描单元具体包括:字段确定单元,用于如果当前扫描的字段数小于所述待操作表的字段数,且大于所述初始字段数,则确定所述当前扫描的字段为所述待增加字段;数据确定单元,用于根据所述待增加字段的定义信息,确定所述待增加字段对应的数据为指定的默认值或为空。15.如权利要求13或14所述的系统,其特征在于,在所述数据库中独立储存的所述待操作表的元数据和实体数据;所述实体数据以记录的形式储存,每条记录对应所述待操作表中一个对象的多项属性;所述记录包括记录头和记录体,所述记录体储存一个对象的各个非空字段的实体数据,所述记录头用于储存所述记录体的属性信息;所述字段数和待增加字段对应的定义信息储存在所述元数据中,所述初始字段数储存在所述记录头中。【文档编号】G06F17/30GK104063409SQ201310125182【公开日】2014年9月24日申请日期:2013年4月11日优先权日:2013年4月11日【发明者】陈福荣,康中良,崔玉明,梁飞龙,黄惠波,余尔特申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1