在构建数据表和数据表结构时,读者应该清楚两个要点:
- 数据表之间的关系,以优化数据存储,简化程序开发,避免产生大量冗余数据。
- 数据表的字段必须遵循一定的规律,这样既方便管理,更方便脚本进行自动化控制。
为此,在开发数据结构的具体字段时,我们应该尽力保持多个数据表中字段的统一性,同时注意字段类型的协调,它们之间的关系如下。
//=================================== //数据表字段集合对象 //第1个元素表示字段类型,num表示数值,text表示字符串,time表示时间,no表示无数据类型 //第2个元素表示字段对应标签 //第3个元素表示字段可捆绑的编辑表单域类型,no表示不需要编辑,text表示文本框,textarea表示文本 //区域,select表示下拉列表框 var fieldobj = { 字段名称 类型 0 标签 1 表格编辑行为 2 'id' : ["num", '编号', 'no'], ' price' : ["num", '金额', 'text'], 'title' : ["text", '名称', 'text'], 'remark' : ["text", '备注', 'textarea' ], 'class' : ["num", '分类', 'select' ], 'adddate' : ["time", '添加时间', 'no' ], 'update' : ["time", '更新时间', 'no' ], 'upperid' : ["num", '所属记录', 'select' ], 'table' : ["text", '所属表名', 'text' ] };
数据都存储在data/home.mdb文件中,该数据库包括9张表,详细说明如下:
- 分类表。考虑到入账、出账和超市明细都需要用到账目分类,故在当前数据库中先新建3张表。id表示编号,这个是必须的,任何一张表都必须有一个自动编号的字段。title表示类名,remark表示对类进行说明,adddate和update表示记录录入时间和更新时间,日后修改分类名称或者说明时,能够进行跟踪,避免用户随意修改分类信息。
一级分类表(class1)负责对数据表进行管理,包括6个字段(id、title、remark、adddate、update和table),如图1所示。
图1 class1表结构
二级分类表(class2)负责对账目分类管理,包括6个字段(id、title、remark、adddate、update和upperid),如图2所示。
图2 class2表结构
三级分类表(class3)负责对明细分类管理,包括6个字段(id、title、remark、adddate、update和upperid),如图3所示。
图3 class3表结构
- 明细表。明细表也包括入账、出账和日志明细,再另外新建3张表。price表示价格,remark是对行为的描述。明细表都必须附带分类表的编号,这样方便在应用中进行查询和显示。adddate字段记录每笔收支的具体时间,默认为当前时间,而update表示更新时间,以便跟踪用户对于记录的修改。
入账明细表(incomedetail)负责记录每一笔入账的明细,包括7个字段(id、price、remark、class、upperid、adddate、update),如图4所示。
图4 incomedetail表结构
出账明细表(outdetail)负责记录每一笔出账的明细,包括7个字段(id、price、remark、class、upperid、adddate、update),如图5所示。
图5 outdetail表结构
日志明细表(blogdetail)负责记录每一条日志的明细,包括6个字段(id、remark、class、upperid、adddate、update),如图6所示。
图6 blogdetail表结构
- 数据表负责记录主要信息,每条主要信息可能会包含多条明细记录。
入账表(income)负责记录每一笔入账信息,包括6个字段(id、price、remark、class、adddate、update),如图7所示。
图7 income表结构
出账表(out)负责记录每一笔出账信息,包括6个字段(id、price、remark、class、adddate、update),如图8所示。
图8 out表结构
博客(blog)负责记录每一条家庭日志,包括5个字段(id、remark、class、adddate、update),如图9所示。
图9 blog表结构