彼岸芳华团队<嗨,你的快递>项目——成员进度报告:数据库设计

根据我们团队之前的设计文档,我们的项目分成了多个子系统(或者功能),包括——

1快递信息发布子系统;2快递信息匹配系统;3好人值更新子系统;4评价管理子系统;5 注册管理子系统;6互助管理子系统;7有偿求助子系统;8慈善记录子系统;9平台广告更新子系统。

我们这次设计的数据库涉及到除了<7有偿求助子系统><8有偿求助子系统><9平台广告更新子系统>之外的所有子系统。


下面是数据库说明(用的是sql server 2008):

数据库名称:PakageHelp;

包括三个表:helpInfo, pakageInfo, userInfo.下面一一介绍。


一.userInfo表 (用户信息表)

扫描二维码关注公众号,回复: 1584643 查看本文章

要点:

1.属性value即为设计文档中提到的“好人值”。每一次受助或者帮助别人,value值都会改变

2.qq,即用户的QQ号,这个属性我们设有唯一性约束;

3.userName用户名,也有唯一性约束;

说明:

这个Table设计到<3好人值更新子系统>、<5注册管理子系统>


二.pakageInfo表(快递信息表)

要点:

1.ower属性为快递拥有者,和userInfo表的userName是外键参照关系(userName满足唯一性约束);

2.arriveTime,数据类型为date,这就是说我们的系统最终匹配快递的时候时间的细粒度是以day为单位的;

3.dormitory和floor两个属性分别代表公寓名和寝室楼层;

4.如果一次互助成功,涉及的快递记录的isTaken属性值就会从0变成1;

说明:

这个数据库表涉及到<1快递信息发布子系统> 、<2快递信息匹配子系统>


3.helpInfo表(互助信息管理表)

要点:

1.giveHelpUser 为给予帮助的人,beHelper是被帮助的人,二者和UserInfo表的userName是外键参照关系;

2.pakageInfo属性和pakageInfo表的pakageId属性是外键参照关系;

3.comment是beHelpUser对这次互助行动的评价,允许为NULL;

说明:

这个表涉及<6互助管理子系统><4评价管理子系统><3好人值更新子系统><2快递信息匹配子系统>


特别说明:

我们虽然写了九个子系统,但是最重要的就是<2快递信息匹配子系统>了。下面对这个子系统进一步说明。

我们的匹配算法是:

1.先从pakageInfoz中select出所有arriveTime(到达时间),dormitory(公寓名),floor(楼层)等和待匹配的相等且isTaken属性值为0(说明这个快递还没有被拿)的快递记录;

2.在第1步的基础上(一个结果集),检索helInfo表——分别select当giveHelpUser和beHelpUser属性为你本人的记录,用聚集函数count(*)以及group子句,并将结果desc排序,统计帮助过你和你帮助的最多的人的信息;

3.你根据第2步的结果,选择帮助某人或者等待帮助

猜你喜欢

转载自www.cnblogs.com/moderateisbest/p/9179143.html