单人写管理程序的不成熟的方法
单人写数据库管理程序
一天,我老大突发奇想,要我写出一个固定资产的管理系统,把以前手工管理改为全微机化管理。(也不知道有没有奖金)没有办法,只有写了。根据以往的经验,知道这个程序可大可小的,为了保险起见,我要了2个月的时间。
第一部,分析
老板走后,马上问办公室要了全套的报表 :
1>固定资产登记卡 :
编号|资产名|类别|型号|生产厂家|单位|数量|原价值|使用日期|使用单位|报管人|登记日期
其中附属设备:
|名称|数量|单位|单价|总价|
2>异动记录表
|异动时间|异动依据|调出单位|调入单位|经办人|
3>修理记录表
|修理日期|修理范围类别|承修单位|修理费用|
4>固定资产汇总表
|部门|
|资产类别|数量|价值|其中正常数量|价值|其中注销|价值|
看起来应该是不复杂的,数据流程也很简单(我没有学过正规的系统分析那一套东西,一起都凭经验^_^),应该从录入卡片开始,资产注销结束。中间需要一些表记录如异动,注销,修理这些历史信息。从表1看来很明显需要两个表记录数据,“卡片表”-<“附属设备表”,他门应该为一对多关系,“异动记录”,“修理记录”,各许要建立一个表,为“卡片表”记录数据库操作历史信息,相当于系统的日志,为了更完善,另外还应该加入记录“注销记录”,这个表,例外还应该加上记录用户和全限的表,系统应该就可以初步使用了;其他的东西可以先放一下,先看看库表是设计。
数据库服务器选用我最喜欢的ms sql 作为数据库服务器,ms sql和vb兼容特别好(当然了,一个公司出品的麻),支持viwe,事务,级联等,可以很容易的开发出对多用户的版本,而且维护方便。在设计比较大型的数据库的时候推荐使用。
库表的设计
为了安全起见,我把记录数据和记录权限的表分为两个数据库,OFFICE_db用来记录数据,System_Db用来记录权限,然后在这个数据库之下建立表,我了以后维护方便,命名时后我尽量用中文。(坏习惯,大家不要学)
最先是卡片记录,除了卡片上的信息外,应该加入一个主键code_id,当然还应该加入 “注销标志”和“修理标记”两个字段以记录当时卡片的状态。
卡片信息表:code
code_id| cname| 类型| 型号| 产地| 资金来源| 使用日期| 价值| 使用单位| 存放地|使用年限| 录入员| 验收日期| 注销标志| 修理标记| 保管人|编号id| 登记日期
然后是附属资产表:code_mx
mx_id|code_id|c_name|单位|单价|型号|备注
注意,每个表都应该有他的主键,所以增加一个字段mx_id as bigint,把它的标识位设置为“是”,这样就可以不用管它了,以后如果没有特殊说明,都这样设置,它会自动递增的(不懂ms sql的自己去看ms sql 的帮助文件)。由于本表和code表为一对多的关系,应该增加字段code_id,并且建立 code.code_id-<code_mx,code_id的关系,设置的时候应该在“对复制强行关系”、“对insert于uodate 强制关系 ”、“级联更新”、“级联删除” 这几个选项上打上勾,这样设置了级联以后,只要删除或者更新主表数据,从表中的相关数据会自动更新或者删除,怎么样,方便把,以后的主从表没有特别的说明都这样设置。
现在已经设计出两个表了(“好有成就感”)但我再次审视的时候发现一个问题,| 类型|使用单位|两个字段明显臃于了,每次都要输入同样的信息,应该改进。于是我把这个表分为3个。
卡片信息表:code
code_id| cname| 类型_id| 型号| 产地| 资金来源| 使用日期| 价值| 使用单位_id| 存放地|使用年限| 录入员| 验收日期| 注销标志| 修理标记| 保管人| 审核标记|编号id| 登记日期
使用单位:使用单位_dic
部门id| 单位id| 部门名称| 负责人| 部门属性|电话|备注
类型:类型_dic
类型id|name| 使用年限| 备注
这三个表之间也互为主从 : 使用单位_dic code.单位id-< code.单位id
类型_dic code.类型id -< code.类型id
这两个表用了后缀名dic ,表明他们是字典表,养车统一的命名习惯是很重要的,这点要主意。
然后设置日志表:我习惯用log作为后缀名
异动记录:异动_log
异动_id|code_id| code_name| 转移日期| 异动原因| 原单位| 原部门| 原存放地| 现单位| 现部门| 现在存放地| 操作员| 异动性质| 备注
修理记录:修理_log
修理_id| code_id| 开始日期| 结束日期| 修理原因| 操作员| 备注
注销记录:报废_log
注销_id| code_id| 报废日期| 原金额| 减少类型| 报废原因| 操作员| 备注
这几个表之间也设置为主从 :
code.code_id-<异动_log.code_id
code.code_id-<修理_log.code_id
code.code_id-<报废_log.code_id
现在OFFICE_db库基本建立完成,在建立system_db之前,应该先想想权限的设置
考虑权限应该有以下权限的设置 录入, 异动, 报废, 审核, 修改, 删除, 数据字典, Manager(管理员)
权限种类很多阿^_^,如果直接设置在用户身上,管理会很麻烦的阿.想想WINDOWS中的权限设置把,于是有了注意.
权限>-用户组->用户
这样管理起来就方便多了,如果要增加用户,只要把它加入相应的主就可以了,不用在给他负那么多的权限了.
表这样设计
用户组记录表: user_type
user_type, type_name, 录入, 异动, 报废, 审核, 修改, 删除, 数据字典, Manager
其中 录入,异动 这些权限字段全部是int形的 1为有权限,0为没有相应的权限.
用户记录表: user
user_id, user_name, user_type, passwd, 注销标记, 备注
设置关联 user_type.user_type, -< user.user_type,
当然还有用户的登陆历史记录:logo_h
logo_id, user_id, user_name, logo_date, logout_date
logo_date是记录登陆时间,logout_date是记录退出时间.这个表也设置关联 user.user_id-<logo_h.user_id
OK现在数据结构基本告一段落了