个人重构版的机房收费系统正在紧锣密鼓的进行着,虽然不是很难的东西,但是有时候小毛病还是很多。程序正在代码实现中,抛下程序不谈,先来总结下数据库的设计。
1、数据完整性
约束、规则、默认值等能够较好的保证数据的完整性,为了保证系统数据的完整性,设计时使用了主键、外键、Check约束,同时使用规则和默认值来保证数据的正确性。使用主键时约束了一列,把表中的一列作为主键,创建主键约束的表中数据不能为空,且不能重复,表的索引默认的是主键约束的列;使用主键约束了同一个表中的两列,受约束后的表中的数据是按照第一个设置主键的列的排序规则进行排序的,保证了两个列中数据不能为空且不能重复,同时也符合第二范式。
主键约束不会存在太大的问题,主要是外键约束。外键约束保证了数据的完整性,在对数据库操作时它会级联触发保证数据的完整性,但是外键约束的创建要基于唯一约束、非空约束或主键约束,被约束的外键表中的列必须保证非空且唯一。
主要操作步骤不在详述,前篇博客已有总结。
2、业务规则
好的数据库能够减少程序开发者写代码的时间,而在数据库设计时巧妙的运用触发器在保证业务规则的同时也减少了编写复杂代码的时间。虽然在保证数据完整性上,触发器的效率要低于约束,但触发器在处理业务逻辑上拥有者得天独厚的便利,因为它能够自动触发,实现级联修改。触发器按大类可分为DDL、DML和登陆触发器,具体划分如下图:
在使用DML数据操作语言类数据库时,它会在触发器表中生成相应的Deleted、Inserted表,这两个表分别保存要删除行的数据、要增加行的数据,在使用触发器时也可以应用这两个表中的数据。
与SQL2000不同的是SQL2008在创建触发器时,是在相应的表下创建,当然也可直接在查询中运行创建语句来创建。如下图:
为了完善业务逻辑,系统在设计时用了Insert类型的触发器,在表中插入数据时,修改另一表中数据,主要语句如下:
use [ChargeSystem]
go
/*表充值记录触发器,能够触发修改Student中余额主要实现的是当为某学生充值金额时,自动将充值金额增加到学生的余额中*/
if OBJECT_ID('chargesystem.trChargeAdd','TR') is not null
drop trigger chargesystem.trChargeAdd;
go
create trigger trChargeAdd
on tblchargelog
for insert
as
/*将增加的充值金额,增加到学生余额中*/
update S set stu_Balance=(S.stu_Balance+I.ch_Chargecash)
from tblstudent as s inner join Inserted as I
on S.stu_Cardid=I.ch_CardID
Go
/*上面语句中的Inner join查询是将on后面符合条件的Inserted表中的行加入到tblstudent表中*/
为了保证数据库的安全性,防止SQL注入的情况发生,我们在使用结构化查询或者操作时,应该使用参数,使用参数化查询代替字段拼接,能够防止SQL注入的情况。
分享到:
相关推荐
机房收费管理系统 主要功能模块: (1) 登录模块 (2) 上机管理模块 说明:上机登记时,余额不足3元或卡处于挂失状态,则拒绝登记 每位同学的一次上机形成一条记录,每36S遍历一次上机记录表,对表中所有正上机...
数据库系统及应用实验与课程设计指导:SQL Server" "2008/21世纪高等学校计算机教育实用规划教材. 北京:清华大学出版社. " "2013.10. " "5.设计成果形式及要求: " " " "课程设计说明书 " "数据库、存储过程、...
机房收费管理系统--《程序设计基础Ⅱ》课程设计.doc
机房收费系统的概要设计说明书,根据软件需求说明,建立目标系统的总体结构和模块间的联系;定义数据库和数据结构;定义目标系统的外部接口包括用户界面;设计系统的安全机制和出错处理机制;定义系统运行,制定组装...
基于node.js的机房收费管理系统(含数据库脚本).zip 大学生课程设计 基于node.js的课程设计 自己大二写的课程设计
机房收费管理系统,这是一份课程设计,使用的是C语言编程,里面除了有源代码之外还有很多总结和对于题目的分析。这很不错的参考资料
软件学院机房管理系统数据库课程设计
数据库机房管理系统课程设计 数据库机房管理系统
大学毕业论文---机房管理系统后台数据库设计.doc
本科毕业论文---机房管理系统后台数据库设计.doc
机房收费系统(合作版)-数据库说明书
机房收费系统在详细设计过程中,需要做的文档
数据库系统及应用实验与课程设计指导:SQL Server" "2008/21世纪高等学校计算机教育实用规划教材. 北京:清华大学出版社. " "2013.10. " "5.设计成果形式及要求: " " " "课程设计说明书 " "数据库、存储过程、...
基于java的-6-[计算机毕业设计]基于SSM的机房预约系统-源码.zip
" "要求: " "数据库系统要根据设计内容和要求进行分析与设计,要考虑系统的完整性约 " "束,系统中的数据表设计应合理、高效,尽量减少数据冗余。(规范到3NF或" "BCNF " "3.设计工作任务及工作量的要求〔包括...
机房收费系统中进行概要设计时,所需要的文档
C++实战项目机房预约管理系统 01机房预约系统-需求分析介绍,mp4 02机房预约系统-成品展示.avi 03机房预约系统-创建项目.avi 04机房预约系统-主菜单界面搭建以及提供登录接口,avi 05机房预约系统-退出功能实现avi ...
VB版机房收费系统,VB版机房收费系统,VB版机房收费系统,VB版机房收费系统,VB版机房收费系统,
在VS2013环境下,编写的C语言Windows程序设计,机房收费管理系统。代码仅仅使用C语言调用Windows API函数和MYSQL数据库专用库文件编写。有C语言基础的,简单易懂。代码没有优化,思路很清晰。没有省略的代码,我都...