MyException - 我的异常网
当前位置:我的异常网» 数据库 » 机房收费系统-数据库设计

机房收费系统-数据库设计

www.MyException.Cn  网友分享于:2015-02-11  浏览:0次
机房收费系统--数据库设计

        在机房收费系统代码实现过程中,我们第一步要做的是设计数据库;翻阅师哥师姐们的博客,一个正规化的数据库设计应该考虑数据库设计范式以及关系模式的一些设计理念,于是又重新回顾了一番。

【E-R图】

        实体联系图最重要的是抽象实体,寻找联系,最后根据属性,考虑三范式要求,细分实体与联系。但并不是实体与联系分的越细化越好,只要能够满足需求就好 。下面是简单做的实体图:

      
       关系模型(由于缺乏波浪线,黑色字段为外键):

学生(卡号,学号用户号,密码,姓名,性别,系别,班级,注册日期,金额,状态(使用/未用),备注)

注销(卡号用户号,注册日期,返还金额,操作员姓名)

用户(用户号,密码,等级,姓名,性别,电话)

充值(卡号,用户号,充值金额,充值日期,充值时间)

结账(用户号,计算机号,注销卡数,充值金额,总金额)

 

电脑(电脑编号学生号,用户号,账户名,IP地址)

设定基础数据(用户号,计算机编号,单位收费金额,递增时间,至少上机时间,准备时间,至少消费金额)

上机(卡号,电脑编号,上机时间,上机日期,备注)

下机(卡号,电脑编号,下机日期,下机时间,消费时间,消费金额,现有金额)


问题一:主外键寻找

        主键是可以唯一标识一个或多个字段。主外键的作用,可以保证数据的一致性,增强数据的联系性。
        对于实体图,1:N关系时,关系为N那一端的实体存在外键,且外键是关系为1那端实体的主键。例如:用户注册学生卡号时为1:N关系,学生字段中要存在“用户号”字段。
        对于1:1型,实体双方均要将对方主键作为自己的外键。
        联系的外键为两边实体的主键,主键为两个外键共同组成。

【三范式】

       数据库范式的应用优化数据结构,减少数据冗余,让数据变得更加明确简洁,有条理;降低错误数据和垃圾数据出现的机会。高层次的范式必定会实现低层次的范式,例如,第二范式一定满足第一范式,第三范式必定满足第二和第一范式。
       实现的整体的实现思想就是分解,让表中的字段减少,表内的关系增强,达到高内聚低耦合的效果。

       第一范式(1NF):关系模式R中每一个原子都是不可分割的原子值。
       简单理解就是一个关系中所有的字段是不可再分的。

       例如,在机房收费的字段中会碰到这样一个字段名称DateTime,实现以后是会是:2015-02-07 23:55,很显然它实现以后并不是不可再分的,还可以分成日期和时间两个字段。

        第二范式(2NF):关系模式是1NF,每个非主属性完全依赖于候选键(都可以用来做主键的字段),就满足第二范式。
         作用:可以减少冗余和异常现象
         
        例如:学生表字段中
        学生(卡号,学号用户号,密码,姓名,性别,系别,班级,注册日期,金额,状态(使用/未用),备注)
        卡号和学号均是候选键,FD:(卡号,学号)-->(姓名,性别),存在另一字段,FD:(学号)-->(姓名,性别),所以存在局部依赖,不满足第二范式。可利用分解的方法:
        学生(学号,姓名,性别,系别,班级,年级,备注)
        卡(卡号,密码,注册日期,金额,状态)
       
        第三范式(3NF):关系模式R是1NF,每个非主属性都不传递依赖于R的候选键。
        在下机字段中:
        下机(卡号,电脑编号,下机日期,下机时间,消费时间,消费金额,现有金额)
        (下机日期,下机时间)依赖于(卡号,电脑编号),而(消费时间,消费金额,现有金额)依赖与(下机时间),这样就构成了传递依赖,是不符合第三范式的。
         
         修改:
         下机(卡号,电脑编号,下机日期,下机时间
          消费(消费时间,消费金额,剩余金额)
   
          总结:万事有利也有弊,三范式的使用带来诸多便利的情况下,还伴随着很多问题:操作困难,查询一条记录要涉及很多表。范式越高实现越困难,一般设计要求只满足三范式即可。

【视图与存储过程】

         解决范式设计下存在的弊端,视图和存储过程无疑成为好帮手。

        视图是虚拟的表,它真实存储的是查询语句而不是数据,表中记录是通过查询语句执行后得到的查询结果。这些数据来源于已经存在的表和字段,并且视图的数据会伴随着真实表的改变而发生改变。
        创建举例(将学生表和卡组合在一起):
                    create view StuAndCard                 ‘创建视图名
                             as 
                             select student.stuID,student.Name,card.cardID,card.password      ’需要选出的字段名称
                                       from student
                                       join cardID on student.cardID=card.cardID      ‘连接条件
                     go

         查询语句跟表的语句是相同的。
 
         存储过程是预先写好的的能实现某功能的T-SQL程序,是一种数据库对象,并得到广泛的应用。用户自定义存储过程,可以通过输入参数,向客户端返回表格,结果或消息,也可返回输出参数。
       
          实现语法:
              create proc pr_select
                    as 
                    select * from student
              go
           执行:exec pr_select
    
           从执行上看,一个存储过程就是一个批处理,为实现某一功能,组合一系列的T-SQL语句。

【总结】

         数据库设计,在多实践的基础上才能不断让自己的数据变得成熟,另外,范式应用一定要适度,千万不能因为高范式让程序执行变得过于复杂。


文章评论

10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
程序员应该关注的一些事儿
程序员应该关注的一些事儿
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
那些争议最大的编程观点
那些争议最大的编程观点
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
每天工作4小时的程序员
每天工作4小时的程序员
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
一个程序员的时间管理
一个程序员的时间管理
总结2014中国互联网十大段子
总结2014中国互联网十大段子
10个调试和排错的小建议
10个调试和排错的小建议
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
我是如何打败拖延症的
我是如何打败拖延症的
程序员的鄙视链
程序员的鄙视链
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
 程序员的样子
程序员的样子
我的丈夫是个程序员
我的丈夫是个程序员
程序员必看的十大电影
程序员必看的十大电影
中美印日四国程序员比较
中美印日四国程序员比较
漫画:程序员的工作
漫画:程序员的工作
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
程序员和编码员之间的区别
程序员和编码员之间的区别
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
2013年美国开发者薪资调查报告
2013年美国开发者薪资调查报告
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
那些性感的让人尖叫的程序员
那些性感的让人尖叫的程序员
鲜为人知的编程真相
鲜为人知的编程真相
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
代码女神横空出世
代码女神横空出世
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
Google伦敦新总部 犹如星级庄园
Google伦敦新总部 犹如星级庄园
程序员都该阅读的书
程序员都该阅读的书
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
编程语言是女人
编程语言是女人
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
2013年中国软件开发者薪资调查报告
2013年中国软件开发者薪资调查报告
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有