1、生产资料系统 数据库需求分析一、公共系统部分:数据 库需求分析 系统要求必须维护用户数据,验证用户是否有权限使用该系统,同时是否有权限使用各功能模块。同时在 Users(用户表)中,要记录当前用户的姓名、在线状态、所属地市等信息。为了系统的安全性,还需要增加用户操作日志,表名为 Blog(日志表)中,记录用户登录系统后的操作。通过以上分析,数据库设计必须满足以下几点:用户 ID 必须唯一。每个用户 ID 必须对应一个用户组名称,以方便用户进行某些操作时判断是否拥有权限。具体的所有的权限种类放在操作类型元素表中( 操作元素ID, 操作对象描述) ,不同的用 户组拥有不同的操作 权限。登录系统、退
2、出系统和在各功能模块中 进行各项操作时写入用户操作记录表中的用户字段必须和用户表中的用户ID 相关联。数据库概念结构设计通过对些系统的公用系统的总体分析,可以得到大概的实体关系模型(E-R 模型)如下:权限表(Role):(用户组 名称,操作对象 ID)用户信息表(Users):(用户 ID,用户名称,用户姓名,出生日期,性别, 电话 ,所属地市,所属部 门等)用户状态表(UserState):(用户 ID,用户姓名,用户密码,用户组名称,用 户在线状态)。操作类型元素表(OpType):(操作对象 ID,操作对象描述)日志表(Blog):(记录号,时间,事件,对象,用户,所属用户组名称)其中
3、:事件为操作描述:登陆系统,退出系统,增加,修改,删除,打印输 出, excel 操作,浏览不做记录;对象为操作的对象其中:用户表的用户组名称应该等于权限表的用户组名称。其中:权限表的操作对象 ID 应该等于元素表的操作对象 ID.数据 库逻辑结构设计该系统的公共部份数据库中的各个表的设计结果如下面的表格所示。每个表格表示在数据库中的一个表。公共部份的数据库由以下几个数据表组成。 Role:权限表,初始有系统管理员,用户种角色; Users:用户信息表,初始有 Admin、User个用户; UserState:用户状态表,用户登录系统后再写入其中的详细信息。用户在线状态有表示在线; OpTyp
4、e:操作类型元素表,实始有登录、 进入维护模块、进入工程模块、查询统计、 维护系统种类型;Blog:日志表,用 户的每次操作都会 记录其中。下图为权限表。每种不同的角色拥有不同的操作权限,这些权限是通过字段 RightLevel 来标识的字段名 字段说明 数据类型/长度 必填字段UserGroup 用户组名称 Varchar(50) YRoleId 操作对象 ID Int Y下图为用户信息表。用户信息表记录用户资料,用于检验用户登录和用户权限的管理。该表主要包括用户 ID、姓名、密码及用户组名称等数据。字段名 字段说明 数据类型/长度 必填字段UserId 用户 ID Int YUserAcc
5、ount 用户帐号 Varchar(50) YUserName 用户姓名 Varchar(20) YUserPwd 用户密码 Varchar(20) YBirthday 出生日期 datetimeSex 性别 Varchar(2)Tele 电话 Varchar(20)Email 电子邮箱 Varchar(50)UserGroup 用户组名称 Varchar(50) YCityGroup 所属城市名称 Varchar(20) YUnitGroup 所属部门名称 Varchar(20) Y这里使用 UserID 和 UserAccount 两个字段来标识用户的妙处。UserID 自动增长,User
6、Account 在添加用户时输入。这样当用户被删除后,再次添加登录帐号相同的用户时,由于 UserID 不同,也可以把他们区分开来。下图为用户状态表。用户状态表在添加用户时随之写入。不同的是不登录时用户在线状态为,登录后用户在线状态改为。字段名 字段说明 数据类型/长度 必填字段UserId 用户 ID Int YUserAccount 用户帐号 Varchar(50) YUserPwd 用户密码 Varchar(20) YCityGroup 所属城市名称 Varchar(20) YUnitGroup 所属部门名称 Varchar(20) YUserState 用户在线状态 Int Y(初值为
7、 0)下图为操作类型元素表字段名 字段说明 数据类型/长度 必填字段OpTypeId 操作类型 ID Int YOpTypeName 操作类型名称 Varchar(50) Y这里的 OpTypeId 不是自动编号,因 为它的值 与程序中的操作类型这一值要保持一致。下图为日志表。字段名 字段说明 数据类型/长度 必填字段OpId 操作编号 Int YOpTypeId 操作类型 ID Int YOpTypeName 操作类型名称 Varchar(50) YUserId 用户 ID Int YUserAccount 用户帐号 Varchar(50) YUserGroup 用户组名称 Varchar(
8、50) YCityGroup 所属城市名称 Varchar(20) YUnitGroup 所属部门名称 Varchar(20) YOpTime 操作时间 datetime YOpTypeName 操作类型描述 Varchar(50) YOpObject 对象(是系统还是模块的) Varchar(20) YRemarks 备注 Varchar(50)下图是现有部门详情表字段名 字段说明 数据类型/长度 必填字段UnitId 部门编号 Int YUnitName 部门名称 Varchar(50) YCityName 部门所属城市 Varchar(50) Y下图是现有地市详情表字段名 字段说明 数据
9、类型/长度 必填字段CityId 城市编号 Int YCityName 城市名称 Varchar(50) Y其中:部门所属城市名称即为现有城市详情表中的某一城市名称;在该系统中,在开始启动的类中要定义一 Public 的用户信息结构;其中包含-用户名: U_info.UserName; 城市编号:U_info. CityId;城市名称 U_info. CityName;部门编号 U_info. UnitId;部门名称:U_info. UnitName;用户组名称: U_info. UserGroup;是否管理员 U_info.Manager; /0 为普通用户,1 为管理员以上参数在登录系统时
10、写入,写入后可在系统中任一地方调用!各模块中同!VB 中以下代码放在类模块中:Public Type User_Info 定义用户信息结构 UserName As String 用户名CityId As String 城市编号CityName As String 城市名称UnitId as string 部门编号UnitName as string 部门名称UserGroup as string 用户组名称Manager As Integer 是否管理员,0 为普通用户,1 为管理员End TypePublic U_Info As User_Info 定义用户信息变量在 c中:public class USER_INFO()string UserName;string CityId;string CityName;string UnitId;string UnitName;string UserGroup;int16 Manager;