机房收费——数据库
2016-04-10 21:16
330 查看
数据库让我头疼了好几天,主要是项目开始前没有规划好想要怎么弄。之前的想法是,结账是让固定用户充值的钱减去固定用户退卡的钱,加上临时用户消费的钱。这个算法的前提是临时用户不能充值和退卡。临时用户下机等于退卡,把卡表里的记录删掉。但是问题来了,算临时用户消费的钱的时候要联合卡表和上下机表,这两张表是有主外键约束的,卡表的记录删掉的话,就会报错。
临时用户上着机卡里的钱不够想充值,难道不让吗?下机等于退卡,一点下机卡表里的余额就变为0了,退卡表里没有记录操作员根据什么退钱?难道要设计成充了多少钱必须消费完,剩的不退,,不太合理吧。
最终的想法是:临时用户也可以充值和退卡,和固定用户唯一的区别就是没有学生信息,收费标准不一样。
(2)注册的时候,一点击选择用户类型的组合框,就查自动生成卡号。如果注册固定用户且学号已存在,说明该用户注册过,就激活改卡,改变卡的状态和余额,添加一条新的充值记录
(3)在结账的时候把临时用户且已退卡的卡删除
我的解决方法:把卡号联合日期和时间设成主键
师傅的建议:一般都以一个自增长列作为主键
理思路
到底要怎么算钱?不让临时用户充值和退卡好像不太合理?临时用户上着机卡里的钱不够想充值,难道不让吗?下机等于退卡,一点下机卡表里的余额就变为0了,退卡表里没有记录操作员根据什么退钱?难道要设计成充了多少钱必须消费完,剩的不退,,不太合理吧。
最终的想法是:临时用户也可以充值和退卡,和固定用户唯一的区别就是没有学生信息,收费标准不一样。
卡表的设计
(1)退卡后状态改为“已退卡”(2)注册的时候,一点击选择用户类型的组合框,就查自动生成卡号。如果注册固定用户且学号已存在,说明该用户注册过,就激活改卡,改变卡的状态和余额,添加一条新的充值记录
(3)在结账的时候把临时用户且已退卡的卡删除
其他问题
主键问题:充值表等的主键设置的是卡号,但是同样的卡号多次充值就会报错。我的解决方法:把卡号联合日期和时间设成主键
师傅的建议:一般都以一个自增长列作为主键
小结
做事情之前要有一个规划,这次体会到文档和图的重要性,如果之前设计数据库的时候画好图,系统的各个功能都画好图,然后按照图开发就比较简单了。其次,学会搜索,网上有好多资源,学会站在巨人的肩膀上。相关文章推荐
- Android之获取手机上的图片和视频缩略图thumbnails
- 数据库链接字符串查询网站
- DB2实例管理
- DB2实例管理
- 保障MySQL数据安全的14个最佳方法
- mysql问答汇集
- 第三章 数据库备份和还原
- 创建一个空的IBM DB2 ECO数据库的方法
- Access 2000 数据库 80 万记录通用快速分页类
- 开通一个数据库失败的原因的和解决办法
- 一个简单的asp数据库操作类
- CentOS下DB2数据库安装过程详解
- EasyASP v1.5发布(包含数据库操作类,原clsDbCtrl.asp)第1/2页
- sql2008 还原数据库解决方案
- Oracle 数据库自动存储管理-安装配置
- Oracle数据库执行脚本常用命令小结
- Oracle 数据库 临时数据的处理方法
- 数据库分页查询语句数据库查询
- 最近比较流行的数据库挂马