VB.NET版机房收费系统—数据库设计

之前第一遍机房收费的时候,用的数据库是别人的,认知也只能建立在别人的基础上,等自考中《数据库系统原理》这本书学完了之后,再去看以前的数据库,发现数据库真的还需要进一步的优化,下面是我设计数据库的一些见解,希望大家多提些意见。

数据库设计

E-R模型:

在观念模型设计阶段,一个系统都是建立在ER模型上的,设计好ER模型,很重要。

我设计的ER图:

系统中的实体:很简单,就是将系统中的名词都抽象出来,再具体了就是转换为数据库的逻辑设计时才要考虑的。

系统中的联系:在图中可以看得很清楚,这里我要重点说的是:

(1)我将T_student表和T_card表分开,是因为之前的设计违反了第三范式,学生和卡号为什么是一对一的关系呢?因为我的设计思想是:一个学生只能有一张卡可以正常使用,其他的,比如说,学生丢了卡了,之前的那张卡不可以使用了,但是卡表里面还是会保存这张不在使用的卡的信息,因此,卡表和学生表分开,但一个学生只能使用一张卡。

(2)这次设计,将以前的line表和online表和为一张表T_online表,图1所示;将以前的onWork和wordlog表合为一张表T_WordLog表,图2所示;将CheckWeek表删除(因为和CheckDay表一样,只是查询条件不同罢了。)

设计后的T_line表:

图1

设计后的T_WordLog表:

图2

ER的联系:系统ER图中,可以很清楚的看到他们之间的联系,有1对1,1对多,多对1,多对多的,这个关系一定要理清,就算你的和别人的不一样,没有关系,因为设计的时候,想法不一样,就会产生不同的效果。

ER的属性:详见后面关系模型。

综上就是ER图的设计,其实,ER设计出来的时候,很多人都有不同的想法,比如,有的人说我的学生表和卡表分开就会很乱,注册的时候,要分开注册,很复杂。我觉得大家可以各自尝试一下,仁者见仁、智者见智嘛!只要别人问的时候,给自己一个说法就行了。

关系模型:

ER图中的主要成分是实体类型和联系类型,转换算法就是如何把实体类型、联系类型转换成联系模式。

ER实体类型转换:(ER图中矩形框的都为实体,可建表):

T_BasicData(Rate,TmpRate,unitTime,leastTime,PrePareTime,limitCash,Head)

T_Card(CardNo,RegisterDateTime,CacncelDateTime,Cash,Head,Type,status)   
   T_Student(studentNo,CardNo,StudentName,Age,Sex,Department,Grade,Class,Date,Time,Explain)

T_User(UserID,serName,Level,Password,Computer,Head)

T_CheckDay(LastCash,Head,Recharge,CancelCash,ConsumeCash,nowCash,Computer,Status) 
   T_WordLog(UserID,Level,LoginDate,LoginTime,LogoutDate,LogoutTime,Computer,Status)

ER关系转换:

对于1比1关系,T_student表中可以加入CardNo的字段(StudentNo为主键,CardNo为外键)。

对于1:N关系,可以适当的加入属性值。

对于N:M关系,关系就是一个模式(蓝色菱形 T_Line和T_Recharge)

T_Line(Cardno,Head,OnlienDateTim,OutlineDateTime,ConsumeTime,Consume,Computer,Status)

T_Recharge(CardNo,Head,Recharge,DateTime,Ischeck)

好了一定看看是够符合三范式的要求:

第一范式:属性不可分,其实这个很容易就可以看出来,属性值只能是多个单值属性。

第二范式:消除部分依赖,这一条很容易被功能打乱,因为很多人都是根据功能来安排属性的,这里可以这么做,做好了之后,检查一下,有没有存在局部依赖,去掉就行了。

第三范式:消除传递依赖,这个得好好看看了,向之前的student表和card表合为一个表其实里面存在着传递依赖,分开就对了。

设计数据库:

最主要的是注意数据类型吧,这个还是需要看看代码的,我第一版的系统中d所有的日期时间,都是用的DateTime这样的数据类型,在vb.net中一定要看看是不是会出问题。

综上,我们要学会应用我们学习到了知识,我学的数据库太浅,很多还是建立在原来数据库的基础上的,但是我相信,当我们努力学习,大胆尝试,还是很快就会有所收获的,上面的数据库只是个人的一些想法,有更好的,大家一起分享,交流。

VB.NET版机房收费系统—数据库设计,布布扣,bubuko.com

时间: 2024-12-28 17:13:25

VB.NET版机房收费系统—数据库设计的相关文章

VB.Net版机房收费系统 ---数据库设计

数据库设计是根据用户需求设计数据库结构的过程,具体来说,数据库设计是对于给定的应用环境,在厝数据库理论的指导下,构造最优的数据库模式,在数据库管理系统上建立数据库及其应用系统,使之能有效地存储数据,满足用户的各种需求的过程.到底数据库该如何设计,古往今来,每个人都有每个人的想法,所以数据库设计并没有优劣之分,好坏之别,合适的数据库设计就是最好的. 走过自考--<数据库系统原理>,看过耿建玲老师的视频,对数据库设计有了一点了解,VB版的机房收费系统,直接用原来的脚本生成的数据库,当时对数据库设计

VB.NET版机房收费系统—DataGridView应用

事实上,先前刚刚開始敲机房的时候,刚用到DataGridView的时候,总显得力不从心,先要一下子就学会,看了非常多的资料,但是依照写的时候,自己有不知道从什么地方下手,于是,当自己用查询SQL语句,并用DataGridView显示出来,这个功能不能实现,但这里给大家写一下,假设有什么地方不好的会,请大家指出: 第一版: 窗口设计: 须要的控件: DateTimePicker.DataSet.DataGridView 把握的三步骤: 第一步:使用视图,创建出你要的产寻结果的视图(假设是一个表就能

vb.net版机房收费系统重构

机房收费系统重构版终于正式开工了! 前几天,刚刚看完三层的视频,在视频中详细的讲解了一个登录功能.天真的我,当时以为三层结构是那么的简单,所以我草草地做完总结之后,就很快就开始机房收费系统的重构了.可是谁想到,当我一打开编程软件,就让我"碰了一鼻子的灰"!首先是不知道vs 怎么用,其次就是看三层的时候,登录的实例使用C#写的,而这次我们需要用VB.NET写,所以对于其中的语法是知之甚少.虽然,前段时间我看了一遍台湾讲师--曹祖胜的<VB.NET 视频>,但是他讲的几乎都是一

VB.NET版机房收费系统---报表

报表,即报告情况的表格,简单的说:报表就是用表格.图表等格式来动态显示数据,可以用公式表示为:"报表 = 多样的格式 + 动态的数据". 在没有计算机以前,人们利用纸和笔来记录数据. 比如:民间常常说的豆腐帐,就是卖豆腐的每天将自己的卖出的豆腐记在一个本子上,然后每月都要汇总算算,这种情况下,报表数据和报表格式是紧密结合在一起的,都在同一个本子上.数据也只能有一种几乎只有记帐的人才能理解的表现形式,且这种形式难于修改. VB版机房收费系统的报表采用的是第三方的Grid++Report,

VB.NET版机房收费系统---SqlHelper

SqlHelper,最早接触这个词儿的时候,好像是13年的暑假,那个夏天来的比往年来的稍晚一些,呵呵,sqlhelper,翻译成中文就是数据库助手,帮手.百度百科这样对她进行阐述: SqlHelper是一个基于.NET Framework的数据库操作组件.组件中包含数据库操作方法.SqlHelper用于简化我们重复的去写那些数据库连接(SqlConnection),SqlCommand,SqlDataReader等等.SqlHelper 封装过后通常是只需要给方法传入一些参数如数据库连接字符串,

机房收费系统数据库设计

之前,学习编写机房收费系统的文档时,曾写过 机房收费系统数据库概念设计模型--ER图 这篇文章,现在到了机房收费系统个人版重构阶段,需要再次进行数据库的设计.可以说,之前的数据库的概念设计给我现在的设计奠定了一定的基础,但是仍然发现自己的设计中有许多不合理并且需要改进的地方. 在这次的数据库设计当中,学习了一些数据库的命名规范,重温了经典的三范式(属性原子化,避免局部依赖,避免传递依赖).但是发现,在需求面前,一些分属两张表的字段,为了方便,还是得放到一张表中,不得不破坏三范式. 现在将自己设计

VB.NET版机房收费系统---导出Excel表格

datagridview,翻译成中文的意思是数据表格显示,使用DataGridView控件,可以显示和编辑来自不同类型的数据源的表格,将数据绑定到DataGridView控件非常简单和直观,大多数情况下,只需要设置DataSource属性即可,在绑定到包含多个列表或表的数据库源时,只需将DataMember属性设置为绑定的列表或表的字符串即可.机房收费系统多次用到数据表格的显示,并且导出为Excel表格,第一次机房收费系统是用VB版本的,她导出Excel的方法如下: 打开VB-工程-应用-勾选M

VB.NET版机房收费系统---异常处理

异常处理,英文名为Exceptional Handling, 那时年少,还记得那年一起学习过的VB6.0的时候,常常使用ONError的错误语句.与传统VB6.0中的OnError语句相比.NET平台的异常处理机制更加灵活,而且使用更加方便.是代替日渐衰落的Error Code方法的新法,提供Error Code 所未能具体的优势.异常处理巧妙又不失完美的分离了接收和处理错误代码.这个功能理清了编程者的思绪,也帮助代码增强了可读性,方便了维护者的阅读和理解. 异常处理(又称为错误处理)功能提供了

VB.NET版机房收费系统---七仙女之系统登录

VB.NET第一版机房收费系统,告一段落,验收的时候,问题也是大大的存在,没有用上设计模式,什么触发器,存储过程,都没有用上,看看其她小伙伴的,七层实现登录?那是什么东东,相比较我的三层而言,多了两倍还加个一,通过查资料,看博客,憋了好几天,终于,憋出了一个七仙女---七层实现系统登录,七个女儿,各司其职,完美配合,衍生出众多美丽的故事. 从三层猛地跳到七层,有种穿越的感觉,说白了就是不会,又是想逃避的感觉,可是人生在世,有的事情不能随着自己的性子来,喜欢了就去做,不喜欢,就不做,没办法,就一直