初步了解了asp.net portal starter kit后(我以前的文章),本来想继续重构代码的。在构思的时候想到要是能把五个入门套件结合在一起不是更好。time tracker(时间管理或项目追踪)是利用微软的data access application block作为数据库访问层的,我正好也要这样做,所以就先来看看asp.net time tracker starter kit。
asp.net time tracker starter kit(项目追踪入门套件),提供项目成员(顾问)于每一项项目中各类别所花费的时间,加予统计分析,相当于项目的「项目成员工时记录卡」。详细介绍可参见微软网站上的一片文章。像解读门户网站入门套件一样,还是先从数据库说起。
数据库中的表:
tt_categories:项目目录信息
字段名 |
类型 |
含义 |
备注 |
categoryid |
int |
目录id |
主键(自动编号) |
projectid |
int |
所属项目id |
关联项目信息表 |
name |
nvarchar(50) |
目录名称 |
|
abbreviation |
nvarchar(4) |
简写 |
|
estduration |
decimal(9) |
预计持续时间 |
小数位两位(单位:小时) |
tt_entrylog:项目成员工时记录卡
字段名 |
类型 |
含义 |
备注 |
entrylogid |
int |
记录id |
主键(自动编号) |
description |
nvarchar(255) |
工作描述 |
|
duration |
decimal(9) |
完成工时 |
小数位两位 |
entrydate |
smalldatetime |
记录日期 |
|
projectid |
int |
所属项目id |
关联项目成员表 |
userid |
int |
所属用户id |
|
categoryid |
int |
所属目录id |
|
tt_projectmembers:项目成员表(通过此表可以反映:一个用户可以同时参与多个项目,一个项目也可有多个用户参与)
字段名 |
类型 |
含义 |
备注 |
projectid |
int |
项目id |
关联项目信息表 |
userid |
int |
项目成员id |
关联用户信息表 |
tt_projects:项目信息表
字段名 |
类型 |
含义 |
备注 |
projectid |
int |
项目id |
主键(自动编号) |
name |
nvarchar(50) |
项目名称 |
|
description |
nvarchar(1024) |
项目描述 |
|
manageruserid |
int |
项目经理id |
关联用户表 |
estcompletiondate |
datetime |
预计完成时间 |
|
estduration |
decimal(9) |
预计持续时间 |
小数位两位(单位:小时) |
creationdate |
datetime |
创建事件 |
默认值:getdate() |
tt_roles:角色信息表
字段名 |
类型 |
含义 |
备注 |
roleid |
int |
角色id |
主键(自动编号) |
name |
nvarchar(50) |
角色名称 |
|
tt_users:用户信息表
字段名 |
类型 |
含义 |
备注 |
userid |
int |
用户id |
主键(自动编号) |
displayname |
nvarchar(50) |
用户姓名 |
|
password |
nvarchar(50) |
密码 |
采用md5的加密方式存储 |
username |
nvarchar(50) |
登录名(用户email) |
用于登录,并设置成唯一性索引(可防止注册相同的email,这样设置后当有相同的email插入时程序就会抛出异常,捕获这个异常就可判断email是否重复,这样就可以省掉判断email是否重复的代码) |
roleid |
int |
角色id |
关联角色信息表(tt_roles) |
数据库中的存储过程:(自带的文档中有详解,不赘述)
各表关系:
time tracker中的各数据表中的关系不同与portal,各表之间有很强的约束关系。在完整性约束上面做的比较好。从各表中的关系上来看,是符合数据设计第三范式的。